22222 0000 22222 22222 2 2 0 0 2 2 2 2 22 0 0 22 22 22 0 0 22 22 22 0 0 22 22 2 0 0 2 2 2222222 0000 2222222 2222222 A TOPS-20 command parser for System 1022 David L. Wodelet Strathcona County Alberta, Canada ABSTRACT 2022 is a TOPS-20 front-end command parser for the System 1022 data base management system from Software House. Through use of TOPS-20's COMND% jsys 2022 provides escape recognition and the "?" help feature for nearly all 1022 commands. The only commands NOT implemented in 2022 are those commands specific to TOPS-10 or those used exclusively within PL1022 or report programs. This session will cover the following topics: I. Introduction II. 2022 / 1022 Differences III. Ordering 2022 (and what you get) IV. Modifying 2022 V. Known Bugs Page 2 I.0 INTRODUCTION Strathcona County is located just east of the city of Edmonton in Alberta Canada. We use 1022/1032 on our DECSYSTEM-2060, MicroVAX-II and VAX 8600 to manage data for our PAYROLL, PERSONNEL, ASSESSMENT, TAXATION, FINANCE and EDUCATION systems. 2022 was written to make the learning and use of 1022 easier for our user community. TOPS-20 style command recognition and completion provided users with a command environment that they were already familiar with. The "?" help facility helps them through unfamiliar commands and the "" command completion not only reduces keystrokes but helps reduce spelling mistakes as well. 2022 is written entirely in MACRO and uses TOPS-20's COMND% jsys to parse each 1022 command. The parsed command is then passed to 1022 via the DBEXEC interface from Software House. We have been using 2022 at our site since May 1985 and any performance differences that do exist between 1022 and 2022 have not been noticable to our users. For batch processing we encourage our users to still use 1022 to avoid the overhead of fork creation and double parsing of commands. II.0 2022 / 1022 DIFFERENCES 2022 was designed to be as identical to 1022 as possible however some differences do exist: 1. Nearly all 1022 command can be used in 2022. Only those commands specific to TOPS-10 or those used exclusively within PL1022 or report programs have NOT been implemented. Since PL1022 and REPORT programs are usually put in a DMC file and not directly entered at the terminal, absence of these commands from 2022 has not been a serious drawback. Commands NOT implemented in 2022 include: CALL GOTO LEAVE ON CHANGE ON END ON START SECTION TMPFILE If you need to use an unimplemented command you can always use "2022>1022 " OR "2022>1022 " to bypass 2022 command parsing. Typing "2022>1022 " enters the 1022 command environment. It is useful if you have a number of unimplemented commands to enter. Then, when you want to return to 2022, just use the 1022 "HOST" command. Page 3 2. 2022 has some extra commands that don't exist in 1022. They are: A) 1022 Use this command to bypass the 2022 command parser and execute any 1022 command. This may be necessary if you want to execute a 1022 command not implemented in 2022 (eg: use the @= construct in the middle of a command). If you simply type "2022>1022 " then you will enter the 1022 command environment - all command parsing is done by 1022. To return to the 2022 command environment use the 1022 "HOST" command. B) 2022 Use this command to enter the 2022 sub-command level. This level contains a number of commands which control various features of the 2022 program. "QUIT" will exit this sub-command level. (a) TAKE (commands from) The file may contain 1022 commands as well as those commands specific to 2022. (b) SET {NO} ECHO (when taking command files) Controls the ECHOing of command during a TAKE or when processing commands from the rescan buffer. The rescan buffer is automatically set up by the EXEC when you run the 2022 program. For example, if you enter: @2022 OPEN FOO.DMS,FIND ALL,TYPE ALL The entire command line is placed in the rescan buffer by the EXEC program. 2022 will process everything on this line after the "@2022". The default when 2022 starts up is NO ECHO. (c) SET {NO} DISPLAY (of commands sent to 1022) Setting DISPLAY causes 2022 to display the actual command passed to 1022. The command sent usually is an expanded form of what you typed in. For example if you entered "2022>INF B" the command passed would be "INFORM BASE". The DISPLAY command is normally only used for debugging purposes. The default when 2022 starts up is NO DISPLAY. (d) INFORMATION (about program) Gives information about the status of various switches and features of 2022. (e) QUIT (current command level) Ends the "2022>>" sub-command level and returns you to "2022>". Page 4 (f) EXIT (and return to monitor) Ends 2022 and returns you to the EXEC ("@" prompt) (g) HELP Types the file HLP:2022.HLP to give help on 2022. 3. Unlike 1022, 2022 processes commands in the rescan buffer prior to accepting input from the terminal. For example: @2022 OPEN XXXX.DMS,INF STRUCTURE @2022 OPEN TTT,FIND ALL,TYPE ALL Notice that each complete command, except the last, must be separated by a comma (","). Once all the commands in the rescan buffer are processed 2022 will exit. If an error is found while parsing the commands then processing of the rescan buffer is aborted. 4. Since "?", "", and ^F are action characters in TOPS-20 they can only be included in data to be sent to 1022 if you prefix them with a ^V. Control-V is the standard "accept-next-character-as-is" prefix in TOPS-20. 5. 1022 allows you to enter many commands on a single line so long as each command is terminated with a period ("."). 2022 does NOT allow this functionality for most commands. 6. A "!" in 1022 causes it to ignore text until the end-of-line. 2022, because it uses TOPS-20's COMND% jsys, treats a "!" differently. A "!" will cause 2022 to ignore text until the next "!" or the end-of-line - whichever comes first. Therefore in 2022 you may want to use use a ";" in place of 1022's "!". If you want to include a ";" as input for a 1022 command you must prefix it with ^V otherwise all text from the ";" to end of line will be ignored. 7. The 1022 "@" and "@= constructs take on their 1022 meaning only if "@" is the FIRST character of a command line. If the "@" is used any other place then it is interpreted as the standard TOPS-20 "@" construct. You must use the "2022>1022" command if you want to use 1022's "@" construct somewhere else in the line. 8. The 1022 "SET PROMPT" command does NOT change the "2022>" command prompt. There is currently no way to ask 1022 for this information. 9. Where a keyword is unambiguous you don't have to worry about expanding it to the minimum abbreviation that 1022 will accept since 2022 will do that for you. For example, if you enter "I B" 2022 will be passed to DBEXEC as "INFORM BASE". However the minimum abbreviation 1022 will accept is "I BAS" even though "BASE" is the only INFORM keyword starting with a "B". Page 5 10. When there is only one keyword possible for a command hitting the escape will get that keyword. For example, in the "IGNORE DAMAGE" command DAMAGE is the only keyword possible so typing "IG" is all that is needed to complete the command. 11. The 2022 EDIT, USE and @ commands will all save the file specifications of the last file used - just like the EXEC's EDIT command does. This speeds up the EDIT, USE, EDIT, USE cycle in developing a new DMC. To re-use the previous file just follow EDIT, USE or @ with the . If you want to see what the saved file specs are then follow the command with two . III.0 ORDERING 2022 (AND WHAT YOU GET) You can order 2022 by calling the DECUS order department at (617)480-3419. The cost is $45.00 for DECUS members and $49.00 for non-members. Shipment and handling is $2.00. The tape you receive should contain the following files: 2022.BWR .HLP .MAC .READ_ME_FIRST .REL_116B .REL_117A .REL_117B .RNH .USER_CONF MLIB.0 .CMD .MAC .REL .UNV FILCMP.EXE .MAC .RNH PHOTO.EXE .MAC .RNH 2022.BWR -a list of known but currently unfixed problems with 2022. Most of these are with the 1022 DBEXEC interface which 2022 makes heavy use of. 2022.HLP -the on-line help file used by 2022.EXE. This file must be copied to a directory on the HLP: logical search chain. Page 6 2022.MAC -source file for 2022. To assemble it please read the instructions at the beginning of the file. 2022.READ_ME_FIRST -contains information about installing 2022 on your system. 2022.REL_* -the RELocatable files for different versions of 1022. They were produced from the 2022.MAC on this tape by using different assembly time switches. They are provided for your convenience but, if you desire, you may recreate these REL files by following the instructions given at the beginning of 2022.MAC. Here is an example of how to create 2022.EXE from one of the supplied REL files: @RENAME 2022.REL_117B (TO) 2022.REL @LOAD 2022.REL @SAVE For the LOAD to work you must insure that MLIB.REL (supplied on this tape) can be found on DSK: and that the correct version of HR1022.REL and HL1022.REL (supplied with 1022 from Software House) can be found on SYS:. 2022.RNH -RUNOFF source file for producing 2022.HLP 2022.USER_CONF -Notes from the 2022 session given at the 1986 1022/1032 Users Conference. MLIB.0 -used by MLIB.CMD to produce MLIB.UNV MLIB.CMD -assembles MLIB.MAC to produce MLIB.REL and MLIB.UNV MLIB.MAC -source file for MLIB.REL and MLIB.UNV MLIB.REL -contains subroutines used by 2022 MLIB.UNV -contains definitions required to assemble 2022.MAC The rest of the files on tape are NOT required by 2022. They are programs developed at Strathcona County that we think other sites may find useful as well. FILCMP.MAC -A file compare program similar to Digital's FILCOM. However, it differs in that FILCMP is a native TOPS-20 program using the COMND% jsys to parse commands and the extended instruction set to do the compare. Page 7 Consequently it's about 8 to 10 times faster than Digital's FILCOM. FILCMP also has the ability to use the output from the COMPARE command to update another file. This function is useful for re-adding local patches to new versions of software. PHOTO.MAC -An enhanced version of the popular PHOTO program. This rewrite has given PHOTO much more functionality. For example it has a REPLAY command that allow a photo session to be "replayed" at various speeds with all escape sequences acted on instead of being translated to printable ascii characters. IV.0 MODIFYING 2022 Before assembling 2022 you must insure that the following files are located on the proper devices: MLIB.REL, MLIB.UNV -must be found on DSK: MONSYM.UNV, MACSYM.UNV -must be found on SYS: HR1022.REL, HL1022.REL -must be found on SYS: HL1022.REL is only required for the MC.CET routine to handle ^E interrupts. Since MC.CET may not be available in pre-116 version of HL1022 don't worry if LINK can't find it since 2022 will still run without it. Once your logical names are set up properly you can assemble 2022 for the latest version of 1022 it supports with the following commands: @LOAD/COMP 2022.MAC @SAVE To assemble 2022 for a different version of 1022 other than the latest use the following commands. This example shows how to assemble 2022 for version 116B of 1022: @COPY TTY: 2022.16B VMAJOR==116 VMINOR==2 ;"A"=1, "B"=2, etc... ^Z @LOAD/COMP 2022.16B+2022.MAC @SAVE 2022 has only been tested with 1022 versions 116B and up. 2022 will probably still LINK and run with earlier versions but earlier versions may not have the MC.CET ^E support routine in HL1022.REL. Also any 1022 commands that were new to 116B will still show up in the "?" help feature even though they are invalid for the earlier versions. Page 8 You are free to distribute 2022 to other sites as long as you distribute it in its complete form - just as you should have received it. Nothing is worse than getting an incomplete copy that won't run or even reassemble for one reason or another. Any patches that you have made to 2022 should be distributed as separate files or save-sets on the tape. You may wish to use the FILCMP program to extract your local changes to 2022: @FILCMP FILCMP>COMPARE 2022.MAC 2022.MAC_NEW 2022.CHANGES/UPDATE Now if another site wants to incorporate your changes into the original version of 2022.MAC all they need to do is: @FILCMP FILCMP>UPDATE 2022.MAC (using changes in) 2022.CHANGES V.0 KNOWN BUGS Since 2022 is NOT a product of Software House the only problems you should report to Software House are those you discover to be within the DBEXEC or 1022M.EXE interface. All other problems with 2022 should be reported to the following address. If you have a solution please send that along as well. We will do our best to quickly get the problem fixed and have an updated version available through DECUS. Strathcona County 2001 Sherwood Drive Sherwood Park Attn: Dave Wodelet Alberta, Canada (403)464-8282 T8A 3W7 The following problems are with the DBEXEC interface supplied by Software House. 2022 makes heavy use of this interface so is consequently impacted by these problems as well. Software House has been notified about all of them so hopefully they'll be fixed in future releases. These problems exist for versions 116B through 117B(200) of 1022 but may exist for other verions as well. 1. SYSTIME does not get updated by each call to DBEXEC. And since 1022 will not allow 2022 to update this system variable it will remain set to the time that 2022 was started. 2. The 1022 "SET PROMPT" command does NOT change the "2022>" command prompt. There is currently no way to ask 1022 for this information. 3. Once "#T" is used through DBEXEC there is no way to turn it off. 2022>file type foo.dmc.1 Page 9 LET SYSALCMSG = 1. LET SYSCASE = 1. 2022>use foO.DMC.1 2022>use (command file) foO.DMC.1 2022>#t ? USE or confirm with carriage return 2022>#t usE (command file) foO.DMC.1 LET SYSALCMSG = 1. LET SYSCASE = 1. 2022>use (command file) foO.DMC.1 LET SYSALCMSG = 1. LET SYSCASE = 1. 2022>exIT (from 1022) EXIT 4. Using "REPORT START" .... "REPORT END" through DBEXEC can make output from the FIND command disappear: 2022>OPEN FOO 2022>FIND ALL (((everything displays ok here))) 2022>REPORT START 2022>REPORT END 2022>FIND ALL (((nothing displays here))) 2022>I B (((nothing displays here))) 2022>1022 *HOST 2022>FIND ALL (((things back to normal now))) 5. 1022 has some problems handling data set descriptors if the descriptor has logical names or file generation numbers. For example: NOTE This problem is a "feature" of 1022 so there are currently no plans to fix it. @DIR FOO.* MARS: FOO.DMS.2 @2022 2022 version 117A(1)-2 2022>OPEN FOO 2022>I B TODO in FOO.DMS ! is set #1 <= Page 10 2022>DBSET FOO.DMS 2022>DBSET FOO.DMS.2 ? (CS81) Invalid dataset specified DBSET FOO.DMS.2 2022>DBSET DSK:FOO.DMS ? (CS81) Invalid dataset specified DBSET DSK:FOO.DMS 2022>DBSET MARS:FOO.DMS ? (CS81) Invalid dataset specified DBSET MARS:FOO.DMS 2022>I B TODO in FOO.DMS ! is set #1 <= 2022>OPEN DSK:FOO.DMS.2 2022>I B TODO in DSK:FOO.DMS.2 ! is set #1 <= 2022>DBSET FOO.DMS 2022>DBSET FOO.DMS.2 2022>DBSET DSK:FOO.DMS.2 2022>DBSET MARS:FOO.DMS.2 ? (CS81) Invalid dataset specified DBSET MARS:FOO.DMS.2 2022>I B TODO in DSK:FOO.DMS.2 ! is set #1 <= 6. There is a problem with DBEXEC if you use a DMC that has errors in it. In certain cases after reporting the error it returns to "* (PL)" level instead of the "*" command level: @TY FOO.DMC.1 PL1022 START. PL1022 START. @1022 13/6/85 System 1022A 117A(215)-2-preliminary [.37]* USE FOO ? (CS146) Unterminated REPORT or PL1022 segment ends command file [.15]* EXIT EXIT @2022 2022 version 117A(4)-2 2022>1022 [use HOST to return to 2022] [.27]* USE FOO [.01]* (PL) EXIT Terminating PL1022 or REPORT [.02]* EXIT EXIT 7. Errors in a DMC file can cause problems if you use the DMC through the DBEXEC interface: Page 11 @;The file USE-PROBLEM.DMC has a mistake in it which causes @;it to skip the "PL1022 END" in the file - this causes @;problems if you're using the DBEXEC interface but not with @;standalone 1022 @ @TYPE (FILE) USE-PROBLEM.DMC OPEN FOO. PL1022 START. FIND ALL. REPORT START. SECTION INITIAL. SECTION GETREC. GETREC DONE. SECTION HEADING. SECTION PRINT. DONE: SECTION TOTALS. SECTION FINAL. PL1022 END. REPORT END. @2022 2022 version 117A(20)-2 2022>1022 !enter DBEXEC [type "HOST" to return to 2022] [.21]* USE USE-PROBLEM.DMC ? (CS154) Outside PL1022 segment terminates in a REPORT FILE USE-PROBLEM.DMC, LINE 12 PL1022 END [.54]* (PL) !notice we are still at the "PL1022" level so [.08]* (PL) !the command file has not been completely [.04]* (PL) !aborted. Typing "PL1022 END" will abort it [.04]* (PL) PL1022 END. ? (CS76) Errors seen, PL1022 or REPORT execution stopped PL1022 END. [.04]* !Depending on what errors are in the DMC it is also [.04]* !possible to have it still left at the "(R)" level [.04]* !instead of "(PL)" level. In other situations it was [.04]* !possible to be nested a number of "(R)" or "(PL)" [.04]* !levels so more that one "PL1022 END" or "REPORT [.04]* !END" command needed to be given before the DMC was [.04]* !completely aborted [.10]* Q EXIT @1022 System 1022A 117A(333)-2 [.30]* USE USE-PROBLEM.DMC ? (CS154) Outside PL1022 segment terminates in a REPORT FILE USE-PROBLEM.DMC, LINE 12 PL1022 END ? (CS146) Unterminated REPORT or PL1022 segment ends command file [.39]* !Notice that the command file is now completely [.04]* !aborted. Also notice that the last error message [.04]* !displayed here did NOT come out when the DMC was [.04]* !USEd under DBEXEC [.01]* Q Page 12 EXIT 8. When a text literal spans the line boundary DBEXEC adds a "." to the end of the incomplete literal. For example: 2022>TYPE DESC THIS IS A TEXT ITEM 2022>CHANGE DESC 'THIS IS A TEST [WARNING - TEXT LITERAL SPANS LINE BOUNDARY (SPACE INSERTED)] CHANGE DESC 'THIS IS A TEST CHANGE>>' 2022>TYPE DESC !***notice the "." at the end of line THIS IS A TEST . 2022>CHANGE DESC 'THIS IS A TEST' 2022>TYPE DESC THIS IS A TEST 2022>