Jump to content

GOFF

From Alfawiki
Adapted from the English Wikipedia article GOFF, available under CC BY-SA 4.0Updated 9 August 2025
GOFF (Generalized Object File Format)
Company typeFile format
IndustryComputer software
PredecessorIBM OS/360 Object File Format
Founded1995; 31 years ago (1995)
ProductsObject file format for MVS operating system
OwnerIBM

The GOFF (Generalized Object File Format) was introduced by IBM for the MVS operating system as a successor to the IBM OS/360 Object File Format, addressing the shortcomings of the earlier design.

Background

Initially developed in 1964 for the IBM System/360 mainframe, the IBM OS/360 Object File Format was also implemented by compatible platforms such as the Univac 90/60, 90/70, 90/80 and Fujitsu B2800 systems. Although enhancements were made to accommodate symbolic records and longer identifiers for procedures and functions, it lacked support for features essential to contemporary programming languages, including objects, properties, methods, Unicode, and virtual methods.

IBM created GOFF circa 1995 to resolve these limitations. Its first documented mention coincided with the release of the High Level Assembler. GOFF incorporates embedded debugging information through the Associated Data (ADATA) format but does not support legacy SYM records generated by the TEST option. While GOFF has largely replaced the OS/360 format, the original format remains in use where its limitations are acceptable.

Conventions

Within this article, "module" refers to any named entity or symbol representing code or data external to the current referencing scope. Examples include subroutines, functions, Fortran Common or Block Data segments, objects/classes, methods, properties, or any externally named routine.

The terms "assembler" (for translating assembly language into machine instructions) and "compile" (for processing high-level languages) are used interchangeably; thus, "compile"/"compiler" may substitute for "assemble"/"assembler" when appropriate.

Unless otherwise indicated as hexadecimal (base 16) using the notation X'...' with uppercase letters (e.g., X'15DEADBEEF'), numbers are expressed in decimal. A "byte" consists of 8 bits; characters typically occupy one byte in EBCDIC, whereas multi-byte encodings like Unicode require two or more bytes.

Requirements and restrictions

GOFF builds upon the OS/360 Object File Format by incorporating additional data necessary for application construction.

  • GOFF files may contain fixed-length or variable-length records.
  • Each record is confined within a single file system record; GOFF files do not function as streams.
  • Fixed-length records measure exactly 80 bytes; variable-length records have a minimum length of 56 bytes. Any unused bytes in fixed-length records must be zero-filled.
  • Software processing GOFF records should not presume knowledge of internal record structures; operating systems transparently handle fixed- or variable-length records. Record length information is external to the record itself.
  • Binary data is stored in big endian order (e.g., decimal 1 appears as X'01' in 8-bit form and X'0001' in 16-bit form).
  • Bit numbering proceeds from left to right, with bit 0 being the leftmost bit.
  • GOFF files deployed on Unix systems require fixed-length records.
  • Records may continue onto subsequent records without interruption by other record types.
  • Each GOFF object file starts with an HDR record and concludes with an END record, which includes a count of GOFF records (excluding physical file system records).
  • Multiple GOFF files can be generated per build by compilers or assemblers; each represents a distinct module beginning with HDR and ending with END.
  • Module and Class identifiers are case sensitive; for example, "exit" in C differs from "EXIT" in Fortran.
  • Several OS/360 conventions persist:
    • Characters default to the EBCDIC character set except for external names.
    • ESD items—including programs, subroutines, functions, and methods—are numbered sequentially starting at 1 without gaps.
    • All ESD items must be defined before any subsequent references occur.
    • Each ESD record contains exactly one ESD item, unlike the old format that allowed up to three per record.
    • RLD records (relocation dictionaries) can include multiple items and may span multiple records.
    • Reserved fields must be zeroed to ensure future compatibility.
    • The character set for external names is not strictly defined but supports double-byte Unicode names for modules. Certain IBM products restrict external name characters to specified EBCDIC ranges.
  • Two types of Class names exist: reserved and user-supplied (non-reserved), each limited to a maximum length of 16 characters.
  • Reserved Class names begin with a letter followed by an underscore and then 1–14 additional characters. Those starting with B_ are reserved by the binder; C_ classes designated as loadable pertain to IBM's Language Environment. Unmarked classes beginning with C_, X_, Y_, Z_ are general-purpose non-reserved classes. User-defined class names may include lowercase letters.
  • Class names are explicitly not considered external symbols.

