Google
 

Trailing-Edge - PDP-10 Archives - cuspbinsrc_2of2_bb-fp63b-sb - 10,7/mic/micref.man
There are no other files named micref.man in the archive.


                            UNIVERSITY OF YORK


                             COMPUTING SERVICE


                                    MIC

                        Macro Interpreted Commands


                      Reference Manual - Edition 8.3



                                April 1983


         This guide reflects features of version 11C(1223) of MIC.






          Edited and revised by J.D. Service, University of York.
MIC - Macro Interpreted Commands                                     Page 1
University of York Computing Service


    MIC was originally written at Hatfield Polytechnic Computer Centre.



                   Copying of this document is allowed.




                   Hatfield Polytechnic Computer Centre
                         The Hatfield Polytechnic
                                PO 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
University of York Computing Service


                                 CONTENTS



     1.  Introduction

     2.  Introducing a MIC command

     3.  Constructing MIC macro command files

         1.  Special Characters

         2.  Labelled lines

         3.  Parameter substitution


     4.  Commands derived from DECsystem-10 multi-programming batch

         1.  GOTO/BACKTO command

         2.  ERROR/NOERROR command

         3.  IF command

         4.  OPERATOR/NOOPERATOR command

         5.  SILENCE/REVIVE command

         6.  PLEASE command

         7.  CHKPNT/REQUEUE command

         8.  Others


     5.  LET command

         1.  Byte subscripting for string expressions

         2.  Multiple LET statements

         3.  Parameters in outer processes

         4.  Octal expressions


     6.  Extensions to the IF command

         1.  Parameters in outer processes

         2.  Special Tests
MIC - Macro Interpreted Commands                                     Page 3
University of York Computing Service


     7.  Simple interaction with MIC

         1.  OPERATOR/NOOPERATOR command

         2.  MIC RESPONSE command

         3.  MIC DISPLAY command

         4.  MIC TYPE command

         5.  MIC WHAT command

         6.  MIC SLEEP command

         7.  MIC INPUT command


     8.  MIC control commands

         1.  MIC ABORT command

         2.  MIC CANCEL command

         3.  MIC BREAK command

         4.  MIC PROCEED command

         5.  MIC EXIT command

         6.  MIC RETURN command


     9.  Special Parameters

         1.  System Parameters

             1.  Parameter substitution

             2.  GETTABS

             3.  Octal argument to GETTABS


         2.  Action parameters

         3.  Miscellaneous special parameters

             1.  PSHIFT


         4.  Substitution of parameters in outer processes


    10.  LET and IF extensions
MIC - Macro Interpreted Commands                                     Page 4
University of York Computing Service


         1.  Use of system parameters

         2.  Use of system parameters in arithmetic assignments

         3.  Use of system parameters in IF commands


    11.  Non procedural calls to MIC (WHENEVER/ON command)

         1.  Multiple WHENEVER/ON commands


    12.  MIC SET command

         1.  COLUMN1

         2.  CONTROL

         3.  PARAMETERS

         4.  SPECIALS

         5.  FINMATCH

         6.  MSGLVL

         7.  LC

         8.  TRACE

         9.  SILENCE

        10.  CCTRAP

        11.  Multiple SET commands


    13.  CCL entry to MIC

    14.  Multiple statements on a line

    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 5
INTRODUCTION


1.0  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 of 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 6
INTRODUCTION


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 7
INTRODUCING A MIC COMMAND


2.0  INTRODUCING A MIC COMMAND

To cause a 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  user's  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 8
CONSTRUCTING MIC MACRO COMMAND FILES


3.0  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  space  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 9
CONSTRUCTING MIC MACRO COMMAND FILES


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 10
CONSTRUCTING MIC MACRO COMMAND FILES


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 must always be 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 11
COMMANDS DERIVED FROM DECSYSTEM-10 MULTI-PROGRAM BATCH


4.0  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 the
               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 12
COMMANDS DERIVED FROM DECSYSTEM-10 MULTI-PROGRAM BATCH


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 occurred in a system program,

or

%ERR or a %FIN if the error occurred 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

               1.  The WHENEVER/ON command may  be  used  to
               change  this  default processing (see section
               11).

               2.  If a "%" label is detected  when  we  are
               not  processing  an  error, then the commands
               following that "%" label and up to  the  next
               occurrence  of a "%FIN" label will be ignored
               (cf.  BATCH).
