Processor AA transfers control to processor BB with
a simple Fortran CALL BB
,
having readied the contents of its down call-bank
at LQDW
:
. . . LQ(LQDW-1) = load parameters of the link type LQ(LQDW-2) = . . . IQ(LQDW+1) = load parameters of the data type IQ(LQDW+2) = . . . CALL BB transfer control . . .In the simplest case the processor BB does not call itself another processor, does not have processor constants, and does not use processor flags. It would then look like this:
SUBROUTINE BB +CDE, Q. this is supposed to declare the store and also /JZUC/ +, links, data, last CALL JZIN ('BB ',0,0,0) CALL MZWORK (0,data(1),last,0) processor body CALL JZOUT ('BB ') RETURN ENDBy calling JZIN the processor causes switching of the environment, gaining access to its own data, in particular to its call-bank via the system link
LQUP
,
thus LQ(LQUP-1)
is its first link parameter.
The inverse switching is done by JZOUT. The processor name has to be given to JZOUT explicitely. This handshake is a check against forgotten calls.
The call to MZWORK must come after the call to JZIN because JZIN saves the working space parameters of AA, and hence they must still be intact.
For efficiency, JZIN and JZOUT, and also other routines, expect to receive the processor name with 4 characters exactly, with blank-fill if necessary.