During compilation, the binder refers to these classes when required:

B_ESD External Symbol Dictionary Class
B_TEXT Text Class
B_RLD Relocation Dictionary Class
B_SYM Internal Symbol Table Class
B_IDRL Language-Translator Identification Data Class
B_PRV Pseudo-Register Class
B_IDRU User-specified Identification Data Class

The following class names are reserved by the binder and inaccessible to user programs:

B_IDRB Binder Data Information
B_IDRZ SUPER-Zap Data Information
B_IMPEXP Import-Export Table
B_LIT Loading Information Table
B_MAP Mapping Data
  • The SYM symbolic table found in the OS/360 Object File format is not present in GOFF; instead, symbolic information is conveyed through ADATA records embedded within TXT records.

Size Restriction

As specified in the z/OS XL C/C++ User's Guide, a GOFF object cannot exceed a size of 1 gigabyte.

Record Categories

GOFF object files incorporate six distinct record categories, some of which are newly introduced or altered from the traditional OS/360 format:

  • The HDR record (a new addition) initiates the file and establishes the header information.
  • ESD records identify main programs, subroutines, functions, dummy sections, Fortran Common blocks, methods, properties, and all callable modules or routines. These records appear before any references to ESD symbols and cover external routines such as exit() in C or CALL EXIT in Fortran.
  • TXT records hold executable machine code or data and now also encompass Identification Data (IDR), Associated Data (ADATA), along with supplementary module-specific details.
  • RLD records manage address relocation for both internal references and external symbols, allowing loaders or linkage editors to correctly adjust addresses.
  • The LEN record (recently introduced) conveys length-related information.
  • END records signify a module’s conclusion and may optionally define the program entry point; these must be positioned last.

Structure

GOFF records can be either fixed-length or variable-length; variable-length records have a minimum length of 56 characters. Apart from module and class names, all characters are encoded using the EBCDIC character set. On Unix platforms, fixed-length 80-byte records are required and shorter records are padded with zeros. Each GOFF record begins with byte X'03' to differentiate it from OS/360 format files (which start with X'02') and commands (which begin at least with space X'40'). The subsequent two bytes specify record type, continuation status, and version—collectively known as the PTV field.

PTV

The PTV field comprises the first three bytes of every GOFF record:

PTV Field
Byte Bits Value Description
0 All 03 Denotes the beginning of a GOFF record
1 0-3 0 ESD (External Symbol) record
1 TXT (Text) record
2 RLD (Relocation) record
3 LEN (Length) record
4 END (End) record
X'5'-X'E' Reserved for future use
X'F' HDR (Header) record
4-5 Reserved fields
6-7 00 Initial record not continued; typical for variable-length GOFF records
01 Initial record continued onto next record
10 Continuation record not followed by another continuation
11 Continuation record followed by another continuation record
2 All bits 00 Version number of object file format; only X'00' is valid currently; others reserved

HDR

The HDR record is required and must appear as the first record in the file.

HDR Record Layout
Byte(s) Length Field Name Expected Value Description/Purpose
0-2 3 bytes PTV X'03F000' Mandatory fixed value; HDR cannot be continued onto subsequent records
3-47 45 bytes 0 (zero) Reserved space; must be zeroed out
48-51 4 bytes Architecture Level Binary 0 or 1 Defines GOFF Architecture level; only values 0 and 1 permitted
52-53 2 bytes Module Properties Size Binary value Specifies length of Module Properties field
54-59 6 bytes 0 (zero) Reserved; must be zero-filled
60 onward (variable) Module Properties