MIC - Macro Interpreted Commands                                    Page 13
COMMANDS DERIVED FROM DECSYSTEM-10 MULTI-PROGRAM BATCH


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  user's
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 Multi Programming Batch.





4.4  OPERATOR/NOOPERATOR Command

The Batch command "OPERATOR"  is  also  used  in  MIC.   Its  operation  is
described in section 7.1.
MIC - Macro Interpreted Commands                                    Page 14
COMMANDS DERIVED FROM DECSYSTEM-10 MULTI-PROGRAM BATCH


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$



4.7  CHKPNT/REQUEUE Command

The batch pseudo commands CHKPNT and REQUEUE are supported by  MIC  in  the
sense that they are interpreted and discarded.  MIC regards them as being a
form of comment and discards the line, though it will be displayed  if  the
user is not silenced.

The user's core image is not affected.
MIC - Macro Interpreted Commands                                    Page 15
COMMANDS DERIVED FROM DECSYSTEM-10 MULTI-PROGRAM BATCH


4.8  Others

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 commands.
MIC - Macro Interpreted Commands                                    Page 16
LET COMMAND


5.0  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 17
LET COMMAND


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 18
LET COMMAND


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 19
LET COMMAND


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


And similarly

.LET Q3=C2

sets parameter Q in the third outer process equal to  parameter  C  in  the
second outer process.

See also section 9.4.



5.4  Octal Expressions

The "LET" command may also be used to manipulate octal  values.   An  octal
number is always preceded 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.
MIC - Macro Interpreted Commands                                    Page 20
LET COMMAND




                                   NOTE

               As  MIC  stores  all  variables  as  typeless
               strings  it  is up to the user to ensure that
               he puts "%" signs where appropriate.



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 21
EXTENSIONS TO THE IF COMMAND


6.0  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 22
EXTENSIONS TO THE IF COMMAND




                                   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 user's 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 23
SIMPLE INTERACTION WITH MIC


7.0  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 24
SIMPLE INTERACTION WITH MIC


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.



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.
MIC - Macro Interpreted Commands                                    Page 25
SIMPLE INTERACTION WITH MIC




                                   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 26
SIMPLE INTERACTION WITH MIC


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 27
SIMPLE INTERACTION WITH MIC


7.7  MIC INPUT Command

This command is used to accept the input of  a  parameter  value  from  the
user's terminal from within the processing of a MIC command file.

The format of the command is:-

.MIC  INPUT  p

or

.MIC INPUT   p,"<prompt-message>"

where

p is the parameter, normally A to Z, for which the value is to be supplied.
However  parameter  values  may also be input to parameters in outer nested
processes by specifying A1, G3, etc.  -  (see  section  6.1  Parameters  in
Outer Processes) and

<prompt-message> is the message output to the user to invite him to type in
the line of input.  If the prompt-message is omitted then the input will be
prompted for the display of "Enter parameter p".  The prompt message may be
either  a  string  variable  or  a string constant and may include carriage
returns and linefeeds.  If it contains double-quotes (") then they must  be
doubled ("").

The execution of the MIC INPUT command allows the user to  input  a  single
line  of information from his terminal and have it included in parameter p.
The line should not be in double  quotes,  though  it  may  include  double
quotes and the input will end on any break character.

This command overrides any silence condition in order to display the prompt
message  and accept the input.  The job will, if appropriate, return to the
silenced condition after the input has been accepted.

The MIC INPUT command uses the BREAK and PROCEED facilities of MIC and when
MIC  has  displayed  the prompt-message it enters the BREAK state until the
input has been read whereupon the process proceeds automatically.   However
the  normal [BREAK] and [PROCEED] messages are not displayed and any action
which the user has defined for [BREAK]  or  [PROCEED]  (using  WHENEVER/ON)
will be ignored.
MIC - Macro Interpreted Commands                                    Page 28
SIMPLE INTERACTION WITH MIC


E.g.

.MIC INPUT A            ;typed from MIC macro
Enter parameter A? 63   ;63 typed by user
.

or

.MIC INPUT C1, "What is your name?"
What is your name? IAN
.

or

.LET B=What is 2 multiplied by 2?"
.MIC INPUT  X,$B
What is 2 multiplied by 2? 3
.


                                   NOTE

               1.  This command  destroys  the  user's  core
               image.

               2.  The  prompt   string   may   use   string
               concatenation and subscripting.

               3.  When displaying  the  prompt  string  the
               sequence   ^ch   will   cause  the  character
               control-ch to be displayed, however the input
               will  store  the  two characters ^ and ch not
               control-ch.
MIC - Macro Interpreted Commands                                    Page 29
MIC CONTROL COMMANDS


8.0  MIC CONTROL COMMANDS

8.1  MIC ABORT Command

Format

.MIC ABORT

MIC aborts the 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.



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.
MIC - Macro Interpreted Commands                                    Page 30
MIC CONTROL COMMANDS


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.

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 31
SPECIAL PARAMETERS


9.0  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           substitute 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 user's 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

ERRCHR                          Returns the current error character.

OPRCHR                          Returns the current operator character.

DAY                             The current day of the week as a text
                                string.
MIC - Macro Interpreted Commands                                    Page 32
SPECIAL PARAMETERS


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,SIX)>'<GETTAB(26,-1,SIX)>

