A Static call is one which has been written in source code as a literal value in quotes after the CALL verb.<br>
Every time the calling program is run, the subprogram will be loaded into memory, and will reside there for the entire run of the calling prorgram. There must be enough memory for both programs (not usually a problem in modern systems).<br>
<br>
<br>
A Dynamic call is one written in the source code as a variable containing the name of the program in PIC X(8) format after the CALL verb.<br>
When the calling program is run, the subprogram is not loaded into memory until execution of the program reaches the CALL verb, at that time, the subprogram will be loaded into memory, and can be removed at a later time by a CANCEL verb.<br>
<br>
Some of the ideas behind Dynamic calls: to allow for different sub-programs to be called from the same point in the program; when multiple sub-programs are required, and not enough memory is available (again, usually not a problem anymore), the total number of subprograms loaded at one time can be managed through the CANCEL verb (the disadvantage being repeated loads and unloads of the machine code into memory); to avoid recompiling all calling programs every time a change is made to a common subprogram (if the subprogram is statically linked, and a change is made to the subprogram, then both the subprogram and calling program must be recompiled).