(Optional list of module properties)


ESD

An ESD entry establishes a public identifier for modules, procedures, functions, properties, methods, or entry points. This record must precede any usage of the referenced identifier.

rowspan=12 |41 rowspan=12 |1 colspan=4 |Flags rowspan=2 |Fill Present rowspan=2 |Bit 0 rowspan=2 |Mangled rowspan=2 |Bit 1 rowspan=2 |Renameable rowspan=2 |Bit 2 rowspan=2 |Removable Class rowspan=2 |Bit 3 rowspan=2 |Reserve Extra Space rowspan=2 |Bit 7
ESD Record
Byte(s) Size Field Value (or bits) Description
0-2 3 PTV X'030000' ESD record without continuation
X'030100' ESD record continued in following record
3 1 Symbol Type 00 SD - Section Definition; specifies main program, subroutine, function, or Fortran Common within this file; Parent ESDID = 0.
01 ED - External Definition; identifies called procedures/functions; Parent ESDID non-zero.
02 LD - Label Definition; creates aliases or exposes segments as distinct routines.
03 PR - Part Reference or Pseudo Register; Parent ESDID non-zero.
04 ER/WX - External/Weak External Reference; WX permits optional foreign routines.
4-7 4 ESDID Binary Unique identifier starting at 1, incremented by 1 for each entry.
8-11 4 Parent ESDID binary ESDID of defining entity; zero if none.
12-15 4 0 Reserved
16-19 4 Offset Binary Address offset within Parent for LD/ED types; zero otherwise.
20-23 4 0 Reserved
24-27 4 Length Binary Length for ED/PR entries; zero otherwise. -1 if deferred.
28-31 4 Extended Attribute ESDID Binary ESDID referencing extended attributes for ED/LD entries; zero if none.
32-35 4 Extended Attribute Offset Binary Address of extended attributes linked to previous field; zero if none.
36-39 4 0 Reserved
40 1 Name Space ID
0 Reserved for Program Management Binder
1 Standard Name
2 Pseudo Register
3 Parts (external entries containing initialized static data)
0 No Fill Byte Present
1 Fill Byte Included (valid only for ED types)
0 Symbol is not mangled
1 Symbol may be mangled
0 Cannot be renamed (mapped flag in XOBJ)
1 Symbol supports renaming (compatible with Language Environment renaming)
0 (Default) Not Removable
1 Class may be removed without impacting functionality (ED types only)
Bits 4-6 Reserved
0 No extra space reserved
1 Reserve 16 bytes at class start (MRG class ED type only)
42 1 Fill Value Value of fill byte if Fill Present flag is set
43 1 0 Reserved
44-47 4 Associated Data Binary Environment or static area ID for LD entries using XLINK
48-51 4 Priority Binary Sort order for PR entries
52-59 8 0 Reserved
60-69 10 Behavioral Attributes Behavior attributes (refer to Behavior Attributes table)
70-71 2 Name Length Binary Length of the item's name; cannot be zero
72-

Name

Text

Item name truncated after trailing spaces; must contain at least one character. Case sensitive. Private Code is a single blank.

REM

0

Trailer: unused space zero-filled if fixed-length records require it; unnecessary in variable-length records.


Continuation

For fixed-length records that require continuation, the following ESD continuation records are utilized:

ESD Continuation Record
Byte(s) Size Field Value Description
0-2 3 PTV X'030200' ESD continuation record indicating no further continuations
X'030300' ESD continuation record continued onto the subsequent record
3- Name Text Remaining name if this is the last record, or next 77 bytes if continuation follows
REM 0 Padding bytes for fixed-length records shorter than provided data; filled with zeros. Not applicable to variable-length records.

Behavior Attributes