would cause the user's "USERNAME" to be output.
MIC - Macro Interpreted Commands                                    Page 33
SPECIAL PARAMETERS


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 the
               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 34
SPECIAL PARAMETERS


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 user's 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 user's 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 35
SPECIAL PARAMETERS


9.3  Miscellaneous Special Parameters

This is a group of parameters for specialised use.



9.3.1  '<PSHIFT> - 

The PSHIFT or parameter shift command causes all parameters to  be  shifted
by one, that is

      discard the contents of parameter A,
then
      A:=B, B:=C, C:=D ... X:=Y, Y:=Z
and
      Z:=null

This command may be used in a loop for processing  a  string  of  identical
parameters.



9.3.2  '<PROTATE> - 

Like PSHIFT the PROTATE or parameter rotate command causes  all  parameters
to  be  shifted  by  one.  The difference is that PROTATE sets Z equal to A
instead of discarding A.  For example:

      save the contents of parameter A,
then
      A:=B, C:=D, ... X:=Y, Y:=Z
and
      Z:= the saved contents of A



9.3.3  String Constants - 

Several commonly used  strings  of  constants  are  now  available  as  MIC
parameters.



9.3.3.1  ALPHABET - 
The $ALPHABET or '<ALPHABET> parameter returns a string of the characters A
through Z.



9.3.3.2  NUMERIC - 
The $NUMERIC or '<NUMERIC> parameter returns a string of the 4567890.
MIC - Macro Interpreted Commands                                    Page 36
SPECIAL PARAMETERS


9.3.3.3  ASCII - 
The $ASCII or '<ASCII> returns the characters with values 1 through 127  in
ASCII character set.

Note
LET A=$ASCII.[50]
returns the character whose ASCII value is 50.



9.3.3.4  CR  - 
The $CR or '<CR> returns a single carriage return character.



9.3.3.5  CRLF - 
The  $CRLF  or  '<CRLF>  returns   a   string   of   the   two   characters
<carriage-return> and <line-feed>.



9.4  Substitution Of Parameters In Outer Processes

It is often required to substitute the contents of a parameter in an  outer
nested  process  in  a  similar  way  to  the  "'parameter-name"  used  for
parameters at the current level.  As the syntax "'A1" cannot be used due to
possible confusion the syntax is '<parameter-name-level>.

E.g.  to substitute parameter Q in the third outer process we use

      '<Q3>
MIC - Macro Interpreted Commands                                    Page 37
LET AND IF EXTENSIONS


10.0  LET AND IF EXTENSIONS

10.1  Use Of System Parameters

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 38
LET AND IF EXTENSIONS


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 39
NON PROCEDURAL CALLS TO MIC (WHENEVER/ON COMMAND)


11.0  NON PROCEDURAL CALLS TO MIC (WHENEVER/ON COMMAND)

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 40
NON PROCEDURAL CALLS TO MIC (WHENEVER/ON COMMAND)


