11.1. Procedure Calls.   

Invoking a procedure (with or without parameters) in a structured language involves more than the generation of a "JUMP to Subroutine" machine language instruction for the CALL with a corresponding "Return from Subroutine" instruction in the called procedure.

 In FORTRAN-66 - a non-structured language, if a subroutine

has no parameters, then a JSR-RET calling and returning
sequence is possible since all local variables are stored
in static memory rather than on the stack.
If parameters are involved, the code is still simple since
all parameters are passed by address = var parameters.
Why is it not so simple in a modern language?

When a procedure is called and before it has returned various items of information represent the state of the current procedure activation.

Instruction Pointer: defines position in procedure code.
Contents of Data Frame: define local variables and parameters.
Pointers: indicating access to non-local data frames.
= Procedure Activation environment.

What do these correspond to in PL0?

I.P.: variable used to index into code. == P
Data Frame: space on STACK S and Top of stack pointer T.
Pointers: B with L and A from instruction.
R.A. D.L. S.L.
(return address, dynamic and static links)