Behavioral Attributes Field (bytes 60-69 of ESD record)
Offset Size (Bytes) Bits Field Value Description
0 1 Addressing Properties Defines addressing mode for this external symbol; also referenced by AMODE in the END record.
00 AMODE unspecified (defaults to AMODE (24))
01 AMODE(24)
02 AMODE(31)
03 AMODE(ANY) (24 or 31)
04 AMODE(64)
10 AMODE(MIN) (smallest AMODE among all modules)
1 1 Residence Properties Residence mode of external symbol
00 RMODE unspecified (defaults to RMODE (24))
01 RMODE(24)
03 RMODE(31) (Equivalent to RMODE(ANY))
04 RMODE(64)
2 1 0-3 (4) Text Record Style Specifies text style for this class (applicable to ED and PR types only); all text must maintain uniform style.
0000 Byte-oriented format
0001 Structured data (Binder Oriented)
0010 Structured data (user-defined)
4-7 (4) Binding Algorithm Method of data binding:
0000 Concatenate all items sequentially
0001 Merge identically named items at identical locations using largest size and strictest alignment; differently named items concatenated. Standard for CM and PR types.
3 1 0-2 (3) Tasking Behavior Indicates module reentrancy and reusability:
000 Unspecified
001 Neither Reusable nor Reentrant (NON-REUS)
010 Serially Reusable (REUS)
011 Reentrant (RENT), which implies REUS as well.

0

Reserved
4 Read Only Flag: 0 Not Read Only
1 Read Only
5-7 (3) Executable Flag: 000 Not Specified
001 Not Executable (Data only)
010 Executable (Code or Code and data)
4 1

0-1 (2)

0

Reserved

2-3 (2)

Duplicate Symbol Severity (PR type only): error level triggered by duplicates:

00

Severity determined by Binder

01

Minimum level 4 (Warning)

10

Minimum level 8 (Error)

11

Reserved

4-7 (4)

Binding Strength: weak references do not search other libraries; strong references do. Strong definitions resolve any references; this is the default setting.

0000

Strong reference

0001

Weak reference

rowspan=13 style="text-align:center"|5

rowspan=13 style="text-align:center"|1

rowspan=5 |0-1 (2)

Class Loading Behavior: defines how classes are loaded during OS LOAD requests.

00

LOAD - Load this class

01

DEFERRED LOAD - Likely used, should be loaded

10

NOLOAD - Do not load this class

11

Reserved

2

Common Flag: if set to 1, treat as "old" CM-type COMMON where multiple references set size to largest area used by any reference; SD type with identical name preserves size and text. Only B_TEXT supported.

3

Direct vs. Indirect Reference: 0 = Direct References for Binder; 1 = linkage descriptor for PR type or XPLINK linkage descriptor for ER type.

4-7 (4)

Binding Scope: defines the visibility scope of the symbol.

0000

Unspecified

0001

Section scope (“local”)

0010

Module scope (“global”)

0011

Library scope

0100

Import-Export scope

12 style="text-align:center"|6

12 style="text-align:center"|1

Reserved bytes

2

Linkage Type for ER, LD, PD, PR types:

0

Standard O/S linkage (default)

1

XPLINK Linkage

3-7 (5)

Alignment: implied alignment of item. Applies to ED and PR types except PR cannot use page alignment.

00000

Byte alignment

00001

Halfword alignment

00010

Fullword alignment

00011

Doubleword alignment

00100

Quadword alignment

00101

4KB page alignment


ADATA records

ADATA (short for "associated data") records deliver supplementary symbol details about a module, serving as a replacement for the earlier SYM records found in the 360 object file format. The process to generate an ADATA record involves the following steps:

  • Begin by creating an ESD record of type ED corresponding to the relevant class name
  • Initialize all fields within the Behavioral Attributes record to zero except for:
    • Class Loading (bits 0-1 of byte 5) set to X'10'
    • Binding Algorithm assigned a value of 0
    • Text Record Style (bits 0-3 of byte 2) set to X'0010'
    • Optionally enable Read Only (bit 4 of byte 3) and Not Executable (bits 5-7 of byte 3) if applicable
  • For each ADATA element, produce a TXT record containing:
    • Element ESDID: the corresponding ADATA ED record identifier
    • Offset: always zero
    • Data Length: length of the ADATA record
    • Data: the actual content of the ADATA record

