304 lines
12 KiB
Plaintext
304 lines
12 KiB
Plaintext
|
||
_______________________________________________________________________________
|
||
|
||
An Introduction to PRIMOS CPL Directives
|
||
Written by Necrovore on 09/02/88 (Revised on 09/10/88)
|
||
|
||
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.
|
||
|
||
_______________________________________________________________________________
|
||
$ |