Trailing-Edge - PDP-10 Archives - walsh_goodStuff_1600 - cho/mic.hlp
There are 12 other files named mic.hlp in the archive. Click here to see a list.
                             MIC Help File


        1.0     SUMMARY  . . . . . . . . . . . . . . . . . . . . . . 1
        2.0     COMMAND FORMAT . . . . . . . . . . . . . . . . . . . 1
        2.1       @DO (/optional-switches) Command-file Parameters . 1
        2.2       @KMIC  . . . . . . . . . . . . . . . . . . . . . . 1
        2.3       @GOTO Label  . . . . . . . . . . . . . . . . . . . 1
        2.4       @BACKTO Label  . . . . . . . . . . . . . . . . . . 1
        2.5       @ERROR Ch  . . . . . . . . . . . . . . . . . . . . 1
        2.6       @NOERROR . . . . . . . . . . . . . . . . . . . . . 1
        2.7       @OPERATOR Ch . . . . . . . . . . . . . . . . . . . 1
        2.8       @NOOPERATOR  . . . . . . . . . . . . . . . . . . . 1
        2.9       @IF (ERROR) And @IF (NOERROR)  . . . . . . . . . . 1
        3.0     MIC COMMAND FILE FORMAT  . . . . . . . . . . . . . . 1
        3.1       Special Characters . . . . . . . . . . . . . . . . 1
        3.2       Control Characters . . . . . . . . . . . . . . . . 1
        3.3       Labels . . . . . . . . . . . . . . . . . . . . . . 1
        4.0     INTERACTING WITH MIC . . . . . . . . . . . . . . . . 1
        4.1       Suspending A MICRO . . . . . . . . . . . . . . . . 1
        4.2       Continuing A MICRO . . . . . . . . . . . . . . . . 1
        4.3       Aborting A MICRO . . . . . . . . . . . . . . . . . 1
        4.4       Single Stepping A MICRO. . . . . . . . . . . . . . 1
        5.0     INFORMATION, WARNING AND ERROR MESSAGES. . . . . . . 1
        5.1       Information, Warning And Error Messages From MIC.  1
        5.2       Information, Warning And Error Messages From EXEC. 1


MIC (Macro Interpreted Commands) provides  the  TOPS-20  user  with  a
method  of storing command files on the disk and having them performed
on his terminal.  It provides more capability than the  standard  TAKE
command, in that it can have user input as well as EXEC commands.

The format of the command file is similar to that of a  batch  control
file.   That  is  to  say  that  it uses the "@" character to indicate
command lines and "*" to indicate user input.  In addition it provides
a  means  of substituting parameters at "execution" time.  The command
file has parameter calls embedded within it and the actual values  are
supplied by the user when he invokes the macro.


2.1  @DO (/optional-switches) Command-file Parameters


/optional-switches are:

     1.  /SUPPRESS:YES - suppress the end of file message

     2.  /SUPPRESS:NO - does not suppress  the  end  of  file  message

     3.  /LABEL:label - start processing MIC file at label "label"

Command-file:  is the name of the MIC file containing  EXEC  and  user

Parameters:   is  a  list  of  parameters  separated  by  commas   and
terminated  by  a  carriage-return.   Commas  may  be  included  in  a
parameter by using the braces { and }, e.g.  {a,b}  is  one  parameter
with the value a,b.

MIC commands can be nested by simply including a "DO"  command  within
the  outer  macro.   Note:   the  nested  command  file  will  have  a
completely new set of parameters and will not have  direct  access  to
the previous set.  This means that any parameters of the outer command
file which need to be accessed by the inner  macro  will  have  to  be
passed as parameters in the "DO" command.

At the termination of a MIC macro (or the outer macro if  several  are
nested), MIC will print the message:

          [MICEMF - End of MIC File:  FILE.TYP.GEN]

where FILE.TYP.GEN is the filename used in the "DO" command.

This message can be suppressed by the /SUPPRESS:YES switch.

2.2  @KMIC

Kills MIC processing.  Closes all open MIC files  and  kills  the  MIC

2.3  @GOTO Label

Causes MIC to search for the label  "label"  and  continue  processing
from  that point.  MIC will only search forward from the current point
in the MIC file.  This command is usually  contained  within  the  MIC
file but may be typed by the user during a MIC "break".

2.4  @BACKTO Label

Causes MIC to search for the label "label" from the beginning  of  the
MIC file.  Otherwise acts the same as @GOTO.

2.5  @ERROR Ch

Causes MIC to watch for errors.  An  error  is  indicated  by  a  line
starting with either the character "ch" or a "?".  The default "ch" is
non is typed is "?".

What happens when an error occurs depends  on  the  next  monitor-mode
line  (i.e.  "@" line) in the MICRO.  If the next monitor-mode line is
a @IF command (see below), it is obeyed.  Otherwise, MIC searches  for
either  a  %ERR::   or  a  %FIN::   label  in  the MICRO and continues
executing from there.


