Pros and Cons of Accelr8 Open DCL Lite v2.21

The following is my list of the Pros and Cons of Accelr8 Open DCL Lite v2.21 running on Windows (WinXP, Win7, Win10).  [It also includes a little bit of testing on Win98 and WinME.]  This page was created initially in late 2002 when trying to determine the best way I could get a DCL environment running -- preferably a free one, and preferably one that ran on Windows initially but could be ported to Linux.  In early 2012 (and most every year since then), I've finetuned the list.

The analysis involves comparing Accelr8 Open DCL Lite v2.21 primarily with OpenVMS DCL, but also involves comparisons with WinXP / Win7 / Win10 CMD commands, 3rd-party utilities, etc.

Pros              Cons       

Pros:

  • Summary: Enough of Accelr8 Open DCL Lite works so can use frequent Open VMS DCL commands -- DIR, DIFF, SEARCH, DELETE (even DELETE /CONFIRM), TYPE, IF/THEN/ELSE, GOTO/GOSUB -- and can use symbols, logicals, and some lexicals, while still retaining the VMS-style freedom of specifying (easily remembered) qualifiers almost anywhere in the command line.

  • Following works enough to be quite useable:

    • @
      Runs command procedures (ie, scripts) as expected.
    • = and :=
      Defines a local symbol as expected.
    • == and :==
      Defines a global symbol as expected.
    • * and %
      Multi-char and single-char wildcards in file specs work reasonably well (except for "%" within a double quoted filespec inside an /EXCLUDE clause).
    • ASSIGN
      Works well for my purposes.
    • CONTINUE
       
    • COPY
      Is the best tool to copy files w/ VMS filespecs. Directories or filenames containing blanks must be enclosed in double quotes.
    • CREATE file
       
    • CREATE/DIRECTORY
       
    • DEASSIGN
       
    • DEFINE (logicals)
      Works well for my purposes!
    • DELETE (file)
      My best tool for DELETE /CONFIRM functionality.
    • DELETE/SYMBOL
       
    • DIFFERENCES
      Works (fairly well). Its output is usually easily readable and in a customizable format -- most notably with /MATCH, /IGNORE, and /WINDOW.  It has some deficiencies, but it is quite useful nonetheless.  It will oftentimes suffice when no other better diff-ing tool is available (and convenient).  And it definitely helps while transitioning OpenVMS DCL diehard users into alternative diff-ing tools for Windows (or Linux) PCs.
      • When actively working in a DCL Lite window, I oftentimes try DCL Lite DIFF as a first choice.
      • Even though ComponentSoftware's CSDiff is my primary diff-ing utility now, occasionally CSDiff lumps too many differences into a single group. In those situations, DCL Lite's DIFF -- with its very flexible /MATCH, /IGNORE, and /WINDOW -- can be used to coax the necessary difference listing when neither CSDiff nor any other utility could do so, avoiding having to do manual line by line comparisons.
      • On machines that don't have MS Word, I'll usually try DCL Lite's DIFF for .rtf and .doc diff-ing, then oftentimes revert to FC for a second opinion or better view.
    • DIRECTORY
      Works well though not perfect. Is preferred DIR tool in a command environment, since DIR can produce file output which is easily readable and in a customizable format.
      • However, Microsoft DIR is sometimes used for special purposes, eg, to see the shortened 8 x 3 character filename.typ, etc.
      • And Windows Explorer is definitely my primary "directory display" / "file copy" / "file rename" tool (throughout a typical day).
    • EXIT
       
    • F$DIRECTORY
       
    • F$EDIT
       
    • F$ELEMENT
       
    • F$EXTRACT
       
    • F$GETSYI
      All of my most heavily used parameters work. See all supported values via "@SYS$TOOLS:F_GETSYI_SYMBOLS.DCL SHOW".
    • F$INTEGER
       
    • F$LENGTH
       
    • F$LOCATE
       
    • F$LOGICAL
       
    • F$MODE
       
    • F$PARSE
      Works fine for my purposes.
    • F$SEARCH
      Works, except for certain filenames with special chars.
    • F$STRING
       
    • F$TIME
       
    • F$TRNLNM
      Works fine for almost all my needs.
    • F$TYPE
       
    • F$USER
      I don't use this.
    • F$VERIFY
       
    • Foreign commands
      By default, unknown commands get passed to the underlying operating system shell, usually MS-DOS Prompt in WinME or CMD Prompt in WinXP/7/10. This can be overridden by issuing SET CLI /NOPASSTHRU.
    • GOSUB
       
    • GOTO
       
    • HELP
      Is just as helpful as its OpenVMS DCL HELP namesake.
    • IF/THEN/ELSE/ENDIF
      Works as expected.
    • LOGOUT
       
    • ON CONTROL_Y
       
    • ON WARNING / ERROR / SEVERE_ERROR
       
    • RECALL
       
    • RENAME
      Is the best tool to rename files w/ VMS filespecs. Directories or filenames containing blanks must be enclosed in double quotes.
    • RETURN
       
    • SEARCH
      Works well enough to use very often. Good tool to search many files at once. Has an optional asterisks separator line and file spec line to separate different files. The SEARCH /HI=R command looks especially nice. But there are some significant deficiencies that sometimes necessitate using other search tools.
      • This one utility is so useful in my daily work that, in and of itself, it justifies an install of Open DCL Lite.  I'm so thankful for it.
    • SET CLI
      Can be used to change the following defaults:
      • Passes unknown commands to shell.
      • Uses UNIX dotfile interpretation.
      • Informs user when unsupported qualifiers are used.
      • Output redirection appends to existing files.
      • Maps command lines to lower case.
      • Control-J is a line editing character.
    • SET DEFAULT
       
    • SET ON
       
    • SET PROMPT
       
    • SET TERMINAL
      Haven't seen the benefit of this yet.
    • SET VERIFY
       
    • SHOW CLI
       
    • SHOW DEFAULT
       
    • SHOW LOGICAL
       
    • SHOW SYMBOL
       
    • SHOW SYSTEM
      This facility is not documented in HELP.
    • SHOW TERMINAL
      Haven't seen the benefit of this yet.
    • SHOW TIME
       
    • SHOW TRANSLATION
       
    • SHOW USERS
       
    • STOP
      Can stop a job in Task Scheduler using Open DCL Lite's command STOP /ID=pid (decimal), ie, using same PID that appears in Windows (WinXP/7/10) Task Manager, or by using STOP /ID=%xpppppppp, where pppppppp is the hex PID in the SHOW SYSTEM display.
    • TYPE
      Quick way to display text files when working at command level. Is the best tool to type files w/ VMS filespecs.
    • WRITE SYS$OUTPUT
      Extremely useful "echo"-like command.
  • Following are available but have not been tested, since I don't use them:

    • APPEND
       
    • CALL
       
    • ENDSUBROUTINE
       
    • EOJ
       
    • F$CVSI
       
    • F$CVUI
       
    • SUBROUTINE
       
  • Added functionality is quite helpful:

    • === and :===
      Defines an environmental variable.
    • ECHO
      It is equivalent to WRITE SYS$OUTPUT, except that the list of expressions is not required and no qualifiers are allowed. If the list is omitted, a blank line is written.
    • F$FVU
      Converts VMS filespec to Unix filespec.
    • F$FUV
      Converts Unix (or Windows) filespec to VMS.
    • SHELL
      Accelr8 extension to send something to Unix/Windows shell.
    • SHOW SYMBOL /ENVIRONMENT

      Displays environment variables.
  • Redirection of SYS$OUTPUT works well enough to be useful.

  • DCL Lite is usually quick.

  • A useful (though terse) Readme.txt file is included.

  • Honors system-wide SYLOGIN.COM in installation directory.

  • Honors user-specific LOGIN.COM in user's "home" directory [see distributed Readme.txt for details].

  • Can be enhanced with Windows MS-DOS and CMD Prompt batch procedures, DCL Lite procedures feeding from an enhanced SYLOGIN.COM, and user environmental symbols for a very flexibly called command environment which:

    • can be carried on USB devices and run on new machines with minimal setup,
    • can be invoked from Windows MS-DOS Prompt or CMD Prompt shell for either running within that shell or running as a separate shell,
    • can be invoked from another DCL Lite window to either run within that window or within a separate window.
  • Very useful jonesrh add-ons dependent on DCL Lite:

    • CHD (ie, CHDL.DCL)
      Extremely flexible change directory tool which is better than both DCL Lite's SET DEF command and (most of) WinXP/Win7/Win10's CD command, yet utilizes behavior of both of them, and can directly use input from Windows Explorer address bar (usually). I spent 3 solid weeks generalizing this from its VMS parent when beginning to heavily use DCL Lite.
  • The method of simulating OpenVMS file version #s using the .~n~ extension to the filetype can be useful to avoid accidentily overwriting files (however I've rarely needed it).

  • Open DCL Lite can coexist with Valentin's PC-DCL and they can each utilize the other's native capabilities. See Mutual Extensibility of Open DCL Lite and PC-DCL for more details on how PC-DCL and Open DCL Lite can coexist and mutually extend one another.