ADATA records are appended sequentially to the class in the order they are declared.

IBM utilities convert class names for ADATA records by translating their binary values into text strings prefixed with C_ADATA; for instance, X'0033' becomes C_ADATA0033.

ADATA Record Categories
Type Range Description
X'0000' - X'7FFF' Translator-related records, with certain codes up to X'0130' utilized by IBM language translators such as Assembler, COBOL, and PL/I
X'8000' - X'8FFF' Records pertaining to Program Management
X'9000' - X'DFFF' Reserved for future use
X'E000' - X'EFFF' Allocated for non-IBM compilers and assemblers
X'F000' - X'FFFF' Designated for User Records; IBM does not utilize these values

TXT

TXT records define machine instructions and data placement at precise addresses within a module. The length field accounts for any continuation records that follow.

TXT Record Format
Byte(s) Size Field Name Bits Value Function
0-2 3 bytes PTV X'031000' Indicates a TXT record without continuation
X'031100' Indicates TXT record continues onto subsequent record
3 1 byte Bits 0-3 (4 bits) Reserved for future use

Style field

Bits 4-7 (4 bits) All other values reserved except below:

0000 (binary)

Represents Byte Oriented Data

0001 (binary)

Structured Data (currently limited to 19-byte IDR fields; refer to IDR Data Table)

0010 (binary)

Unstructured Data type

Bits 4-7 (4 bits)

Element ESDID in binary form

Identifies ESDID associated with this data segment

Bits 8-11 (4 bits)

Reserved bits with no current function

Bits 12-15 (4 bits)

Offset (binary address)

Specifies address offset within ESDID where data is placed; generally zero for structured or unstructured data.

Bits 16-19 (4 bits)

True length of text field in binary

Must be zero if Text Encoding equals 0; otherwise reflects full size post decompression or unpacking.

Bits 20-21 (2 bits)

Text Encoding mode in binary

Zero indicates no decoding required; nonzero signals decoding/unpacking needed—see Compression Table

Bits 22-23 (2 bits)

Data Length in binary bytes

Total byte count of data on this record; cannot be zero. May occasionally be imprecise as noted in Caution.
24 and onwards

Data field

Contains machine code and/or data to be inserted. IDR data follows special guidelines; see IDR Data Table

REM (remainder bytes)

Absent in variable-length records; in fixed-length records, any remaining bytes must be zeros.


Warning

The byte length indicated in positions 22-23, representing an unsigned value, might be inaccurate. Comments from the LLVM Compiler suite's GOFF generator reveal that despite the official specification, the maximum byte count for an RLD or TXT record and its continuations is constrained by a SIGNED 16-bit integer. Consequently, each card's permissible attachment size is capped at 32K minus 1 byte.

Continuation

TXT Continuation Record
Byte(s) Size Field Bits Value Description
0-2 3 PTV X'031200' Continuation Record without subsequent continuations
X'031300' Continuation Record continued in the following record
3- Data carried over from the preceding record
REM If remainder surpasses data length; filled with zeros

Compression Table

A compression table is employed when bytes 20-21 of the TXT record contain a nonzero value. The R parameter specifies how many times a sequence repeats, while L defines the length of the text segment repeated "R" times. This mechanism facilitates efficient initialization of tables or arrays by representing repeated data as a count and corresponding string.

Compression Table
Byte(s) Size Field Value Description
Applicable if bytes 20-21 equal 0001
0-1 2 R Repeat Count (unsigned integer greater than zero) Indicates how often to duplicate string starting at byte 4
2-3 2 L Binary length (unsigned integer greater than zero) Length of string beginning at byte 4
4- String String of length "L" repeated "R" times
Other values in bytes 20-21 are reserved for future use

