home *** CD-ROM | disk | FTP | other *** search
- _______________________________________________________________________________
-
-
- 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.
-
-