Binder Manual (G06.24+, H06.03+)
Object File Structure
Binder Manual—528613-003
4-5
Data Blocks
Special block names are distinguished by having a pound sign (#) for at least one of
the characters in the name. The data block output listings display the special block
names. You do not normally use these names in Binder commands.
Common Data Blocks
You can reference a public or common data block from any module that declares it.
The name of a common data block must be unique.
Each programming language has its own terminology for common data blocks.
•
In FORTRAN, they are known as named or blank common blocks. (Blank common
is named BLANK^ by the compiler.)
•
In COBOL85, they are known as external records.
•
In TAL, they are known as named or private blocks. (TAL’s private block is treated
as named, using the module’s name. TAL variables declared before the first explicit
BLOCK declaration are put into an implicit block named #GLOBAL.)
•
C and Pascal do not have a construct for declaring a block containing several
variables. Instead, every public variable is automatically treated as a block
containing exactly one variable; the block is named after the variable it contains.
°
In C terminology, a public variable is described as an external, nonstatic
variable (which is a misnomer, because all nonlocal variables are statically
allocated).
°
In Pascal, a public variable is a variable that is explicitly exported from one
module and imported into others.
A common data block can be owned by several modules, which means that they all
attempt to specify the block’s initial values. Make sure that all owners consistently
specify the same initial values; otherwise, the results will be random. C and Pascal
modules can distinguish between importing a public block, and owning and exporting
the block. FORTRAN, TAL, and COBOL85 are unable to declare a public data block
without also claiming to be its owner.
FORTRAN subprograms do not have to agree on the size of a particular public data
block; Binder uses the largest of the specified sizes.
Own Data Blocks
You can reference a private or own data block only from the module or code block that
owns it. Its name need not be unique. If the name is not unique, you must fully qualify it
in Binder commands, by prefixing it with the module scope name or the fully qualified
routine name.
Note. Uninitialized data in extended data blocks is compressed out of the object file space.
The operating system restores the extended data space to its original space before it was
compressed when the file is run. This enhancement saves disk space for object files with
uninitialized extended data space.