Google
 

Trailing-Edge - PDP-10 Archives - bb-k345a-sb - micref.mem
There are 4 other files named micref.mem in the archive. Click here to see a list.


                   HATFIELD POLYTECHNIC COMPUTER CENTRE


                                    MIC

                        Macro Interpreted Commands


                      Reference Manual - Edition 7.1



                                 June 1980


         This guide reflects features of version 11(1066) of MIC.

                                Release 7.





          Edited and revised by J.D. Service, University of York.



























This manual was formerly called the MIC `User's Guide' but has been renamed
to avoid confusion with the University of York User Guides.
MIC - Macro Interpreted Commands                                     Page 1
Hatfield Polytechnic Computer Centre - December 1979


    Mic was originally written at Hatfield Polytechnic Computer Centre.



                    Copying of this document is allowed.




                   Hatfield Polytechnic Computer Centre.
                         The Hatfield Polytechnic
                               P.O. Box 109
                                 Hatfield
                          Hertfordshire AL10 9AB
                                  England


Telephone Hatfield 68100
Telex     262413






      This edition was edited and enhanced at the University of York.



                      Department of Computer Science
                            University of York
                                Heslington
                                   YORK
                         North Yorkshire  YO1 5DD
                                  England


Telephone York 59861
Telex     57933 
MIC - Macro Interpreted Commands                                     Page 2
Hatfield Polytechnic Computer Centre - December 1979


                                 CONTENTS


        1.              Introduction.

        2.              Introducing a MIC Command.

        3.              Constructing MIC Macro Command Files.
            3.1             Special Characters.
            3.2             Labelled Lines.
            3.3             Parameter Substitution.

        4.              Commands derived from DECsystem-10
                        Multi-programming Batch.

            4.1             GOTO/BACKTO Command. 
            4.2             ERROR/NOERROR Command. 
            4.3             IF Command. 
            4.4             OPERATOR/NOOPERATOR Command.
            4.5             SILENCE/REVIVE Command.
            4.6             PLEASE Command.

        5.              LET Command.  

            5.1             Byte Subscripting for String
                            Expressions.
            5.2             Multiple LET Statements.
            5.3             Parameters in Outer Processes.
            5.4             Octal Expressions.

        6.              Extensions to the IF Command.

            6.1             Parameters in Outer Processes.
            6.2             Special Tests

        7.              Simple Interaction with MIC.

            7.1             OPERATOR/NOOPERATOR command.
            7.2             MIC RESPONSE Command.
            7.3             MIC DISPLAY Command.
            7.4             MIC TYPE Command.
            7.5             MIC WHAT Command.
            7.6             MIC SLEEP Command.

        8.              MIC Control Commands.

            8.1             MIC ABORT Command
            8.2             MIC CANCEL Command
            8.3             MIC BREAK Command.
            8.4             MIC PROCEED Command.
            8.5             MIC EXIT Command.
            8.6             MIC RETURN Command.
MIC - Macro Interpreted Commands                                     Page 3
Hatfield Polytechnic Computer Centre - December 1979


        9.              Special Parameters.

            9.1             System Parameters.
                  9.1.1           Parameter Substitution.
                  9.1.2           GETTABS.
                  9.1.3           Octal Arguments to GETTABS.

            9.2             Action Parameters.


        10.             LET and IF Extensions.

            10.1            Use of System Parameters.
            10.2            Use of System Parameters in arithmetic
                            assignments.
            10.3            Use of System Parameters in conditional
                            statements.

        11.             Non Procedural calls to MIC.
                        (WHENEVER/ON Command.)

            11.1            Multiple WHENEVER/ON commands.

        12.             MIC SET Command.

            12.1            COLUMN1.
            12.2            CONTROL.
            12.3            PARAMETERS.
            12.4            SPECIALS.
            12.5            FINMATCH.
            12.6            MSGLVL.
            12.7            LC. 
            12.8            Multiple SET Commands.

        13.             CCL Entry to MIC.

        14.             Multiple Statement Input Lines.

        15.             Immediate Mode Execution of MIC Commands.


        APPENDIX A.     Examples of MIC commands.

        APPENDIX B.     Command Summary.

        APPENDIX C.     Syntax of Integer and String Expressions.

        APPENDIX D.     Error Messages.

        INDEX
MIC - Macro Interpreted Commands                                     Page 4
Hatfield Polytechnic Computer Centre - December 1979


                        MACRO INTERPRETED COMMANDS


1) Introduction


Standard DECsystem 10 software provides  a  powerful  but  complex  command
interface.   Novice  terminal  users  lose much time through an unforgiving
command decoder and the expert resents the verbosity of the average command
string.   Although  the  concise  command  language (C.C.L) does allow many
simplifications to  system  commands,  new  commands  may  not  readily  be
defined.

With MIC a user may create a new command  simply  by  writing  any  desired
sequence  of  monitor  and user mode commands in a disk file.  To cause the
command to be obeyed the user types to monitor the filename preceded by the
"DO" command.

e.g.  

If the file DTASAV.MIC contains the text-

 .R PIP
 *DTAX:/X/B=FRED.TXT
 *^C
 .DIR DTAX:

The user could obey the command file thus-

 .DO DTASAV
 .R PIP
 *DTAX:/X/B=FRED.TXT
 *^C
 .DIR DTAX:

In this sequence of commands only the first  line  the  "MIC  command"  was
typed  by  the  user.  If the user often required this sequence of commands
the command macro DTASAV.MIC would save a considerable amount of typing.

To allow more generalised commands to be constructed a MIC command may have
parameters:

The command macro  DTASAV.MIC  would  be  made  more  useful  if  the  file
contained the text-

 .R PIP
 *DTA'A:/X/B='B
 *^C
 .DIR DTA'A:
MIC - Macro Interpreted Commands                                     Page 5
Hatfield Polytechnic Computer Centre - December 1979


The rules for parameter substitution are simple.  When 'A is encountered in
the  command  file the first parameter is substituted.  The first parameter
in the macro DTASAV is the dectape number, the second parameter is the file
name  to  be transferred.  Up to 26 user parameters are allowed ('A to 'Z).
To write the file PETE.MAC to DTA3 the command would be-

.DO DTASAV 3,PETE.MAC 

The parameters to a MIC command are separated by commas.  (See also section
2.)

The command file may be of any size and  is  typed  by  MIC  line  by  line
exactly  as  if  the user had typed it.  MIC will only type a line when the
job requires input.  To stop MIC typein the user must type control C.

Using the above information a  user  can  easily  make  his  own  commands.
Additional facilities in MIC are provided to allow-

1.  Parameters to be manipulated during the processing of a MIC command.

2.  Conditional branching within the command macro.

3.  Detecting and processing error conditions


Note:  MIC command files may themselves contain MIC commands.  In this case
the  "nested  processes" each have their own parameters but inner processes
may access the parameters in an outer process.  This is described later.
MIC - Macro Interpreted Commands                                     Page 6
Hatfield Polytechnic Computer Centre - December 1979


2) Introducing a MIC command 

To cause MIC macro command file to be  obeyed  a  monitor  command  of  the
following form is used-

.DO <Standard device-file specification> <parameter list>

The first argument to the "DO" command specifies the  command  file  to  be
obeyed,  in  the  form DEV:FILENAME.EXT[PPN].  If the user does not specify
where the command file is held, his own area is searched first followed  by
the  ersatz  device  MIC  (1).  The default extension for the MACRO file is
"MIC".  The full default filespec is DSK:MIC.MIC in  the  users  own  area.
Sub-file directories are supported by MIC.


The parameter list follows after a  separator  character  (space  or  tab).
Parameters  are  separated  by  commas.  All brackets in the parameter list
must match.  A comma between matched brackets does not separate parameters.
Outer  matching  <  and  >  brackets  are  removed  before the parameter is
substituted.

e.g.

.DO C[105,13] TWO 

MIC macro file is C.MIC in area [105,13].
'A would substitute as TWO.  

.DO C A[105,13],3 

MIC macro file is "C.MIC" on the user's own area or "MIC".
'A would substitute as A[105,13].
'B would substitute as 3.



                                   NOTE

               The original versions of  MIC  used  the  "/"
               command,  not  the  "DO" command, and this is
               still used on some sites, and may be referred
               to in some documentation.





(1) The exact order of search can be varied by the system administrator but
by default is:-
      DSK:FILE.MIC [PROJECT,PROGRAMMER]
      DSK:FILE.MIC [PROJECT,PROGRAMMER,MIC]
      DSK:FILE.MIC [PROJECT,1]
      MIC:FILE.MIC 
MIC - Macro Interpreted Commands                                     Page 7
Hatfield Polytechnic Computer Centre - December 1979


3).  Constructing MIC macro command files

A MIC file may contain any ASCII text with or without line  numbers.   This
text  is  taken  line-by-line and typed on the user's terminal as though he
had typed it.  To allow the user to write macros which are  easy  to  read,
leading spaces and tabs are ignored.  Thus the two lines:-

*/X/B=*.SAV

and

        */X/B=*.SAV

are equivalent.

Note:-
1)   Existing "MULTIPROGRAMMING BATCH" control files may  be  used  as  MIC
     command files.

2)   On labelled lines any spaces after the label terminator (the "::") are
     treated in the same way.

3)   The leading space feature is not compatible with batch control files.
MIC - Macro Interpreted Commands                                     Page 8
Hatfield Polytechnic Computer Centre - December 1979


3.1) Special Characters.

As in batch control files some characters are treated specially as the file
is processed.  

Character        Position                 Meaning

    .            At start of line         Remaining text on this line
                                          may only be typed to monitor

    *            At start of line         Remaining text on this line may
                                          only be typed as program input.

    =            At start of line         Suppress carriage return at the
                                          end of this line.  useful for 
                                          command macros containing DDT 
                                          and TECO commands.

 ! or ;          At start of line         Treat line as a comment.  Line is
                                          displayed on the user Teletype 
                                          but not typed to the job.

   ^X            Any                      Convert character "X" to control
                                          X before it is typed.

   'A            Any                      Substitute parameter A.


If a special character is to be treated literally  it must be repeated.

e.g.

 ''A will be typed as 'A and not cause the substitution of parameter A.

Note:-

1)   "!" overrides the silence condition, but the normal comment  character
     ";" does not.


2)   "^C" or "^A" do not have the same effect when typed by  MIC,  as  they
     would have if the user had typed them, in that they do not "CANCEL" or
     "ABORT" the macro.

3)   Lower case letters are  converted  to  upper  case  in  the  "^X"  and
     "'A"cases.
MIC - Macro Interpreted Commands                                     Page 9
Hatfield Polytechnic Computer Centre - December 1979


3.2) Labelled Lines.

Any line in a command file may be labelled.  A label may be of any  length,
but  only  the  first  six  characters  are  significant.   Labels  may  be
constructed of any alphanumeric characters terminated by  a  double  colon.
Labels can only occur at the start of a line.

e.g.

FRED::.DIR

THISISALABEL::   .R PIP

ANOTHER1::*/X/B=JIM.ALG

Note:-

1)  Labels which begin with a "%" character have the same special  meanings
    as in "Multi Programming Batch", see 4.2.1 .

2)  Labels are always in upper case.


3.3) Parameter Substitution

The construction 'X where X is an alphabetic character, causes the contents
of the appropriate parameter to be substituted.

Nested parameter substitutions are allowed,

e.g.

'X may contain 'Y and so on to a maximum level of 8.
MIC - Macro Interpreted Commands                                    Page 10
Hatfield Polytechnic Computer Centre - December 1979


4).  Commands derived from DECsystem-10 multi-program batch 

4.1) GOTO/BACKTO command


As with batch control  files  a  MIC  command  file  may  have  some  lines
labelled.   Using  the  MIC  monitor  style  commands  GOTO  and BACKTO the
sequential processing of the MIC command may be interrupted.  The  argument
to  the  GOTO/BACKTO  command  is  an identifier of one to six alphanumeric
characters which is used to indicate the label  in  the  MIC  command  file
where processing is to resume.

The appropriate labels in the command file are delimited by ::  and must be
at the start of a line.

e.g.

FRED::.DIRECT


Note:-

1)  That, if, when MIC is searching a command file for the first occurrence
    of  the  required  label,  it  comes  across  a "%FIN" label, this will
    satisfy the search and processing of the command file will  be  resumed
    at that point.

2)  As GOTO/BACKTO commands are interpreted by the MIC program they do  not
    destroy a user's core image.

3)  The formats

    .GO TO <label>

    and

    .BACK TO <label>

    may be used, but these do destroy a user's core image.
MIC - Macro Interpreted Commands                                    Page 11
Hatfield Polytechnic Computer Centre - December 1979


4.2) ERROR/NOERROR command


As the MIC command file is processed an error may occur.  Often  a  message
is  displayed  on  the  user  Teletype  preceded  by  a  question  mark (?)
Character.  By using the error command the user may specify which character
is to be treated as denoting an error condition when it is displayed at the
start of a line.

The argument to the error command is any single ASCII printing character.

e.g.

.ERROR %
.ERROR ?  

If no argument is supplied to an ".ERROR" command a question  mark  (?)  is
assumed.

The command NOERROR is used to turn off error checking.


4.2.1) Error Processing

Error processing in MIC is similar to that of MULTIPROGRAMMING  BATCH.   If
an  error  is detected MIC will check if the next monitor command is an "IF
(ERROR)" or "IF (NOERROR)" command.  If this is so processing will continue
there, otherwise the command file is searched for a 


%CERR or a %FIN if the error ocurred in a system program,

or

%ERR or a %FIN if the error ocurred in a user  program,  before  typein  is
resumed.  If this fails MIC will display on the user's Teletype

[ABORT ON ERROR] 

and stop processing the MIC command file.


Note:-

The WHENEVER/ON command may be used to change this default processing  (see
section 11.).
MIC - Macro Interpreted Commands                                    Page 12
Hatfield Polytechnic Computer Centre - December 1979


4.3) IF command


The IF command is used to conditionally process a monitor command.


e.g.

.IF (ERROR) .GOTO EER5
.IF (NOERROR) .DO UPDATE 13

The monitor command is obeyed if the  specified  condition  is  true.   The
alternatives  MIC  provides for the ERROR/NOERROR conditional are discussed
later.

A batch control file  called  JOB1.CTL  could  be  executed  at  the  users
Teletype using the command-

.DO JOB1.CTL 

Note:-

1)  Users who wish to use MIC in this way  should  note  that  the  default
    error  status  when  a  MIC  command  is  executed  at  the Teletype is
    "NOERROR".

2)  The Commands "IF (ERROR)" and "IF (NOERROR)" do not destroy the  user's
    core image.

3)  "IF (ERROR)" "IF (NOERROR)" are compatible with MPB.


4.4)  OPERATOR Command.

The Batch command  "OPERATOR"  is  also  used  in  MIC,  its  operation  is
described in section 7.1.
MIC - Macro Interpreted Commands                                    Page 13
Hatfield Polytechnic Computer Centre - December 1979


4.5) SILENCE/REVIVE Command


These commands are used to suppress typeout on the user Teletype throughout
an uninteresting sequence of commands.

Another monitor level command may be placed on the same line as  a  SILENCE
or REVIVE command (see section 14).

e.g.

.REVIVE .DIR


This has the useful effect of reviving  the  tty  output  after  the  "DIR"
command  has  been  typed.   Thus  the  user  sees only the output from the
command not the command itself.

N.B.

A whole command file may be automatically silenced if the file is given the
protection  code  <2??>.  This may be overridden in the command file by the
".REVIVE" command.


4.6) PLEASE command 


Unlike DECsystem-10 batch, this command is used  to  communicate  with  the
initiator  of  the  MIC  command.   The argument is displayed on the user's
Teletype regardless of the SILENCE/REVIVE switch.

If the please command is terminated by  an  altmode,  MIC  typein  proceeds
normally,  otherwise  typein is suspended by a [BREAK] until the user types
^P or a MIC PROCEED command to proceed and [PROCEED] is displayed.  

e.g.

.PLEASE LOAD DECTAPE 345
.PLEASE THANKS$ 


                                   ::::


In fact all batch pseudo-commands are legal monitor  commands  when  obeyed
from a MIC command file.  MIC extends the batch command format (see section
6) and provides several new commands.  Users unfamiliar  with  DECsystem-10
batch  facilities should read DECsystem-10 BEGINNERS GUIDE TO MULTI-PROGRAM
BATCH for a fuller description of the batch comands.
MIC - Macro Interpreted Commands                                    Page 14
Hatfield Polytechnic Computer Centre - December 1979


5).  LET command


The general form of the MIC monitor command "LET" is-

.LET <parameter name>=<expression>

Decimal,  Integer,  Octal  or  string  expressions  may  be  used.    Users
parameters to MIC command macro files are held within MIC as ASCII strings.

During the execution of a MIC command macro the LET monitor command may  be
used to change any of the parameters (A thro' Z).  e.g.  

.LET C="THIS IS THE NEW PARAMETER C" 

After this command 'C in the MIC command file would cause the  substitution
of the text-

THIS IS THE NEW PARAMETER C 

In fact "THIS IS THE NEW PARAMETER C" is the  simplest  form  of  a  string
expression.  A more complicated command sequence could be-

.DO TEST FRED,BAK
.LET Z=$A+"."+$B+"[105,113]" 

Dollar A ($A) is used as a reference to the string parameter A.   Plus  (+)
is  a simple concatenation operator.  After the let command the parameter z
would substitute as the text-

FRED.BAK[105,113]

Note:-

In LET statements which include a  carriage  return/line  feed  within  the
string quotes MIC will display a "--" at the start of the new line.


Simple integer expressions are allowed in the LET command-

e.g.

.LET B=3+C*3^D-4/(A+B)

In this example A B and C are used  as  references  to  the  value  of  the
parameters  when  read as integers.  If any referenced parameter may not be
read as an integer an error will result.  The operators + * / - ^ have  the
usual  meaning  and  precedence.   Round  brackets may be used to alter the
usual precedence.
MIC - Macro Interpreted Commands                                    Page 15
Hatfield Polytechnic Computer Centre - December 1979


5.1) Byte subscripting for string expressions 

Often in the LET command it is required to construct new  parameters.   The
simple  string  expression  has been extended to provide powerful character
subscripting facilities.

The format for a simple subscripted string expression is-

$A.[<First subscript>,<second subscript>]

Here A may be A-Z.  The first  subscript  is  used  to  specify  the  first
parameter  in  character  <A>  to  be  used in the subscripted string.  The
second subscript specifies the length of the constructed string.   Consider
parameter <A> to be a string numbered as follows-



   1     2     3     4
---------------------------------
|  F  |  I  |  R  |  S  |  T 
----------------------------------
  -n   -n+1  -n+2   ...
                                                         null
                                       n-2   n-1    n    char
                             ---------------------------------
                                  L  |  A  |  S  |  T  |     |
                               -------------------------------
                                 -4    -3    -2    -1


                    FIG 1 Character string N bytes long

If the second subscript is omitted the length  of  the  constructed  string
defaults to one character.
MIC - Macro Interpreted Commands                                    Page 16
Hatfield Polytechnic Computer Centre - December 1979


e.g.

If the parameter A contained the text ABCDEF

Command                Result after command

.LET B=$A.[1]                    A
.LET B=$A.[2]                    B
.LET B=$A.[-1]                   F
.LET B=$A.[99]                   <null>  

If the first subscript is out  of  range  a  null  string  is  constructed.
Extending the previous example for two subscripts

.LET B=$A.[1,2]                  AB
.LET B=$A.[3,2]                  CD

Subscripts themselves may be string expressions-

.LET B=$A.["AB","F"]              CDE

This construction means copy the string in parameter A between the text  AB
and F to parameter B.

Repeated subscripts are allowed-

.LET B="DSK:FILE.EXT[105,113]"
.LET B=$B.[":","."].[,"["]       FILE 

This construction means truncate the object string in parameter B after the
character ":" at the character "." or the character "[".


5.2) Multiple LET Statements.

Several LET assignments may follow the one "LET" statement  by  terminating
every assignment except the last, by a comma.

e.g.

.LET A=1+2,C=$B.[1,2],D=C+"ABCDE" 
MIC - Macro Interpreted Commands                                    Page 17
Hatfield Polytechnic Computer Centre - December 1979


5.3) Parameters in Outer Processes.

Parameters in an outer MIC process may be referenced in the  inner  process
by  following the parameter by a digit corresponding to the process level -
the current process is regarded as being level  0,  the  first  surrounding
process is level 1 and so on.

Thus:-

.LET B=C1 

sets B equal to the contents of the parameter  C  of  the  first  enclosing
process.


5.4) Octal Expressions.

The "LET" command may also be used to manipulate octal  values.   An  Octal
number is always preceeded by a "%" sign.

e.g.

.LET A=%11 

will assign the value 9 (decimal) to parameter A.  Similarly,

.LET C=%13+%17

would store 26 (decimal) in parameter C.  Also the format

.LET %A=12

will store 14 (octal) in parameter A and

.LET %A=%A+1

will then store 15 (octal) in parameter A.


                                   NOTE

               As  MIC  stores  all  variables  as  typeless
               strings  it  is up to the user to ensure that
               he puts "%" signs where appropriate.
MIC - Macro Interpreted Commands                                    Page 18
Hatfield Polytechnic Computer Centre - December 1979


Parameters may also be regarded as storing a number in octal by  preceeding
the parameter name by a "%" sign.

e.g.

.LET A="12"

.LET B=%A

will store 10 (decimal) in parameter B.


Octal and Integer values may occur together in the same expression.

e.g.

.LET A=3+%11 

would give the value 12 (decimal) in parameter A.

In order to make the manipulation of octal quantities more  meaningful  two
extra operators are available:-

"&"     FOR     AND

"!"     for     OR

which may be used with both octal and integer values

e.g.

.LET A=%3&%5                    1

.LET A=3!5                      7

.LET A=%11+7!%11                24 (DECIMAL)

Note that "&" and "!" have the same operator precedence as "*" and "/".
MIC - Macro Interpreted Commands                                    Page 19
Hatfield Polytechnic Computer Centre - December 1979


6) Extensions to the IF command

Using the LET command complicated MIC  command  parameters  may  be  broken
down.  The conditional expression in the MIC IF command may be used to make
more  generalised  comparisons.   Using  relational  operators  strings  or
integers may be compared.

Relational operator             meaning

>                               Greater than
>=                              Greater than or equal
=                               Equal
#                               Not equal
<=                              Less than or equal
<                               Less than
.AND.                           AND (result non-zero implies TRUE)
.OR.                            OR (result non-zero implies TRUE)

String comparison occurs from left to right.  Corresponding characters  are
extracted  from  the  constructed  strings  and if they are not the same or
either string is exhausted, the result is FALSE.  The  relational  operator
is  applied  to  the  two  characters  using  their  ASCII  value.   String
expressions may not be compared with arithmetic, and the ".AND." and ".OR."
relational operators may not be used with strings.

A conditional expression containing a syntax error has the value false.

If the error trapping feature has been enabled using the ERROR command  the
ERROR  and  NOERROR  conditional  can  be  used to alter command processing
appropriately.

If the conditional expression is true MIC will pass  characters  after  the
first character "." on the right of the conditional to the monitor.  If the
conditional is false, remaining commands on the IF line are ignored.

e.g.  

.IF (A>B) .GOTO LABEL
.IF ($A="TRUE") .BACKTO TRUE
.IF (ERROR) .GOTO FIX
.IF (A.AND.%B) .GOTO FRED

N.B.  In the first example parameters A and B must contain text  which  may
be read as an integer.  $A is used to reference the contents of parameter A
as a string.
MIC - Macro Interpreted Commands                                    Page 20
Hatfield Polytechnic Computer Centre - December 1979




                                   NOTE

               By  default  lower  case  letters   are   not
               considered  to  be  the  same  as  upper case
               during string comparisons, though this may be
               changed  by  use  of  the  "MIC  SET  NO  LC"
               command.  See section 12.7.


6.1) Parameters in Outer Processes.

Parameters in outer processes may be referred to in "IF" statements by  the
method described in section 5.3 .

N.B:  Unlike the "IF  (ERROR)"  and  "IF  (NOERROR)"  the  "IF"  extensions
actually run MIC and thus destroy the users core image.



6.2) Special Tests

Some special tests are built into MIC:-

.IF (COJOB)

is true if this macro is running as a COJOB,

.IF (SUBJOB)

is true if this macro is running under OPSER,

.IF (BATCH)

is true is this macro is running under BATCH,

.IF (TERMINAL)

is true if this macro is running on a terminal.
MIC - Macro Interpreted Commands                                    Page 21
Hatfield Polytechnic Computer Centre - December 1979


7) Simple Interaction with MIC.  

A MIC command is obeyed as if the the user had typed the same text  on  the
Teletype-"type  ahead"  is  not  allowed.   Some  characters have a special
meaning if typed by the user as the MIC command is obeyed.

As MIC commands may be nested, control A is used to abort the  current  MIC
process  and  return  to  the  level  above.  Control C will cancel all MIC
processes the user has in progress.  An appropriate message is displayed on
the Teletype.

To allow limited user intervention control B will suspend  MIC  typein  and
display  [BREAK].   The  MIC  process may be continued by the user typing a
PROCEED command or a  control  P.   The  message  [PROCEED]  will  then  be
displayed.  

Note that while a process is suspended a user may type MIC commands on  the
teletype  as  well  as  any  monitor  commands.   This implies that the MIC
control functions have their  usual  effect,  and,  for  example,  using  a
control C to exit from "PIP" will cancel the suspended MIC process.


7.1) OPERATOR/NOOPERATOR commands.  

Similar to the ERROR command the OPERATOR command takes as its argument one
ASCII printing character to be treated as introducing a line requiring user
attention.  If the operator character is seen output in column 1, MIC  will
suspend typein and display [BREAK].  The user may supply typein as required
and type control P (PROCEED)  to  continue  processing  the  command  file.
During  a BREAK the operator character may be output again in column one to
PROCEED automatically, and [PROCEED] will be displayed.  

e.g.

.OPERATOR N
.RUN TEST
NOW TYPE IN YOUR NAME = [BREAK]CYRIL
NICE ONE CYRIL
.[PROCEED]GOTO IT

The operator features are only available after an  OPERATOR  command.   The
default character to the OPERATOR command is "?".  
MIC - Macro Interpreted Commands                                    Page 22
Hatfield Polytechnic Computer Centre - December 1979


7.2) MIC RESPONSE Command 

Often it is required to inspect text displayed by  a  program  particularly
when  it  denotes  an  error.   The  MIC response command allows characters
displayed after an error character in column one to be placed  in  a  named
parameter.  The format for a MIC response command is-

.MIC RESPONSE <parameter name>(<number of characters required>)

e.g.

MIC RESPONSE A(21)

If the error feature has been enabled up to  79  characters  following  the
error character will be placed in the named parameter.  The command is used
to reserve space for the response and the parameter is filled with  spaces.
When  an  error  occurs  the  text on the error line is copied character by
character until a null character is encountered in the reserved space or in
the error text.  Any remaining space is removed from the named parameter.
MIC - Macro Interpreted Commands                                    Page 23
Hatfield Polytechnic Computer Centre - December 1979


7.3) MIC DISPLAY Command.

This command is used  to  output  the  contents  of  a  user  parameter  or
parameters on the user's terminal.

e.g.

.LET A="HELLO FRED"

.MIC DISPLAY A
HELLO FRED
.

This output overrides any silence condition which has been set up,  and  is
equivalent to

!'A

with the notable difference that it destroys the user's core image.

Note:

1)  This command is useful in immediate mode - see section 15  -  and  when
    used  in WHENEVER/ON commands - see section 11.  Note that in this case
    they do not destroy the user's core image.

2)  Multiple parameters may be DISPLAYed by separating each by a comma

    e.g.

    .LET A="FIRST"
    .LET B="-AND-"
    .LET C="SECOND"
    .MIC DISPLAY A,B,C
    FIRST-AND-SECOND
    .

3)  String constants may also be displayed by enclosing them in (") quotes

    .MIC DISPLAY "THIS IS A MESSAGE"
    THIS IS A MESSAGE

4)  System parameters may  be  displayed  in  a  similar  fashion  to  user
    parameters

    .MIC DISPLAY '<system-parameter> or .MIC DISPLAY system-parameter

    See section 9.2 for further details of system parameters.

5)  If an up-arrow "^" occurs when a string parameter  is  being  displayed
    the  next  character  in  the  string  will be converted into a control
    character in the usual way.
MIC - Macro Interpreted Commands                                    Page 24
Hatfield Polytechnic Computer Centre - December 1979


7.4) MIC TYPE Command.


The MIC TYPE command has a similar format to the MIC  DISPLAY  command  and
types the contents of a user parameter as though the user had typed them 

e.g.

.LET A="DIR
--"
.MIC TYPE A
DIR
.
%DIRECTORY IS EMPTY

The comments made for the MIC DISPLAY command also apply to  the  MIC  TYPE
command.


7.5) MIC WHAT Command.


The MIC WHAT command is used to output a brief status report on the  user's
currently active macro.

e.g.

.MIC WHAT
 ACTIVE [100,100]       53      B2      A=FRED,B=6,C=JIM2
[MIC WHAT]

where:-

ACTIVE          - is the current state of the macro.
53              - is the user's line number.
B2              - is the name of the user's macro.
A= etc.         - are the contents of the user's parameters.
[MIC WHAT]      - is the last line typed by MIC on the user's
                  behalf.


7.6) MIC SLEEP Command.


The MIC command is used to cause MIC to want a certain number of seconds
before typing the next command.

e.g.

MIC SLEEP n

where n is the number of seconds to wait.
MIC - Macro Interpreted Commands                                    Page 25
Hatfield Polytechnic Computer Centre - December 1979


8). MIC control Commands


8.1) MIC ABORT Command

Format

.MIC ABORT

MIC aborts current process as if the user had typed control A
and the message [ABORT] is displayed.


8.2) MIC CANCEL command

Format

.MIC CANCEL

MIC cancels all pending MIC commands as if control C was typed
and the message [CANCEL] is displayed.
MIC - Macro Interpreted Commands                                    Page 26
Hatfield Polytechnic Computer Centre - December 1979


8.3) MIC BREAK command

Format

 .MIC BREAK

MIC suspends typein until -

-operator character displayed
-control P typed
-MIC PROCEED command

and the message [BREAK] is displayed.
This command has the same effect as the user typing control B.


8.4) MIC PROCEED Command

Format

.MIC PROCEED

MIC resumes typein if a process has been suspended by a [BREAK],
 and the message [PROCEED] is displayed.
The user typing control P has the same effect.


8.5). MIC EXIT Command

Format

.MIC EXIT

MIC cancels but no message is displayed.


                                   NOTE

               The MIC EXIT cancels  all  levels  of  a  MIC
               macro.




8.6) MIC RETURN Command.

Format

.MIC RETURN


Acts as an "ABORT" command but no message is displayed.  Thus the
MIC RETURN command is the preferred exit from a MACRO as outer levels
of macros are not affected.
MIC - Macro Interpreted Commands                                    Page 27
Hatfield Polytechnic Computer Centre - December 1979


The RETURN command may be used to provide a return to any label
in an outer label macro by using

.MIC  RETURN  .BACKTO  FRED

or

.MIC  RETURN  .GOTO    BILL

when   "FRED" and "BILL" are labels in an outer level macro.
MIC - Macro Interpreted Commands                                    Page 28
Hatfield Polytechnic Computer Centre - December 1979


9).  Special Parameters

9.1)  System Parameters


9.1.1)  Parameter Substitution

A construction of the form '<system parameter name> allows access to
various system parameters.

e.g.

'<JOB> is replaced by the user's job number.

The full set of system parameters is:-

system parameter name           substitutes as


PPN                             [PROJECT,PROGRAMMER]

TTY                             LINE NUMBER

JOB                             JOB NUMBER

PROJECT                         PROJECT NUMBER

PROGRAMMER                      PROGRAMMER NUMBER

DATE                            Current Date.

TIME                            Current Daytime.

GETTAB(<table>,<index>,<radix>)
                                Entry in GETTAB table in
                                the appropriate radix.

MICFILE                         The name of the users MIC
                                macro in the form
                                "DEV:FILE.EXT [PATH]".

LENGTH(parameter)               The number of characters in
                                the parameter.

PATH                            The user's PATH

PTHPPN                          The PPN of the user's PATH
MIC - Macro Interpreted Commands                                    Page 29
Hatfield Polytechnic Computer Centre - December 1979


Thus the following :-

! MY PPN IS '<PPN>
! MY TTY IS TTY'<TTY>
! THIS JOB IS JOB NUMBER '<JOB>

Would result in :-

MY PPN IS [2250,7]
MY TTY IS TTY21
THIS JOB IS JOB NUMBER 10


9.1.2) GETTABS 

The three parameters of a GETTAB are:-

Table   

The table number in decimal of the required GETTAB table.  The  default  is
table 0.

Item    

The index to the entry in the table.  This index is  in  decimal,  and  the
default  value is the user's job number.  Note that as in the GETTAB UUO -1
may be used to imply the user's job number.

Radix

This is a type-out mode taken from the  following  set  which  is  used  to
decode the entry in the GETTAB table.


RADIX           MEANING

1   BIN         BINARY  (default setting )
2   ASC         ASCII
3   SIX         SIXBIT
5   OCT         OCTAL (including leading zeroes).
6   PPN         PPN -gives "[project,programmer]"
7   MSEC        time in HH:MM:SS
                (GETTAB entry in milliseconds)
8   SEC         time in HH:MM:SS
                (GETTAB entry in seconds)
9   OC2         OCTAL (with leading zeroes suppressed)
10  DAT         Date in DD-MON-YR (entry in 18-bit).


As an example of the use of GETTABS

!'<GETTAB(25,-1,ASC)>'<GETTAB(26,-1,ASC)>

would cause the user's "USERNAME" to be output.
MIC - Macro Interpreted Commands                                    Page 30
Hatfield Polytechnic Computer Centre - December 1979


Note:-

Constructions of the form

!'<GETTAB(25,'<JOB>,ASC>

are acceptable. As is:-

!'<GETTAB(25,'A,ASC)>

where A is a parameter.


Note:-

In early versions of MIC the type-out mode was  specified  by  the  numeric
value  given  in  the  above table (e.g.  4 for decimal).  This format will
still work;  '<GETTAB(25,'A,ASC)> and '<GETTAB(25,'A,2)> are equivalent.


9.1.3) Octal Arguments To GETTABS.


GETTAB arguments may be supplied in Octal by preceding the  argument  by  a
"%" sign,

e.g.

'<GETTAB(%11,-1,ASC)>

This format is useful as the GETTAB tables are specified in  Octal  in  the
Monitor Calls Manual.
MIC - Macro Interpreted Commands                                    Page 31
Hatfield Polytechnic Computer Centre - December 1979


9.2) Action Parameters

A special class of MIC parameter is the  ACTION  parameter,  this  type  of
parameter performs a MIC action without destroying the users core image 

e.g.

'<SILENCE>

will cause the macro to be silenced, this is similar in effect to the

.SILENCE

command except that the '<SILENCE> does not cause MIC to be  run  and  does
not  cause  anything  to appear in the users terminal, not even the echo of
the command.

The full list of action parameters is 

'<ABORT>
'<BREAK>
'<CANCEL>
'<ERROR(ch)>
'<NOERROR>
'<NOOPERATOR>
'<OPERATOR(ch)>
'<PROCEED>
'<RETURN>
'<REVIVE>
'<SILENCE>
'<SLEEP(n)>

and all of these have the same effect as the respective commands.  

The effect of an action parameter is always from the start of the  line  in
which it occurs

e.g

'<SILENCE> ABCDEF

'ABC '<SILENCE> DEF

'ABCDEF '<SILENCE>

are all equivalent.
MIC - Macro Interpreted Commands                                    Page 32
Hatfield Polytechnic Computer Centre - December 1979


10).  LET and IF Extensions.


10.1) Use of System Parameters in LET commands.

The LET command has been extended from that described earlier to allow  the
user  access to the system parameters described in section 9.  By using the
LET statement with a system parameter on the right hand side a user may use
the  byte subscripting features of MIC to abstract the portions of a system
parameter that he requires.

.LET B=$JOB 

This statement will store the user's job number in parameter B.

Similarly,

.LET B=$PROJECT 

will place the user's project number in parameter B.

Concatenation of system parameters is allowed,

e.g.

.LET B="["+$PROJECT+","+$PROGRAMMER+"]"

may be used to obtain the PPN of a MIC user.

Byte subscription of system parameters is allowed,

.LET B=$PROJECT.[-1] 

would give the rightmost digit of a user's project number.


10.2) Use of System Parameters in arithmetic assignments

System parameters may also be used on arithmetic assignments,  however,  as
all  except "JOB" and "GETTAB" return only octal numbers it is not normally
a sensible operation, (except with "JOB" AND  "GETTAB"),  unless  they  are
preceeded by a "%" to indicate that they are to be treated as being octal.

e.g.

.LET A=JOB+2
or
.LET A=GETTAB(1,2,DEC)+JOB-3
or
.LET A=%TTY
or
.LET A=%100&%GETTAB(%53,-1,OCT) 
MIC - Macro Interpreted Commands                                    Page 33
Hatfield Polytechnic Computer Centre - December 1979


10.3) Use of System Parameters in IF Commands.

In a similar fashion to  10.2,  system  parameters  may  be  used  in  "IF"
commands,  for example to ensure that a particular MIC macro is only run on
a specified terminal the following check could be included in the macro:-


.IF ($TTY#"21") .MIC ABORT

or

.IF (%TTY#21) .MIC ABORT

The octal arithmetic facility may be combined with the GETTAB parameter  to
enable bit testing of the system tables.

e.g.

.IF (%GETTAB(A,'C,OCT).AND.  %004001) .LET A="YES" 
MIC - Macro Interpreted Commands                                    Page 34
Hatfield Polytechnic Computer Centre - December 1979


11).  Non Procedural Calls To MIC 


Simple user interaction with MIC has been described in section 7, but often
the  MIC  action,  on  detecting  an  error condition or one of the special
control functions, is not the required action.  A WHENEVER/ON  command  may
therefore be used to change the default action.

The format of this command is:-

.WHENEVER <EVENT>:<ACTION>

or

.ON <EVENT>:<ACTION>


(NOTE:  ON and WHENEVER are synonymous)


The effect of this command is to specify that whenever the <EVENT>  occurs,
the  specified  <ACTION>  will  be performed rather than the normal default
action.

e.g.

.WHENEVER BREAK:GOTO FRED 

This sets up the user's MIC process so that whenever he types control B, or
a MIC BREAK occurs the process will not BREAK but rather will obey the GOTO
FRED command.


The valid events are:-


CANCEL  or control C typed by the user

ABORT   or control A typed by the user

BREAK   or control B typed by the user

PROCEED or control P typed by the user

and

ERROR
OPERATOR
MIC - Macro Interpreted Commands                                    Page 35
Hatfield Polytechnic Computer Centre - December 1979


and the valid actions are:-


ABORT
BACKTO <LABEL>
BREAK
CANCEL
DISPLAY <PARAMETER>
ERROR
EXIT
GOTO <LABEL>
OPERATOR
PROCEED
RETURN
TYPE <PARAMETER>


The user should note that if ERROR trapping is enabled
e.g.

.ON ERROR:ABORT

MIC does not check the next line for an "IF" statement or a "%" label;  the
ABORT is obeyed immediately.


11.1) Multiple WHENEVER/ON Commands.


Several default actions may be changed in the same  command  by  separating
the individual arguments by commas, thus:-

.ON ERROR:ABORT,CANCEL:BREAK

or

.WHENEVER CANCEL:GOTO FRED,ABORT:GOTO BILL 
MIC - Macro Interpreted Commands                                    Page 36
Hatfield Polytechnic Computer Centre - December 1979


12) MIC SET command

This family of commands is used to change the action  "MIC"  performs  upon
certain conditions.

The format of the command is:-

.MIC SET <NO> <ACTION>

e.g.

.MIC SET NO PARAMETERS

This causes MIC to perform no parameter substitutions upon detecting a  "'"
character in the input file.

i.e.

'A will "substitute" as 'A

To restore parameter substitution use:-

.MIC SET PARAMETERS

The MIC SET commands currently available are:-


12.1) COLUMN1.

.MIC SET NO COLUMN1

MIC regards no characters in column one of the user's command file as being
special characters (see section 3.).

The default is:-

.MIC SET COLUMN1


12.2) CONTROL CHARACTERS.

.MIC SET NO CONTROL

MIC does not cause "^X" to substitute as control X.

Default is-

.MIC SET CONTROL
MIC - Macro Interpreted Commands                                    Page 37
Hatfield Polytechnic Computer Centre - December 1979


12.3) PARAMETERS.

.MIC SET NO PARAMETERS

MIC does not perform parameter substitution on detecting a"'" character.

Default is:-

.MIC SET PARAMETERS


12.4) SPECIAL CHARACTERS.

.MIC SET NO SPECIALS

This performs the combined functions of the above three commands.

Default is:-

.MIC SET SPECIALS


12.5) FINMATCH

.MIC SET NO FINMATCH

If this command is obeyed MIC will not regard an occurrence  of  "%FIN"  as
satisfying a search for a label (cf.  section 4.1).

The default is:-

.MIC SET FINMATCH
MIC - Macro Interpreted Commands                                    Page 38
Hatfield Polytechnic Computer Centre - December 1979


12.6) MSGLVL.

The "MIC SET NO MSGLVL n" may  be  used  to  suppress  the  output  of  the
messages  "[ABORT]",  "[BREAK]", "[CANCEL]", and "[PROCEED]".  The argument
"n" is an octal number which is used to specify  which  messages  the  user
wishes to suppress.

1       supresses [ABORT].
2       supresses [BREAK].
4       supresses [CANCEL].
10      supresses [PROCEED].


12.7) LC.

.MIC SET NO LC

This causes  lower  case  and  upper  case  characters  to  be  treated  as
equivalent in string comparisons.

The default is :-

.MIC SET LC


12.8) MULTIPLE SET Commands.


Several SET functions may be performed in the same  command  by  separating
each of the functions by a comma, thus:-

.MIC SET NO PARAMETERS,CONTROLS,NO FINMATCH
MIC - Macro Interpreted Commands                                    Page 39
Hatfield Polytechnic Computer Centre - December 1979


13) CCL Entry to MIC.


The CCL entry to MIC provides a user program interface to MIC.  If MIC from
SYS  is  run with a runoffset of 1 (by a RUN UUO), MIC will attempt to read
command input from a TMPCOR file called "MIC", or if that is not available,
from  a disk file "nnnMIC.TMP" (where nnn is the user's job number), rather
than from the terminal.

This file may contain a single line of input to MIC

e.g.

.TYPE TMP:MIC
DO DOIT A,36,C
. 

would cause the MIC macro "DOIT" to be  executed  if  MIC  is  run  with  a
runoffset of 1.


The file may contain any MIC command,  e.g.   LET,IF,GOTO,etc.,  though  in
this case the user must be already running under MIC, otherwise he will get
an appropriate error message.  This provides a means  of  manipulating  MIC
parameters via a user program, the user program simply writes a TMPCOR file
and runs MIC as above, with an appropriate  "LET"  command  in  the  TMPCOR
file.


Note:-

1)  The CCL input file is deleted by MIC.

2)  Use of TMPCOR is described in the Monitor Calls Manual.

3)  Use of the RUN UUO is described in the Monitor Calls Manual.

4)  Those CUSP's which are loaded with SCAN, (e.g.   LOGIN,QUEUE,   DIRECT,
    etc.) have a "/TMPFIL" switch, which has the form

    /TMPFIL:<NAME>:"<TEXT>" 

    where:-

    <name>      is the three character name of a TMPCOR file 
                to be created

    <text>      is the contents of the TMPCOR file.

5)  The TMPCOR file does NOT contain the monitor dot or data asterisk.
MIC - Macro Interpreted Commands                                    Page 40
Hatfield Polytechnic Computer Centre - December 1979


This  switch  may  be  used  to  create  a  MIC   TMPCOR   file   and   the
"/RUN:MIC/RUNOFFSET:1" switches used to cause the file to be obeyed.

e.g.

Say a user wished to run a macro called "SETUP" everytime he logged in;  he
may type-

.LOGIN 110,1/RUN:MIC/RUNOFFSET:1/TMPFIL:MIC:"DO SETUP" 

As this command is rather long the user would probably include all or  part
of  it  in  his  "SWITCH.INI" file.  (Consult the OPERATING SYSTEM COMMANDS
MANUAL for a description of "SWITCH.INI" and the above switches).
MIC - Macro Interpreted Commands                                    Page 41
Hatfield Polytechnic Computer Centre - December 1979


14) Multiple Statements on a Line.


More than one MIC command can be written on a single  line  by  terminating
each command by a "\" character.

e.g.

.LET A=3,B=4 \ .GOTO JIM

This is especially useful in the case of "IF" statements.
e.g.

.IF ($A="DONE") .LET Z="FINISH" \ .GOTO DUNIT 


Note:-

1.  This only applies to MIC commands it does not  include  normal  monitor
    commands,  except  when  the monitor command is the last command on the
    line.

    e.g.

    .LET A=3,B=4 \ .ERROR ?  \ .DIR ZXCV.ALG 

2.  All parameter substitution is performed for the whole line  before  the
    first statement is obeyed.

    This means that (assuming parameter A contains  "DIR  FRED")  an  input
    construction of the form:-

    .LET A=$A.[1,3]+" JIM" \.'A

    would result in

    .LET A=$A.[1,3]+" JIM" \.DIR FRED

    being obeyed.

3.  If an error occurs in a statement all  subsequent  statements  on  that
    line will be ignored.

4.  The "\" may be omitted after several  MIC  commands,  for  example  the
    "REVIVE" command, for compatability with older macro files.
MIC - Macro Interpreted Commands                                    Page 42
Hatfield Polytechnic Computer Centre - December 1979


    15) Immediate Mode Execution of MIC Commands.

    When a MIC macro is in [BREAK] mode the user may type (to monitor)  any
    MIC  command  in addition to any monitor command.  This allows the user
    to suspend his macro and examine and manipulate his parameters - useful
    when debugging complex macros - or perform some action on behalf of the
    macro.

    The GOTO and BACKTO commands when used  in  this  manner  do  not  take
    effect  immediately,  but  are  effective  as  soon  as  the  MACRO  is
    proceeded.


    N.B.

    A special case of the MIC DISPLAY command may be used at any time, even
    when the user is not running under MIC.  This is the

        MIC DISPLAY <system-parameter>

    This can be very useful for obtaining information  from  GETTAB  tables
    (see sections 7.3 and 9.2) though the user should be aware that the use
    of this command does destroy his core image.











                                APPENDIX A

                         EXAMPLES OF MIC COMMANDS




Asterisks indicate the scope of a macro command in these examples only.

 .;EXAMPLE 1
 .;A MIC DEMO - A SIMPLE MACRO COMMAND TO COMPILE POP2
 .;LIBRARY FILES
 .
 .TYPE SYS:POP2.MIC
 POP2
 COMPILE(LIBRARY([LIB 'A]))


 .; A TYPICAL CALL OF THE POP2 MIC MACRO COMMAND.
 .DO POP2  KALAH
                                  ******

 .PGOP2

 CSL POP2 V.26


 SETPOP
 : COMPILE(LIBRARY([LIB KALAH]));


 TO ENTER PROGRAM TYPE KALAH

 : ^C
                                  ******
EXAMPLES OF MIC COMMANDS                                            Page A-2



 .;AGAIN WITH A DIFFERENT PARAMETER.
 .DO POP2  ABSYS
                                  ******

 .PGOP2


 CSL POP2 V.26


 SETPOP
 : COMPILE(LIBRARY([LIB ABSYS]));
 : ^C

                                  ******
EXAMPLES OF MIC COMMANDS                                            Page A-3



 .;EXAMPLE 2
 .;A MIC DEMO OF GOTO COMMANDS.
 .;A MIC MACRO WHICH WILL OBEY ONLY SELECTED PARTS OF A FILE
 .;(USEFUL IF DISK SPACE IS LIMITED.)
 .;(SEVERAL COMMANDS COULD BE KEPT IN ONE FILE)
 .;
 .TYPE X.MIC


 .GOTO 'A
 COMP::
 ;A MACRO TO COMPILE FILES COULD BE HERE.
 .GOTO END
 DATA::
 ;A MIC MACRO TO SET UP DATA
 .GOTO END
 DEMO::
 ;PARAMETERS ARE
 ;A="'A"
 ;B="'B"
 ;C="'C"
 END::
 .;ALL COMMANDS FINISH HERE
 .;
 .;A TYPICAL CALL OF THE X MACRO COULD BE
 .;
 .DO X COMP
                                  ******
 .
 .GOTO COMP

 .
 .;A MACRO TO COMPILE FILES COULD BE HERE.
 .GOTO END

 .
 .;ALL COMMANDS FINISH HERE

                                  ******
 .
 .;ANOTHER TYPICAL CALL
 .DO X DEMO,FIRST PARAMETER,2ND,NO 3
                                  ******

 .
 .GOTO DEMO
 .
 .;PARAMETERS ARE
 .;A="DEMO"
 .;B="FIRST PARAMETER
 .;C="2ND"
 .
 .;ALL COMMANDS FINISH HERE
                                  ******
EXAMPLES OF MIC COMMANDS                                            Page A-4



 .;EXAMPLE 3
 .;A MIC DEMO OF ERROR COMMAND
 .;A MACRO TO COMPARE TWO FILES AND DELETE DSK COPY IF THEY
 .;ARE THE SAME
 .
 .TYPE CHECK.MIC

 .ERROR ?
 .R FILCOM
 *TTY:/Q='A.'B
 .DELETE 'A

 .
 .DO CHECK C.MIC,SYS:
                                  ******

 .
 .ERROR ?

 .R FILCOM

 *TTY:/Q=C.MIC,SYS:

 NO DIFFERENCES ENCOUNTERED

 *^C

 .DELETE C.MIC
 FILES DELETED
 C.MIC
 01 BLOCKS FREED

                                  ******

 .;CREATE AN INCORRECT COPY OF C.MIC WITH PIP.
 .R PIP

 *C.MIC=TTY:
 WRONG FILE
 ^Z
 *^C
 .;AND USE C.MIC TO CHECK IT
EXAMPLES OF MIC COMMANDS                                            Page A-5



 .DO CHECK C.MIC,SYS:
                                  ******

 .
 .ERROR ?
 .R FILCOM

 *TTY:/Q=C.MIC,SYS:
 FILE 1) DSK:C.MIC      CREATED: 1349  21-JAN-1975
 FILE 2) SYS:C.MIC      CREATED: 1202  03-OCT-1974

 ?FILES ARE DIFFERENT

 *[ABORT ON ERROR]
 ^C
                                  ******

 .;MIC ABORTS
EXAMPLES OF MIC COMMANDS                                            Page A-6



 .;EXAMPLE 4
 .;A MIC DEMO OR IF ERROR
 .;AN IMPROVEMENT ON EXAMPLE 3
 .;COMPARE TWO FILES AND DELETE DSK COPY IF FILES ARE THE
 .;SAME, OTHERWISE COPY AGAIN.
 .
 .TYPE CHECK.MIC
 .ERROR
 CHECK::.R FILCOM
        *TTY:/Q='A,'B
        .IF (NOERROR) .GOTO END
        .R PIP
        *'B/B/X='A
        .BACKTO CHECK
 END::  .;FILE 'A TRANSFERRED SUCCESSFULLY TO 'B


 .;A TYPICAL  CALL - CHECK FRED.SAV ON SYS: IS SAME AS
 .;DSK VERSION
 .
 .DO CHECK FRED.SAV,SYS:
                                  ******

 .ERROR
 .R FILCOM

 *TTY:/Q=FRED.SAV,SYS:
 FILE 1) DSK:FRED.SAV   CREATED: 1359 21-JAN-1975
 FILE 2) SYS:FRED.SAV   CREATED: 1910 21-JAN-1975

 ?FILES ARE DIFFERENT

 *^C
 .IF (NOERROR) .GOTO END
 .R PIP

 *SYS:/B/X=FRED.SAV
 *^C
 .BACKTO CHECK

 .
 .R FILCOM

 *TTY:/Q=FRED.SAV,SYS:

 NO DIFFERENCES ENCOUNTERED

 *^C

 .IF (NOERROR) .GOTO END
 .
 .;FILE FRED.SAV SUCCESSFULLY TRANSFERRED TO SYS:
                                  ******
EXAMPLES OF MIC COMMANDS                                            Page A-7



 .;EXAMPLE 5
 .;A MIC DEMO OF THE LET COMMAND
 .;ILLUSTRATED DISTINCTION BETWEEN $A AND  A
 .
 .TYPE LET.MIC
 .LET Z=A+B+C
 ;A+B+C='Z
 .LET Z=$A+$B+$C
 ;CONCATENATED STRING PARAMETERS ARE 'Z
 .LET X="'A"+"'B"+"'C"
 ;BUT CONCATENATION AFTER SUBSTITUTION HAS THE SAME EFFECT
 ;BUT (") QUOTES ARE REQUIRED FOR STRING LITERALS.
 ;'X
 .
 .;USING NUMBERS AS PARAMETERS.
 .
 .DO LET 4,5,6
                                  ******
 .
 .LET Z=A+B+C
 .;A+B+C=15
 .LET Z=$A+$B+$C
 .;CONCATENATED STRING PARAMETERS ARE 456.
 .LET X="4"+"5"+"6"
 .;CONCATENATION AFTER SUBSTITUTION HAS THE SAME EFFECT
 .;BUT (") QUOTES ARE REQUIRED FOR STRING LITERALS
 .;456
 .
                                  ******
 .
 .;ANOTHER EXAMPLE WITH NON-NUMERIC PARAMETERS.
 .
 .DO LET FIRST,<,,,>,THIRD
                                  ******
 .LET Z=A+B+C
 ?PARAMETER  A "FIRST" IS NOT A NUMBER
 .;A+B+C=
 .LET Z=$A+$B+$C
 .;CONCATENATED STRING PARAMETERS ARE FIRST,,,THIRD
 .LET Z="FIRST"+",,,"+"THIRD"
 .;CONCATENATION AFTER SUBSTITUTION HAS THE SAME EFFECT.
 .;BUT (") QUOTES ARE REQUIRED FOR STRING LITERALS.
 .;FIRST,,,THIRD
 .
                                  ******
EXAMPLES OF MIC COMMANDS                                            Page A-8



 .DO LET ,[1,2],5
                                  ******
 .
 .LET Z=A+B+C
 ?PARAMETER A IS NULL
 .;A+B+C=
 .LET Z=$A+$B+$C
 .;CONCATENATED STRING PARAMETERS ARE [1,2]5
 .LET X=""+"[1,2]"+"5"
 .;CONCATENATION AFTER SUBSTITUTION HAS THE SAME EFFECT
 .;BUT (") QUOTES ARE REQUIRED FOR STRING LITERALS
 .;[1,2]5
 .
 .;NOTE SECOND PARAMETER CONTAINS A COMMA BETWEEN MATCHED BRACKETS
EXAMPLES OF MIC COMMANDS                                            Page A-9



 .;EXAMPLE 6
 .;A COMPLICATED MIC MACRO COMMAND TO ASSEMBLE MACRO FILES
 .TYPE C.MIC
 .IF ($A.[1,"/H"]=$A).GOTO KNEW
 .REVIVE
 ; COMPILES MACRO FILES
 ;
 ; USE THUS:-
 ;
 ; DO C <STANDARD DEVICE FILE-SPEC>/SWITCHES
 ;
 ; SWITCHES MAY BE
 ;
 ;  /L TO DO A LOAD AS WELL
 ;  /CN TO PRODUCE  N COPIES
 ;  /H  TO TYPE THIS TEXT
 ;
 ;'A
 KNEW::.ERROR
 .LET B=$A.[1,"."].[1,"["].[1,"/"]
 .LET C=$A.["/C","/"]
 .LET D=$A.[1,"/"]
 .IF ($B.[":"] "") .LET B=$B.[":",6]
 .IF ($A.[1,"/L"] $A) .LET G="MIC ABORT"
 .REVIVE .R MACRO
 *'B,'B/C='D
 .R CREF
 *DSK:'B'B
 .Q 'B.LST/COPIES:'C
 .'G
 .R LINK
 *'B/GO
 .
 .;A TYPICAL CALL WOULD BE (ASSUMING FILE PROTECTION OF 255
 .DO C FRED.MAC/C3
                                  ******
 *FRED,FRED/C=FRED.MAC

 NO ERRORS DETECTED
 PROGRAM BREAK IS 000001
 2K CORE USED
 *^C

 .R CREF
 *DSK:FRED=FRED
 [CRFEXC 1K CORE]
 *^C
 .Q FRED.LST/COPIES:3
 TOTAL OF 3 BLOCKS IN LPT REQUEST
 .MIC ABORT
 .[ABORT]
 .
 .;NOTE USE OF AUTOMATIC SILENCE TO SUPPRESS UNINTERESTING
 .;PARTS OF THE FILE
EXAMPLES OF MIC COMMANDS                                           Page A-10



;EXAMPLE 7
;EXAMPLE OF THE USE OF SYSTEM PARAMETERS

            This MIC macro uses the system  parameter  feature  of  MIC  to
            produce  a short status report on any job on the system.  It is
            expected that this macro would run  silenced  using  a  "<2??>"
            protection  code,  and  the "!" in column one is used to output
            the information.

            If no job number is specified or the job  number  is  negative,
            the status of the users own job is output.

  .if ($a="").let a=$job               ;if no job no. use this job.
  .if (a<=0).let a=job                 ;if job no. is negative use this job.
  .let b=$gettab(25,a,six)+$gettab(26,a,six)
                                       ;get the username for this job.
  .let c=$gettab(2,a,ppn)              ;get the job's PPN.
  !USERNAME IS 'B LOGGED IN AS 'C
  .LET B=$GETTAB(3,'A,SIX)             ;GET THE JOB'S PROGRAM NAME.
  !CURRENTLY RUNNING 'B
  .LET B=$GETTAB(0,A,BIN)              ;GET THE JOB'S STATUS WORD.
  .LET C=$GETTAB(6,A,BIN)              ;GET THE JOB'S PRIVILEGE WORD.
  !PRIVILEGE WORD IS 'C
  !STATUS WORD IS    'B
  .

  .; AN EXAMPLE OF A RUN OF THIS MACRO WOULD BE:-

  .DO JBSTS
                                   ******
  STATISTICS ON JOB 3
  USERNAME IS BLOGGS FJ. LOGGED IN AS[100,100]
  CURRENTLY RUNNING MIC
  PRIVILEGE WORD IS 00000000000000000000000000000000000
  STATUS WORD IS    00100000000001000001000000000000000
  .

 Note that this is not presented as being the most efficient way to  access
 this and similar information.  It is however, a very easy and quick way of
 writing occasional or "one-off" systems programs.











                                 APPENDIX B

                               COMMAND SUMMARY





 .DO FRED ABC,<DEF,I>,[105,113]
                    MIC  will  type  on  the  user's  behalf  from  the  file
                    MIC:FRED.MIC   (OR  DSK:FRED.MIC)  substituting  ABC  for
                    /A,DEF,1 FOR 'B AND [105,113] FOR 'C.

 .LET X="DEF"
                    MIC will substitute further references in  macro  command
                    file to X('X) as def.

 .IF (ERROR) .GOTO LAB
                    If the previously typed command caused an error condition
                    MIC will continue processing the command file at LAB::.

 .BACKTO LAB2
                    MIC will unconditionally continue  processing  after  the
                    first occurrence in the command file of the label LAB2::.

 .SILENCE
                    Suppress I/O to the teletype.

 .REVIVE
                    Restore I/O to the teletype.

 .ERROR ?
                    Treat ?  in column 1 as indicating an error condition.

 .NOERROR
                    Disable error checking.

 .OPERATOR #
                    Treat # as indicating an OPERATOR condition.
COMMAND SUMMARY                                                      Page B-2
Hatfield Polytechnic Computer Centre - December 1979


 .NOOPERATOR
                    Disable OPERATOR checking.

 .MIC ABORT
                    Abort current process.

 .MIC BREAK
                    Suspend current process.

 .MIC CANCEL
                    Stop all processes.

 .MIC RETURN
                    About correct process but display no message.

 .MIC EXIT
                    Stop running MIC.

 .MIC SET NO PARAMETERS
                    Suppress parameter substitutions.

 .ON ERROR:ABORT
                    Cause MIC to [ABORT] if an error is detected.

 .MIC DISPLAY A
                    Output  the  contents  of  parameter  A  on  the   user's
                    terminal.

 .MIC TYPE A
                    Types the contents of parameter A as though the user  had
                    typed them.

 .MIC WHAT
                    Outputs status information on the user's macro.











                                 APPENDIX C

                  SYNTAX OF INTEGER AND STRING EXPRESSIONS



                            Integer Expressions.


The operators +,*,and - have the conventional meaning.  The character   /  is
used  for  divide, ^ for exponentiation, & for logical AND, and ! for logical
OR.  The evaluation of an expression is from left to right with precedence as
follows.

               ^                first
               */!&             second
               +-               third

Matching round brackets may be used to arrange the desired order of execution
of  operations.   The  monadic operator - is allowed but the monadic + is not
allowed, since unsigned integers are assumed positive.

Examples:-

        -2*(3+2-1)^5*(6/2+2)        is legal

        +2                          is not legal

        2+(-3*(4*(6+1)))            is legal
SYNTAX OF INTEGER AND STRING EXPRESSIONS                             Page C-2
Hatfield Polytechnic Computer Centre - December 1979


                        SYNTAX - Integer Expression.


    <DIGIT>::= 0/1/2/3/4/5/6/7/8/9

    <INTEGER>::=<DIGIT>/<Any-number-of-digits>

    <PARAMETER>::=A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z

    <NUMERIC-TERM>::=<PARAMETER>/<INTEGER>/<INTEGER-EXPRESSION>
                   /<SYSTEM-PARAMETER>

    <INTEGER-EXPRESSION>::=-<NUMERIC-TERM>/<NUMERIC-TERM>
    <NUMERIC-TERM>/<OPERATOR><NUMERIC-TERM>

    <OPERATOR>::= +/-/*/"/"/^/!/&

    To allow references to be made  to  parameters  in  an  outer  process  a
    qualifier is allowed to the parameter name, e.g.

    If a MIC command is nested three deep A3 would be the parameter A in  the
    outer process.  This extension also applies to string parameters ($A3).

    On the left hand side of LET assignment statements the qualifier  may  be
    used to return parameters to an outer level MACRO command.  e.g.

    .LET A1="TEXT"
SYNTAX OF INTEGER AND STRING EXPRESSIONS                             Page C-3
Hatfield Polytechnic Computer Centre - December 1979


                        SYNTAX - String Expressions.

    <STRING>::=<any-ASCII-text>

    <STRING-expression>::="<string>"/$<subscripted-string>/
                          $<system-parameter>

    <expression>::=<string-expression>/<integer-expression>

    <subscripted-string>::=<string-expression>.[<expression>]/
                       <string-expression>.[<expression>,<expression>]

    To allow the character quote (") to be used within a text string a single
    quote  (")  will  be  substituted  for  any double quote ("") encountered
    within a string expression.











                                 APPENDIX D

                               ERROR MESSAGES.





Error messages from MIC have the form:-

?MIC<code> <text> - in "<command-name>" command.

where:-

<code>  is a three-character code unique to each error.

<text>  is the description of the error as listed in this document.

<command-name>  is the name of the MIC command currently being executed.
ERROR MESSAGES.                                                      Page D-2
ERROR MESSAGES WHICH APPLY ONLY TO SPECIFIC COMMANDS.


D.1  ERROR MESSAGES WHICH APPLY ONLY TO SPECIFIC COMMANDS.

D.1.1  / or DO Command.

?MICMNR MIC not running please try again
                        The operator has not started the MIC master  program,
                        and  he  has  a copy of this message displayed on his
                        console.

?MICDFS Error in device file specification
                        The specification of the MIC  command  file  did  not
                        follow the general form "dsk:file.ext[path]".

?MICCID Cannot INIT device
                        The device which the user specified for  the  command
                        file is not available.

?MICCOF Cannot OPEN file
                        The command file could not be found.

?MICPUF PATH.UUO failed
                        The path specified by the user caused an  error  when
                        MIC attempted to use it.

?MICTMC Too many characters in argument
                        The user's arguments are  longer  than  approximately
                        500 characters.

?MICBMP Brackets mismatch in parameter
                        The  user  has   specified   a   parameter   with   a
                        non-matching set of parentheses.

?MICTMP Too many parameters - maximum = 26
                        The user  has  attempted  to  specify  more  than  26
                        separate parameters.

?MICCNP Cannot nest processes this deep - maximum = n
                        The user has specified MIC macros calling MIC  macros
                        to  a  depth  greater  than n, where n is an operator
                        settable parameter.

?MICNTF No TMP file for input
                        No temporary file was found after an offset one entry
                        to MIC.




D.1.2  ON or WHENEVER Command

?MICNAE Not an event
                        Attempt to use an illegal <event>, see section 11 for
                        a full list of of events.
ERROR MESSAGES.                                                      Page D-3
ERROR MESSAGES WHICH APPLY ONLY TO SPECIFIC COMMANDS.


?MICILF Illegal format
                        MIC  cannot  understand  the  arguments  given.   See
                        section 11.  

?MICNOA No argument
                        A command of the form

                             .ON <EVENT>!

                        has been given.

?MICANA Argument is not an A-Z parameter
                        A command of the form

                             .ON <EVENT>:<ACTION> <PARAMETER>

                        has an invalid parameter.




D.1.3  SET Command

?MICUKA Unknown argument
                        An invalid MIC SET command has been given.

?MICNPV No privileges to do this
                        The user has attempted to use a  privileged  MIC  SET
                        function.




D.1.4  GOTO or BACKTO Command

?MICNAL No argument for label
                        The command did not specify a label.

?MICCFL Cannot find LABEL - <label>
                        The label <label> could not be found in  the  command
                        file.  This error is always fatal.




D.1.5  LET Command

?MICILC Illegal character "ch" octal "n"
                        The character ch followed  a  LET  command.   Only  a
                        space or a tab should follow a LET.

?MICPMB Parameter must be A-Z not "ch" octal "n"
                        The parameter on the left hand side of an  assignment
                        was not valid.
ERROR MESSAGES.                                                      Page D-4
ERROR MESSAGES WHICH APPLY ONLY TO SPECIFIC COMMANDS.


?MICASS Assignment symbol should be = or   not "ch" octal "n"
                        Assignment must be of the general form 

                             LET A = expression

                             or

                             LET A < expression

?MICPSE Parameter space exhausted
                        MIC has no room to store  new  argument.   (Character
                        space is approximately 500 characters).




D.1.6  Response Command

?MICMRC Maximum RESPONSE is 79 characters
                        The user has attempted to use a value greater than 79
                        as his response limit.

?MICRCL RESPONSE command must specify response length
                        A MIC RESPONSE command did  not  specify  a  response
                        limit.




D.1.7  IF Command

?MICNCD No conditional
                        The contents of brackets in an IF clause  was  not  a
                        legal conditional expression.

?MICUCO Unknown conditional operator
                        The relation operator in  a  conditional  clause  was
                        unknown.

?MICMOT Mismatch of types
                        An attempt was made to compare an integer  expression
                        with a string expression.

?MICCDN Conditional "cc" not defined
                        The conditional cc is not known to MIC.
ERROR MESSAGES.                                                      Page D-5
ERROR MESSAGES WHICH APPLY ONLY TO SPECIFIC COMMANDS.


D.1.8  SLEEP Command

?MICIAS Illegal argument
                        The  time  specified  in  a  MIC  SLEEP  command  was
                        invalid.




D.1.9  DISPLAY/TYPE Command

?MICICA Invalid character after "^" up-arrow
                        The user had attempted to MIC TYPE or MIC DISPLAY  on
                        a  character  of  the  form "^5"" which is an illegal
                        control specification.




D.2  GENERAL SYNTAX ERRORS

the following errors may occur in several MIC commands.   Which  command  the
error  actually  occurred  in is specified by the in "<command-name>" command
section of the error message.



D.2.1  String Expressions

?MICSIC String subscript illegal character "ch" octal "n"
                        The character "ch" is not valid in string subscript.




D.2.2  Arithmetic Expressions

?MICILC Illegal character "ch" octal "n"
                        The character ch is  not  allowed  in  an  arithmetic
                        expression.

?MICOBN Operator missing between ) and number 
                        Illegal  construction  of  the  form   )345   in   an
                        arithmetic expression.

?MICONB Operator missing between number and (
                        Illegal construction of the form 345(.

?MICNMB Number missing between brackets

                        Illegal construction of the form () in an  arithmetic
                        expression.

?MICNMO Number missing between two operators
ERROR MESSAGES.                                                      Page D-6
GENERAL SYNTAX ERRORS


                        Illegal construction in arithmetic expression.

?MICBRM Brackets mismatch
                        Arithmetic expression is incorrectly bracketed.

?MICPPN Parameter "pp" is not a number
                        An attempt to  include  a  string  in  an  arithmetic
                        expression.

?MICPPN Parameter "pp" is null
                        An  attempt  to  perform  arithmetic  on   an   empty
                        parameter.

?MICGTR GETTAB result "rr" is not a number
                        An attempt to perform arithmetic on a  GETTAB  result
                        which  has  not  been obtained using the correct type
                        out mode.

?MICGTR GETTAB result is null
                        An attempt to perform arithmetic on a  GETTAB  result
                        which has returned a null.




D.2.3  System Parameters

?MICIAP Illegal action parameter
                        The user has attempted  to  use  one  of  the  action
                        parameters  in  an expression.  Action parameters may
                        only be used via parameter substitution.

?MICLLP "LENGTH requires left parentheses

?MICLRP "LENGTH requires right parentheses
                        The length function was improperly specified.

?MICPPF PATH function - PATH.UUO failed
                        System error, please report this error.

?MICEFC Error in system parameter call
                        Some unspecified error has occurred, usually  invalid
                        syntax.

?MICERT Error return taken by GETTAB UUO
                        The  GETTAB  arguments  specified  by  the  user  are
                        invalid.

?MICUFN Unknown function

?MICUKF Unknown system parameter
                        Attempt to use an invalid system parameter.

?MICIAF Illegal argument format for system parameter
ERROR MESSAGES.                                                      Page D-7
GENERAL SYNTAX ERRORS


                        An argument is in error, for example an invalid radix
                        in a GETTAB.




D.2.4  Other

?MICNRM Not running MIC
                        An attempt to use a MIC command when not inside a MIC
                        macro.

?MICPNP Attempted reference to parameter in non-existent outer process
                        The user has attempted to use a parameter of the form
                        "A1" when there is no outer macro process.




D.3  ERROR MESSAGES WHICH OCCUR DURING THE PROCESSING OF A MACRO

Error messages in this category always terminate the execution of  the  macro
and  the  text  of the error message does not include the in "<command-name>"
command text.

?MICICF Illegal character follows apostrophe
                        MIC has attempted to substitute text which is  not  a
                        valid parameter.

?MICCFL Cannot find LABEL - <label>
                        MIC could not find the label specified by a  GOTO  or
                        BACKTO command.

?MICCNI Cannot INIT device
                        The device which  held  the  user's  macro  file  has
                        become inaccessible during the running of the macro.

?MICMFN Macro file not found
                        The MIC macro command file has  been  deleted  during
                        the running of the macro.

?MICCPC Cannot nest parameter calls this deep
                        An actual parameter contains parameter  calls  nested
                        to a depth of greater than 8 levels.

?MICNGN Nested GETTABs are not allowed

?MICNST Nested SLEEPs are not illegal

?MICLER Nested LENGTHs are illegal
                        The  above  parameters  may  not  be  nested  in  any
                        combination.
                                                                 Page Index-1



                                                INDEX




                        !(exclamation) . . . . . . 8

                        %  . . . . . . . . . . . . 9
                        %CERR  . . . . . . . . . . 11
                        %ERR . . . . . . . . . . . 11
                        %FIN . . . . . . . . . . . 10 to 11

                        *(asterisk)  . . . . . . . 8

                        .(dot) . . . . . . . . . . 8

                        :: . . . . . . . . . . . . 9 to 10

                        ;(semi-colon)  . . . . . . 8

                        =(equals)  . . . . . . . . 8

                        ?  . . . . . . . . . . . . 11, 21

                        ABORT  . . . . . . . . . . 25
                        ABORT Command  . . . . . . 25
                        Actions  . . . . . . . . . 35

                        BACKTO command . . . . . . 10
                        BATCH commands . . . . . . 10
                        BREAK Command  . . . . . . 26
                        Byte subscripting  . . . . 15

                        CANCEL Command . . . . . . 25
                        CCL Entry to MIC . . . . . 39
                        COLUMN ONE.  . . . . . . . 36
                        COLUMN1. . . . . . . . . . 36
                        Command File . . . . . . . 6 to 7
                        Comments . . . . . . . . . 8
                        Concatenation  . . . . . . 14
                        CONTROL  . . . . . . . . . 36
                        Control A  . . . . . . . . 21, 25
                        Control B  . . . . . . . . 26
                        Control C  . . . . . . . . 25
                        Control Characters . . . . 8, 36
                        Control Commands . . . . . 25
                        Control P  . . . . . . . . 13, 21, 26

                        DATE . . . . . . . . . . . 28

                        ERROR  . . . . . . . . . . 11
                        Error Processing . . . . . 11
                        Events . . . . . . . . . . 34
                        Exit command . . . . . . . 26
                        Expression-string  . . . . 14
                        Expressions-integer  . . . 14

                        FINMATCH . . . . . . . . . 37

                        GETTAB . . . . . . . . . . 28
                        GETTAB radix . . . . . . . 29
                        GOTO command . . . . . . . 10

                        IF . . . . . . . . . . . . 12, 19
                        IF command . . . . . . . . 12, 19
                        IF extensions  . . . . . . 19
                        Interactions . . . . . . . 21

                        JOB  . . . . . . . . . . . 28

                        Labelled Lines.  . . . . . 9
                        Labels . . . . . . . . . . 9 to 10
                        LC . . . . . . . . . . . . 38
                        LENGTH . . . . . . . . . . 28
                        LET command  . . . . . . . 14, 32
                        LET extensions . . . . . . 32
                        Line Numbers . . . . . . . 7

                        MIC ABORT  . . . . . . . . 25
                        MIC CANCEL . . . . . . . . 25
                        MIC DISPLAY Command  . . . 23
                        MIC RESPONSE . . . . . . . 22
                        MIC RETURN . . . . . . . . 26
                        MIC SET  . . . . . . . . . 36
                        mic sleep Command  . . . . 24
                        MIC TYPE Command.  . . . . 24
                        MIC WHAT Command . . . . . 24
                        MICANA . . . . . . . . . . D-3
                        MICASS . . . . . . . . . . D-4
                        MICBMP . . . . . . . . . . D-2
                        MICBRM . . . . . . . . . . D-6
                        MICCDN . . . . . . . . . . D-4
                        MICCFL . . . . . . . . . . D-3, D-7
                        MICCID . . . . . . . . . . D-2
                        MICCNI . . . . . . . . . . D-7
                        MICCNP . . . . . . . . . . D-2
                        MICCOF . . . . . . . . . . D-2
                        MICCPC . . . . . . . . . . D-7
                        MICDFS . . . . . . . . . . D-2
                        MICEFC . . . . . . . . . . D-6
                        MICERT . . . . . . . . . . D-6
                        MICGTR . . . . . . . . . . D-6
                        MICIAF . . . . . . . . . . D-7
                        MICIAP . . . . . . . . . . D-6
                        MICIAS . . . . . . . . . . D-5
                        MICICA . . . . . . . . . . D-5
                        MICICF . . . . . . . . . . D-7
                        MICILC . . . . . . . . . . D-3, D-5
                        MICILF . . . . . . . . . . D-3
                        MICLER . . . . . . . . . . D-7
                        MICLLP . . . . . . . . . . D-6
                        MICLRP . . . . . . . . . . D-6
                        MICMFN . . . . . . . . . . D-7
                        MICMNR MIC . . . . . . . . D-2
                        MICMOT . . . . . . . . . . D-4
                        MICMRC . . . . . . . . . . D-4
                        MICNAE . . . . . . . . . . D-2
                        MICNAL . . . . . . . . . . D-3
                        MICNCD . . . . . . . . . . D-4
                        MICNGN . . . . . . . . . . D-7
                        MICNMB . . . . . . . . . . D-5
                        MICNMO . . . . . . . . . . D-6
                        MICNOA . . . . . . . . . . D-3
                        MICNPV . . . . . . . . . . D-3
                        MICNRM . . . . . . . . . . D-7
                        MICNSI . . . . . . . . . . D-7
                        MICNTF . . . . . . . . . . D-2
                        MICOBN . . . . . . . . . . D-5
                        MICONB . . . . . . . . . . D-5
                        MICPMB . . . . . . . . . . D-3
                        MICPNP . . . . . . . . . . D-7
                        MICPPF . . . . . . . . . . D-6
                        MICPPN . . . . . . . . . . D-6
                        MICPSE . . . . . . . . . . D-4
                        MICPUF . . . . . . . . . . D-2
                        MICRCL . . . . . . . . . . D-4
                        MICSIC . . . . . . . . . . D-5
                        MICTMC . . . . . . . . . . D-2
                        MICTMP . . . . . . . . . . D-2
                        MICUCO . . . . . . . . . . D-4
                        MICUFN . . . . . . . . . . D-6
                        MICUKA . . . . . . . . . . D-3
                        MICUKF . . . . . . . . . . D-6
                        MSGLVL . . . . . . . . . . 38
                        Multiple LET Statements. . 16
                        Multiple ON Commands.  . . 35
                        Multiple SET Commands. . . 38
                        Multiple Statements on a Line  41
                        Multiple WHENEVER Commands.  35

                        NOERROR  . . . . . . . . . 11
                        Non Procedural Calls . . . 34
                        NOOPERATOR . . . . . . . . 21

                        Octal Arguments to GETTABS  30
                        Octal Expressions  . . . . 17
                        ON command . . . . . . . . 34
                        Operator . . . . . . . . . 21
                        Operator Character . . . . 21, 26
                        OPERATOR command.  . . . . 12
                        Outer Processes  . . . . . 17

                        Parameter Substitution . . 8, 28, 37
                        PARAMETERS . . . . . . . . 37
                        Parameters in Outer Processes.  17, 20
                        PATH . . . . . . . . . . . 28
                        PLEASE COMMAND . . . . . . 13
                        PPN  . . . . . . . . . . . 28
                        PROCEED Command  . . . . . 13, 26
                        Proceed Command  . . . . . 26
                        PROGRAMMER . . . . . . . . 28
                        PROJECT  . . . . . . . . . 28
                        Protection codes . . . . . 13
                        PTHPPN . . . . . . . . . . 28

                        Response . . . . . . . . . 22
                        REVIVE command . . . . . . 13

                        Silence  . . . . . . . . . 8
                        SILENCE command  . . . . . 13
                        SILENCE(protection code) . 13
                        Special Characters . . . . 8, 37
                        Special Parameters . . . . 28
                        Special Tests  . . . . . . A-1
                        SPECIALS . . . . . . . . . 37
                        String-comparisons . . . . 19
                        System Parameters  . . . . 28

                        TIME . . . . . . . . . . . 28
                        TMPCOR . . . . . . . . . . 39
                        TMPFIL . . . . . . . . . . 39
                        TTY  . . . . . . . . . . . 28

                        WHENEVER command . . . . . 34

                        [ABORT ON ERROR] . . . . . 11
                        [ABORT]  . . . . . . . . . 25
                        [BREAK]  . . . . . . . . . 13, 21, 26
                        [CANCEL] . . . . . . . . . 25
                        [PROCEED]  . . . . . . . . 13, 21, 26

                        \  . . . . . . . . . . . . 41
                        ^B . . . . . . . . . . . . 26
                        ^P . . . . . . . . . . . . 26
                        ^C . . . . . . . . . . . . 25
                        ^A . . . . . . . . . . . . 25
                        ^P . . . . . . . . . . . . 21
                        ^C . . . . . . . . . . . . 21
                        ^A . . . . . . . . . . . . 21
                        ^P . . . . . . . . . . . . 13