Causes mic to stop looking for errors.  Any line starting with  a  "?"
is  not  taken  as  an  error.   This  is  the default when a MICRO is
started.  Note:  this is different from Batch where @ERROR ?   is  the


Causes MIC to treat any output line starting with "ch" to  be  treated
as  an  "operator"  line.  When the first occurance of "ch" is seen at
the start of an output line, MIC puts itself into "break"  state  (see
below).   The  user  may  now  type characters to EXEC or to a program
without having to worry about interference  from  MIC.   A  subsequent
line  having "ch" as its first character will automatically cancel the
"break".  This will repeat on the third and fourth occurances  and  so
on.  The default "ch" is none is supplied is "$".


This causes MIC to  stop  treating  any  character  as  an  "operator"
character, and is the default mode when a MICRO is started.

2.9  @IF (ERROR) And @IF (NOERROR)

These two commands are used to check whether an error has  occured  or
not.   An  error  occurs whenever an @ERROR command has been given and
either the special character or a "?" appears as the  first  character
of  an  output  line.  If the first monitor-mode command following the
error is an @IF command, it will be interpreted.

How the @IF command is interpreted is described below:

Statement       Error Condition True    Error Condition False
---------       ----- --------- ----    ----- --------- -----

@IF (ERROR)     Remainder of line will  Remainder of line will
                be executed             not be executed

@IF (NOERROR)   Remainder of line will  Remainder of line will
                not be executed         be executed

The execution of the remainder of the line will depend on what that is
contained  there.  Effectively, the first non-space, non-tab character
following the ")" is considered to be in the first column of the input
line, so the characters "@", "*", "=", "!", and ";" have their special
effect.  Typically the remainder of the line  will  contain  either  a
@GOTO, a @BACKTO or nothing (to simply ignore the condition).


3.1  Special Characters

The MIC command file (or MICRO) is similar to a batch .CTL file.   The
special  characters  have  the same meaning as they do in a batch .CTL
file.  Thus  the  following  characters  have  the  following  special
meaning  when  they  appear  in  the first column of the input file or
immediately after a label:

     1.  @      This  indicates  monitor  mode.   MIC  will  force   a
         control-C  if  necessary  to ensure that the remainder of the
         line is "typed" to EXEC.

     2.  *      This indicates the rest of the line is to be typed  to
         a user program.  MIC will NOT type a CONTINUE if currently in
         monitor (or EXEC) mode.

     3.  =      This suppresses the <CR><LF> at the end of the line.

     4.  !      This indicates a comment.  The rest of the  line  will
         be  displayed  to the terminal but will not be "typed" to any
         program or to the EXEC.

     5.  ;      This is an alternative comment.  It acts the  same  as
         the !.

If the character is repeated, it has acts as if only one character had
appeared;   thus  @@  will  cause  a  single @ to be "typed" to a user
program or to the EXEC.

3.2  Control Characters

The following characters have special meaning wherever they appear  in
the MICRO:

     1.  ^      This character when followed by either  an  alphabetic
         character  or  one of the special characters "\", "[", "]" or
         "_" causes the appropriate control character to be generated.
         If  followed  by  a  single  "^"  it cause the up-arrow to be
         generated.  If followed by "^^" it causes a control-^  to  be
         generated.   If  it  is followed by any other character it is
         treated as a normal character.

     2.  '      This character signifies parameter  substitution.   If
         it  is  followed  by  an  alphabetic  character it causes the
         appropriate parameter from the original @DO command  line  to
         be  substituted,  where  'A  is  the first parameter, 'B, the
         second, and so on.  If the "'" is followed by a  second  "'",
         then  a  single "'" is typed.  If it is followed by any other
         character, it is treated as a normal character.

3.3  Labels

Labels may appear on any line of a MICRO.  They have the format:


where label may consist of any combination of alphanumeric  characters
or   the   "%"  character  and  only  the  first  six  characters  are
significant.  "Text" is any text to be typed to a user program  or  to
the EXEC.  The first character of "text" is considered to be in column
one so the characters "@", "*" "=", "!" and  ";"  have  their  special
meanings.   If  there is no text on the line a single ":" will suffice
to terminate the label.  Note:  if there are two colons (":")  but  no
text, a blank line will be typed to the user program or EXEC.


It is possible to interact with MIC in a limited fashion.  A MIC macro
can be suspended, continued or aborted.

4.1  Suspending A MICRO

A macro can be suspended by typing a Control-B (^B).  A Control-B will
suspend  the current MIC macro (and any outer macros) and place MIC in
a "break" state.  I.e.  no more commands from the control file will be
"typed".   MIC  will  indicate that it will no longer type by printing
the message:

          [MICBRK - MIC is breaking]

on the users terminal.  During a "break"  state,  the  user  can  type
commands  and/or  user  input without having to worry about MIC typing
anything.  Note:  if MIC is not in a "break" state, the user can still
type  characters ahead but input from the user and input from MIC will
be mixed in an undefined way if the  terminal  is  in  an  input  wait

4.2  Continuing A MICRO

