Trailing-Edge
-
PDP-10 Archives
-
decuslib20-10
-
decus/20-184/2022.user_conf
There are no other files named 2022.user_conf in the archive.
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 "<escape>" 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 <any_1022_command>" OR "2022>1022 <return>"
to bypass 2022 command parsing. Typing "2022>1022 <return>"
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 <optional_1022_command>
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 <return>" 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 <optional_2022_command>
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) <file>
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 "?", "<escape>", 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 "@<file>" and "@=<variable-name> 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 "@<file>" 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<escape><escape>" 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 <return-key>. If you
want to see what the saved file specs are then follow the
command with two <escapes>.
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 <usually-in-same-area-as-1022.EXE>
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 <usually-in-same-directory-as-1022.EXE>
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 <usually-in-the-same-directory-as-1022.EXE>
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:<WODELET.WORK>
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:<WODELET.WORK>FOO.DMS
? (CS81) Invalid dataset specified
DBSET MARS:<WODELET.WORK>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:<WODELET.WORK>FOO.DMS.2
? (CS81) Invalid dataset specified
DBSET MARS:<WODELET.WORK>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>