Trailing-Edge
-
PDP-10 Archives
-
bb-k345a-sb
-
micref.mem
There are 4 other files named micref.mem in the archive. Click here to see a list.
HATFIELD POLYTECHNIC COMPUTER CENTRE
MIC
Macro Interpreted Commands
Reference Manual - Edition 7.1
June 1980
This guide reflects features of version 11(1066) of MIC.
Release 7.
Edited and revised by J.D. Service, University of York.
This manual was formerly called the MIC `User's Guide' but has been renamed
to avoid confusion with the University of York User Guides.
MIC - Macro Interpreted Commands Page 1
Hatfield Polytechnic Computer Centre - December 1979
Mic was originally written at Hatfield Polytechnic Computer Centre.
Copying of this document is allowed.
Hatfield Polytechnic Computer Centre.
The Hatfield Polytechnic
P.O. Box 109
Hatfield
Hertfordshire AL10 9AB
England
Telephone Hatfield 68100
Telex 262413
This edition was edited and enhanced at the University of York.
Department of Computer Science
University of York
Heslington
YORK
North Yorkshire YO1 5DD
England
Telephone York 59861
Telex 57933
MIC - Macro Interpreted Commands Page 2
Hatfield Polytechnic Computer Centre - December 1979
CONTENTS
1. Introduction.
2. Introducing a MIC Command.
3. Constructing MIC Macro Command Files.
3.1 Special Characters.
3.2 Labelled Lines.
3.3 Parameter Substitution.
4. Commands derived from DECsystem-10
Multi-programming Batch.
4.1 GOTO/BACKTO Command.
4.2 ERROR/NOERROR Command.
4.3 IF Command.
4.4 OPERATOR/NOOPERATOR Command.
4.5 SILENCE/REVIVE Command.
4.6 PLEASE Command.
5. LET Command.
5.1 Byte Subscripting for String
Expressions.
5.2 Multiple LET Statements.
5.3 Parameters in Outer Processes.
5.4 Octal Expressions.
6. Extensions to the IF Command.
6.1 Parameters in Outer Processes.
6.2 Special Tests
7. Simple Interaction with MIC.
7.1 OPERATOR/NOOPERATOR command.
7.2 MIC RESPONSE Command.
7.3 MIC DISPLAY Command.
7.4 MIC TYPE Command.
7.5 MIC WHAT Command.
7.6 MIC SLEEP Command.
8. MIC Control Commands.
8.1 MIC ABORT Command
8.2 MIC CANCEL Command
8.3 MIC BREAK Command.
8.4 MIC PROCEED Command.
8.5 MIC EXIT Command.
8.6 MIC RETURN Command.
MIC - Macro Interpreted Commands Page 3
Hatfield Polytechnic Computer Centre - December 1979
9. Special Parameters.
9.1 System Parameters.
9.1.1 Parameter Substitution.
9.1.2 GETTABS.
9.1.3 Octal Arguments to GETTABS.
9.2 Action Parameters.
10. LET and IF Extensions.
10.1 Use of System Parameters.
10.2 Use of System Parameters in arithmetic
assignments.
10.3 Use of System Parameters in conditional
statements.
11. Non Procedural calls to MIC.
(WHENEVER/ON Command.)
11.1 Multiple WHENEVER/ON commands.
12. MIC SET Command.
12.1 COLUMN1.
12.2 CONTROL.
12.3 PARAMETERS.
12.4 SPECIALS.
12.5 FINMATCH.
12.6 MSGLVL.
12.7 LC.
12.8 Multiple SET Commands.
13. CCL Entry to MIC.
14. Multiple Statement Input Lines.
15. Immediate Mode Execution of MIC Commands.
APPENDIX A. Examples of MIC commands.
APPENDIX B. Command Summary.
APPENDIX C. Syntax of Integer and String Expressions.
APPENDIX D. Error Messages.
INDEX
MIC - Macro Interpreted Commands Page 4
Hatfield Polytechnic Computer Centre - December 1979
MACRO INTERPRETED COMMANDS
1) Introduction
Standard DECsystem 10 software provides a powerful but complex command
interface. Novice terminal users lose much time through an unforgiving
command decoder and the expert resents the verbosity of the average command
string. Although the concise command language (C.C.L) does allow many
simplifications to system commands, new commands may not readily be
defined.
With MIC a user may create a new command simply by writing any desired
sequence of monitor and user mode commands in a disk file. To cause the
command to be obeyed the user types to monitor the filename preceded by the
"DO" command.
e.g.
If the file DTASAV.MIC contains the text-
.R PIP
*DTAX:/X/B=FRED.TXT
*^C
.DIR DTAX:
The user could obey the command file thus-
.DO DTASAV
.R PIP
*DTAX:/X/B=FRED.TXT
*^C
.DIR DTAX:
In this sequence of commands only the first line the "MIC command" was
typed by the user. If the user often required this sequence of commands
the command macro DTASAV.MIC would save a considerable amount of typing.
To allow more generalised commands to be constructed a MIC command may have
parameters:
The command macro DTASAV.MIC would be made more useful if the file
contained the text-
.R PIP
*DTA'A:/X/B='B
*^C
.DIR DTA'A:
MIC - Macro Interpreted Commands Page 5
Hatfield Polytechnic Computer Centre - December 1979
The rules for parameter substitution are simple. When 'A is encountered in
the command file the first parameter is substituted. The first parameter
in the macro DTASAV is the dectape number, the second parameter is the file
name to be transferred. Up to 26 user parameters are allowed ('A to 'Z).
To write the file PETE.MAC to DTA3 the command would be-
.DO DTASAV 3,PETE.MAC
The parameters to a MIC command are separated by commas. (See also section
2.)
The command file may be of any size and is typed by MIC line by line
exactly as if the user had typed it. MIC will only type a line when the
job requires input. To stop MIC typein the user must type control C.
Using the above information a user can easily make his own commands.
Additional facilities in MIC are provided to allow-
1. Parameters to be manipulated during the processing of a MIC command.
2. Conditional branching within the command macro.
3. Detecting and processing error conditions
Note: MIC command files may themselves contain MIC commands. In this case
the "nested processes" each have their own parameters but inner processes
may access the parameters in an outer process. This is described later.
MIC - Macro Interpreted Commands Page 6
Hatfield Polytechnic Computer Centre - December 1979
2) Introducing a MIC command
To cause MIC macro command file to be obeyed a monitor command of the
following form is used-
.DO <Standard device-file specification> <parameter list>
The first argument to the "DO" command specifies the command file to be
obeyed, in the form DEV:FILENAME.EXT[PPN]. If the user does not specify
where the command file is held, his own area is searched first followed by
the ersatz device MIC (1). The default extension for the MACRO file is
"MIC". The full default filespec is DSK:MIC.MIC in the users own area.
Sub-file directories are supported by MIC.
The parameter list follows after a separator character (space or tab).
Parameters are separated by commas. All brackets in the parameter list
must match. A comma between matched brackets does not separate parameters.
Outer matching < and > brackets are removed before the parameter is
substituted.
e.g.
.DO C[105,13] TWO
MIC macro file is C.MIC in area [105,13].
'A would substitute as TWO.
.DO C A[105,13],3
MIC macro file is "C.MIC" on the user's own area or "MIC".
'A would substitute as A[105,13].
'B would substitute as 3.
NOTE
The original versions of MIC used the "/"
command, not the "DO" command, and this is
still used on some sites, and may be referred
to in some documentation.
(1) The exact order of search can be varied by the system administrator but
by default is:-
DSK:FILE.MIC [PROJECT,PROGRAMMER]
DSK:FILE.MIC [PROJECT,PROGRAMMER,MIC]
DSK:FILE.MIC [PROJECT,1]
MIC:FILE.MIC
MIC - Macro Interpreted Commands Page 7
Hatfield Polytechnic Computer Centre - December 1979
3). Constructing MIC macro command files
A MIC file may contain any ASCII text with or without line numbers. This
text is taken line-by-line and typed on the user's terminal as though he
had typed it. To allow the user to write macros which are easy to read,
leading spaces and tabs are ignored. Thus the two lines:-
*/X/B=*.SAV
and
*/X/B=*.SAV
are equivalent.
Note:-
1) Existing "MULTIPROGRAMMING BATCH" control files may be used as MIC
command files.
2) On labelled lines any spaces after the label terminator (the "::") are
treated in the same way.
3) The leading space feature is not compatible with batch control files.
MIC - Macro Interpreted Commands Page 8
Hatfield Polytechnic Computer Centre - December 1979
3.1) Special Characters.
As in batch control files some characters are treated specially as the file
is processed.
Character Position Meaning
. At start of line Remaining text on this line
may only be typed to monitor
* At start of line Remaining text on this line may
only be typed as program input.
= At start of line Suppress carriage return at the
end of this line. useful for
command macros containing DDT
and TECO commands.
! or ; At start of line Treat line as a comment. Line is
displayed on the user Teletype
but not typed to the job.
^X Any Convert character "X" to control
X before it is typed.
'A Any Substitute parameter A.
If a special character is to be treated literally it must be repeated.
e.g.
''A will be typed as 'A and not cause the substitution of parameter A.
Note:-
1) "!" overrides the silence condition, but the normal comment character
";" does not.
2) "^C" or "^A" do not have the same effect when typed by MIC, as they
would have if the user had typed them, in that they do not "CANCEL" or
"ABORT" the macro.
3) Lower case letters are converted to upper case in the "^X" and
"'A"cases.
MIC - Macro Interpreted Commands Page 9
Hatfield Polytechnic Computer Centre - December 1979
3.2) Labelled Lines.
Any line in a command file may be labelled. A label may be of any length,
but only the first six characters are significant. Labels may be
constructed of any alphanumeric characters terminated by a double colon.
Labels can only occur at the start of a line.
e.g.
FRED::.DIR
THISISALABEL:: .R PIP
ANOTHER1::*/X/B=JIM.ALG
Note:-
1) Labels which begin with a "%" character have the same special meanings
as in "Multi Programming Batch", see 4.2.1 .
2) Labels are always in upper case.
3.3) Parameter Substitution
The construction 'X where X is an alphabetic character, causes the contents
of the appropriate parameter to be substituted.
Nested parameter substitutions are allowed,
e.g.
'X may contain 'Y and so on to a maximum level of 8.
MIC - Macro Interpreted Commands Page 10
Hatfield Polytechnic Computer Centre - December 1979
4). Commands derived from DECsystem-10 multi-program batch
4.1) GOTO/BACKTO command
As with batch control files a MIC command file may have some lines
labelled. Using the MIC monitor style commands GOTO and BACKTO the
sequential processing of the MIC command may be interrupted. The argument
to the GOTO/BACKTO command is an identifier of one to six alphanumeric
characters which is used to indicate the label in the MIC command file
where processing is to resume.
The appropriate labels in the command file are delimited by :: and must be
at the start of a line.
e.g.
FRED::.DIRECT
Note:-
1) That, if, when MIC is searching a command file for the first occurrence
of the required label, it comes across a "%FIN" label, this will
satisfy the search and processing of the command file will be resumed
at that point.
2) As GOTO/BACKTO commands are interpreted by the MIC program they do not
destroy a user's core image.
3) The formats
.GO TO <label>
and
.BACK TO <label>
may be used, but these do destroy a user's core image.
MIC - Macro Interpreted Commands Page 11
Hatfield Polytechnic Computer Centre - December 1979
4.2) ERROR/NOERROR command
As the MIC command file is processed an error may occur. Often a message
is displayed on the user Teletype preceded by a question mark (?)
Character. By using the error command the user may specify which character
is to be treated as denoting an error condition when it is displayed at the
start of a line.
The argument to the error command is any single ASCII printing character.
e.g.
.ERROR %
.ERROR ?
If no argument is supplied to an ".ERROR" command a question mark (?) is
assumed.
The command NOERROR is used to turn off error checking.
4.2.1) Error Processing
Error processing in MIC is similar to that of MULTIPROGRAMMING BATCH. If
an error is detected MIC will check if the next monitor command is an "IF
(ERROR)" or "IF (NOERROR)" command. If this is so processing will continue
there, otherwise the command file is searched for a
%CERR or a %FIN if the error ocurred in a system program,
or
%ERR or a %FIN if the error ocurred in a user program, before typein is
resumed. If this fails MIC will display on the user's Teletype
[ABORT ON ERROR]
and stop processing the MIC command file.
Note:-
The WHENEVER/ON command may be used to change this default processing (see
section 11.).
MIC - Macro Interpreted Commands Page 12
Hatfield Polytechnic Computer Centre - December 1979
4.3) IF command
The IF command is used to conditionally process a monitor command.
e.g.
.IF (ERROR) .GOTO EER5
.IF (NOERROR) .DO UPDATE 13
The monitor command is obeyed if the specified condition is true. The
alternatives MIC provides for the ERROR/NOERROR conditional are discussed
later.
A batch control file called JOB1.CTL could be executed at the users
Teletype using the command-
.DO JOB1.CTL
Note:-
1) Users who wish to use MIC in this way should note that the default
error status when a MIC command is executed at the Teletype is
"NOERROR".
2) The Commands "IF (ERROR)" and "IF (NOERROR)" do not destroy the user's
core image.
3) "IF (ERROR)" "IF (NOERROR)" are compatible with MPB.
4.4) OPERATOR Command.
The Batch command "OPERATOR" is also used in MIC, its operation is
described in section 7.1.
MIC - Macro Interpreted Commands Page 13
Hatfield Polytechnic Computer Centre - December 1979
4.5) SILENCE/REVIVE Command
These commands are used to suppress typeout on the user Teletype throughout
an uninteresting sequence of commands.
Another monitor level command may be placed on the same line as a SILENCE
or REVIVE command (see section 14).
e.g.
.REVIVE .DIR
This has the useful effect of reviving the tty output after the "DIR"
command has been typed. Thus the user sees only the output from the
command not the command itself.
N.B.
A whole command file may be automatically silenced if the file is given the
protection code <2??>. This may be overridden in the command file by the
".REVIVE" command.
4.6) PLEASE command
Unlike DECsystem-10 batch, this command is used to communicate with the
initiator of the MIC command. The argument is displayed on the user's
Teletype regardless of the SILENCE/REVIVE switch.
If the please command is terminated by an altmode, MIC typein proceeds
normally, otherwise typein is suspended by a [BREAK] until the user types
^P or a MIC PROCEED command to proceed and [PROCEED] is displayed.
e.g.
.PLEASE LOAD DECTAPE 345
.PLEASE THANKS$
::::
In fact all batch pseudo-commands are legal monitor commands when obeyed
from a MIC command file. MIC extends the batch command format (see section
6) and provides several new commands. Users unfamiliar with DECsystem-10
batch facilities should read DECsystem-10 BEGINNERS GUIDE TO MULTI-PROGRAM
BATCH for a fuller description of the batch comands.
MIC - Macro Interpreted Commands Page 14
Hatfield Polytechnic Computer Centre - December 1979
5). LET command
The general form of the MIC monitor command "LET" is-
.LET <parameter name>=<expression>
Decimal, Integer, Octal or string expressions may be used. Users
parameters to MIC command macro files are held within MIC as ASCII strings.
During the execution of a MIC command macro the LET monitor command may be
used to change any of the parameters (A thro' Z). e.g.
.LET C="THIS IS THE NEW PARAMETER C"
After this command 'C in the MIC command file would cause the substitution
of the text-
THIS IS THE NEW PARAMETER C
In fact "THIS IS THE NEW PARAMETER C" is the simplest form of a string
expression. A more complicated command sequence could be-
.DO TEST FRED,BAK
.LET Z=$A+"."+$B+"[105,113]"
Dollar A ($A) is used as a reference to the string parameter A. Plus (+)
is a simple concatenation operator. After the let command the parameter z
would substitute as the text-
FRED.BAK[105,113]
Note:-
In LET statements which include a carriage return/line feed within the
string quotes MIC will display a "--" at the start of the new line.
Simple integer expressions are allowed in the LET command-
e.g.
.LET B=3+C*3^D-4/(A+B)
In this example A B and C are used as references to the value of the
parameters when read as integers. If any referenced parameter may not be
read as an integer an error will result. The operators + * / - ^ have the
usual meaning and precedence. Round brackets may be used to alter the
usual precedence.
MIC - Macro Interpreted Commands Page 15
Hatfield Polytechnic Computer Centre - December 1979
5.1) Byte subscripting for string expressions
Often in the LET command it is required to construct new parameters. The
simple string expression has been extended to provide powerful character
subscripting facilities.
The format for a simple subscripted string expression is-
$A.[<First subscript>,<second subscript>]
Here A may be A-Z. The first subscript is used to specify the first
parameter in character <A> to be used in the subscripted string. The
second subscript specifies the length of the constructed string. Consider
parameter <A> to be a string numbered as follows-
1 2 3 4
---------------------------------
| F | I | R | S | T
----------------------------------
-n -n+1 -n+2 ...
null
n-2 n-1 n char
---------------------------------
L | A | S | T | |
-------------------------------
-4 -3 -2 -1
FIG 1 Character string N bytes long
If the second subscript is omitted the length of the constructed string
defaults to one character.
MIC - Macro Interpreted Commands Page 16
Hatfield Polytechnic Computer Centre - December 1979
e.g.
If the parameter A contained the text ABCDEF
Command Result after command
.LET B=$A.[1] A
.LET B=$A.[2] B
.LET B=$A.[-1] F
.LET B=$A.[99] <null>
If the first subscript is out of range a null string is constructed.
Extending the previous example for two subscripts
.LET B=$A.[1,2] AB
.LET B=$A.[3,2] CD
Subscripts themselves may be string expressions-
.LET B=$A.["AB","F"] CDE
This construction means copy the string in parameter A between the text AB
and F to parameter B.
Repeated subscripts are allowed-
.LET B="DSK:FILE.EXT[105,113]"
.LET B=$B.[":","."].[,"["] FILE
This construction means truncate the object string in parameter B after the
character ":" at the character "." or the character "[".
5.2) Multiple LET Statements.
Several LET assignments may follow the one "LET" statement by terminating
every assignment except the last, by a comma.
e.g.
.LET A=1+2,C=$B.[1,2],D=C+"ABCDE"
MIC - Macro Interpreted Commands Page 17
Hatfield Polytechnic Computer Centre - December 1979
5.3) Parameters in Outer Processes.
Parameters in an outer MIC process may be referenced in the inner process
by following the parameter by a digit corresponding to the process level -
the current process is regarded as being level 0, the first surrounding
process is level 1 and so on.
Thus:-
.LET B=C1
sets B equal to the contents of the parameter C of the first enclosing
process.
5.4) Octal Expressions.
The "LET" command may also be used to manipulate octal values. An Octal
number is always preceeded by a "%" sign.
e.g.
.LET A=%11
will assign the value 9 (decimal) to parameter A. Similarly,
.LET C=%13+%17
would store 26 (decimal) in parameter C. Also the format
.LET %A=12
will store 14 (octal) in parameter A and
.LET %A=%A+1
will then store 15 (octal) in parameter A.
NOTE
As MIC stores all variables as typeless
strings it is up to the user to ensure that
he puts "%" signs where appropriate.
MIC - Macro Interpreted Commands Page 18
Hatfield Polytechnic Computer Centre - December 1979
Parameters may also be regarded as storing a number in octal by preceeding
the parameter name by a "%" sign.
e.g.
.LET A="12"
.LET B=%A
will store 10 (decimal) in parameter B.
Octal and Integer values may occur together in the same expression.
e.g.
.LET A=3+%11
would give the value 12 (decimal) in parameter A.
In order to make the manipulation of octal quantities more meaningful two
extra operators are available:-
"&" FOR AND
"!" for OR
which may be used with both octal and integer values
e.g.
.LET A=%3&%5 1
.LET A=3!5 7
.LET A=%11+7!%11 24 (DECIMAL)
Note that "&" and "!" have the same operator precedence as "*" and "/".
MIC - Macro Interpreted Commands Page 19
Hatfield Polytechnic Computer Centre - December 1979
6) Extensions to the IF command
Using the LET command complicated MIC command parameters may be broken
down. The conditional expression in the MIC IF command may be used to make
more generalised comparisons. Using relational operators strings or
integers may be compared.
Relational operator meaning
> Greater than
>= Greater than or equal
= Equal
# Not equal
<= Less than or equal
< Less than
.AND. AND (result non-zero implies TRUE)
.OR. OR (result non-zero implies TRUE)
String comparison occurs from left to right. Corresponding characters are
extracted from the constructed strings and if they are not the same or
either string is exhausted, the result is FALSE. The relational operator
is applied to the two characters using their ASCII value. String
expressions may not be compared with arithmetic, and the ".AND." and ".OR."
relational operators may not be used with strings.
A conditional expression containing a syntax error has the value false.
If the error trapping feature has been enabled using the ERROR command the
ERROR and NOERROR conditional can be used to alter command processing
appropriately.
If the conditional expression is true MIC will pass characters after the
first character "." on the right of the conditional to the monitor. If the
conditional is false, remaining commands on the IF line are ignored.
e.g.
.IF (A>B) .GOTO LABEL
.IF ($A="TRUE") .BACKTO TRUE
.IF (ERROR) .GOTO FIX
.IF (A.AND.%B) .GOTO FRED
N.B. In the first example parameters A and B must contain text which may
be read as an integer. $A is used to reference the contents of parameter A
as a string.
MIC - Macro Interpreted Commands Page 20
Hatfield Polytechnic Computer Centre - December 1979
NOTE
By default lower case letters are not
considered to be the same as upper case
during string comparisons, though this may be
changed by use of the "MIC SET NO LC"
command. See section 12.7.
6.1) Parameters in Outer Processes.
Parameters in outer processes may be referred to in "IF" statements by the
method described in section 5.3 .
N.B: Unlike the "IF (ERROR)" and "IF (NOERROR)" the "IF" extensions
actually run MIC and thus destroy the users core image.
6.2) Special Tests
Some special tests are built into MIC:-
.IF (COJOB)
is true if this macro is running as a COJOB,
.IF (SUBJOB)
is true if this macro is running under OPSER,
.IF (BATCH)
is true is this macro is running under BATCH,
.IF (TERMINAL)
is true if this macro is running on a terminal.
MIC - Macro Interpreted Commands Page 21
Hatfield Polytechnic Computer Centre - December 1979
7) Simple Interaction with MIC.
A MIC command is obeyed as if the the user had typed the same text on the
Teletype-"type ahead" is not allowed. Some characters have a special
meaning if typed by the user as the MIC command is obeyed.
As MIC commands may be nested, control A is used to abort the current MIC
process and return to the level above. Control C will cancel all MIC
processes the user has in progress. An appropriate message is displayed on
the Teletype.
To allow limited user intervention control B will suspend MIC typein and
display [BREAK]. The MIC process may be continued by the user typing a
PROCEED command or a control P. The message [PROCEED] will then be
displayed.
Note that while a process is suspended a user may type MIC commands on the
teletype as well as any monitor commands. This implies that the MIC
control functions have their usual effect, and, for example, using a
control C to exit from "PIP" will cancel the suspended MIC process.
7.1) OPERATOR/NOOPERATOR commands.
Similar to the ERROR command the OPERATOR command takes as its argument one
ASCII printing character to be treated as introducing a line requiring user
attention. If the operator character is seen output in column 1, MIC will
suspend typein and display [BREAK]. The user may supply typein as required
and type control P (PROCEED) to continue processing the command file.
During a BREAK the operator character may be output again in column one to
PROCEED automatically, and [PROCEED] will be displayed.
e.g.
.OPERATOR N
.RUN TEST
NOW TYPE IN YOUR NAME = [BREAK]CYRIL
NICE ONE CYRIL
.[PROCEED]GOTO IT
The operator features are only available after an OPERATOR command. The
default character to the OPERATOR command is "?".
MIC - Macro Interpreted Commands Page 22
Hatfield Polytechnic Computer Centre - December 1979
7.2) MIC RESPONSE Command
Often it is required to inspect text displayed by a program particularly
when it denotes an error. The MIC response command allows characters
displayed after an error character in column one to be placed in a named
parameter. The format for a MIC response command is-
.MIC RESPONSE <parameter name>(<number of characters required>)
e.g.
MIC RESPONSE A(21)
If the error feature has been enabled up to 79 characters following the
error character will be placed in the named parameter. The command is used
to reserve space for the response and the parameter is filled with spaces.
When an error occurs the text on the error line is copied character by
character until a null character is encountered in the reserved space or in
the error text. Any remaining space is removed from the named parameter.
MIC - Macro Interpreted Commands Page 23
Hatfield Polytechnic Computer Centre - December 1979
7.3) MIC DISPLAY Command.
This command is used to output the contents of a user parameter or
parameters on the user's terminal.
e.g.
.LET A="HELLO FRED"
.MIC DISPLAY A
HELLO FRED
.
This output overrides any silence condition which has been set up, and is
equivalent to
!'A
with the notable difference that it destroys the user's core image.
Note:
1) This command is useful in immediate mode - see section 15 - and when
used in WHENEVER/ON commands - see section 11. Note that in this case
they do not destroy the user's core image.
2) Multiple parameters may be DISPLAYed by separating each by a comma
e.g.
.LET A="FIRST"
.LET B="-AND-"
.LET C="SECOND"
.MIC DISPLAY A,B,C
FIRST-AND-SECOND
.
3) String constants may also be displayed by enclosing them in (") quotes
.MIC DISPLAY "THIS IS A MESSAGE"
THIS IS A MESSAGE
4) System parameters may be displayed in a similar fashion to user
parameters
.MIC DISPLAY '<system-parameter> or .MIC DISPLAY system-parameter
See section 9.2 for further details of system parameters.
5) If an up-arrow "^" occurs when a string parameter is being displayed
the next character in the string will be converted into a control
character in the usual way.
MIC - Macro Interpreted Commands Page 24
Hatfield Polytechnic Computer Centre - December 1979
7.4) MIC TYPE Command.
The MIC TYPE command has a similar format to the MIC DISPLAY command and
types the contents of a user parameter as though the user had typed them
e.g.
.LET A="DIR
--"
.MIC TYPE A
DIR
.
%DIRECTORY IS EMPTY
The comments made for the MIC DISPLAY command also apply to the MIC TYPE
command.
7.5) MIC WHAT Command.
The MIC WHAT command is used to output a brief status report on the user's
currently active macro.
e.g.
.MIC WHAT
ACTIVE [100,100] 53 B2 A=FRED,B=6,C=JIM2
[MIC WHAT]
where:-
ACTIVE - is the current state of the macro.
53 - is the user's line number.
B2 - is the name of the user's macro.
A= etc. - are the contents of the user's parameters.
[MIC WHAT] - is the last line typed by MIC on the user's
behalf.
7.6) MIC SLEEP Command.
The MIC command is used to cause MIC to want a certain number of seconds
before typing the next command.
e.g.
MIC SLEEP n
where n is the number of seconds to wait.
MIC - Macro Interpreted Commands Page 25
Hatfield Polytechnic Computer Centre - December 1979
8). MIC control Commands
8.1) MIC ABORT Command
Format
.MIC ABORT
MIC aborts current process as if the user had typed control A
and the message [ABORT] is displayed.
8.2) MIC CANCEL command
Format
.MIC CANCEL
MIC cancels all pending MIC commands as if control C was typed
and the message [CANCEL] is displayed.
MIC - Macro Interpreted Commands Page 26
Hatfield Polytechnic Computer Centre - December 1979
8.3) MIC BREAK command
Format
.MIC BREAK
MIC suspends typein until -
-operator character displayed
-control P typed
-MIC PROCEED command
and the message [BREAK] is displayed.
This command has the same effect as the user typing control B.
8.4) MIC PROCEED Command
Format
.MIC PROCEED
MIC resumes typein if a process has been suspended by a [BREAK],
and the message [PROCEED] is displayed.
The user typing control P has the same effect.
8.5). MIC EXIT Command
Format
.MIC EXIT
MIC cancels but no message is displayed.
NOTE
The MIC EXIT cancels all levels of a MIC
macro.
8.6) MIC RETURN Command.
Format
.MIC RETURN
Acts as an "ABORT" command but no message is displayed. Thus the
MIC RETURN command is the preferred exit from a MACRO as outer levels
of macros are not affected.
MIC - Macro Interpreted Commands Page 27
Hatfield Polytechnic Computer Centre - December 1979
The RETURN command may be used to provide a return to any label
in an outer label macro by using
.MIC RETURN .BACKTO FRED
or
.MIC RETURN .GOTO BILL
when "FRED" and "BILL" are labels in an outer level macro.
MIC - Macro Interpreted Commands Page 28
Hatfield Polytechnic Computer Centre - December 1979
9). Special Parameters
9.1) System Parameters
9.1.1) Parameter Substitution
A construction of the form '<system parameter name> allows access to
various system parameters.
e.g.
'<JOB> is replaced by the user's job number.
The full set of system parameters is:-
system parameter name substitutes as
PPN [PROJECT,PROGRAMMER]
TTY LINE NUMBER
JOB JOB NUMBER
PROJECT PROJECT NUMBER
PROGRAMMER PROGRAMMER NUMBER
DATE Current Date.
TIME Current Daytime.
GETTAB(<table>,<index>,<radix>)
Entry in GETTAB table in
the appropriate radix.
MICFILE The name of the users MIC
macro in the form
"DEV:FILE.EXT [PATH]".
LENGTH(parameter) The number of characters in
the parameter.
PATH The user's PATH
PTHPPN The PPN of the user's PATH
MIC - Macro Interpreted Commands Page 29
Hatfield Polytechnic Computer Centre - December 1979
Thus the following :-
! MY PPN IS '<PPN>
! MY TTY IS TTY'<TTY>
! THIS JOB IS JOB NUMBER '<JOB>
Would result in :-
MY PPN IS [2250,7]
MY TTY IS TTY21
THIS JOB IS JOB NUMBER 10
9.1.2) GETTABS
The three parameters of a GETTAB are:-
Table
The table number in decimal of the required GETTAB table. The default is
table 0.
Item
The index to the entry in the table. This index is in decimal, and the
default value is the user's job number. Note that as in the GETTAB UUO -1
may be used to imply the user's job number.
Radix
This is a type-out mode taken from the following set which is used to
decode the entry in the GETTAB table.
RADIX MEANING
1 BIN BINARY (default setting )
2 ASC ASCII
3 SIX SIXBIT
5 OCT OCTAL (including leading zeroes).
6 PPN PPN -gives "[project,programmer]"
7 MSEC time in HH:MM:SS
(GETTAB entry in milliseconds)
8 SEC time in HH:MM:SS
(GETTAB entry in seconds)
9 OC2 OCTAL (with leading zeroes suppressed)
10 DAT Date in DD-MON-YR (entry in 18-bit).
As an example of the use of GETTABS
!'<GETTAB(25,-1,ASC)>'<GETTAB(26,-1,ASC)>
would cause the user's "USERNAME" to be output.
MIC - Macro Interpreted Commands Page 30
Hatfield Polytechnic Computer Centre - December 1979
Note:-
Constructions of the form
!'<GETTAB(25,'<JOB>,ASC>
are acceptable. As is:-
!'<GETTAB(25,'A,ASC)>
where A is a parameter.
Note:-
In early versions of MIC the type-out mode was specified by the numeric
value given in the above table (e.g. 4 for decimal). This format will
still work; '<GETTAB(25,'A,ASC)> and '<GETTAB(25,'A,2)> are equivalent.
9.1.3) Octal Arguments To GETTABS.
GETTAB arguments may be supplied in Octal by preceding the argument by a
"%" sign,
e.g.
'<GETTAB(%11,-1,ASC)>
This format is useful as the GETTAB tables are specified in Octal in the
Monitor Calls Manual.
MIC - Macro Interpreted Commands Page 31
Hatfield Polytechnic Computer Centre - December 1979
9.2) Action Parameters
A special class of MIC parameter is the ACTION parameter, this type of
parameter performs a MIC action without destroying the users core image
e.g.
'<SILENCE>
will cause the macro to be silenced, this is similar in effect to the
.SILENCE
command except that the '<SILENCE> does not cause MIC to be run and does
not cause anything to appear in the users terminal, not even the echo of
the command.
The full list of action parameters is
'<ABORT>
'<BREAK>
'<CANCEL>
'<ERROR(ch)>
'<NOERROR>
'<NOOPERATOR>
'<OPERATOR(ch)>
'<PROCEED>
'<RETURN>
'<REVIVE>
'<SILENCE>
'<SLEEP(n)>
and all of these have the same effect as the respective commands.
The effect of an action parameter is always from the start of the line in
which it occurs
e.g
'<SILENCE> ABCDEF
'ABC '<SILENCE> DEF
'ABCDEF '<SILENCE>
are all equivalent.
MIC - Macro Interpreted Commands Page 32
Hatfield Polytechnic Computer Centre - December 1979
10). LET and IF Extensions.
10.1) Use of System Parameters in LET commands.
The LET command has been extended from that described earlier to allow the
user access to the system parameters described in section 9. By using the
LET statement with a system parameter on the right hand side a user may use
the byte subscripting features of MIC to abstract the portions of a system
parameter that he requires.
.LET B=$JOB
This statement will store the user's job number in parameter B.
Similarly,
.LET B=$PROJECT
will place the user's project number in parameter B.
Concatenation of system parameters is allowed,
e.g.
.LET B="["+$PROJECT+","+$PROGRAMMER+"]"
may be used to obtain the PPN of a MIC user.
Byte subscription of system parameters is allowed,
.LET B=$PROJECT.[-1]
would give the rightmost digit of a user's project number.
10.2) Use of System Parameters in arithmetic assignments
System parameters may also be used on arithmetic assignments, however, as
all except "JOB" and "GETTAB" return only octal numbers it is not normally
a sensible operation, (except with "JOB" AND "GETTAB"), unless they are
preceeded by a "%" to indicate that they are to be treated as being octal.
e.g.
.LET A=JOB+2
or
.LET A=GETTAB(1,2,DEC)+JOB-3
or
.LET A=%TTY
or
.LET A=%100&%GETTAB(%53,-1,OCT)
MIC - Macro Interpreted Commands Page 33
Hatfield Polytechnic Computer Centre - December 1979
10.3) Use of System Parameters in IF Commands.
In a similar fashion to 10.2, system parameters may be used in "IF"
commands, for example to ensure that a particular MIC macro is only run on
a specified terminal the following check could be included in the macro:-
.IF ($TTY#"21") .MIC ABORT
or
.IF (%TTY#21) .MIC ABORT
The octal arithmetic facility may be combined with the GETTAB parameter to
enable bit testing of the system tables.
e.g.
.IF (%GETTAB(A,'C,OCT).AND. %004001) .LET A="YES"
MIC - Macro Interpreted Commands Page 34
Hatfield Polytechnic Computer Centre - December 1979
11). Non Procedural Calls To MIC
Simple user interaction with MIC has been described in section 7, but often
the MIC action, on detecting an error condition or one of the special
control functions, is not the required action. A WHENEVER/ON command may
therefore be used to change the default action.
The format of this command is:-
.WHENEVER <EVENT>:<ACTION>
or
.ON <EVENT>:<ACTION>
(NOTE: ON and WHENEVER are synonymous)
The effect of this command is to specify that whenever the <EVENT> occurs,
the specified <ACTION> will be performed rather than the normal default
action.
e.g.
.WHENEVER BREAK:GOTO FRED
This sets up the user's MIC process so that whenever he types control B, or
a MIC BREAK occurs the process will not BREAK but rather will obey the GOTO
FRED command.
The valid events are:-
CANCEL or control C typed by the user
ABORT or control A typed by the user
BREAK or control B typed by the user
PROCEED or control P typed by the user
and
ERROR
OPERATOR
MIC - Macro Interpreted Commands Page 35
Hatfield Polytechnic Computer Centre - December 1979
and the valid actions are:-
ABORT
BACKTO <LABEL>
BREAK
CANCEL
DISPLAY <PARAMETER>
ERROR
EXIT
GOTO <LABEL>
OPERATOR
PROCEED
RETURN
TYPE <PARAMETER>
The user should note that if ERROR trapping is enabled
e.g.
.ON ERROR:ABORT
MIC does not check the next line for an "IF" statement or a "%" label; the
ABORT is obeyed immediately.
11.1) Multiple WHENEVER/ON Commands.
Several default actions may be changed in the same command by separating
the individual arguments by commas, thus:-
.ON ERROR:ABORT,CANCEL:BREAK
or
.WHENEVER CANCEL:GOTO FRED,ABORT:GOTO BILL
MIC - Macro Interpreted Commands Page 36
Hatfield Polytechnic Computer Centre - December 1979
12) MIC SET command
This family of commands is used to change the action "MIC" performs upon
certain conditions.
The format of the command is:-
.MIC SET <NO> <ACTION>
e.g.
.MIC SET NO PARAMETERS
This causes MIC to perform no parameter substitutions upon detecting a "'"
character in the input file.
i.e.
'A will "substitute" as 'A
To restore parameter substitution use:-
.MIC SET PARAMETERS
The MIC SET commands currently available are:-
12.1) COLUMN1.
.MIC SET NO COLUMN1
MIC regards no characters in column one of the user's command file as being
special characters (see section 3.).
The default is:-
.MIC SET COLUMN1
12.2) CONTROL CHARACTERS.
.MIC SET NO CONTROL
MIC does not cause "^X" to substitute as control X.
Default is-
.MIC SET CONTROL
MIC - Macro Interpreted Commands Page 37
Hatfield Polytechnic Computer Centre - December 1979
12.3) PARAMETERS.
.MIC SET NO PARAMETERS
MIC does not perform parameter substitution on detecting a"'" character.
Default is:-
.MIC SET PARAMETERS
12.4) SPECIAL CHARACTERS.
.MIC SET NO SPECIALS
This performs the combined functions of the above three commands.
Default is:-
.MIC SET SPECIALS
12.5) FINMATCH
.MIC SET NO FINMATCH
If this command is obeyed MIC will not regard an occurrence of "%FIN" as
satisfying a search for a label (cf. section 4.1).
The default is:-
.MIC SET FINMATCH
MIC - Macro Interpreted Commands Page 38
Hatfield Polytechnic Computer Centre - December 1979
12.6) MSGLVL.
The "MIC SET NO MSGLVL n" may be used to suppress the output of the
messages "[ABORT]", "[BREAK]", "[CANCEL]", and "[PROCEED]". The argument
"n" is an octal number which is used to specify which messages the user
wishes to suppress.
1 supresses [ABORT].
2 supresses [BREAK].
4 supresses [CANCEL].
10 supresses [PROCEED].
12.7) LC.
.MIC SET NO LC
This causes lower case and upper case characters to be treated as
equivalent in string comparisons.
The default is :-
.MIC SET LC
12.8) MULTIPLE SET Commands.
Several SET functions may be performed in the same command by separating
each of the functions by a comma, thus:-
.MIC SET NO PARAMETERS,CONTROLS,NO FINMATCH
MIC - Macro Interpreted Commands Page 39
Hatfield Polytechnic Computer Centre - December 1979
13) CCL Entry to MIC.
The CCL entry to MIC provides a user program interface to MIC. If MIC from
SYS is run with a runoffset of 1 (by a RUN UUO), MIC will attempt to read
command input from a TMPCOR file called "MIC", or if that is not available,
from a disk file "nnnMIC.TMP" (where nnn is the user's job number), rather
than from the terminal.
This file may contain a single line of input to MIC
e.g.
.TYPE TMP:MIC
DO DOIT A,36,C
.
would cause the MIC macro "DOIT" to be executed if MIC is run with a
runoffset of 1.
The file may contain any MIC command, e.g. LET,IF,GOTO,etc., though in
this case the user must be already running under MIC, otherwise he will get
an appropriate error message. This provides a means of manipulating MIC
parameters via a user program, the user program simply writes a TMPCOR file
and runs MIC as above, with an appropriate "LET" command in the TMPCOR
file.
Note:-
1) The CCL input file is deleted by MIC.
2) Use of TMPCOR is described in the Monitor Calls Manual.
3) Use of the RUN UUO is described in the Monitor Calls Manual.
4) Those CUSP's which are loaded with SCAN, (e.g. LOGIN,QUEUE, DIRECT,
etc.) have a "/TMPFIL" switch, which has the form
/TMPFIL:<NAME>:"<TEXT>"
where:-
<name> is the three character name of a TMPCOR file
to be created
<text> is the contents of the TMPCOR file.
5) The TMPCOR file does NOT contain the monitor dot or data asterisk.
MIC - Macro Interpreted Commands Page 40
Hatfield Polytechnic Computer Centre - December 1979
This switch may be used to create a MIC TMPCOR file and the
"/RUN:MIC/RUNOFFSET:1" switches used to cause the file to be obeyed.
e.g.
Say a user wished to run a macro called "SETUP" everytime he logged in; he
may type-
.LOGIN 110,1/RUN:MIC/RUNOFFSET:1/TMPFIL:MIC:"DO SETUP"
As this command is rather long the user would probably include all or part
of it in his "SWITCH.INI" file. (Consult the OPERATING SYSTEM COMMANDS
MANUAL for a description of "SWITCH.INI" and the above switches).
MIC - Macro Interpreted Commands Page 41
Hatfield Polytechnic Computer Centre - December 1979
14) Multiple Statements on a Line.
More than one MIC command can be written on a single line by terminating
each command by a "\" character.
e.g.
.LET A=3,B=4 \ .GOTO JIM
This is especially useful in the case of "IF" statements.
e.g.
.IF ($A="DONE") .LET Z="FINISH" \ .GOTO DUNIT
Note:-
1. This only applies to MIC commands it does not include normal monitor
commands, except when the monitor command is the last command on the
line.
e.g.
.LET A=3,B=4 \ .ERROR ? \ .DIR ZXCV.ALG
2. All parameter substitution is performed for the whole line before the
first statement is obeyed.
This means that (assuming parameter A contains "DIR FRED") an input
construction of the form:-
.LET A=$A.[1,3]+" JIM" \.'A
would result in
.LET A=$A.[1,3]+" JIM" \.DIR FRED
being obeyed.
3. If an error occurs in a statement all subsequent statements on that
line will be ignored.
4. The "\" may be omitted after several MIC commands, for example the
"REVIVE" command, for compatability with older macro files.
MIC - Macro Interpreted Commands Page 42
Hatfield Polytechnic Computer Centre - December 1979
15) Immediate Mode Execution of MIC Commands.
When a MIC macro is in [BREAK] mode the user may type (to monitor) any
MIC command in addition to any monitor command. This allows the user
to suspend his macro and examine and manipulate his parameters - useful
when debugging complex macros - or perform some action on behalf of the
macro.
The GOTO and BACKTO commands when used in this manner do not take
effect immediately, but are effective as soon as the MACRO is
proceeded.
N.B.
A special case of the MIC DISPLAY command may be used at any time, even
when the user is not running under MIC. This is the
MIC DISPLAY <system-parameter>
This can be very useful for obtaining information from GETTAB tables
(see sections 7.3 and 9.2) though the user should be aware that the use
of this command does destroy his core image.
APPENDIX A
EXAMPLES OF MIC COMMANDS
Asterisks indicate the scope of a macro command in these examples only.
.;EXAMPLE 1
.;A MIC DEMO - A SIMPLE MACRO COMMAND TO COMPILE POP2
.;LIBRARY FILES
.
.TYPE SYS:POP2.MIC
POP2
COMPILE(LIBRARY([LIB 'A]))
.; A TYPICAL CALL OF THE POP2 MIC MACRO COMMAND.
.DO POP2 KALAH
******
.PGOP2
CSL POP2 V.26
SETPOP
: COMPILE(LIBRARY([LIB KALAH]));
TO ENTER PROGRAM TYPE KALAH
: ^C
******
EXAMPLES OF MIC COMMANDS Page A-2
.;AGAIN WITH A DIFFERENT PARAMETER.
.DO POP2 ABSYS
******
.PGOP2
CSL POP2 V.26
SETPOP
: COMPILE(LIBRARY([LIB ABSYS]));
: ^C
******
EXAMPLES OF MIC COMMANDS Page A-3
.;EXAMPLE 2
.;A MIC DEMO OF GOTO COMMANDS.
.;A MIC MACRO WHICH WILL OBEY ONLY SELECTED PARTS OF A FILE
.;(USEFUL IF DISK SPACE IS LIMITED.)
.;(SEVERAL COMMANDS COULD BE KEPT IN ONE FILE)
.;
.TYPE X.MIC
.GOTO 'A
COMP::
;A MACRO TO COMPILE FILES COULD BE HERE.
.GOTO END
DATA::
;A MIC MACRO TO SET UP DATA
.GOTO END
DEMO::
;PARAMETERS ARE
;A="'A"
;B="'B"
;C="'C"
END::
.;ALL COMMANDS FINISH HERE
.;
.;A TYPICAL CALL OF THE X MACRO COULD BE
.;
.DO X COMP
******
.
.GOTO COMP
.
.;A MACRO TO COMPILE FILES COULD BE HERE.
.GOTO END
.
.;ALL COMMANDS FINISH HERE
******
.
.;ANOTHER TYPICAL CALL
.DO X DEMO,FIRST PARAMETER,2ND,NO 3
******
.
.GOTO DEMO
.
.;PARAMETERS ARE
.;A="DEMO"
.;B="FIRST PARAMETER
.;C="2ND"
.
.;ALL COMMANDS FINISH HERE
******
EXAMPLES OF MIC COMMANDS Page A-4
.;EXAMPLE 3
.;A MIC DEMO OF ERROR COMMAND
.;A MACRO TO COMPARE TWO FILES AND DELETE DSK COPY IF THEY
.;ARE THE SAME
.
.TYPE CHECK.MIC
.ERROR ?
.R FILCOM
*TTY:/Q='A.'B
.DELETE 'A
.
.DO CHECK C.MIC,SYS:
******
.
.ERROR ?
.R FILCOM
*TTY:/Q=C.MIC,SYS:
NO DIFFERENCES ENCOUNTERED
*^C
.DELETE C.MIC
FILES DELETED
C.MIC
01 BLOCKS FREED
******
.;CREATE AN INCORRECT COPY OF C.MIC WITH PIP.
.R PIP
*C.MIC=TTY:
WRONG FILE
^Z
*^C
.;AND USE C.MIC TO CHECK IT
EXAMPLES OF MIC COMMANDS Page A-5
.DO CHECK C.MIC,SYS:
******
.
.ERROR ?
.R FILCOM
*TTY:/Q=C.MIC,SYS:
FILE 1) DSK:C.MIC CREATED: 1349 21-JAN-1975
FILE 2) SYS:C.MIC CREATED: 1202 03-OCT-1974
?FILES ARE DIFFERENT
*[ABORT ON ERROR]
^C
******
.;MIC ABORTS
EXAMPLES OF MIC COMMANDS Page A-6
.;EXAMPLE 4
.;A MIC DEMO OR IF ERROR
.;AN IMPROVEMENT ON EXAMPLE 3
.;COMPARE TWO FILES AND DELETE DSK COPY IF FILES ARE THE
.;SAME, OTHERWISE COPY AGAIN.
.
.TYPE CHECK.MIC
.ERROR
CHECK::.R FILCOM
*TTY:/Q='A,'B
.IF (NOERROR) .GOTO END
.R PIP
*'B/B/X='A
.BACKTO CHECK
END:: .;FILE 'A TRANSFERRED SUCCESSFULLY TO 'B
.;A TYPICAL CALL - CHECK FRED.SAV ON SYS: IS SAME AS
.;DSK VERSION
.
.DO CHECK FRED.SAV,SYS:
******
.ERROR
.R FILCOM
*TTY:/Q=FRED.SAV,SYS:
FILE 1) DSK:FRED.SAV CREATED: 1359 21-JAN-1975
FILE 2) SYS:FRED.SAV CREATED: 1910 21-JAN-1975
?FILES ARE DIFFERENT
*^C
.IF (NOERROR) .GOTO END
.R PIP
*SYS:/B/X=FRED.SAV
*^C
.BACKTO CHECK
.
.R FILCOM
*TTY:/Q=FRED.SAV,SYS:
NO DIFFERENCES ENCOUNTERED
*^C
.IF (NOERROR) .GOTO END
.
.;FILE FRED.SAV SUCCESSFULLY TRANSFERRED TO SYS:
******
EXAMPLES OF MIC COMMANDS Page A-7
.;EXAMPLE 5
.;A MIC DEMO OF THE LET COMMAND
.;ILLUSTRATED DISTINCTION BETWEEN $A AND A
.
.TYPE LET.MIC
.LET Z=A+B+C
;A+B+C='Z
.LET Z=$A+$B+$C
;CONCATENATED STRING PARAMETERS ARE 'Z
.LET X="'A"+"'B"+"'C"
;BUT CONCATENATION AFTER SUBSTITUTION HAS THE SAME EFFECT
;BUT (") QUOTES ARE REQUIRED FOR STRING LITERALS.
;'X
.
.;USING NUMBERS AS PARAMETERS.
.
.DO LET 4,5,6
******
.
.LET Z=A+B+C
.;A+B+C=15
.LET Z=$A+$B+$C
.;CONCATENATED STRING PARAMETERS ARE 456.
.LET X="4"+"5"+"6"
.;CONCATENATION AFTER SUBSTITUTION HAS THE SAME EFFECT
.;BUT (") QUOTES ARE REQUIRED FOR STRING LITERALS
.;456
.
******
.
.;ANOTHER EXAMPLE WITH NON-NUMERIC PARAMETERS.
.
.DO LET FIRST,<,,,>,THIRD
******
.LET Z=A+B+C
?PARAMETER A "FIRST" IS NOT A NUMBER
.;A+B+C=
.LET Z=$A+$B+$C
.;CONCATENATED STRING PARAMETERS ARE FIRST,,,THIRD
.LET Z="FIRST"+",,,"+"THIRD"
.;CONCATENATION AFTER SUBSTITUTION HAS THE SAME EFFECT.
.;BUT (") QUOTES ARE REQUIRED FOR STRING LITERALS.
.;FIRST,,,THIRD
.
******
EXAMPLES OF MIC COMMANDS Page A-8
.DO LET ,[1,2],5
******
.
.LET Z=A+B+C
?PARAMETER A IS NULL
.;A+B+C=
.LET Z=$A+$B+$C
.;CONCATENATED STRING PARAMETERS ARE [1,2]5
.LET X=""+"[1,2]"+"5"
.;CONCATENATION AFTER SUBSTITUTION HAS THE SAME EFFECT
.;BUT (") QUOTES ARE REQUIRED FOR STRING LITERALS
.;[1,2]5
.
.;NOTE SECOND PARAMETER CONTAINS A COMMA BETWEEN MATCHED BRACKETS
EXAMPLES OF MIC COMMANDS Page A-9
.;EXAMPLE 6
.;A COMPLICATED MIC MACRO COMMAND TO ASSEMBLE MACRO FILES
.TYPE C.MIC
.IF ($A.[1,"/H"]=$A).GOTO KNEW
.REVIVE
; COMPILES MACRO FILES
;
; USE THUS:-
;
; DO C <STANDARD DEVICE FILE-SPEC>/SWITCHES
;
; SWITCHES MAY BE
;
; /L TO DO A LOAD AS WELL
; /CN TO PRODUCE N COPIES
; /H TO TYPE THIS TEXT
;
;'A
KNEW::.ERROR
.LET B=$A.[1,"."].[1,"["].[1,"/"]
.LET C=$A.["/C","/"]
.LET D=$A.[1,"/"]
.IF ($B.[":"] "") .LET B=$B.[":",6]
.IF ($A.[1,"/L"] $A) .LET G="MIC ABORT"
.REVIVE .R MACRO
*'B,'B/C='D
.R CREF
*DSK:'B'B
.Q 'B.LST/COPIES:'C
.'G
.R LINK
*'B/GO
.
.;A TYPICAL CALL WOULD BE (ASSUMING FILE PROTECTION OF 255
.DO C FRED.MAC/C3
******
*FRED,FRED/C=FRED.MAC
NO ERRORS DETECTED
PROGRAM BREAK IS 000001
2K CORE USED
*^C
.R CREF
*DSK:FRED=FRED
[CRFEXC 1K CORE]
*^C
.Q FRED.LST/COPIES:3
TOTAL OF 3 BLOCKS IN LPT REQUEST
.MIC ABORT
.[ABORT]
.
.;NOTE USE OF AUTOMATIC SILENCE TO SUPPRESS UNINTERESTING
.;PARTS OF THE FILE
EXAMPLES OF MIC COMMANDS Page A-10
;EXAMPLE 7
;EXAMPLE OF THE USE OF SYSTEM PARAMETERS
This MIC macro uses the system parameter feature of MIC to
produce a short status report on any job on the system. It is
expected that this macro would run silenced using a "<2??>"
protection code, and the "!" in column one is used to output
the information.
If no job number is specified or the job number is negative,
the status of the users own job is output.
.if ($a="").let a=$job ;if no job no. use this job.
.if (a<=0).let a=job ;if job no. is negative use this job.
.let b=$gettab(25,a,six)+$gettab(26,a,six)
;get the username for this job.
.let c=$gettab(2,a,ppn) ;get the job's PPN.
!USERNAME IS 'B LOGGED IN AS 'C
.LET B=$GETTAB(3,'A,SIX) ;GET THE JOB'S PROGRAM NAME.
!CURRENTLY RUNNING 'B
.LET B=$GETTAB(0,A,BIN) ;GET THE JOB'S STATUS WORD.
.LET C=$GETTAB(6,A,BIN) ;GET THE JOB'S PRIVILEGE WORD.
!PRIVILEGE WORD IS 'C
!STATUS WORD IS 'B
.
.; AN EXAMPLE OF A RUN OF THIS MACRO WOULD BE:-
.DO JBSTS
******
STATISTICS ON JOB 3
USERNAME IS BLOGGS FJ. LOGGED IN AS[100,100]
CURRENTLY RUNNING MIC
PRIVILEGE WORD IS 00000000000000000000000000000000000
STATUS WORD IS 00100000000001000001000000000000000
.
Note that this is not presented as being the most efficient way to access
this and similar information. It is however, a very easy and quick way of
writing occasional or "one-off" systems programs.
APPENDIX B
COMMAND SUMMARY
.DO FRED ABC,<DEF,I>,[105,113]
MIC will type on the user's behalf from the file
MIC:FRED.MIC (OR DSK:FRED.MIC) substituting ABC for
/A,DEF,1 FOR 'B AND [105,113] FOR 'C.
.LET X="DEF"
MIC will substitute further references in macro command
file to X('X) as def.
.IF (ERROR) .GOTO LAB
If the previously typed command caused an error condition
MIC will continue processing the command file at LAB::.
.BACKTO LAB2
MIC will unconditionally continue processing after the
first occurrence in the command file of the label LAB2::.
.SILENCE
Suppress I/O to the teletype.
.REVIVE
Restore I/O to the teletype.
.ERROR ?
Treat ? in column 1 as indicating an error condition.
.NOERROR
Disable error checking.
.OPERATOR #
Treat # as indicating an OPERATOR condition.
COMMAND SUMMARY Page B-2
Hatfield Polytechnic Computer Centre - December 1979
.NOOPERATOR
Disable OPERATOR checking.
.MIC ABORT
Abort current process.
.MIC BREAK
Suspend current process.
.MIC CANCEL
Stop all processes.
.MIC RETURN
About correct process but display no message.
.MIC EXIT
Stop running MIC.
.MIC SET NO PARAMETERS
Suppress parameter substitutions.
.ON ERROR:ABORT
Cause MIC to [ABORT] if an error is detected.
.MIC DISPLAY A
Output the contents of parameter A on the user's
terminal.
.MIC TYPE A
Types the contents of parameter A as though the user had
typed them.
.MIC WHAT
Outputs status information on the user's macro.
APPENDIX C
SYNTAX OF INTEGER AND STRING EXPRESSIONS
Integer Expressions.
The operators +,*,and - have the conventional meaning. The character / is
used for divide, ^ for exponentiation, & for logical AND, and ! for logical
OR. The evaluation of an expression is from left to right with precedence as
follows.
^ first
*/!& second
+- third
Matching round brackets may be used to arrange the desired order of execution
of operations. The monadic operator - is allowed but the monadic + is not
allowed, since unsigned integers are assumed positive.
Examples:-
-2*(3+2-1)^5*(6/2+2) is legal
+2 is not legal
2+(-3*(4*(6+1))) is legal
SYNTAX OF INTEGER AND STRING EXPRESSIONS Page C-2
Hatfield Polytechnic Computer Centre - December 1979
SYNTAX - Integer Expression.
<DIGIT>::= 0/1/2/3/4/5/6/7/8/9
<INTEGER>::=<DIGIT>/<Any-number-of-digits>
<PARAMETER>::=A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z
<NUMERIC-TERM>::=<PARAMETER>/<INTEGER>/<INTEGER-EXPRESSION>
/<SYSTEM-PARAMETER>
<INTEGER-EXPRESSION>::=-<NUMERIC-TERM>/<NUMERIC-TERM>
<NUMERIC-TERM>/<OPERATOR><NUMERIC-TERM>
<OPERATOR>::= +/-/*/"/"/^/!/&
To allow references to be made to parameters in an outer process a
qualifier is allowed to the parameter name, e.g.
If a MIC command is nested three deep A3 would be the parameter A in the
outer process. This extension also applies to string parameters ($A3).
On the left hand side of LET assignment statements the qualifier may be
used to return parameters to an outer level MACRO command. e.g.
.LET A1="TEXT"
SYNTAX OF INTEGER AND STRING EXPRESSIONS Page C-3
Hatfield Polytechnic Computer Centre - December 1979
SYNTAX - String Expressions.
<STRING>::=<any-ASCII-text>
<STRING-expression>::="<string>"/$<subscripted-string>/
$<system-parameter>
<expression>::=<string-expression>/<integer-expression>
<subscripted-string>::=<string-expression>.[<expression>]/
<string-expression>.[<expression>,<expression>]
To allow the character quote (") to be used within a text string a single
quote (") will be substituted for any double quote ("") encountered
within a string expression.
APPENDIX D
ERROR MESSAGES.
Error messages from MIC have the form:-
?MIC<code> <text> - in "<command-name>" command.
where:-
<code> is a three-character code unique to each error.
<text> is the description of the error as listed in this document.
<command-name> is the name of the MIC command currently being executed.
ERROR MESSAGES. Page D-2
ERROR MESSAGES WHICH APPLY ONLY TO SPECIFIC COMMANDS.
D.1 ERROR MESSAGES WHICH APPLY ONLY TO SPECIFIC COMMANDS.
D.1.1 / or DO Command.
?MICMNR MIC not running please try again
The operator has not started the MIC master program,
and he has a copy of this message displayed on his
console.
?MICDFS Error in device file specification
The specification of the MIC command file did not
follow the general form "dsk:file.ext[path]".
?MICCID Cannot INIT device
The device which the user specified for the command
file is not available.
?MICCOF Cannot OPEN file
The command file could not be found.
?MICPUF PATH.UUO failed
The path specified by the user caused an error when
MIC attempted to use it.
?MICTMC Too many characters in argument
The user's arguments are longer than approximately
500 characters.
?MICBMP Brackets mismatch in parameter
The user has specified a parameter with a
non-matching set of parentheses.
?MICTMP Too many parameters - maximum = 26
The user has attempted to specify more than 26
separate parameters.
?MICCNP Cannot nest processes this deep - maximum = n
The user has specified MIC macros calling MIC macros
to a depth greater than n, where n is an operator
settable parameter.
?MICNTF No TMP file for input
No temporary file was found after an offset one entry
to MIC.
D.1.2 ON or WHENEVER Command
?MICNAE Not an event
Attempt to use an illegal <event>, see section 11 for
a full list of of events.
ERROR MESSAGES. Page D-3
ERROR MESSAGES WHICH APPLY ONLY TO SPECIFIC COMMANDS.
?MICILF Illegal format
MIC cannot understand the arguments given. See
section 11.
?MICNOA No argument
A command of the form
.ON <EVENT>!
has been given.
?MICANA Argument is not an A-Z parameter
A command of the form
.ON <EVENT>:<ACTION> <PARAMETER>
has an invalid parameter.
D.1.3 SET Command
?MICUKA Unknown argument
An invalid MIC SET command has been given.
?MICNPV No privileges to do this
The user has attempted to use a privileged MIC SET
function.
D.1.4 GOTO or BACKTO Command
?MICNAL No argument for label
The command did not specify a label.
?MICCFL Cannot find LABEL - <label>
The label <label> could not be found in the command
file. This error is always fatal.
D.1.5 LET Command
?MICILC Illegal character "ch" octal "n"
The character ch followed a LET command. Only a
space or a tab should follow a LET.
?MICPMB Parameter must be A-Z not "ch" octal "n"
The parameter on the left hand side of an assignment
was not valid.
ERROR MESSAGES. Page D-4
ERROR MESSAGES WHICH APPLY ONLY TO SPECIFIC COMMANDS.
?MICASS Assignment symbol should be = or not "ch" octal "n"
Assignment must be of the general form
LET A = expression
or
LET A < expression
?MICPSE Parameter space exhausted
MIC has no room to store new argument. (Character
space is approximately 500 characters).
D.1.6 Response Command
?MICMRC Maximum RESPONSE is 79 characters
The user has attempted to use a value greater than 79
as his response limit.
?MICRCL RESPONSE command must specify response length
A MIC RESPONSE command did not specify a response
limit.
D.1.7 IF Command
?MICNCD No conditional
The contents of brackets in an IF clause was not a
legal conditional expression.
?MICUCO Unknown conditional operator
The relation operator in a conditional clause was
unknown.
?MICMOT Mismatch of types
An attempt was made to compare an integer expression
with a string expression.
?MICCDN Conditional "cc" not defined
The conditional cc is not known to MIC.
ERROR MESSAGES. Page D-5
ERROR MESSAGES WHICH APPLY ONLY TO SPECIFIC COMMANDS.
D.1.8 SLEEP Command
?MICIAS Illegal argument
The time specified in a MIC SLEEP command was
invalid.
D.1.9 DISPLAY/TYPE Command
?MICICA Invalid character after "^" up-arrow
The user had attempted to MIC TYPE or MIC DISPLAY on
a character of the form "^5"" which is an illegal
control specification.
D.2 GENERAL SYNTAX ERRORS
the following errors may occur in several MIC commands. Which command the
error actually occurred in is specified by the in "<command-name>" command
section of the error message.
D.2.1 String Expressions
?MICSIC String subscript illegal character "ch" octal "n"
The character "ch" is not valid in string subscript.
D.2.2 Arithmetic Expressions
?MICILC Illegal character "ch" octal "n"
The character ch is not allowed in an arithmetic
expression.
?MICOBN Operator missing between ) and number
Illegal construction of the form )345 in an
arithmetic expression.
?MICONB Operator missing between number and (
Illegal construction of the form 345(.
?MICNMB Number missing between brackets
Illegal construction of the form () in an arithmetic
expression.
?MICNMO Number missing between two operators
ERROR MESSAGES. Page D-6
GENERAL SYNTAX ERRORS
Illegal construction in arithmetic expression.
?MICBRM Brackets mismatch
Arithmetic expression is incorrectly bracketed.
?MICPPN Parameter "pp" is not a number
An attempt to include a string in an arithmetic
expression.
?MICPPN Parameter "pp" is null
An attempt to perform arithmetic on an empty
parameter.
?MICGTR GETTAB result "rr" is not a number
An attempt to perform arithmetic on a GETTAB result
which has not been obtained using the correct type
out mode.
?MICGTR GETTAB result is null
An attempt to perform arithmetic on a GETTAB result
which has returned a null.
D.2.3 System Parameters
?MICIAP Illegal action parameter
The user has attempted to use one of the action
parameters in an expression. Action parameters may
only be used via parameter substitution.
?MICLLP "LENGTH requires left parentheses
?MICLRP "LENGTH requires right parentheses
The length function was improperly specified.
?MICPPF PATH function - PATH.UUO failed
System error, please report this error.
?MICEFC Error in system parameter call
Some unspecified error has occurred, usually invalid
syntax.
?MICERT Error return taken by GETTAB UUO
The GETTAB arguments specified by the user are
invalid.
?MICUFN Unknown function
?MICUKF Unknown system parameter
Attempt to use an invalid system parameter.
?MICIAF Illegal argument format for system parameter
ERROR MESSAGES. Page D-7
GENERAL SYNTAX ERRORS
An argument is in error, for example an invalid radix
in a GETTAB.
D.2.4 Other
?MICNRM Not running MIC
An attempt to use a MIC command when not inside a MIC
macro.
?MICPNP Attempted reference to parameter in non-existent outer process
The user has attempted to use a parameter of the form
"A1" when there is no outer macro process.
D.3 ERROR MESSAGES WHICH OCCUR DURING THE PROCESSING OF A MACRO
Error messages in this category always terminate the execution of the macro
and the text of the error message does not include the in "<command-name>"
command text.
?MICICF Illegal character follows apostrophe
MIC has attempted to substitute text which is not a
valid parameter.
?MICCFL Cannot find LABEL - <label>
MIC could not find the label specified by a GOTO or
BACKTO command.
?MICCNI Cannot INIT device
The device which held the user's macro file has
become inaccessible during the running of the macro.
?MICMFN Macro file not found
The MIC macro command file has been deleted during
the running of the macro.
?MICCPC Cannot nest parameter calls this deep
An actual parameter contains parameter calls nested
to a depth of greater than 8 levels.
?MICNGN Nested GETTABs are not allowed
?MICNST Nested SLEEPs are not illegal
?MICLER Nested LENGTHs are illegal
The above parameters may not be nested in any
combination.
Page Index-1
INDEX
!(exclamation) . . . . . . 8
% . . . . . . . . . . . . 9
%CERR . . . . . . . . . . 11
%ERR . . . . . . . . . . . 11
%FIN . . . . . . . . . . . 10 to 11
*(asterisk) . . . . . . . 8
.(dot) . . . . . . . . . . 8
:: . . . . . . . . . . . . 9 to 10
;(semi-colon) . . . . . . 8
=(equals) . . . . . . . . 8
? . . . . . . . . . . . . 11, 21
ABORT . . . . . . . . . . 25
ABORT Command . . . . . . 25
Actions . . . . . . . . . 35
BACKTO command . . . . . . 10
BATCH commands . . . . . . 10
BREAK Command . . . . . . 26
Byte subscripting . . . . 15
CANCEL Command . . . . . . 25
CCL Entry to MIC . . . . . 39
COLUMN ONE. . . . . . . . 36
COLUMN1. . . . . . . . . . 36
Command File . . . . . . . 6 to 7
Comments . . . . . . . . . 8
Concatenation . . . . . . 14
CONTROL . . . . . . . . . 36
Control A . . . . . . . . 21, 25
Control B . . . . . . . . 26
Control C . . . . . . . . 25
Control Characters . . . . 8, 36
Control Commands . . . . . 25
Control P . . . . . . . . 13, 21, 26
DATE . . . . . . . . . . . 28
ERROR . . . . . . . . . . 11
Error Processing . . . . . 11
Events . . . . . . . . . . 34
Exit command . . . . . . . 26
Expression-string . . . . 14
Expressions-integer . . . 14
FINMATCH . . . . . . . . . 37
GETTAB . . . . . . . . . . 28
GETTAB radix . . . . . . . 29
GOTO command . . . . . . . 10
IF . . . . . . . . . . . . 12, 19
IF command . . . . . . . . 12, 19
IF extensions . . . . . . 19
Interactions . . . . . . . 21
JOB . . . . . . . . . . . 28
Labelled Lines. . . . . . 9
Labels . . . . . . . . . . 9 to 10
LC . . . . . . . . . . . . 38
LENGTH . . . . . . . . . . 28
LET command . . . . . . . 14, 32
LET extensions . . . . . . 32
Line Numbers . . . . . . . 7
MIC ABORT . . . . . . . . 25
MIC CANCEL . . . . . . . . 25
MIC DISPLAY Command . . . 23
MIC RESPONSE . . . . . . . 22
MIC RETURN . . . . . . . . 26
MIC SET . . . . . . . . . 36
mic sleep Command . . . . 24
MIC TYPE Command. . . . . 24
MIC WHAT Command . . . . . 24
MICANA . . . . . . . . . . D-3
MICASS . . . . . . . . . . D-4
MICBMP . . . . . . . . . . D-2
MICBRM . . . . . . . . . . D-6
MICCDN . . . . . . . . . . D-4
MICCFL . . . . . . . . . . D-3, D-7
MICCID . . . . . . . . . . D-2
MICCNI . . . . . . . . . . D-7
MICCNP . . . . . . . . . . D-2
MICCOF . . . . . . . . . . D-2
MICCPC . . . . . . . . . . D-7
MICDFS . . . . . . . . . . D-2
MICEFC . . . . . . . . . . D-6
MICERT . . . . . . . . . . D-6
MICGTR . . . . . . . . . . D-6
MICIAF . . . . . . . . . . D-7
MICIAP . . . . . . . . . . D-6
MICIAS . . . . . . . . . . D-5
MICICA . . . . . . . . . . D-5
MICICF . . . . . . . . . . D-7
MICILC . . . . . . . . . . D-3, D-5
MICILF . . . . . . . . . . D-3
MICLER . . . . . . . . . . D-7
MICLLP . . . . . . . . . . D-6
MICLRP . . . . . . . . . . D-6
MICMFN . . . . . . . . . . D-7
MICMNR MIC . . . . . . . . D-2
MICMOT . . . . . . . . . . D-4
MICMRC . . . . . . . . . . D-4
MICNAE . . . . . . . . . . D-2
MICNAL . . . . . . . . . . D-3
MICNCD . . . . . . . . . . D-4
MICNGN . . . . . . . . . . D-7
MICNMB . . . . . . . . . . D-5
MICNMO . . . . . . . . . . D-6
MICNOA . . . . . . . . . . D-3
MICNPV . . . . . . . . . . D-3
MICNRM . . . . . . . . . . D-7
MICNSI . . . . . . . . . . D-7
MICNTF . . . . . . . . . . D-2
MICOBN . . . . . . . . . . D-5
MICONB . . . . . . . . . . D-5
MICPMB . . . . . . . . . . D-3
MICPNP . . . . . . . . . . D-7
MICPPF . . . . . . . . . . D-6
MICPPN . . . . . . . . . . D-6
MICPSE . . . . . . . . . . D-4
MICPUF . . . . . . . . . . D-2
MICRCL . . . . . . . . . . D-4
MICSIC . . . . . . . . . . D-5
MICTMC . . . . . . . . . . D-2
MICTMP . . . . . . . . . . D-2
MICUCO . . . . . . . . . . D-4
MICUFN . . . . . . . . . . D-6
MICUKA . . . . . . . . . . D-3
MICUKF . . . . . . . . . . D-6
MSGLVL . . . . . . . . . . 38
Multiple LET Statements. . 16
Multiple ON Commands. . . 35
Multiple SET Commands. . . 38
Multiple Statements on a Line 41
Multiple WHENEVER Commands. 35
NOERROR . . . . . . . . . 11
Non Procedural Calls . . . 34
NOOPERATOR . . . . . . . . 21
Octal Arguments to GETTABS 30
Octal Expressions . . . . 17
ON command . . . . . . . . 34
Operator . . . . . . . . . 21
Operator Character . . . . 21, 26
OPERATOR command. . . . . 12
Outer Processes . . . . . 17
Parameter Substitution . . 8, 28, 37
PARAMETERS . . . . . . . . 37
Parameters in Outer Processes. 17, 20
PATH . . . . . . . . . . . 28
PLEASE COMMAND . . . . . . 13
PPN . . . . . . . . . . . 28
PROCEED Command . . . . . 13, 26
Proceed Command . . . . . 26
PROGRAMMER . . . . . . . . 28
PROJECT . . . . . . . . . 28
Protection codes . . . . . 13
PTHPPN . . . . . . . . . . 28
Response . . . . . . . . . 22
REVIVE command . . . . . . 13
Silence . . . . . . . . . 8
SILENCE command . . . . . 13
SILENCE(protection code) . 13
Special Characters . . . . 8, 37
Special Parameters . . . . 28
Special Tests . . . . . . A-1
SPECIALS . . . . . . . . . 37
String-comparisons . . . . 19
System Parameters . . . . 28
TIME . . . . . . . . . . . 28
TMPCOR . . . . . . . . . . 39
TMPFIL . . . . . . . . . . 39
TTY . . . . . . . . . . . 28
WHENEVER command . . . . . 34
[ABORT ON ERROR] . . . . . 11
[ABORT] . . . . . . . . . 25
[BREAK] . . . . . . . . . 13, 21, 26
[CANCEL] . . . . . . . . . 25
[PROCEED] . . . . . . . . 13, 21, 26
\ . . . . . . . . . . . . 41
^B . . . . . . . . . . . . 26
^P . . . . . . . . . . . . 26
^C . . . . . . . . . . . . 25
^A . . . . . . . . . . . . 25
^P . . . . . . . . . . . . 21
^C . . . . . . . . . . . . 21
^A . . . . . . . . . . . . 21
^P . . . . . . . . . . . . 13