A suspended MIC macro can be continued by typing a Control-P (^P).  To
indicate that MIC will now type, it prints the message:

          [MICPRC - MIC is proceeding]

on the users terminal and will continue from the point  in  the  macro
file  at  which  it was suspended (unless the user has given a GOTO or
BACKTO command).

4.3  Aborting A MICRO

A MIC macro can be aborted at any time by the use of a Control-A (^A).
On intercepting this control character MIC will display the message:

          [MICABT - MIC is aborting]

on the user's terminal and will close the current file without  typing
any  more.   Note:   a Control-A will only terminate the current macro
file.  It will not affect any outer macro  in  process  so  if  it  is
desired  to  abort all macros in progress it would be necessary either
to use a Control-A to abort each level or, alternatively, to  use  the
"KMIC" command to kill MIC completely.

Note:  If MIC is in a "break" state when a  Control-A  is  typed,  the
next  outer macro will be automatically placed in the "break" state as

4.4  Single Stepping A MICRO.

During a "break" state, it is possible to execute  single  lines  from
the MICRO by typing a Control-X (^X).  Each time a Control-X is typed,
the next line from the MICRO will be executed.


5.1  Information, Warning And Error Messages From MIC.

There are a few messages which may  be  output  by  MIC  (rather  than
EXEC).  These are documented below:

     1.  [MICFES - %FIN::  Encountered while Searching for %ERR::]

         This message will be printed if an error  occured,  the  next
         monitor-mode  line  was  not an @IF command and a %FIN::  was
         encounter before a %ERR::.  MICRO execution will proceed from
         the %FIN::  line.

     2.  %MICCGP - Couldn't get a PTY

         This error message will appear if either  a  @ERROR ch  or  a
         @OPERATOR ch  command  has  been  given, and MIC is unable to
         find a PTY to log output in order to check for  thhe  special
         characters on output.

         The MICRO will  continue  to  be  executed,  but  errors  and
         operator responses will not be trapped.

     3.  %MICICL - Illegal character in label - Command ignored

         This message will appear if an illegal character appears in a
         @GOTO  or a @BACKTO command interpreted by MIC (as opposed to
         EXEC).  The command will be ignored.

     4.  %MICUIC - Unimplemented Command:  "error line"

         This message will be printed if a  Batch  command  which  MIC
         cannot   implement  is  found  in  the  MICRO.   The  current
         unimplemented Batch commands are:  CHKPNT, MESSAGE,  REQUEUE,
         REVIVE and SILENCE.

         Note:  the Batch command @PLEASE is  implemented  by  running
         the PLEASE program.

     5.  ?MICPND - Parameters Nested too Deeply - Aborting

         This error message means that a  parameter  call  has  nested
         (perhaps  by  calling  itself)  beyond  the  limit  allowed -
         currently 40 deep.

     6.  ?MICFEF - Found End of File While Searching For "label"

         This error message is given if the label given in a  GOTO  or
         BACKTO command cannot be found in the file.

     7.  ?MICFEF - Found End of File while searching  for  %ERR::   or

         This variation on the above message is given  when  an  error
         line has been output, the next monitor-mode command was not a
         @If command and MIC cannot find either a %ERR::  or a  %FIN::
         label in the MICRO.

     8.  ?MICIIC - Invalid IF Condition:  "error line"

         This error message will be  printed  if  an  @IF  command  is
         neither  a  @IF (ERROR)  or  a @IF (NOERROR) command.  "Error
         line" is the line in error.

     9.  ?MICJSE - JSYS Error:

         This is a general trap for unexpected  errors.   It  will  be
         followed  by  some diagnostic from the monitor indicating the
         cause of the error.

5.2  Information, Warning And Error Messages From EXEC.

There are some messages which are output by  EXEC  when  handling  MIC

     1.  ?MIC not found

         This error indicates that  the  file  MIC.EXE  could  not  be
         found.  EXEC will look for the file on SYS:, and if not found
         there on the users DSK:.  If it cannot  be  found  on  either
         area, this error message will occur.

     2.  ?MIC Macros nested too deeply

         This error will occur if  a  user  has  tried  to  nest  "DO"
         commands  beyond the limit that EXEC permits.  Currently this
         limit is approximately fourty.

     3.  ?MIC is not running

         This error message will be printed if any command other  than
         a @DO command is typed when MIC is not active for the user.

     4.  ?Label is more than 6 characters

         This will be output if a label  supplied  an  a  @GOTO  or  a
         @BACKTO  executed  by the EXEC (rather than MIC) is more than
         six characters in length.

         Note:  this will only occur when a @GOTO or a @BACKTO command
         is  typed by the user, for example during a MIC "break".  MIC
         normally interpretes such commands when they are  encountered
         in a MICRO.

     5.  ?Only Single Character Permitted

         This message will be given of  more  than  one  character  is
         supplied on a @ERROR or a @OPERATOR command executed by EXEC.

         Note:  As in the previous message, this will not occur if MIC
         interpretes the command, but only if it is typed by the user.

[End of MIC.HLP]