306 lines
12 KiB
Plaintext
306 lines
12 KiB
Plaintext
_______________________________________________________________________________
|
|
|
|
|
|
An Introduction to PRIMOS CPL Directives
|
|
Written by Necrovore
|
|
|
|
A Telecom Computer Security Bulletin File
|
|
_______________________________________________________________________________
|
|
|
|
|
|
|
|
PREFACE
|
|
|
|
This text file is intended to serve as a reference guide for the aspiring CPL
|
|
programmer. It is a full listing of CPL commands and discusses all arguments
|
|
rather thoroughly. The following directives may be used within CPL programs
|
|
only (for information on writing CPL programs, see the CPL User's Guide).
|
|
|
|
This file was to be released in Phrack Issue 20 but certain members of that
|
|
organization decided that this information was "too valuable for release to the
|
|
general public". You know what I think of that? Utter bullshit. Sounds more
|
|
like a bad case of information hoarding to me. That is not very cool. They
|
|
appear to be afraid that Primes will be abused by people. Tell me, is it not
|
|
better to teach everyone what CPL is and what it can do and how to PROPERLY use
|
|
it? Thus, this file is not being released in Phrack. It is being released as
|
|
part of TCSB Volume One.
|
|
|
|
|
|
CPL COMMANDS
|
|
|
|
&ARGS [name[;[type][=default] ]...]~
|
|
[name: -control_list [name[;[type][=default] ];...] ]
|
|
|
|
Defines names (plus types, default values, and keywords, if desired) for arg-
|
|
uments to be passed to a CPL program. Type may be any type shown below. If
|
|
type is not specified the argument defaults to type char. If default is not
|
|
specified, the system defaults are assigned as shown below:
|
|
|
|
Argument CPL
|
|
Type Explanation Default Value
|
|
|
|
CHAR Any character string up to "
|
|
1024 characters long, mapped
|
|
to upper case (default).
|
|
CHARL Any character string up to "
|
|
1024 characters long, no
|
|
case shifting.
|
|
TREE A filename, directory name, "
|
|
or pathname, up to 128 char-
|
|
acters long. The last element
|
|
of the pathname (that is, the
|
|
final file or directory name)
|
|
may contain wildcard characters.
|
|
ENTRY A filename up 32 characters "
|
|
long; may contain wildcard
|
|
characters.
|
|
DEC A decimal integer (A). 0
|
|
OCT An octal integer (A). 0
|
|
HEX A hexadecimal integer (A). 0
|
|
PTR Pointer; a virtual address 7777/0
|
|
in the format "octal/octal"
|
|
(segno/wordno) (B).
|
|
DATE Calendar date in the format "
|
|
mm/dd/yy.hh:mm:ss or yy-mm-
|
|
dd.hh:mm:ss. "
|
|
REST The remainder of the command
|
|
line.
|
|
UNCL All tokens not accounted for "
|
|
in the &ARGS picture.
|
|
|
|
(A) Numeric arguments must be within the range if -2**31+1...2**331-1
|
|
(B) User specified default values are not supported for this datatype.
|
|
|
|
|
|
&CALL routine_name
|
|
|
|
Transfers control of the internal routine designated by routine_name. See also
|
|
&ROUTINE.
|
|
|
|
|
|
&CHECK expression &ROUTINE routine_name
|
|
|
|
Defines an error condition (expression) and a routine (routine_name) to handle
|
|
the condition. When this directive is present, the CPL interpreter evaluates
|
|
expression after executing each PRIMOS command. If expression is true, control
|
|
passes to routine_name.
|
|
|
|
|
|
&DATA statement
|
|
statement1
|
|
.
|
|
.
|
|
.
|
|
statement-n
|
|
[&TTY]
|
|
&END
|
|
|
|
Groups of statements to be treated as data or subcommands for user programs or
|
|
PRIMOS utilities. The statement immediately following &DATA must invoke the
|
|
program or utility. All other statements between &DATA and &END are evaluated,
|
|
and the results written into a temporary file. The program (or utility) is
|
|
then invoked and information passed to it, a line at a time, when called for.
|
|
|
|
The &TTY directive may be used as the last statement preceding the &END. When
|
|
it is reached, control passes to the user at the terminal. When the user exits
|
|
from the program or utility, control returns to the CPL program.
|
|
|
|
|
|
&DEBUG [option-list]
|
|
|
|
Enables debugging for the CPL procedure containing the &DEBUG directive. If
|
|
given without options, &DEBUG is equivalent to &DEBUG NO_EXECUTE &ECGI ALL.
|
|
Options are:
|
|
|
|
OPTION ACTION
|
|
|
|
&OFF Turns off all debugging options.
|
|
Initially all options are off.
|
|
&NO_EXECUTE, &NEX Suppresses execution of PRIMOS
|
|
commands, but interprets CPL
|
|
directives.
|
|
&EXECUTE, &EX Enables execution of PRIMOS
|
|
commands.
|
|
{ALL} If ALL is specified, echoes PRIMOS
|
|
&ECHO {COM} commands and CPL directives. If COM
|
|
{DIR} is specified, echoes only PRIMOS
|
|
commands. If DIR is specified,
|
|
echoes CPL directives. Default is ALL.
|
|
{ALL} ALL cansels all echoing. COM cancels
|
|
&NO_ECHO {COM} echoing of PRIMOS commands. DIR
|
|
{DIR} cancels echoing of CPL directives.
|
|
Default is ALL.
|
|
&WATCH Adds the specified variables to the
|
|
[var1 var2 ... var16] watchlist When the value of a
|
|
watched variable is changed using
|
|
the &SET_VAR directive (not the &SET_
|
|
VAR command), CPL reports this fact
|
|
and the new value of the variable.
|
|
At most 16 variables can be on the
|
|
watchlist. If no vari are present,
|
|
all variables are watched.
|
|
&NO_WATCH Removes the specified variable(s)
|
|
[var1 var2 ... var16] from the watchlist. If no variables
|
|
are specified, watching is turned
|
|
off completely.
|
|
|
|
|
|
&DO [iteration]
|
|
statement-1
|
|
.
|
|
.
|
|
.
|
|
statement-n
|
|
&END
|
|
|
|
Allows a group of statements to be used anywhere a single statement can be
|
|
used. If iteration is present, allows conditionally repeated execution of the
|
|
statements contained between the &DO and the &END, iteration may be any of:
|
|
|
|
1. null (statement grouping)
|
|
2. [&WHILE while] [&UNTIL until]
|
|
3. var := start [&TO to] [&BY by]
|
|
[&WHILE while] [&UNTIL until]
|
|
4. var &LIST list [&WHILE while] [&UNTIL until]
|
|
5. var &ITEMS items [&WHILE while] [&UNTIL until]
|
|
6. car := start &REPEAT repeat~
|
|
[&WHILE while] [&UNTIL until]
|
|
|
|
|
|
&EXPAND {ON}
|
|
{OFF}
|
|
|
|
Turns abbreviation expansion on or off. Default is OFF.
|
|
|
|
|
|
&GOTO label_name
|
|
|
|
Transfers control to the statement following the &LABEL label_name directive.
|
|
|
|
|
|
&IF expression &THEN true-statement
|
|
[&ELSE false-statement]
|
|
|
|
Evaluates expression. If expression is true, true-statement is executed. If
|
|
expression is false, then:
|
|
|
|
o If &ELSE is present, false-statement is executed.
|
|
o If &ELSE is not present, control passes to the next
|
|
statement in the CPL program.
|
|
|
|
|
|
&LABEL label_name
|
|
stateent
|
|
|
|
Defines a label, label_name to which a &GOTO can go. (When &GOTO is reached,
|
|
control passes to the statement following the &LABEL directive)
|
|
|
|
|
|
&ON condition &ROUTINE routine_label
|
|
|
|
Defines an internal routine to act as condition-handler (or on-unit) for the
|
|
defined condition. (See the PRIMOS Subroutines Reference Guide for a list of
|
|
PRIMOS-defined conditions and an explanation of PRIMOS's Condition Mechanism)
|
|
|
|
|
|
&RESULT expression
|
|
|
|
Used only in CPL programs designed to invoke via function calls from other CPL
|
|
programs. (For example, "&IF A<50 &THEN &S B := [R program]").
|
|
|
|
When the &RESULT directive is reached, expression is evaluated and its value
|
|
returned as the result of the function call.
|
|
|
|
|
|
&RETURN [severity] [&MESSAGE text]
|
|
|
|
Halts execution of procedure in which it occurs. Returns control to procedures
|
|
called.
|
|
|
|
If &MESSAGE is present, prints text on terminal when control returns. If sev-
|
|
erity is present returns its value as a severity code to the procedures caller.
|
|
Severity must be an integer.
|
|
|
|
|
|
&REVERT condition
|
|
|
|
Disables the latest condition handler defibed (via the &ON directive) for the
|
|
named condition.
|
|
|
|
|
|
&ROUTINE routine_name
|
|
|
|
Names and defines entry point for an internal routine.
|
|
|
|
|
|
&SELECT test_expression
|
|
&WHEN expression-1 [,expression-2, ... ,expression-n]
|
|
statement
|
|
&WHEN expression-1 [,expression-2, ... ,expression-n]
|
|
statement
|
|
.
|
|
.
|
|
.
|
|
[&OTHERWISE statement]
|
|
&END
|
|
|
|
Test_expression is evaluated and tested against expression-1, expression-2, and
|
|
in turn until expression-n is reached. When a match for test_expression is
|
|
found, the statement following the matching expression is executed.
|
|
|
|
If no match is found, then:
|
|
|
|
o If an &OTHERWISE directive is present, the statement following
|
|
it is executed.
|
|
o If no &OTHERWISE directive is present, control passes to the
|
|
statement following the &END of the &SELECT group.
|
|
|
|
|
|
&SET_VAR var-1 [, var-2, ... , var-n] := value
|
|
|
|
Sets the value of the named variables to value. The variables need not exist
|
|
previously. May be abbreviated to &S.
|
|
|
|
|
|
&SEVERITY [level] [action]
|
|
|
|
Checks for severity codes other than 0 (where codes > 0 indicate errors and
|
|
codes < 0 indicate warnings) after execution of each PRIMOS command. If a code
|
|
>= level is found, takes the specified action.
|
|
|
|
Level may be:
|
|
|
|
&ERROR Ignore warnings, take action on errors.
|
|
&WARNING Take action on warnings and errors both.
|
|
|
|
Action may be:
|
|
|
|
&FAIL Halt execution, return a positive severity
|
|
code to the routine's caller.
|
|
&IGNORE Continue execution.
|
|
&ROUTINE routine_name Pass control to the designated routine.
|
|
|
|
If neither level nor action is given, all severity codes are ignored. If no
|
|
&SEVERITY directive is given, warnings are ignored and errors halt execution.
|
|
|
|
|
|
&SIGNAL condition [&NO_RETURN]
|
|
|
|
Raises the condition "condition" and causes the CPL mechanism to search for a
|
|
handler for that condition. If &NO_RETURN is specified, execution of the
|
|
error-causing procedure cannot be resumed.
|
|
|
|
|
|
&STOP [severity] [&MESSAGE text]
|
|
|
|
Halts execution of procedure in which it occurs. If this procedure is a rout-
|
|
ine, &STOP also halts the execution of the program containing the routine and
|
|
any of the other routines that program may have active. Control returns to the
|
|
caller of the mail program.
|
|
|
|
If severity is present, specified severity code is returned to program's
|
|
caller. Severity must be an integer. If &MESSAGE is present, text is printed
|
|
at the caller's terminal.
|
|
|
|
Downloaded From P-80 Systems 304-744-2253
|