and the valid actions are:-


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




                                   NOTE

               1.  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.

               2.  If CANCEL trapping is enabled

               E.g

               .ON CANCEL:<action>

               then the action is reset to the normal action
               after  every  occurrence  of the event.  This
               only applies to ON CANCEL, and is to  prevent
               users from accidentally creating macros which
               cannot be terminated.  This  feature  may  be
               changed by MIC SET CCTRAP, see next section.





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
MIC - Macro Interpreted Commands                                    Page 41
NON PROCEDURAL CALLS TO MIC (WHENEVER/ON COMMAND)


.WHENEVER CANCEL:GOTO FRED,ABORT:GOTO BILL
MIC - Macro Interpreted Commands                                    Page 42
MIC SET COMMAND


12.0  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 command 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 43
MIC SET COMMAND


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



12.6  MSGLVL


The "MIC SET NOT MSGLVL n" may be  used  to  suppress  the  output  of  the
messages  "[ABORT]",  "[BREAK]", "[CANCEL]", and "[PROCEED]".  The argument
"n" is a 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].
MIC - Macro Interpreted Commands                                    Page 44
MIC SET COMMAND


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  TRACE

This is a feature which a user may  use  when  debugging  a  completed  MIC
macro.  If the command

.MIC SET TRACE

is executed, then MIC displays all labels that are processed during  search
commands (GOTO/BACKTO or implied GOTOs due to errors).

The first six characters of every label are displayed in  square  brackets,
and  a  carriage return is not displayed until the last label is processed.
Also MIC will display [TRUE] or [FALSE] on  the  execution  of  every  "IF"
conditional command.



12.9  SILENCE

This is another feature which is useful in debugging MIC  macros.   If  the
command

.MIC SET NO SILENCE

is executed, then MIC will ignore all attempts to silence the current,  and
any nested, MIC macros.  The default is:-

.MIC SET SILENCE



12.10  CCTRAP

This command is used to enable multiple occurrences of  ON  CANCEL:<event>.
If the command

.MIC SET CCTRAP

is executed, then MIC will not unset the ON CANCEL:<event>  every  time  it
occurs.
MIC - Macro Interpreted Commands                                    Page 45
MIC SET COMMAND


12.11  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 46
CCL ENTRY TO MIC


13.0  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 and 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.


This  switch  may  be  used  to  create  a  MIC   TMPCOR   file   and   the
MIC - Macro Interpreted Commands                                    Page 47
CCL ENTRY TO MIC


"/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" files.  (Consult the Operating Systems Commands
Manual for a description of "SWITCH.INI" and the above switches.)
MIC - Macro Interpreted Commands                                    Page 48
MULTIPLE STATEMENTS ON A LINE


14.0  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 a 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.

               5.  In the case of  syntax  error  in  a  MIC
               command  preceeding  a  "\",  the rest of the
               line will usually be ignored.
MIC - Macro Interpreted Commands                                    Page 49
IMMEDIATE MODE EXECUTION OF MIC COMMANDS


15.0  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
                                  ******

 .POP2

 CSL POP2 V.26


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


 TO ENTER PROGRAM TYPE KALAH

 : ^C
                                   *****


 .;AGAIN WITH A DIFFERENT PARAMETER.
 .DO POP2  ABSYS
                                  ******
EXAMPLES OF MIC COMMANDS                                            Page A-2



 .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

 .
 .;A TYPICAL CALL - CHECK IF DSK:C.MIC IS A COPY OF SYS:C.MIC
 .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 1 is used to output the
            information.

            If no job number is specified or the job  number  is  negative,
            the status of the user's 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

     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.

 .NOOPERATOR
                    Disable OPERATOR checking.

 .MIC ABORT
                    Abort current process.

 .MIC BREAK
                    Suspend current procees.
COMMAND SUMMARY                                                      Page B-2



 .MIC CANCEL
                    Stop all processes.

 .MIC RETURN
                    Abort current 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.

 .MIC INPUT A, PROMPT
                    This command allows the user to accept  the  input  of  a
                    parameter  value  from  within  the  processing  of a MIC
                    command file.











                                 APPENDIX C

                  SYNTAX OF INTEGER AND STRING EXPRESSIONS



C.1  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



