- Community Home
- >
- Servers and Operating Systems
- >
- Operating Systems
- >
- Operating System - OpenVMS
- >
- Re: Useful DCL parser
Categories
Company
Local Language
Forums
Discussions
Forums
- Data Protection and Retention
- Entry Storage Systems
- Legacy
- Midrange and Enterprise Storage
- Storage Networking
- HPE Nimble Storage
Discussions
Forums
Discussions
Discussions
Discussions
Forums
Discussions
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
- BladeSystem Infrastructure and Application Solutions
- Appliance Servers
- Alpha Servers
- BackOffice Products
- Internet Products
- HPE 9000 and HPE e3000 Servers
- Networking
- Netservers
- Secure OS Software for Linux
- Server Management (Insight Manager 7)
- Windows Server 2003
- Operating System - Tru64 Unix
- ProLiant Deployment and Provisioning
- Linux-Based Community / Regional
- Microsoft System Center Integration
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Community
Resources
Forums
Blogs
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-09-2007 09:49 PM
06-09-2007 09:49 PM
I've been finishing to test DCLMAKE, a new DCL parser, written itself in DCL. DCLMAKE analyzes any source DCL file and detects most common mistakes. DCLMAKE let you the power of justify source DCL file and works like a compiler, removing all remarks from source file so command execution runs faster.
DCLMAKE checks the following errors:
- IF without THEN
- THEN without IF
- ELSE without IF
- ENDIF without IF
- IF without ENDIF
- Invalid label in GOTO/GOSUB and WRITE/READ statements
- Undefined symbol substitution (inside single quote)
- Various mistakes in simple expressions
DCLMAKE is released under GNU license.
You can free download here:
http://it.openvms.org/pages.php?page=download
Any feedback will be apreciated.
Antonio
http://it.openvms.org
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-10-2007 03:15 AM
06-10-2007 03:15 AM
Re: Useful DCL parser
http://h71000.www7.hp.com/freeware/freeware80/dcl_check/
http://h71000.www7.hp.com/freeware/freeware80/dcl_diet/
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-10-2007 06:00 PM
06-10-2007 06:00 PM
Re: Useful DCL parser
currently I don't know all the differences between DCLMAKE and DCL_CHECK.
I tried DCL_CHEK some months ago and it worked fine.
Anyway DCL_CHECK uses much CPU's resource up and might be confused by strings inside quotes.
My DCLMAKE is lighter and recognize invalid label in string substitution too.
And don't forget, you would use just one software instead of two.
Antonio
http://it.openvms.org
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-10-2007 06:58 PM
06-10-2007 06:58 PM
Re: Useful DCL parser
I downloaded it and ran it agains a 4300 lines of dcl script.
It seems to have difficulty with
if a .eqs. "a" .or. -
b .eqs. "b"
then
...
endif
Also the counting of lines seems to contain errors. The given line numbers do not correspond with what is in the script.
Also got a lot of untrue "to many endsubroutine" and "undefined symbols and labels" (usage before init due to gosub).
Wim
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-10-2007 07:01 PM
06-10-2007 07:01 PM
Re: Useful DCL parser
Wim
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-11-2007 04:33 AM
06-11-2007 04:33 AM
Re: Useful DCL parser
thank you for your feedback.
I'll check for the statement and I'll notice you about solution.
Antonio
http://it.openvms.org
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-11-2007 05:21 AM
06-11-2007 05:21 AM
Re: Useful DCL parser
Looks like an interesting tool. It
did not recognize logout as a keyword fyi.
Also it didn't produce an output file (?)
I like the .XRF table.
Dean
****
$ @dclmake.com login.com login.test
DCL Parser V5.06 LOGIN.COM
$ write sys$output "ASDF"
$ logout/full
^^^ Expected colon at end of label (152)
$ logout/full
$ logout/brief
^^^ Expected colon at end of label (154)
$ REC=""
^^^ Symbol REC undefined (158)
158 lines, 4 labels, 194 symbols found.
$! lets see what it made
$ dir login.test
%DIRECT-W-NOFILES, no files found
$
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-11-2007 02:55 PM
06-11-2007 02:55 PM
Re: Useful DCL parser
I'm not sure I understand the error messages. I get these:
DCL Parser V5.06 TEST.DCL
$ GOTO COMPILE
$ GOSUB COMPILE
^^^ Label COMPILE not found (301)
$ GOTO CREATEMAC
$ GOSUB CREATEMAC
^^^ Label CREATEMAC not found (301)
$ GOTO CREATEOPT
$ GOSUB CREATEOPT
^^^ Label CREATEOPT not found (301)
$ GOTO DEFLOOP
$ GOSUB DEFLOOP
^^^ Label DEFLOOP not found (301)
$ GOTO GENLOOP
$ GOSUB GENLOOP
^^^ Label GENLOOP not found (301)
$ GOTO LOOP
$ GOSUB LOOP
^^^ Label LOOP not found (301)
$ GOTO P2
$ GOSUB P2
^^^ Label P2 not found (301)
$ PID=""
^^^ Symbol PID undefined (301)
$ GOTO VECCLEANUP
$ GOSUB VECCLEANUP
^^^ Label VECCLEANUP not found (301)
301 lines, 15 labels, 408 symbols found.
All the labels exist, for example:
$ search test.dcl compile:
$ COMPILE:
The only unusual usage is p2:
$ GOTO 'p2'
Symbol PID also exists. Are the errors supposed to be listing the lines? Why are they all (301)?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-12-2007 05:54 AM
06-12-2007 05:54 AM
Re: Useful DCL parser
I'm impressed how you've been advicing a lot of good feedback.
Now I'll try to answer:
[Dean]
- File .XRF is a cross reference file; I use it to see labels. I've already planned to relase a new qualifier (like /CROSS or /XREF) to create a more readable text file.
- Your output file is login.$$$ because DCLMAKE doesn't create output file if it found any error.
-
[John]
- Your error seems to me the same of Dean's wrong message. I'm amazed of theese wrong messages.
[Wim]
- I watched at my test unit and found the same test. So I think the real problem is before the
I'll soon release a new version.
Antonio
http://it.openvms.org
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-12-2007 08:15 AM
06-12-2007 08:15 AM
Re: Useful DCL parser
Try it out on a copy of decnet plus
NET$CONFIGURE.COM - that would be a great
exercise, its around 800 blocks+- depending
on the decnet version, and its already
had comments etc removed. I ran dclmake on it, and it had a hard time with the if then else.
Thats a real tough task your doing!
Dean - from net$configure
$Set NoOn
$Then
^^^ Unexpected THEN (343)
$Set NoOn
$Else
^^^ ELSE without IF (345)
$Set NoOn
$Endif
^^^ Too many ENDIF (347)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-12-2007 05:29 PM
06-12-2007 05:29 PM
Re: Useful DCL parser
perhaps DECnet engineering really should run DCL_CHECK against NET$CONFIGURE to detect such flaws as e.g.:
$If prc .eqs ""
regards Kalle
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-13-2007 10:02 AM
06-13-2007 10:02 AM
Re: Useful DCL parser
$If prc .eqs ""
I love it. what version is that from, I
don't see it 7.2. There was a lot of contention over that, whether we should
put that functionality into hard code. I
worked on that dcl for a couple of cases.
what a zoo to work on :)
Dean ex-hp-engineer-not-my-problem-no-more
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-13-2007 04:46 PM
06-13-2007 04:46 PM
Re: Useful DCL parser
$ MC NCL SHO IMPLE
...
Version = "V8.3 ECO01 8-NOV-2006 04:00:13.34"
regards Kalle
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-03-2008 05:44 AM
12-03-2008 05:44 AM
Re: Useful DCL parser
after two days of searching I finally found DCLMake - exactly, what I'am looking for!!!
Unfortunately I was not successful to reach
http://it.openvms.org/pages.php?page=download
to download it.
Did I make any mistake?
Thank you, best regards
Erwin
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-03-2008 07:41 AM
12-03-2008 07:41 AM
Re: Useful DCL parser
And I'd suggest starting a new thread for a new question.
I did acquire a copy of the zip archive from the Internet archive, if it somehow got lost over at the OpenVMS.org site.
http://web.archive.org/web/*/http://it.openvms.org/download/utilities/dclmake.zip
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-03-2008 12:42 PM
12-03-2008 12:42 PM
Re: Useful DCL parser
it.openvms.org is under attach. I'm talking site manager in order to restart the web site.
If you contact me at antoniov@openvms.org I can send you a file via mail.
Antoniov
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-04-2008 03:39 AM
12-04-2008 03:39 AM
Solution- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-05-2008 01:42 AM
12-05-2008 01:42 AM
Re: Useful DCL parser
The big problem with DCL programming is not invalid labels and if-then(-else)-endif constructs because these are clearly identified by DCL itself. Undefined symbols, unopened files are not a big issue either.
You'll find these when testing - which _should_ be done before a procedure is put into production.
No doubt that software, checking on these issues, can be useful. Foremost on big, lengthy procedures. But since DCL itself can take care of that, I think it's usability limited. I tried DCL_CHECK once, it did a good job but simply failed the major bug in the procedure I was working on at that time.
Mispelled logical names, and, foremost, symbol names, or local.vs. global assignements are a far greater concern because typo's are easily made and overlooked, especially in large, complex procedures:
$ dev1=""
$ avoid="TRUE"
...
$ devl=="some value"
$ aviod=="FALSE"
...
$ dev1=="something"
...
$ if avoid
$ then
$ if dev1 .eqs. "" then ....
...
Searching for a reason of unexpected, or errenous behaviour can be a tedious task in such an environment. If your procedure is capable of picking these out, then it's really useful.
WG
OpenVMS Developer & System Manager
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-05-2008 02:32 AM
12-05-2008 02:32 AM
Re: Useful DCL parser
I think the symbol cross reference could help with the problem you mention.
Purely Personal Opinion
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-05-2008 08:21 AM
12-05-2008 08:21 AM
Re: Useful DCL parser
It's good that you capture these errors, but it's also likely these arise either with the few ancient typists left around the industry or more commonly with poor font choices.
The default character display fonts on some operating system platforms were seemingly created by crayon-wielding children.
Changing fonts can help with this one versus ell confusion, with (better) antialiasing, and with general ease of viewing.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-07-2008 02:44 AM
12-07-2008 02:44 AM
Re: Useful DCL parser
It finds undefined symbols, wrong if-then-else-endif construct, some common mistakes in expression.
It's very simple but helps the programmer.
Antoniov