SOAP USER'S GUIDE
SOAP is a routine which inputs IMP source programs and
outputs them formatted according to predefined control options.
It is assumed that the input source will compile under the
standard IMP compilers. Statements which are found to be
syntactically incorrect are output unchanged.
1
= =
USING SOAP
Before using SOAP for the first time it is nescessary to
connect the library in which it resides.
This is done with the command:
APPENDLIB(ECSC17.IMPILIB)
Providing that this has been done, SOAP can be called with one
of the following types of command:
1. SOAP(INPUT/OUTPUT)
2. SOAP(INPUT,OPTIONS/OUTPUT)
3. SOAP(INPUT)
4. SOAP(INPUT,OPTIONS)
1&3 specify that all default options are to be used.
2&4 specify changes to be made to the default
options.
1&2 define a new output file.
If this new file exists and is different from the
input file, the output file is left alone and the
output is in a temporary file 'SP#WORK'.
This is indicated by the message:
RENAME SP#WORK FAILS
3&4 specify that the output file is the same as the
input file.
NOTE: '.TT' cannot be used for the input file.
2
= =
CHANGING DEFAULT OPTIONS
In the examples of calling SOAP 'OPTIONS' can have two
forms:-
1. The name of a file (including.'.tt') from which
the list of options (terminated with *) is to be
taken.
2. The list of options enclosed in square brackets.
e.g. SOAP(FRED,.TT/JIM)
SOAP(FRED,OPFILE/JIM)
SOAP(FRED,[LL=120,CT=80]/JIM)
Any options not mentioned retain their default values.
The format of the option list is
(term),(term), ......... ,(term),*
where (term) = OPTION or \OPTION or OPTION=VALUE
and any comma may be replaced with a newline. If the [....]
form is used the final * may be omitted
(NOTE that the command interpreter deletes newlines within
commands !)
EXAMPLES
EM enable extra margin
\EM disable extra margin
MI=4 set margin increment to 4
The default options are:
\IB, \LB, SB, IB, \SK, \PN, \SS, \CN
BC, LS, \JA, \LR, SC, DR, SL, SE, SL, EM
\LO, CR, EC
MI=3, LL=72, CT=40, ML=40, LC=100
CE=5, XN=2, IM=7, SM=3, CL=20
lc= value of LL
3
= =
OPTIONS AVAILABLE
OPTION DEFAULT DESCRIPTION
IB \IB Isolate Brackets
Spaces will be inserted before left
brackets and after right brackets.
LB \LB Leave Blank lines
Blank lines in the input will be transfered
to the output.
SB SB Separate Blocks
A newline will be inserted before BEGIN,
ROUTINE, FN, MAP.
IB IB Indent Blocks
The start of a block will increase the
margin by 'MARGIN INCREMENT'
SK \SK Split Keywords
All keywords will be split into their
components e.g. %BYTE %INTEGER X
PN \PN Pack Names
Spaces will be removed from names.
SS \SS Split Statements
All separators will become newlines on
output.
CN \CN Comments Normal
Comments will be treated as ordinary
statements i.e. they will not be tabbed to
the comment margin etc.
BC BC Break Comments
Comments will be broken into as many
smaller comments as will be needed to aviod
overflowing the output line. If this
option is turned off, large comments will
be right justified.
LS LS Leave Stars
Comments of the form !*...... will start at
the beginning of a line. This is to
preserve block comments exclosed in stars.
4
= =
JA \JA Justify All comments
All comments (excluding those controled by
'LS') will be indented to the comment tab.
If this option is turned off, comments will
be indented according to the following
scheme:
1. The output comment will start at
the beginning of the line if did the input
comment.
2. If the input comment started after
the current value of the comment limit (see
'CR') the output comment will be indented
to the comment tab.
3. Otherwise the comment will be tabbed
to the current margin setting.
LR \LR Labels Relative
Labels will be tabbed to the margin which
was current when the enclosing block was
encountered. If this option is disabled
all labels are output at the start of a
line.
SC SC Split Conditions
The keywords '%THEN' and '%ELSE' are
separated from any ajoining keywords e.g.
%FINISH %ELSE %START
'SC' is implied by 'SK'
DR DR Declarations Relative
Declarations will be tabbed to the margin
of the enclosing block.
SL SL Space Lists
Spaces will be inserted after commas.
SE SE Space Equals etc.
Spaces will be inserted around '=', '==',
'#', '<=' etc.
IL IL Isolate Loops
An extra newline will be inserted before
'%CYCLE' and after '%REPEAT'.
5
= =
EM EM Extra Margin
This also implies '\TB' and 'DR'
Each time the margin is increased from zero
the increment will be 'IM' and thereafter
'MI'
LO \LO Leave Owns
Declarations of %OWN and %CONST arrays will
be output exactly as found. If this option
is turned off, the declaration will be
formatted up to and including the '=' (if
it exists)
CR CR Comments Relative
The comment limit (see 'JA') will echo the
value of the current margin. Otherwise it
will be set to 'CL'
EC EC Extend Comments
If a comment is the second or subsequent
statement on the input line and the
previous statements exceed the comment tab,
this option will increase the comment tab
(for this comment only) 'XN' times by 'CE'
spaces in an attempt to make the comment
fit on the current output line.
If this process fails, or the option is
disabled, the comment will be placed on a
line of its own.
MI= MI=3 Margin Increment
The amount by which the margin will be
altered. (see 'TB', 'DR' and 'EM')
LL= LL=72 Line Length
The length of the output line (see 'LC')
CT= CT=40 Comment Tab
The position to which comments will be
tabbed (see 'JA' etc.).
ML= ML=40 Margin Limit
The margin will not be increased once it
reaches this limit.
6
= =
CE= CE=5 Comment Extension
The amount by which 'EC' will extend the
comment tab.
XN= XN=2 eXtension Number
The number of times 'EC' will apply 'CE'.
IM= IM=7 Initial Margin
The initial margin for 'EM'.
SM= SM=3 Secondary Margin
The extra margin added when a line is split
by '%C'.
CL= CL=20 Comment Limit
The static limit for 'CR'.
LC= LC=100 Line length for Comments
A line length for comments which overrides
'LL'.
PETER S ROBERTSON
C/O DEPT OF COMPUTER SCIENCE
7