
PROGRAM CONTROL STATEMENTS

.nf
		\fBigoto\fR	label
		\fBtigoto\fR	label
		\fBkgoto\fR	label
		\fBgoto\fR	label
		\fBif\fR	ia R ib \fBigoto\fR label
		\fBif\fR	ka R kb \fBkgoto\fR label
		\fBif\fR	ia R ib \fBgoto\fR label
		\fBtimout\fR	istrt, idur, label
.fi
.sp .5
where \fIlabel\fR is in the same instrument block and is not an expression,
and where \fIR\fR is one of the Relational operators (>, <, >=, <=, ==, !=)
(and = for convenience, see also under Conditional values).

These statements are used to control the order in which statements in an
instrument block are to be executed.  I-time and P-time passes can be
controlled separately as follows:


\fBigoto\fR - During the I-time pass only, unconditionally transfer control
to the statement labeled by \fIlabel\fR.

\fBtigoto\fR - similar to \fBigoto\fR, but effective only during an I-time
pass at which a new note is being 'tied' onto a previously held note (see I
Statement); no-op when a tie has not taken place.  Allows an instrument to
skip initialization of units according to whether a proposed tie was in
fact successful (see also \fBtival\fR, \fBdelay\fR).

\fBkgoto\fR - During the P-time passes only, unconditionally transfer
control to the statement labeled by \fIlabel\fR.

\fBgoto\fR - (combination of \fBigoto\fR and \fBkgoto\fR) Transfer control
to \fIlabel\fR on every pass.

\fBif...igoto\fR - conditional branch at I-time, depending on the truth
value of the logical expression "ia R ib".  The branch is taken only
if the result is true.

\fBif...kgoto\fR - conditional branch during P-time, depending on the truth
value of the logical expression "ka R kb".  The branch is taken only
if the result is true.

\fBif...goto\fR - combination of the above.  Condition tested on every
pass.

\fBtimout\fR - conditional branch during P-time, depending on elapsed note
time.  \fIistrt\fR and \fIidur\fR specify time in seconds.  The branch to
\fIlabel\fR will become effective at time \fIistrt\fR, and will remain so
for just \fIidur\fR seconds.  Note that \fBtimout\fR can be reinitialized
for multiple activation within a single note (see example next page).




Example:

.nf
		if   k3 > p5+10 kgoto next
.fi
.bp
