I am running one non db2 program, it is calling one db2 program, it is a static call. While running it is confusing with
plan and package. Let anyone tell me in run jcl which plan and which program name I have to give.
ie, //systsin dd *
run program(?) plan(?)
The Main Module is calling the sub program (which is a COBOL-DB2 program) in static/dynamic mode the following steps should be followed for compilation.
If Main COBOL Program is calling the Sub program (COBOL-DB2) in a static mode,
1.Compile the sub program separately. Since it is a COBOL-DB2 progra, it has to go through all the steps of compilation i.e Pre-compilation, Bind, & compile/Link.
2. Compile the main program. Since it's a pure COBOL program, it can be compiled using a normal COBOL compiler. The compiler would expect the load module of the sub program (which would have been created after the completion of step mentioned above) and picks it from the appropriate load library.
If Main COBOL Program is calling the Sub program (COBOL-DB2) in a dynamic mode,
1. Compile the sub program separately as mentioned above. i.e treat the program as a normal COBOL-DB2 program and compile it using the COBOL-DB2 compiler.
2. Compile the main program. Since the call is dynamic, the compiler would not expect the load module of the subroutine and compiles only the main program.
Finally in the RUN JCL, the following statement should be specified.
RUN PROGRAM (MAIN PROGRAM NAME) PLAN (SUB PROGRAM NAME).
This is a simple PLAN Bind procedure.
Note : The above can be accomplished also through Package Bind. Instead of creating plan for the sub-program, create a package and bind it against the application plan.