Cons:

  • Summary: Accelr8 Open DCL Lite implements only portions of the Open VMS DCL command set, but its a very useful subset and, oftentimes, the missing functionality or the erroneous implementation can be replaced with an acceptable substitute.

  • Following oft-used commands are not available in the free Lite version and were missed (at least initially), but several have had acceptable workarounds developed for them over the years:

    • DUMP
      Now use Borland BCC v5.5's Turbo Dump v5.0.16.12 as a very capable replacement.
    • EDIT
      Now use Windows GUI editors (primarily Cream) as my primary editors, rather than ED (an EDT-like editor), TECO, MS-DOS EDIT, or other terminal-oriented text editors.
    • F$CVTIME
      Emulate this with SYS$TOOLS:F_CVTIME.DCL.
    • F$ENVIRONMENT
      Emulate my main use of this with SYS$TOOLS:F_ENVIRONMENT_DEFAULT.DCL.
    • F$GETDVI
      Just put up with having to hardcode device lists.
    • F$GETJPI
       
    • INQUIRE
      It might be possible to use PC-DCL's INQUIRE capacity, but it's probably more trouble than its worth -- at least most of the time. I just put up with not being able to do script-level interactive input in DCL Lite.
    • OPEN, CLOSE, READ
      Alternative programs can sometimes be used as workarounds. I've worked around this in one situation by using PC-DCL's OPEN, CLOSE, READ, WRITE capabilities. In a second case, I used UnxUtils' GAWK as a workaround.
    • SET CONTROL=(T,Y)
       
    • SET FILE
      On VMS, I'd used this with /OWN or /PROT. Have developed workarounds, when necessary.
    • SHOW DEVICE
      Use Sysinternals' "psinfo.exe -d free" instead from the command line, or just use Windows' "My Computer" from the desktop or from Windows Explorer.
    • TYPE /HEAD and /TAIL qualifiers

      Not available, so must instead use something like UnxUtils' HEAD and TAIL utilities.
    • WAIT
      UnxUtils' SLEEP works well for this.
    • WRITE (of data files)
      Though HELP WRITE implies WRITE can write data files, I haven't found this to be true, except when using redirection of SYS$OUTPUT. The following sequence illustrates SYS$OUTPUT redirection followed by subsequent display of the data file:
      • $ DEFINE SYS$OUTPUT filename.typ
      • $ WRITE SYS$OUTPUT your_data_line_1
      • $ WRITE SYS$OUTPUT your_data_line_2
      • $ DEASSIGN SYS$OUTPUT
      • $ TYPE filename.typ
  • Following commands not available in the free Lite version, but they don't matter much to me:

    • DEFINE /KEY
      Couldn't get this to work, even though HELP says it should work.
    • F$GETSYI
      Only part of this lexical works.
    • infrequent lexicals
      Various lesser used lexicals do not work.
    • MAIL, REPLY
      POP3, IMAP, and web based e-mail is much better.
    • PHONE
      Many chat apps available nowadays are workable alternatives to VMS PHONE.
    • PRINT
      Moot, since I no longer use a printer (except at the library).
    • PURGE
      Moot, since Windows doesn't have (OpenVMS style) multiply versioned files.
    • RUN
      @, SHELL, and SHELL START have been sufficient for me.
    • SET HOST
      Something similar to SET HOST 0 can be accomplished via my UDCLL.BAT enhancement to run DCL Lite "on top of" itself or "on top of" a MS-DOS Prompt or CMD Prompt box.
    • SET MESSAGE
       
    • SET PASSWORD
      Moot, since there is no Open DCL Lite login, and any password stuff should be done from within Windows or various applications.
    • SET PROCESS
      Had been used in OpenVMS with /PRIORITY or /PRIV qualifiers, but I've seldom ever needed anything similar in Windows.
    • SET PROTECTION
      There are Windows commands for this.
    • SHOW NETWORK
       
    • SHOW PROCESS
       
    • SHOW STATUS
      Available but crashes.
    • SHOW USERS
      Sometimes crashes, especially in Win98/WinME.
    • SPAWN
      @, SHELL, and SHELL START, as well as my enhancements UDCLL.BAT and NEWDCLL.BAT serve my needs well enough.
    • SUBMIT
      Use Windows Task Scheduler instead. I've only had the need for this once in 18+ years.
    • other commands
      ...various other commands do not work...
  • DIFFERENCES has some notable deficiencies that counterbalance its advantages:

    • It oftentimes shows a false difference or two at the tail end. This limits its usefulness, oftentimes requiring reverting to Microsoft's FC, Digital Mars' DIFF [which is not free], or UnxUtils DIFF oriented utilities.

    • WinXP/7/10's FC will sometimes display the differences better, especially when DCL Lite's DIFF fails to show 1-2 crucial lines in some differences.

    • It's simply easier to see and immediately understand differences with ComponentSoftware's CSDiff !!!

    • My most practical "difference" utility has become CSDiff for text file diff-ing during development (especially when most of the work is not being done in a DCL Lite window), eg, for web development going back and forth from the editor to the browser.

    • When working on machines that have MS Word, CSDiff usually is more useful than DCL Lite's DIFF for .rtf and .doc file diff-ing, since CSDiff uses the MS Word diff-ing capabilities.

  • Line editing does not display intuitively during some very common line editing operations, eg, when combining character delete or insert with left-cursor or right-cursor movement. This is quite irritating, but I've learned some ways to partially compensate for it.

  • Certain types of malformed SEARCH commands can cause infinite loops that sometimes require killing DCL Lite via Task Manager, and in rare cases can cause DCL Lite to crash.  The main way I avoid these situations is to simply double-check the command line before pressing the Enter key.

  • SEARCH (and maybe others) will sometimes not see all files (that you would expect it should) during certain wildcard searches. This seems to happen sometimes for files with all capital letters.

    Note:
    I haven't yet determined all the failure modes of the wildcard file selection mechanism. But be aware that any wildcard file spec that is enclosed in quotes, or includes spaces or special characters, or involves anything other than lower case characters, might be considered a possible suspect for missing some of the files during the file selection.

    This is really a very significant flaw!.   So be diligent, and do sanity checks.

  • SEARCH doesn't have separator lines (like OpenVMS v6.2 SEARCH did or like UnxUtils GREP does) to separate multiple matches within a file when a multi-line window is used to surround each match inside a file.

  • Various commands, eg, COPY, RENAME, etc, have limited functionality for the Windows developed files due to destroying of long filenames that contain blanks or inability to perform the desired function. However, using underscores instead of blanks seems to help. Those commands don't copy/rename with the same upper/lower case characters as specified in the command line, unless the target is surrounded by double quotes.

  • All commands map to lower case (for compatibility w/ Unix), though this can be overridden via SET CLI /UPPERCASE (for greater compatibility w/ VMS). However, mixed cases, as in Windows, is not supported well. It is advisable to always use double quotes on filespecs that involve mixed cases or on filespecs that involve blanks or on filespecs that involve special characters that are not standard on VMS.

  • Translation of symbols is into lowercase, instead of the VMS standard of uppercase, but you can work around this by using F$EDIT to force to uppercase when necessary.

  • Commands which use the /BEFORE or /SINCE qualifiers, eg, SEARCH, DIRECTORY, DELETE, TYPE, COPY, RENAME, etc, assume the default date is the /CREATED date instead of the /MODIFIED date. That seems counter intuitive. Usually you'll need to look at modification dates (instead of creation dates) to check or further manipulate files changed today or in the last several days. When that's the case, you'll need to remember to use /SINCE/MOD instead of simply /SINCE.

  • RECALL will display no more than 20 commands. That's a major irritation!!!  But at least there's some command recall capability, and a 20 command recall buffer usually suffices.

  • Can occasionally be a real CPU hog -- eg, during an entire disk DIRECTORY operation.

  • Every once in a while, the following error may occur when you use lots of logicals:
           %SYSTEM-F-EXLNMQUOTA, logical name table is full
    I've been able to operate well at ~240 logicals. Somewhere above that I hit the EXLNMQUOTA error. So there may be a limit of 256 logicals (or thereabouts).

  • After switching between roughly 200-300 directories, the shell will oftentimes hang. Reason unknown. But, on the other hand, a shell can usually be run for days if not weeks, if there is not a lot of directory switching.

    Note:
    It should be noted that I define a new logical (or redefine an existing logical) each time I change directories via my CHDL.DCL, so this problem might not be related at all to SET DEF changing directories, but instead it might be related to the just mentioned problem of having too many logicals.
  • Sometimes a file which had been accessed via an Open DCL Lite command can not be deleted from within Windows Explorer until after DCL Lite is closed.  Though sometimes you can clear up the file lock in a less intrusive manner by simply issuing an EXIT then SHOW TIME.

  • Once in a blue moon, for unknown reasons, DCL Lite just goes "bonkers". For example, being unable to TYPE any text files, but after logout then login, the TYPE command is working again!?!?  This is quite rare.

  • The "%" usually works fine as a single-character wildcard in filespecs. However, both of the following two cases -- which use "%" within a double quoted filespec which is part of an /EXCLUDE clause -- caused a 100% CPU bound infinite loop:

           $ search /exact /exc=("volvo%%%diag.html")  *.html  "IE8","IE9","IE10","IE11"

    or:

           $ dir/siz/date /exc=("volvo%%diag.html")  volvo850diag.html

    If the double quotes are removed from the /EXCLUDE clause, the commands work as expected.

  • No easy way to change the default command type from .COM to .DCL or .A8D, since .COM is a default association under Windows.

  • Redirection of SYS$OUTPUT might be somewhat different from (what I remember of) the VMS SYS$OUTPUT.  Nevertheless, it's still very usable.

  • OpenVMS file version #s are not truly implemented.

    Of course, this is not really Accelr8's fault. It's primarily a result of the Windows file system design not mimic-ing the OpenVMS file numbering scheme.

    The Accelr8 method of simulating OpenVMS file version #s using the .~n~ extension to the filetype is helpful to avoid overwriting files at times, so really the Accelr8 file version #s scheme is more of a pro than a con. But it simply is not thorough enough to be used often, and it really seems out of place in a Windows or Unix/Linux environment that, by and large, is not designed to use the extremely useful "multiply versioned files" component of the OpenVMS file system.

    The lack of OpenVMS file version #s was a major loss to me initially, since I used that feature so extensively in the OpenVMS world. However, over the years, I've adapted to the simpler reality of the PC world and have developed Windows workarounds by simply copying files then renaming them with descriptive names that identify the versions, dates, and/or types of differences. This is sufficient for my "single user" purposes, doesn't require the overhead of a CMS type system, can be easily pruned by simply deleting any excess archival copies, and doesn't require as much periodic purging to clean up the excess versions in the directory (like OpenVMS did when I was using it).

  • A free & workable EVE or TPU is not available under DCL Lite.

    • As an alternative, the free & very useful, high quality EDT-like editor, ED (maintained by Charles Sandmann), can run in a 50-line MS-DOS Prompt or CMD Prompt window.  It is appropriate for everyday use, only if the keyboard has a separated keypad.

      As of 2017-11-16, the next to last version -- ED v1.6 (circa 2009) -- was still downloadable from the Wayback Machine's http://web.archive.org/web/20151127213413/http://homer.rice.edu/~sandmann/EDstuff/ files index page. Unfortunately, the ED-17*.* packages on that page are not downloadable.  Check out this 3 page mishmash of v1.7 and v1.6 pages:

    • Of course, there are plenty of alternative Windows GUI based text editors that aren't constrained by the "DOS box" type window.

I hope this analysis saves you some time and energy when evaluating if Accelr8 Open DCL Lite v2.21 running on Windows (eg, WinXP, Win7, Win10) is a suitable DCL implementation for your needs.

See Comparison of PC-DCL vs. Open DCL Lite to see why I consider Open DCL Lite to be superior to PC-DCL for most purposes, but how PC-DCL can be used to provide some functionality which Open DCL Lite is missing.

See Mutual Extensibility of Open DCL Lite and PC-DCL for more details on how PC-DCL and Open DCL Lite can coexist and mutually extend one another.

Pros              Cons       

This page is copyright © 2012-2022, Richard H. Jones. All rights reserved.

Page's last update was on 2022-07-12.