View previous topic :: View next topic
|
Author |
Message |
jerryte
Active User
Joined: 29 Oct 2010 Posts: 202 Location: Toronto, ON, Canada
|
|
|
|
I want to gain a better understanding of compiled program object versus a linked load module. Is there an IBM redbook that explains these concepts and how to use them? I have an IBM manual on Program Management User Guide but it focuses more on the Binder tool rather then on the concepts. If someone can point me in the right direction then I would like to read up on this. Thanks
Some background - the current method I use is to compile a program and then link the load module with AUTOCALL. This creates problems if there are changes to called subroutines. I have to be careful for the order that these are compiled in order to get the latest version of each. |
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
Which compiler version and release? I'm assuming for now you are talking about Object decks which are the main output of the compiler, rather than Program Objects in a PDSE which are the "loadmodules" when using V5.0 or higher. |
|
Back to top |
|
|
jerryte
Active User
Joined: 29 Oct 2010 Posts: 202 Location: Toronto, ON, Canada
|
|
|
|
Bill Woodger wrote: |
Which compiler version and release? I'm assuming for now you are talking about Object decks which are the main output of the compiler, rather than Program Objects in a PDSE which are the "loadmodules" when using V5.0 or higher. |
What is the difference between a Program Object and a Load module? I am using COBOL version 4 on z/OS |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10873 Location: italy
|
|
|
|
You will find the differences here
z/OS MVS Program Management: User's Guide and Reference
SA23-1393-00 |
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
OK, you're 4, so put actual Program Objects to the side.
The compiler generates code. It does this on 80-byte fixed-length records. Because in the distant past, these would be physically punched on cards which would then be read by the linkage editor to make into the executable program.
These are "object decks" or "object programs".
With COBOL V5, you get Program Objects. Program Objects are also used in specific situations in V4.
Here's some random quote from many:
Quote: |
Partitioned data set extended (PDSE) load library data sets
Enterprise COBOL V5 executables are program objects that can only reside in PDSE data sets. This is not an entirely new requirement. Enterprise COBOL V4 used program objects and PDSE for long names, COBOL/Java interoperability, and DLL support.
If you are currently using PDS data sets for load libraries, you need to move to PDSE data set load libraries before running COBOL V5 programs. Otherwise, when you try to bind a COBOL V5 object program into a PDS dataset, the operation will fail with this error message:
IEW2606S 4B39 MODULE INCORPORATES VERSION 3 PROGRAM OBJECT FEATURES AND CANNOT BE SAVED IN LOAD MODULE FORMAT. |
So a PDSE load library containing Enterprise COBOL V5+ executables contains Program Objects, not Load Modules. COBOL V5+ executables cannot use a PDS, they cannot be Load Modules.
There is more to it than a change in name, but at the simplest level you can view it as just that. |
|
Back to top |
|
|
steve-myers
Active Member
Joined: 30 Nov 2013 Posts: 917 Location: The Universe
|
|
|
|
From a practical point of view a "program object" in a PDSE can use external names longer than 8 bytes.
You have all the advantages (automatic space reclamation when you delete a member) and disadvantages (poor performance relative to a PDS, greater space requirements) of a PDSE. |
|
Back to top |
|
|
|