Binding (link-editing) Enterprise COBOL programs

This topic describes frequently asked questions about binding (link-editing) Enterprise COBOL programs.

What is the difference between an object module, a load module, and a program object?

An object module is the output of the compiler and input to the binder. A load module is a non-GOFF executable that is output from the binder with an Enterprise COBOL V4 or earlier object module. A program object is a new style GOFF executable that is the output from the binder when binding an object module from Enterprise COBOL V5.1 or later versions, or the output from the binder anytime the target data set (SYSLMOD) is a PDSE.

Are PDS and PDSE data sets allowed for object modules with Enterprise COBOL V5 or V6?

Compiler output data sets can be PDS or PDSE, including the object module. The output of the bind step must be a PDSE. When COBOL object modules are bound (link-edited), they become program objects and must be stored in PDSE data sets.

Are there changes in compiler generated symbols between Enterprise COBOL V4 and V5 or V6?

Start of changeIf you use binder statements such as CHANGE to inspect or modify a V4 compiler generated symbol, you should use the AMBLIST utility to understand the symbols generated in COBOL V5 and V6 GOFF executables. For details, see AMBLIST in the MVS™ Program Management: User's Guide and Reference. End of change

Start of changeThe V5 and V6 compilers typically generate new CSECTs such as C_WSA and C_CODE. They also typically generate three related label symbols for each program, for example, Program P will result in label symbols P, P#C, and P#S. If you use a binder statement to modify any one of these symbols, you will need to modify all of them by using similar statements. End of change