!
7-26
Section
Subroutine Instructions
485
SBS(91) may also be placed into a subroutine to shift program execution from
one subroutine to another, i.e., subroutines may be nested. When the second
subroutine has been completed (i.e., RET(93) has been reached), program
execution returns to the original subroutine which is then completed before re-
turning to the main program. Nesting is possible to up to sixteen levels. A sub-
routine cannot call itself (e.g., SBS(91) 000 cannot be programmed within the
subroutine defined with SBN(92) 000). The following diagram illustrates two lev-
els of nesting.
SBN(92) 010
SBN(92) 011
SBN(92) 012
SBS(91) 011
RET(93)
SBS(91) 010
SBS(91) 012
RET(93)
RET(93)
The following diagram illustrates program execution flow for various execution
conditions for two SBS(91).
SBS(91)
000
SBS(91)
001
SBN(92)
000
RET(93)
SBN(92)
001
RET(93)
END(01)
Main
program
Subroutines
A
B
C
D
E
A
A
A
A
B
B
B
B
C
C
C
C
D
D
E
E
OFF execution conditions for
subroutines 000 and 001
ON execution condition for
subroutine 000 only
ON execution condition for
subroutine 001 only
ON execution conditions for
subroutines 000 and 001
Flags
ER:
A subroutine does not exist for the specified subroutine number.
A subroutine has called itself.
An active subroutine has been called.
Caution
SBS(91) will not be executed and the subroutine will not be called when ER is
ON.