C.2  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>::= +/-/*/"/"//!/&
SYNTAX OF INTEGER AND STRING EXPRESSIONS                             Page C-2
SYNTAX - INTEGER EXPRESSION


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"



C.3  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.




D.1.8  SLEEP Command

?MICIAS Illegal argument
                        The  time  specified  in  a  MIC  SLEEP  command  was
                        invalid.
ERROR MESSAGES                                                       Page D-5
ERROR MESSAGES WHICH APPLY ONLY TO SPECIFIC COMMANDS.


D.1.9  DISPLAY/TYPE Command

?MICICA Invalid character follows caret ("^")
                        The user had attempted to MIC TYPE or MIC DISPLAY  on
                        a  character  of  the  form  "^5" which is an illegal
                        control specification.




D.1.10  INPUT Command

?MICIPS Prompt not string
                        The prompt message argument to the MIC INPUT  command
                        was  not  a  string  constant or a string variable or
                        null.

?MICEIP INPUT has excess arguments
                        The prompt message argument to the MIC INPUT  command
                        is not terminated by a break character.



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.
ERROR MESSAGES                                                       Page D-6
GENERAL SYNTAX ERRORS


?MICNMO Number missing between two operators
                        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.

?MICMLN "'<LENGTH>" parameter does not work, use $LENGTH only.

?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.
ERROR MESSAGES                                                       Page D-7
GENERAL SYNTAX ERRORS


?MICIAF Illegal argument format for system parameter
                        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 illegal

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



                                               INDEX




                        !(exclamation) . . . . .  9

                        % labels . . . . . . . .  10
                        %cerr  . . . . . . . . .  12
                        %err . . . . . . . . . .  12
                        %fin . . . . . . . . . .  11 to 12

                        *(asterisk)  . . . . . .  9

                        .(dot) . . . . . . . . .  9

                        :: (double colon)  . . .  10 to 11

                        ;(semi-colon)  . . . . .  9

                        =(equals)  . . . . . . .  9

                        ?  . . . . . . . . . . .  12, 23

                        Abort  . . . . . . . . .  29, 34
                        Abort command  . . . . .  29
                        Actions  . . . . . . . .  40
                        Alphabet . . . . . . . .  35
                        Ascii  . . . . . . . . .  36

                        Backto command . . . . .  11
                        Batch commands . . . . .  11
                        Break  . . . . . . . . .  34
                        Break command  . . . . .  29
                        Byte subscripting  . . .  17

                        Cancel   . . . . . . . .  34
                        Cancel command . . . . .  29
                        Ccl entry to mic . . . .  46
                        Cctrap . . . . . . . . .  40, 44
                        Chkpnt . . . . . . . . .  14
                        Column one.  . . . . . .  42
                        Column1. . . . . . . . .  42
                        Command file . . . . . .  7 to 8
                        Comments . . . . . . . .  9
                        Concatenation  . . . . .  16
                        Control  . . . . . . . .  42
                        Control a  . . . . . . .  23, 29
                        Control b  . . . . . . .  29
                        Control c  . . . . . . .  29
                        Control characters . . .  9, 42
                        Control commands . . . .  29
                        Control p  . . . . . . .  14, 23, 29
                        Cr . . . . . . . . . . .  36
                        Crlf . . . . . . . . . .  36

                        Date . . . . . . . . . .  31
                        Errchr . . . . . . . . .  31
                        Error  . . . . . . . . .  12, 34
                        Error processing . . . .  12
                        Events . . . . . . . . .  39
                        Exit command . . . . . .  30
                        Expression-string  . . .  16
                        Expressions-integer  . .  16

                        Finmatch . . . . . . . .  43

                        Gettab . . . . . . . . .  31
                        Gettab radix . . . . . .  32
                        Goto command . . . . . .  11

                        If . . . . . . . . . . .  13, 21
                        If command . . . . . . .  13, 21
                        If extensions  . . . . .  21
                        Interactions . . . . . .  23

                        Job  . . . . . . . . . .  31

                        Labelled lines . . . . .  10
                        Labels . . . . . . . . .  10 to 11
                        Lc . . . . . . . . . . .  44
                        Length . . . . . . . . .  31
                        Let command  . . . . . .  16, 36
                        Let extensions . . . . .  36
                        Line numbers . . . . . .  8

                        Mic abort  . . . . . . .  29
                        Mic cancel . . . . . . .  29
                        Mic display command  . .  24
                        Mic input  . . . . . . .  27
                        Mic response . . . . . .  24
                        Mic return . . . . . . .  30
                        Mic set  . . . . . . . .  42
                        Mic sleep  . . . . . . .  26
                        Mic type   . . . . . . .  26
                        Mic what   . . . . . . .  26
                        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
                        Miceip . . . . . . . . .  D-5
                        Micert . . . . . . . . .  D-6
                        Micgtr . . . . . . . . .  D-6
                        Miciaf . . . . . . . . .  D-7
                        Miciap . . . . . . . . .  D-6
                        Micias . . . . . . . . .  D-4
                        Micica . . . . . . . . .  D-5
                        Micicf . . . . . . . . .  D-7
                        Micilc . . . . . . . . .  D-3, D-5
                        Micilf . . . . . . . . .  D-3
INDEX                                                          Page Index-3



                        Micips . . . . . . . . .  D-5
                        Micler . . . . . . . . .  D-7
                        Micllp . . . . . . . . .  D-6
                        Miclrp . . . . . . . . .  D-6
                        Micmfn . . . . . . . . .  D-7
                        Micmln . . . . . . . . .  D-6
                        Micmnr   . . . . . . . .  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
                        Miscellaneous special parameters  35
                        Msglvl . . . . . . . . .  43
                        Multiple let statements   18
                        Multiple on commands.  .  40
                        Multiple set commands  .  45
                        Multiple statements on a line  48
                        Multiple whenever commands.  40

                        Noerror  . . . . . . . .  12, 34
                        Non procedural calls . .  39
                        Nooperator . . . . . . .  23, 34
                        Numeric  . . . . . . . .  35

                        Octal arguments to gettabs  33
                        Octal expressions  . . .  19
                        On command . . . . . . .  39
                        Operator . . . . . . . .  34
                        Operator     . . . . . .  23
                        Operator character . . .  23, 29
                        Operator command . . . .  13
                        Oprchr . . . . . . . . .  31
                        Outer processes  . . . .  19
INDEX                                                          Page Index-4



                        Parameter substitution .  9, 31, 43
                        Parameters . . . . . . .  43
                        Parameters in outer processes  19, 22
                        Path . . . . . . . . . .  31
                        Please command . . . . .  14
                        Ppn  . . . . . . . . . .  31
                        Proceed  . . . . . . . .  34
                        Proceed command  . . . .  14, 29
                        Programmer . . . . . . .  31
                        Project  . . . . . . . .  31
                        Protate  . . . . . . . .  35
                        Protection codes . . . .  14
                        Pshift . . . . . . . . .  35
                        Pthppn . . . . . . . . .  31

                        Requeue  . . . . . . . .  14
                        Response . . . . . . . .  24
                        Return . . . . . . . . .  34
                        Return command . . . . .  30
                        Revive . . . . . . . . .  34
                        Revive command . . . . .  14

                        Silence  . . . . . . . .  9, 34, 44
                        Silence (protection code)  14
                        Silence command  . . . .  14
                        Sleep  . . . . . . . . .  34
                        Sleep command  . . . . .  26
                        Special characters . . .  9, 43
                        Special parameters . . .  31
                        Special tests  . . . . .  A-1
                        Specials . . . . . . . .  43
                        String constants . . . .  35
                        String-comparisons . . .  21
                        Substitution of parameters in outer processes  A-6
                        System parameters  . . .  31

                        Time . . . . . . . . . .  31
                        Tmpcor . . . . . . . . .  46
                        Tmpfil . . . . . . . . .  46
                        Trace  . . . . . . . . .  44
                        Tty  . . . . . . . . . .  31

                        Whenever command . . . .  39

                        [abort on error] . . . .  12
                        [abort]  . . . . . . . .  29
                        [break]  . . . . . . . .  14, 23, 29
                        [cancel] . . . . . . . .  29
                        [proceed]  . . . . . . .  14, 23, 29

                        \ (backslash)  . . . . .  48
                        ^a . . . . . . . . . . .  23, 29
                        ^b . . . . . . . . . . .  29
                        ^c . . . . . . . . . . .  23, 29
                        ^p . . . . . . . . . . .  14, 23, 29