IDR Data Table

From byte 24 onward in the TXT record, the IDR Table specifies the compiler or assembler and its version responsible for producing the object file.

IDR Field
Byte(s) Size Field Value Description
0 1 x'00' Reserved for future use
1 1 Type Indicates IDR field type (Primary and Secondary identification correspond to first and second fields on END card in former OS/360 Object Module File Format)
00 Primary Identification; Legacy IDR format 1
01 Secondary Identification; Legacy IDR format 1
02 Extended Identification; IDR format 2
03 Primary Identification; IDR format 3
04 Secondary Identification; IDR format 3
2-3 2 Length Binary number Length of IDR data (unsigned integer greater than zero)
4+ IDR data formatted according to byte 1 specification; refer to IDR Format table for details

IDR Format 1

Contrary to typical numeric values in a GOFF file, the fields "version," "release," and "trans_date" are stored as text characters rather than binary numbers.

Format 1 (legacy format)
Byte(s) Size Field Value Description
0-9 10 Translator Identifier string text Denotes assembler or compiler identity; IBM calls this the "PID value" or "Program ID," such as "IKFCBL00" for Cobol Compiler on OS/VS1
10-11 2 Version Number string digits Assembler or compiler version (range: 0–99)
12-13 2 Release Number string digits (Sub-version) Release number within version (range: 0–99)
14-18 5 Trans_Date string digits (YYDDD) (Compilation date formatted as two-digit year plus three-digit day of year; years between 01–65 interpreted as 21st century, others as 20th century)


IDR Format 2

This format is generally produced by the binder rather than by compilers or assemblers.

Format 2
Byte(s) Size Field Value Description
0-3 4 Date Packed decimal YYYYDDDF Assembly or compilation date of the module, including year and day of the year
4-5 2 Data_Length Binary value Length of the subsequent field; unsigned and nonzero
6-85 80 IDR_Data Format of data is proprietary and not publicly disclosed

IDR Format 3

All components consist solely of character data; no binary values are involved.

Format 3
Byte(s) Size Field Value Description
0-9 10 Translator Identifier of compiler or assembler (analogous to Translator field in Format 1)
10-11 2 Version 00 to 99 Version number of assembler or compiler
12-13 2 Release 00 to 99 Release iteration within the version
14-20 7 Compile_Date YYYYDDD Complete 4-digit year plus day of year when compiled (similar to Trans_Date in Format 1)
21-29 9 Compile_Time HHMMSSTTT Compilation time including hour, minute, second, and millisecond

RLD

Relocation Directory (RLD) entries indicate addresses that require relocation, covering both internal references and connections to external modules.

rowspan=2 |0-2 rowspan=2 |3 rowspan=2 |PTV 3 1 4-5 2 Length Binary number Size of relocation information; unsigned and greater than zero 6- REM colspan=3 | Padding with zeros if record length exceeds actual data length (not applicable for variable-length records)
Relocation Directory
Byte(s) Size Field Value Description
'X'032000' 'Record does not continue'
'X'032100' 'Record continues in next entry'
Reserved for future use
Relocation_Data Details for relocation; refer to Relocation Data table for specifics


Relocation Data

Relocation Data Item
Byte(s) Size Field Value Description
0-5 6 Flags Flags that describe this entry; see Flags table for definitions
6-7 2 Reserved fields
8-11 4 R_Pointer ESDID of target module (type ED or ER) for relocation reference Address considered "distant," potentially in another module. Omitted if bit 0 in byte 0 of Flags equals 1.
12-15[A] 4 P_Pointer ESDID of the module requiring relocation update Module requesting modification of its distant reference. Omitted if bit 1 in byte 0 of Flags equals 1.
16-19[B] 4 Offset Location within P_Pointer module where address adjustment is applied. Address subject to relocation. Omitted if bit 2 in byte 0 of Flags equals 1.
20-23[C] 4 Reserved fields for future use.
24-27[C] 4

