you can call a sub-program dynamically by declaring a variable in the working storage section as follows.
01 SUB-PRGM PIC X(10).
PROCEDURE DIVISION USING VAR1,VAR2.
MOVE 'CALLEDPRGM' TO SUB-PRGM.
if you want to call some other program dynamically at any instance of program execution, just move that program name to sub-prgm variable and call sub-prgm, but that program name should be of length 10 as we have declared in the working storage section.
I dont think u have to do any modifications to the program, The only modification required to be at the compilation level. You have to do the following modification
1) Ensure that you pass the "DYNAM" as the Parm for IGYCRCTL
2) Ensure to include the loadib of the subprogram under SYSLIB for "IEWL"