This version of CCL is a composit of the work of Angle Li at the
University of Miami, Paul Sorenson at Michigan State University, and Jim
Downward at KMS Fusion. Angle Li edited the code to remove all the funny
F4P lables and to comment the code. Paul Sorenson then provided a
substanitial rewrite to CCL to provide significantly more flexible command
string parsing.
V8.0 of CCL will use the RPOI$ directive to chain command lines to
tasks. In doing so the OCB's will be relinked and CCL will exit at once
since it is not needed to hang around in core to pass back OCB information.
This makes it possible to have CCL commands within a command file started
by a CCL command. Also CCL was upgraded so that it can be an Alternate
CLI for RSX11M V4.0. If it is used as an alternate CLI, it will receive
the command line prior to MCR. This means that any MCR command (even for
installed tasks) can be trapped and reparsed. Moreover, even with an
unmodified MCR, illegal characters can be used as commands.
The same CCL task image can be installed both as the catchall task
(...CA.) and as an alternate CLI. If it is to work as a catchall task
it must be installed with the name ...CA. User's desiring to use the
Alternate CLI features should create a LB1:[1,5]SYSCLI.CCL file
to avoid nasty error messages. Note that both the names for the system
and the user CCL files are modified for if CCL is a CLI. The names
are LB1:[1,5]SYSCLI.CCL and SY:[UIC]USERCLI.CCL.
To simplify use of CCL for user's (like myself) who often assign a local
LB:(to do a sysgen). The location of SYSCCL.CCL has been moved to LB1:
(unless symbol $LB0 is defined in PRECCL.MAC). To use CCL, please do a global
assign of LB1: to a physical disk either in VMR or in STARTUP.CMD.
As was previously mentioned, this version of CCL has been extensively
rewritten to provide a more flexible command format. The major changes that
must be kept in mind for this newest version are,
1) All conditional assembly directives are now in PRECCL.MAC
for easier access (see comments for their affects).
They are $LB0,,$DCL, and $TABLE.
2) An internal table lookup has been added to offer a compromise
between DCL and the .CCL files. (see comments in CCL.MAC)
3) Several new parameters have been defined -- %A%, %B%, %C% and %0%
%A% is set the the entire character string past the command.
%B% is set to character string up to first space
%C% is defined as everything not in %B% (excluding delimiter)
%0% is set to values of any leading switches
(e.g. BRU/REW/VER, %0%=/REW/VER)
4) Two options have been added for command building. If a
parameter is null, it may be replaced by a string starting with
the key character "\" and extending to the % delimiter, also,
a parameter may be tested by %2?S1\S2% which will insert string
"S1" if parameter 2 is defined, otherwise string "S2" will be
inserted (either S1 or S2 may be null).
5) A command line may extend to the next line by including the "+"
character as the last character in the line.
6) USERCCL.CCL is opened on the user's logon UIC rather than the
current default UIC.
7) If CCL can not find a command, it will try sending off its
command to another catchall ...CA2.
8) %R is a special character signifying that CCL is to ring the
terminal BELL when it exits. A previous version used %B for this.
Sorry for the incompatability.
9) %D is added to aid in debugging CCL command lines. When it is
encountered, the command up to that point is displayed in
expanded format at the user's terminal rather than being sent
to MCR.
9) %P is added to signify that an action line is to be printed out
on TI:. This makes it very easy to create CCL commands which
send escape sequences to control terminal characteristics.
10) %Q is added to signify that CCL should exit without sending on
the command to MCR if a required input field is defaulted with
a null (ie %1\%) and the input parameter is also a null.
This prevents various PIP like commands from occuring with
no files specified which often results in defaulting to the
entire directory.
11) Two possible TABLE macro files are offered. TABLE.BIG has all
kinds of CCL commands and results in a significantly larger
CCL. TABLE.KMS includes those commands which used to
be processed by the internal DCL code. The size of CCL using
the internal table file is comprable to the previous versions
using hard coded command. TABLEGEN.CMD allows the user to create
an internal CCL file.
12) CCLGEN allows the user to select amoung a variety of options.
If the user desires to use an internal table file, CCLGEN
will allow the user to link to TABLEGEN.CMD to create an
internal table from a standard CCL file. One can use either
USERCCL.CCL or SYSCCL.CCL, for example, as a source file.
13) CCL now checks to see if the keyword typed in is longer than
the maximum specified in the file (previously was ignored). This
means that commands FOO and FOOY can be different and distinct.
14) Documentation and HELP files have been updated to reflect
the many, many new features.
15) CCL now uses RPOI$ to chain the command to MCR if either a %$
is found, or if the action line is the last or only action line.
The Command is chained off, and CCL immediately exits. This is
only for the commands handled via the table file or the external
file. The hardwired commands still use SPAWN. If RPOI$ fails
CCL trys to use the SPAWN directive. Note that this makes it
possible to have CCL commands within command files started by
CCL commands. CCL is no mostly recursive although it is still
not possible to have a CCL command itself be a CCL command.
16) Support for Dan Steinberg's patch for DRSPW (passing/relinking
OCB's on special SPAWN directive) is withdrawn. RPOI$ can be
used without patching the standard RSX11M system.
17) Support for CCL as an alternate CLI.
KNOWN BUGS and RESTRICTIONS
1) If you specify the following in a command definition file
$4411XSET
*command_text
CCL will come back and tell you that there is a read error on
LB1:[1,5]SYSCCL.CCL. If you try
$4411XSET
?0Switches
*set %0%%1%P%
you will also get a read error message on LB1:[1,5]SYSCCL.CCL
if you type XSET /UIC=[xxx]. Values are stuffed into the %0
parameter until a space is found. Hence the whole line goes
into %0. Now this screws up the checking for whether or not
enough parameters were entered. %0 is not at this time counted
as one of the characters, so CCL gets confused. The %0 parameter
should be used with care until someone has a chance to come up with
a versitile fix which doesn't screw up something else. II don't
have time to fix this bug for this release, but I would welcome
any help that any of you users would like to give.
Active contributers to CCL now include
Mr. Angel Li
RSMAS/MPO
University of Miami
4600 Rickenbacker Cswy.
Miami, Fl. 33149
(305)-350-7491
Paul Sorenson
Dept. of Physiology
Mich. State Univ.
E. Lansing, MI 48824
(517)-355-5125
And myself,
James G. Downward
KMS Fusion, Inc
PO Box 1567
Ann Arbor, Mi 48106
(313)-769-8500