e runstream (<runassigns>),
in the order they appear.
A parameter can be assigned a value
more than once|--|the last assignment holds.
.ti-5
(3)||The assignment statements in the <defaults> part of the
prototype, in the order they appear except that if
the parameter already has a value, the assignment
is descarded (without checking the <value> for syntax
or other errors), thus preserving the runstream override
value.
.ti-5
(4)||The assignment statements in the <expansion> part
of the prototype, as they are encountered during 
text generation, except that all lines skipped by
control statements are ignored.
.ti0
The important points to notice are
.ti-5
(a)||Whenever reference replacement in a <value> during
any assignment encounters the delete value,
the assignment is not made.
The parameter retains its old value, if
it had one, or remains undefined.
.ti-5
(b)||A reference to be replaced during a
runstream assignment can access only values
established by previous runstream assignments.
.ti-5
(c)||A reference to be replaced during an assignment
in the <defaults> will access the runstream override value,
if one was specified.
If none was, the parameter must have been defined
by a previous default assignment.
.br
.ti -5
(d)||A parameter cannot be assigned more than once
in the <defaults>|--|only its first default assignment
will be made if it wasn't  assigned by a runstream override,
and not even that if it was.
.br
.in0
3.2||TEXT GENERATION
.ta 20
.nf
prototype	= defaults expansion
expansion	= {modelline \| controlstmt}819918
	        {assignstmt \| modelline \| controlstmt}908
modelline8809	= (any line without +:@___ in column one)
controlstmt8809	= lm +_ {goto \| label \| if}8199l8 {comment}
.fi
.pg
After the default assignments have been processed
and the first non-assignment line in the
prototype has been found, text generation
can begin.
From here on, assignment statements override
runstream assignments.
Prototype processing is controlled by the
contexts of column one of each line:
.in 10
.ti -5
(1)||A masterspace (@), except for an@ADD (see section 4.4),
causes Exec-8 to stop passing lines to PROC*DEF.
The result is the same as if the end of the prototype has
been reached.
.ti-5
(2)||A colon indicates an assignment statement.
The assignment is made, independent of whether
a value already exists, so long as reference replacement
in the <value> does not cause deletion.
.ti -5
(3)||Anything else in column one causes replacement of
all references in the line before further examination.
The size limit for this replacement is 80 characters.
As usual, the delete value can cause the line to be
discarded.
After replacement, column one is reexamined:
.in 15
.ti-5
(a)||A plus indicates a control statement
(<controlstmt>), which specifies conditional or unconditional
skipping of succeeding lines.
Control statements are described in Section 3.4.
.ti-5
(b)||Anything else in column one indicates a text line
(<modelline>).
.in 0
At this point, the text line is about to be stored
in the output file.
The only further processing is that a minus in column one
is replaced by a masterspace (@).
This allows generation of Exec-8 JCL without the
need for a reference in column one to produce
the masterspace.
.br
3.3||89COMMENT-CAUSED DELETION
.nf
.in 10
.ta 20
assignstmt	= lm :_ {b} assign {comment}
controlstmt8809 	= lm +_ {goto \| label \| if}819918 {comment}
comment	= b {fdchar}908
.fi
.in0
.pg
Assignment and control statements can contain
comments.
A comment is simply a string of text separated from
the last significant field on the line by one or more blanks.
A comment in an assignment statement has
no effect on 89PROC*DEF.
A comment in a control statement, however, will
cause deletion of the line if it contains
a reference whose replacement encounters a delete value.
.pg
Comment-caused deletion is a handy feature for
text lines as well, if the eventual use of the
output text permits it.
For example, EXEC-8 permits comments on control cards
after the sequence blank-period-blank.
.sp
.ss
.in 10
.nf
.ta 21 30
:ASM=*
-ASM,S MAIN,MAIN	%ASM%	is deleted
.ls2
.in0
.fi
Also, Fortran V permits comments after a
masterspace in a column other than one.
If a processor will only tolerate comments in columns
73-80 of its input, the user must beware of earlier
references in a textline causing columns 73-80 to
shift to the left.
.br
3.4||CONTROL STATEMENTS
.nf
.ta 20
controlstmt8809	= lm +_ {goto \| label \| if}819918 {comment}
.fi
.pg
A control statement is a prototype line that contains a
plus in column one after