textfiles/hacking/tcsb.04

304 lines
12 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

_______________________________________________________________________________
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.
_______________________________________________________________________________
$