
Nathan S. answered 06/07/21
Mainframe Database Administrator with Mainframe Application Experience
Dynamic program calls in COBOL can allow your program to be a bit more flexible as the system will get the latest executable in the load library of the called program. This can reduce the need for relinking and rebinding executable modules when subroutines are changed as well as making the executables themselves smaller in size. The trade off is that additional processor time is required to load the dynamically called module into memory.
Static program calls in COBOL allow your program to link and bind the main module and all of its called subroutines into a single executable. This allows the application, especially if there are a large number of subroutines for a particular module, to save time by having all of the programs loaded into memory. The trade off is a larger executable and the need to relink and rebind the executable when one of its subroutines are changed.
Think of it this way: static linking is gathering the tools from your tool shed you need for a specific project in a smaller tool bag to carry with you to have nearby; dynamic linking is walking back and forth to the tool shed each time you need a different tool.