[A] When R_Pointer is omitted (bit 0 in byte 0 of Flags is set), this field starts at bytes 8-11.
[B] If either R_Pointer or P_Pointer is omitted (bit 1 in byte 0 of Flags is set), the Offset field shifts accordingly.
[C] Reserved fields adjust position based on omitted fields as indicated by flags.

For instance, if a C program module named "Basura" invokes the function "exit," then R_Pointer corresponds to the ESDID for "exit," while P_Pointer represents the ESDID for "Basura." When addressing occurs within the same module, both pointers are identical.

Flags

RLD Item Flags
Byte(s) Size Field Bits Description
0 1 Same_R_ID 0 Set to 1 if R_Pointer matches the previous entry; value is omitted in this case.
Same_P_ID 1 Set to 1 if P_Pointer matches the previous entry; value omitted accordingly.
Same_Offset 2 Set to 1 when Offset equals the preceding entry; value excluded if true.
3-4 Reserved

5

Reserved

Offset_length

6

0 denotes a 4-byte length

Addressing mode sensitivity

7

0 indicates no sensitivity; 1 means high bits are set according to R mode addressing of R_Pointer (applicable for V-type addresses)

Byte(s) Size Field Group Description / Values
1 1 R_Pointer_Indicators
0-3
Byte(s) Size Field Group / Field Name / Bits / Description
2 1

LEN

LEN records specify the module length when unknown during ESD record creation, such as with single-pass compilers.

Field Offset Size Description
PTV 0-2 3 Record Type X'033000'
3-5 3 Reserved space
Length 6-7 2 Length of subsequent items; must not be zero
Elements 8- Element length information; refer to Elements table below
REM Trailing data for fixed-length records, must contain binary zeros; omitted for variable-length records.

Elements

Entries with deferred lengths cannot be split or continued.

Field Offset Size Description
ESDID 0-3 4 ESDID corresponding to the element this length applies to
4-7 4 Reserved area
Length 8-11 4 Length of the referenced element/item

END

The END record concludes a module and must appear last. An 'Entry Point' defines a starting execution address different from the module start, often due to preceding non-executable data or external module invocations such as runtime libraries.

Field Offset Size Bits Description
PTV 0-2 3 X'034000' - No continuation follows
X'034100' - Continued in subsequent record
3 0-5 6

Reserved bits

Flags 6-7 2

Entry point specifications:

00 - No entry point declared; all related fields invalid

01 - Entry point indicated by ESDID

10 - Entry point indicated by name

11 - Reserved for future use

AMODE 4 1

Addressing Mode of entry point, as defined under Behavior Attributes in ESD record.

5-7 3

Reserved bits

Record Count 8-11 4

Count of GOFF logical records within the module (excluding continuation records)

ESDID 12-15 4

ESDID if entry point is specified by ESDID; zero if specified by name

16-19 4

Reserved bytes

Offset 20-23 4

Entry point address offset; not allowed for external (ER) entry points

Name Length 24-25 2

Length of entry point name; zero if entry point specified by ESDID

Name 26-

External symbol name of entry point; binary zeros if specified by ESDID. For continued records, initial 54 characters are provided. This is the only textual field.

REM

Trailing data at record end; binary zeros for fixed-length records; omitted for variable-length.


Continuation

When the entry-point name in a fixed-length END record surpasses 54 bytes (or 77 bytes if the record extends further), a continuation record is implemented.

Field Offset Size Description
PTV 0-2 3 X'034200' - Continuation record not extended further
X'034300' - Continuation record extends to the following record
Name 3- Remaining segment of the entry-point name; if extended, up to the next 77 characters of the name
REM Trailing portion for fixed-length records (filled with binary zeroes); not present in variable-length records