Parameters Related to the GET Function
If the DESERV exit gets control for a DESERV GET function invocation, DESX_DESP_PTR points to the DESERV parameter list. If the DESP field DESP_FUNC=X'01' (DESP_FUNC_GET), this indicates a GET function parameter list. See Table 1 for the DESP structure for fields pertaining to a DESERV GET invocation.
DESERV GET will return information on selected members. This information is returned in a DESB structure. The DESB is mapped by the DESB DSECT in the IGWDES macro. If the storage for the DESB is provided by the DESERV GET, the DESP_AREA_PTR field contains the address of this storage. Alternatively the caller may request that DESERV GET not obtain the storage for the DESB. In this case the DESP_AREAPTR_PTR field contains the address of a 4 byte area into which DESERV GET will return the address of a DESB. The DESB will be obtained in the subpool identified by DESP_SUBPOOL (or default to subpool zero). The flag DESP_SUBPOOL_FLG indicates whether the subpool was specified explicitly by the DESERV GET caller.
A DESERV GET invocation identifies the members to be searched for by a name list, a PDS format directory entry, or an SMDE. The DESP field DESP_GETTYPE defines the get type. If the get type is a PDSDE (the member to be searched for is defined by a PDS format directory entry), the DESP_PDSDE_PTR points to a directory entry as returned by the BLDL macro. The PDS2 DSECT in the IHAPDS macro maps this structure. The function of DESERV GET for a PDSDE get type depends on the type of library identified by the concatenation number in the PDS style directory entry. If the concatenation number identifies a PDS, the GET function is simply to convert the PDS style directory entry into a SMDE. If the concatenation number identifies a PDSE, the GET function is to connect to the member identified by the PDS2TTRP field, and to return the appropriate SMDE. In either case the SMDE is retuned (if in the PDSE case the member actually exists) in the data portion of the output buffer (DESB, mapped below).
If the get type is name list, the DESL area points to the names to be searched for. The DESP_NAME_LIST_PTR points to the DESL and the DESL DSECT in the IGWDES macro maps it. A DESL is an array consisting of the number of entries the DESP field DESP_NAME_LIST2 defines. The DESL parameter list is shown in Table 2.
If the get type is SMDE, the DESP_SMDE_PTR points to a system-managed directory entry (SMDE) as returned by DESERV GET. DESERV GET will cause a connection to the member identified by the SMDE. DESERV GET will return a copy of the SMDE in the output DESB. The SMDE returned will of course have updated connect token and connect id fields.
There are two input flags which control DESERV GET's view of the PDS or PDSE to be searched. If the DESP_C370LIB flag is on, a PDS may be viewed as a C370LIB. This means that if the PDS has a special member named @@DC370$, this member is treated as the "real" directory for the PDS. If the DESP_SYSTEM_DCB is on, this indicates that the caller (who must be authorized) has indicated that this DCB is "owned by the system" and is not on any DEB chain, therefore DEBCHK should not be done.
Offset | Length or Bit Pattern | Name | Description |
---|---|---|---|
00 (X'00') | 104 | DESP | DE Services parameter list (structure) |
00 (X'00') | 16 | DESP_HEADER | (character) 'IGWDESP' |
00 (X'00') | 8 | DESP_ID | Eyecatcher IGWDESP (character) |
08 (X'08') | 24 | DESP_LEN | Length of DESP (signed) |
X'04' | DESP_LEN_IV | Constant to be used with DESP_LEN | |
12 (X'0C') | 1 | DESP_LEV | Control block level (character) |
X'01' | DESP_LEV_IV | Constant to be used with DESP_LEV | |
13 (X'0D') | 3 | - | Reserved |
16 (X'10') | 1 | DESP_FUNC | Function type (unsigned) |
X'07' | DESP_FUNC_DELETE | Function is DELETE | |
X'08' | DESP_FUNC_RENAME | Function is RENAME | |
X'09' | DESP_FUNC_UPDATE | Function is UPDATE | |
X'04' | DESP_FUNC_PUT | Function is PUT | |
X'01' | DESP_FUNC_GET | Function is GET | |
X'00' | DESP_FUNC_OMITTED | Function is omitted | |
17 (X'11') | 3 | - | Reserved |
20 (X'14') | 4 | - | Reserved |
24 (X'18') | 12 | DESP_DATA | Function data (character) |
24 (X'18') | 2 | DESP_FLAGS | Flags (bitstring) |
1... .... | DESP_BYPASS_LLA | 0=USE LLA, 1=BYPASS LLA | |
.x.. .... | - | Reserved | |
..1. .... | DESP_SUBPOOL_FLG | 0=SUBPOOL not specified, 1=SUBPOOL specified | |
...1 .... | DESP_C370LIB | 1=treat PDSs as C370LIB if @@DC370$ member exists | |
.... xx.. | - | Reserved | |
.... ..1. | DESP_SYSTEM_DCB | 1=treat DCB as a system DCB | |
26 (X'1A') | 1 | - | Reserved |
27 (X'1B') | 1 | - | Reserved |
28 (X'1C') | 1 | DESP_LIBTYPE | Indicates whether a DCB or DEB is input =X'02', DEB input=X'01') (unsigned) |
X'02' | DESP_LIBTYPE_DCB | Constant to be used with DESP_LIBTYPE | |
X'01' | DESP_LIBTYPE_DEB | Constant to be used with DESP_LIBTYPE | |
X'00' | DESP_LIBTYPE_OMITTED | Constant to be used with DESP_LIBTYPE | |
29 (X'1D') | 1 | DESP_GETTYPE | Indicates whether Name List or PDSDE is input. (NAME_LIST input=(X'01', PDSDE input=X'02') (unsigned) |
X'03' | DESP_GETTYPE_SMDE | Constant to be used with DESP_GETTYPE | |
X'02' | DESP_GETTYPE_PDSDE | Constant to be used with DESP_GETTYPE | |
X'01' | DESP_GETTYPE_NAME_LIST | Constant to be used with DESP_GETTYPE | |
X'00' | DESP_GETTYPE_OMITTED | Constant to be used with DESP_GETTYPE | |
30 (X'1E') | 1 | - | Reserved |
31 (X'1F') | 1 | - | Reserved |
32 (X'20') | 1 | - | Reserved |
33 (X'21') | 1 | DESP_SUBPOOL | Subpool number for getting DESB. |
34 (X'22') | 1 | DESP_CONN_INTENT | Connect intent (unsigned) |
X'03' | DESP_CONN_INTENT_INPUT | INPUT | |
X'02' | DESP_CONN_INTENT_EXEC | EXEC | |
X'01' | DESP_CONN_INTENT_HOLD | HOLD | |
X'00' | DESP_CONN_INTENT_NONE | None | |
35 (X'23') | 1 | - | Reserved |
36 (X'24') | 4 | DESP_DCB_PTR | DCB address, valid if DESP_LIBTYPE=X'02' (address) |
40 (X'28') | 4 | DESP_DEB_PTR | DEB address, valid if DESP_LIBTYPE=X'01' (address) |
44 (X'2C') | 4 | DESP_CONN_ID_PTR | Connect identifier address |
48 (X'30') | 4 | DESP_AREAPTR_PTR | Address of output field for buffer address |
52 (X'34') | 4 | DESP_AREA_PTR | Buffer address |
56 (X'38') | 4 | DESP_AREA2 | Buffer length (unsigned) |
60 (X'3C') | 4 | - | Reserved |
64 (X'40') | 4 | - | Reserved |
68 (X'44') | 4 | DESP_ENTRY_GAP | Entry gap size (signed) |
72 (X'48') | 4 | - | Reserved |
76 (X'4C') | 4 | - | Reserved |
80 (X'50') | 4 | DESP_NAME_LIST_PTR | Name list address, valid if DESP_GETTYPE=X'01' (address) |
84 (X'54') | 4 | DESP_NAME_LIST2 | Input list number of entries, valid if DESP_GETTYPE=X'01' (unsigned) |
88 (X'58') | 4 | - | Reserved |
92 (X'5C') | 4 | DESP_PDSDE_PTR | BLDL directory entry address, valid if DESP_GETTYPE=X'02' (address) |
92 (X'5C') | 4 | DESP_SMDE_PTR | SMDE directory entry address, valid if DESP_GETTYPE=X'03' (address) |
96 (X'60') | 4 | - | Reserved |
100 (X'64') | 4 | - | Reserved |
Offset | Length or Bit Pattern | Name | Description |
---|---|---|---|
00 (X'00') | 16 | DESL | Name list (structure) |
00 (X'00') | 16 | DESL_ENTRY | Name list entry (character) |
00 (X'00') | 1 | DESL_FLAGS | Flags (unsigned) |
1... .... | DESL_MODULE_BUFFERED_ LLA | Module is staged by LLA | |
1 (X'1') | 1 | DESL_CODE | Result code (New name exists=X'03', Error=X'02', Not found or not processed=X'01', Found=X'00') (unsigned) |
X'03' | DESL_CODE_NEWNAME_ EXISTS | For func=rename, indicates a new name already existed in the PDSE. | |
X'02' | DESL_CODE_ERROR | An unexpected error has occurred. The DESL_ERRCODE field is set to a DESRF value | |
X'01' | DESL_CODE_NOTFOUND | Entry not found or entry not processed. If func=rename, old name was not found. | |
X'00' | DESL_CODE_SUCC | Entry successfully processed | |
2 (X'2') | 2 | DESL_ERRCODE | Error reason code (low order halfword of DESERV reason code if error) (unsigned) |
4 (X'4') | 4 | - | Reserved |
08 (X'08') | 4 | DESL_SMDE_PTR | Pointer to SMDE within DESB. Output for GET function, input for UPDATE function (address) |
08 (X'08') | 4 | DESL_NEW_NAME_PTR | Pointer to new name (DESN) descriptor for RENAME function (address) |
12 (X'0C') | 4 | DESL_NAME_PTR | Pointer to name (DESN) descriptor for GET and DELETE functions (address) |
12 (X'0C') | 4 | DESL_OLD_NAME_PTR | Pointer to old name (DESN) descriptor for RENAME function (address) |
The DESERV GET caller will have built the DESL to point to variable length names. The DESN DSECT maps these names in the IGWDES macro. See Table 3 for the DESN parameter list.
Offset | Length or Bit Pattern | Name | Description |
---|---|---|---|
00 (X'00') | variable | DESN | Name record (structure) |
00 (X'00') | 2 | DESN_LEN | Length of name that follows (unsigned) |
2 (X'02') | variable | DESN_VAL | Name data (character) |
The DESP_CONN_INTENT field of the DESP indicates the connection intent requested by the caller. The connection intent only has an effect if the name is found in a PDSE. If the connection intent is DESP_CONN_INTENT_HOLD (X'01'), the effect is similar to a BLDL invocation (because the member is connected for HOLD which is not sufficient to read the member). If the connection intent is DESP_CONN_EXEC (X'02') or DESP_CONN_INTENT_INPUT (X'03'), the effect is similar to a FIND invocation (because the member is connected and sufficient control blocks are built so that the member can be read). The GET function does not currently support a connect intent of NONE.
The output from DESERV GET consists of flags and error codes in the DESL (if the get type is name list) as well as an SMDE (system managed directory entry) pointer. For a gettype of name list, the SMDE is pointed to by the DESL_SMDE_PTR field. For a gettype of PDSDE, the SMDE is in the DESB at the label DESB_DATA. The SMDE is mapped by the SMDE DSECT in the IGWSMDE macro and the PMAR DSECT in the IEWPMAR macro. The SMDE resides in the output buffer as provided by the caller of DESERV GET. The output buffer is mapped by the DESP DSECT of the IGWDES macro. The DESB structure is shown in Table 4.
The basic SMDE format is shown in Table 5.
Offset | Length or Bit Pattern | Name | Description |
---|---|---|---|
00 (X'00') | variable | DESB | DEServ buffer header (structure) |
00 (X'00') | 40 | DESB_FIXED | (character) |
00 (X'00') | 16 | DESB_HEADER | (character) |
00 (X'00') | 8 | DESB_ID | Eyecatcher - IGWDESB (character) |
08 (X'08') | 4 | DESB_LEN | Length of buffer (signed) |
12 (X'0C') | 1 | DESB_LEV | Control block level (character) |
X'01' | DESB_LEV_IV | Constant to be used with DESB_LEV | |
13 (X'0D') | 3 | - | Reserved |
16 (X'10') | 4 | DESB_NEXT | Next buffer pointer (address) |
20 (X'14') | 4 | - | Reserved |
24 (X'18') | 4 | DESB_COUNT | Count of entries in this buffer (unsigned) |
28 (X'1C') | 4 | DESB_AVAIL | Start of free space in buffer (address) |
32 (X'20') | 1 | - | Reserved |
33 (X'21') | 1 | DESB_SUBPOOL | Subpool number (unsigned) |
34 (X'22') | 2 | DESB_GAP_LEN | Length of user-requested gap (unsigned) |
36 (X'24') | 4 | - | Reserved |
40 (X'28') | variable | DESB_DATA | Start of data area (character) |
Offset | Length or Bit Pattern | Name | Description |
---|---|---|---|
00 (X'00') | variable | SMDE | Member directory entry (structure) |
00 (X'00') | 44 | SMDE_BASIC | Start of basic section (character) |
00 (X'00') | 16 | SMDE_HDR | Header (character) |
00 (X'00') | 8 | SMDE_ID | Eyecatcher (character) |
08 (X'08') | 4 | SMDE_LEN | Length of control block. This is the sum of the sizes of the SMDE sections and the size of the user data. (unsigned) |
12 (X'0C') | 1 | SMDE_LVL | SMDE version number (unsigned) |
X'01' | SMDE_LVL_VAL | Constant to be used with SMDE_LVL | |
13 (X'0D') | 3 | - | Reserved |
16 (X'10') | 1 | SMDE_LIBTYPE | Source library type. Possible values are declared below with names like SMDE_LIBTYPE_XXX. (unsigned) |
X'03' | SMDE_C370LIB | Constant to be used with SMDE_LIBTYPE | |
X'02' | SMDE_LIBTYPE_HFS | Constant to be used with SMDE_LIBTYPE | |
X'01' | SMDE_LIBTYPE_PDSE | Constant to be used with SMDE_LIBTYPE | |
X'00' | SMDE_LIBTYPE_PDS | Constant to be used with SMDE_LIBTYPE | |
17 (X'11') | 1 | SMDE_FLAG | Flag byte (bitstring) |
1... .... | SMDE_FLAG_ALIAS | Entry is an alias | |
.1.. .... | SMDE_FLAG LMOD | Member is a program | |
..xx xxxx | * | Reserved | |
18 (X'12') | 2 | - | Reserved, must be zero |
20 (X'14') | 5 | - | Extended MLTK (character) |
20 (X'14') | 1 | - | Reserved, must be zero |
21 (X'15') | 4 | SMDE_MLTK | MLT and concatenation number (character) |
21 (X'15') | 3 | SMDE_MLT | MLT of member - zero if HFS (character) |
24 (X'18') | 1 | SMDE_CNCT | Concatenation number (unsigned) |
25 (X'19') | 1 | SMDE_LIBF | Library flag - Z-byte (unsigned) |
X'02' | SMDE_LIBF_TASKLIB | Constant to be used with SMDE_LIBF | |
X'01' | SMDE_LIBF_LINKLIB | Constant to be used with SMDE_LIBF | |
X'00' | SMDE_LIBF_PRIVATE | Constant to be used with SMDE_LIBF | |
26 (X'1A') | 2 | SMDE_NAME_OFF | Name offset (signed) |
28 (X'1C') | 2 | SMDE_USRD_LEN | User data length (signed) |
28 (X'1C') | 2 | SMDE_PMAR_LEN | Sum of lengths of program management attribute record sections (PMAR, PMARR, PMARL) (signed) |
30 (X'1E') | 2 | SMDE_USERD_OFF | User data offset (signed) |
30 (X'1E') | 2 | SMDE_PMAR_OFF | Program management attribute record offset (signed) |
32 (X'20') | 2 | SMDE_TOKEN_LEN | Token length (signed) |
34 (X'22') | 2 | SMDE_TOKEN_OFF | Token data offset (signed) |
36 (X'24') | 2 | SMDE_PNAME_OFF | Primary name offset, zero for non-alias SMDES or if library type is a PDS and this is not a program. (signed) |
38 (X'26') | 2 | SMDE_NLST_CNT | Number of note list entries that exist at beginning of user data field. Always zero for non-PDS members. (signed) |
40 (X'28') | 4 | - | Reserved |
44 (X'2C') | variable | SMDE_SECTIONS | Start of entry sections (character) |
Table 6 through Table 9 shows the optional SMDE_SECTIONS, or extensions to the SMDE.
Offset | Length or Bit Pattern | Name | Description |
---|---|---|---|
00 (X'00') | variable | SMDE_NAME | Name descriptor (structure) |
00 (X'00') | 2 | SMDE_NAME_LEN | Length of entry name (signed) |
2 (X'02') | variable | SMDE_NAME_VAL | Entry name (character) |
Offset | Length or Bit Pattern | Name | Description |
---|---|---|---|
00 (X'00') | variable | SMDE_NLST | Note list extension (structure) |
00 (X'00') | 4 | SMDE_NLST_ENTRY | Note list entries (character) |
00 (X'00') | 3 | SMDE_NLST_RLT | Note list record location token (character) |
3 (X'03') | 1 | SMDE_NLST_NUM | Number of RLT described by this note list block. If 0 this is not a notelist but a data block. (unsigned) |
Offset | Length or Bit Pattern | Name | Description |
---|---|---|---|
00 (X'00') | 32 | SMDE_TOKEN | (structure) |
00 (X'00') | 4 | SMDE_TOKEN_CONNID | CONNECT_IDENTIFIER (unsigned) |
4 (X'04') | 4 | SMDE_TOKEN_ITEMNO | Item number (unsigned) |
08 (X'08') | 24 | SMDE_TOKEN_FT | File token (character) |
Offset | Length or Bit Pattern | Name | Description |
---|---|---|---|
00 (X'00') | variable | SMDE_PNAME | Primary name descriptor (structure) |
00 (X'00') | 2 | SMDE_PNAME_LEN | Length of primary name (signed) |
2 (X'02') | variable | SMDE_PNAME_VAL | Primary name (character) |
If the SMDE represents a directory entry for a program (either a load module or a program object) the program's attributes are defined by the PMAR structure. The PMAR is a subfield of the SMDE and its offset is defined by the field SMDE_PMAR_OFF. Table 10 shows the basic PMAR definition. Table 11 and Table 12 show the PMAR extensions for program objects (PMARL) and load modules (PMARR), respectively.
If the SMDE represents a data member of a PDS or a PDSE, the SMDE_USRD_OFF field indicates the offset into the SMDE for the user data of the directory entry.
Offset | Length or Bit Pattern | Name | Description |
---|---|---|---|
00 (X'00') | 30 | PMAR | Basic section of program user data (structure) |
00 (X'00') | 30 | PMAR_ENTRY | Alternative name for the PMAR section (character) |
00 (X'00') | 2 | PMAR_SLEN | Section length (unsigned) |
2 (X'02') | 1 | PMAR_LVL | PMAR format level (unsigned) |
X'02' | PMAR_LVL_VAL | Constant to be used with PMAR | |
X'01' | PMAR_PM1_VAL | Constant to be used with PMAR | |
X'02' | PMAR_PM2_VAL | Constant to be used with PMAR | |
3 (X'03') | 1 | PMAR_PLVL | Bind processor creating object 1 - E-level linkage editor 2 - F-level linkage editor 3 - (VS1/VS2) linkage editor 4 - XA linkage editor 5 - binder version 1. (unsigned) |
X'01' | PMAR_PLVL_E_VAL | Constant to be used with PMAR_PLVL | |
X'02' | PMAR_PLVL_F_VAL | Constant to be used with PMAR_PLVL | |
X'03' | PMAR_PLVL_AOS_VAL | Constant to be used with PMAR_PLVL | |
X'04' | PMAR_PLVL_XA_VAL | Constant to be used with PMAR_PLVL | |
X'05' | PMAR_PLVL_B1_VAL | Constant to be used with PMAR_PLVL | |
X'06' | PMAR_PLVL_B2_VAL | Constant to be used with PMAR_PLVL | |
4 (X'04') | 4 | PMAR_ATR | Attribute bytes (character) |
4 (X'04') | 1 | PMAR_ATR1 | First attribute byte. These flags must be at the same offsets as the corresponding flags in PDS2ATR1 declared by macro IHAPDS. (bitstring) |
1... .... | PMAR_RENT | Reenterable | |
.1.. .... | PMAR_REUS | Reusable | |
..1. .... | PMAR_OVLY | Overlay structure | |
...1 .... | PMAR_TEST | Module to be tested - TSO/E TEST | |
.... 1... | PMAR LOAD | Only loadable | |
.... .1.. | PMAR_SCTR | Scatter format | |
.... ..1. | PMAR_EXEC | Executable | |
.... ...1 | PMAR_1BLK | Load module contains only one block of text data and has no RLD data. | |
5 (X'05') | 1 | PMAR_ATR2 | Second attribute byte. These flags must be at the same offsets as the corresponding flags in PDS2ATR2 declared by macro IHAPDS. (bitstring) |
1... .... | PMAR_FLVL | If on, the program cannot be processed by the E level linkage editor. If off, the program can be processed by any level of the linkage editor or the binder. | |
.1.. .... | PMAR_ORGO | Linkage editor assigned origin of first block of text is zero. | |
..x. .... | - | Reserved | |
...1 .... | PMAR_NRLD | Program contains no RLD items | |
.... 1... | PMAR_NREP | Module cannot be reprocessed by the linkage editor | |
.... .1.. | PMAR_TSTN | Module contains TSO/E TEST symbol records | |
.... ..x. | - | Reserved | |
.... ...1 | PMAR REFR | Refreshable program | |
6 (X'06') | 1 | PMAR_ATR3 | Third attribute byte. (bitstring) |
6 (X'06') | 1 | PMAR_FTB1 | Alternative name for flags byte. These flags must be at the same offsets as the corresponding flags in PDS2FTB1 declared by macro IHAPDS. (bitstring) |
x... .... | - | Reserved | |
.1.. .... | PMAR_BIG | This program requires 16MB or more of virtual storage. | |
..1. .... | PMAR_PAGA | Page alignment is required | |
...1 .... | PMAR_XSSI | SSI information present | |
.... 1... | PMAR_XAPF | APF information present | |
.... .1.. | PMAR_LFMT | PMARL follows PMAR. | |
.... ..xx | - | Reserved | |
7 (X'07') | 1 | PMAR_ATR4 | Fourth attribute byte (bitstring) |
7 (X'07') | 1 | PMAR_FTB2 | Alternative name for flags byte. These flags must be at the same offsets as the corresponding flags in PDS2FTB2 declared by macro IHAPDS. (bitstring) |
1... .... | PMAR_ALTP | Alternate primary flag. If on for a primary name, indicates primary name was generated by the binder. If on for an alias, indicates the long alias name was specified as the primary name on the bind. | |
.xx. .... | - | Reserved | |
...1 .... | PMAR_RMOD | RMODE is ANY. | |
.... xx.. | PMAR_AAMD | Alias entry point addressing mode. If B'00', AMODE is 24. If B'10', AMODE is 31. If B'11', AMODE is ANY. | |
.... ..xx | PMAR_MAMD | Main entry point addressing mode. If B'00' AMODE is 24. If B'10', AMODE is 31. If B'11', AMODE is ANY. | |
08 (X'08') | 1 | - | Reserved |
9 (X'09') | 1 | PMAR_AC | APF authorization code (unsigned) |
10 (X'0A') | 4 | PMAR_STOR | Virtual storage required (unsigned) |
14 (X'0E') | 4 | PMAR_EPM | Main entry point offset (unsigned) |
18 (X'12') | 4 | PMAR_EPA | This entry point offset (unsigned) |
22 (X'16') | 4 | PMAR_SSI | SSI information (bitstring) |
22 (X'16') | 1 | PMAR_CHLV | Change level of member (unsigned) |
23 (X'17') | 1 | PMAR_SSFB | SSI flag byte (bitstring) |
24 (X'18') | 2 | PMAR_MSER | Member serial number (Reserved) |
26 (X'1A') | 4 | - | Reserved |
30 (X'1E') | variable | PMAR_END | End of basic section (character) |
Offset | Length or Bit Pattern | Name | Description |
---|---|---|---|
00 (X'00') | 50 | PMARL | LSLoader section for program objects (structure) |
00 (X'00') | 2 | PMARL_SLEN | Section length (unsigned) |
2 (X'02') | 48 | PMARL_DATA | Section data (character) |
2 (X'02') | 4 | PMARL_ATR | Attribute bytes (character) |
2 (X'02') | 1 | PMARL_ATR1 | Fifth attribute byte (bitstring) |
1... .... | PMARL_NMIG | This program object cannot be converted directly to PDS load module format. | |
.1.. .... | PMARL_PRIM | FETCHOPT PRIME option | |
..1. .... | PMARL_PACK | FETCHOPT PACK option | |
...x xxxx | - | Reserved | |
3 (X'03') | 1 | PMARL_ATR2 | Sixth attribute byte (bitstring) |
1... .... | PMARL_CMPR | Compressed format module | |
.1.. .... | PMARL_1RMOD | 1st segment is RMODE Any, set for PM2-level PO only | |
..1. .... | PMARL_2RMOD | 2nd segment is RMODE Any, set for PM2-level PO if there are at least two segments. | |
...1 .... | PMARL_SEGM | Loader data includes a Segment Table with >1 loadable entry or a Gas Table, set for PM2-level PO only. | |
.... 1... | PMARL_1ALIN | 1st segment is page-aligned, set for PM2-level PO only | |
.... .1.. | PMARL_2ALIN | 2nd segment is page-aligned, set for PM2-level PO if there are at least 2 segments. | |
.... ..1. | PMARL_FILL | FILL option specified set for PM2-level PO only | |
.... ...x | - | Reserved | |
4 (X'04') | 1 | PMARL_FILLVAL | FILL character value set for PM2-level PO only |
5 (X'05') | 1 | - | Reserved |
THE FOLLOWING NOTED FIELDS ARE NOT INTENDED FOR USE. INCLUDED HERE FOR INFORMATION PURPOSES ONLY. | |||
6 (X'06') | 4 | PMARL_MPGS | Total length of program on DASD in pages (unsigned) |
10 (X'0A') | 40 | PMARL_MDAT | DASD program descriptors (character) |
10 (X'0A') | 4 | PMARL_TXTL | Length of text (unsigned) |
14 (X'0E') | 4 | PMARL_TXTO | Offset to text (address) |
18 (X'12') | 4 | PMARL_BDRL | Length of binder index (unsigned) |
22 (X'16') | 4 | PMARL_BDRO | Offset to binder index (address) |
26 (X'1A') | 4 | PMARL_RDTL | Length of PRDT (unsigned) |
30 (X'1E') | 4 | PMARL_RDTO | Offset to PRDT (address) |
34 (X'22') | 4 | PMARL_RATL | Length of PRAT (unsigned) |
38 (X'26') | 4 | PMARL_RATO | Offset to PRAT (address) |
42 (X'2A') | 4 | PMARL_NVSPGS | Number of virtual storage pages to contain program object, for PM2-level PO |
42 (X'2A') | 4 | PMARL_LMDL | Length of LSLoader data (unsigned) for PM1-level PO |
46 (X'2E') | 4 | PMARL_LMDO | Offset to LSLoader data (address) |
50 (X'32') | 2 | PMARL_NSEG | Number of loadable segments |
52 (X'34') | 2 | PMARL_NGAS | Count of entries in Gas Table |
54 (X'36') | 4 | PMARL_1STOR | Virtual storage required for first loadable segment, valid when PMARL_NSEG > 1. |
58 (X'3A') | 4 | PMARL_2STOR | Virtual storage required for second loadable segment, valid when PMARL_NSEG > 1. |
62 (X'3E') | 4 | PMARL_2TXTO | Offset to second txt segment including gas, valid when PMARL_NSEG > 1. |
END INFORMATION ONLY FIELDS. | |||
66 (X'42') | 16 | PMARL_TRACE | AUDIT trace data |
66 (X'42') | 4 | PMARL_DATE | Date saved |
70 (X'46') | 4 | PMARL_TIME | Time saved |
74 (X'4A') | 8 | PMARL_USER | User or job identification |
82 (X'52') | variable | PMARL_END | End of LSLoader section (character) |
Offset | Length or Bit Pattern | Name | Description |
---|---|---|---|
00 (X'00') | 23 | PMARR | Load module (PDS) attributes section (structure) |
00 (X'00') | 2 | PMARR_SLEN | Section length (unsigned) |
2 (X'02') | 21 | PMARR_DATA | Section data (character) |
2 (X'02') | 8 | PMARR_TTRS | TTR fields (character) |
2 (X'02') | 3 | PMARR_TTRT | TTR of first block of text (character) |
5 (X'05') | 1 | PMARR_ZERO | Zero (character) |
6 (X'06') | 3 | PMARR_TTRN | TTR of note list or scatter translation table. Used for modules in scatter load format or overlay structure only. (character) |
9 (X'09') | 1 | PMARR_NL | Number of entries in note list for scatter format modules and modules in overlay structure, otherwise zero. (address) |
10 (X'0A') | 2 | PMARR_FTBL | Length of first block of text (signed) |
12 (X'0C') | 3 | PMARR_ORG | Load module origin if 0 (unsigned) |
12 (X'0C') | 2 | - | Reserved |
14 (X'0E') | 1 | PMARR_RLDS | Number of RLD/CTL records that follow the first text record |
15 (X'F') | 8 | PMARR_SCAT | Scatter load information (character) |
15 (X'F') | 2 | PMARR_SLSZ | Scatter list length (unsigned) |
17 (X'11') | 2 | PMARR_TTSZ | Translation table length (unsigned) |
19 (X'13') | 2 | PMARR_ESDT | ESDID of first text block (character) |
21 (X'15') | 2 | PMARR_ESDC | ESDID of EP control section (character) |
23 (X'17') | variable | PMARR_END | End of load module attributes (character) |
Offset | Length or Bit Pattern | Name | Description |
---|---|---|---|
00 (X'00') | 7 | PMARA | PMAR alias entry section (structure) |
00 (X'00') | 2 | PMARA_LEN | Section length (unsigned) |
2 (X'02') | 5 | PMARA_DATA | Section data (character) |
2 (X'02') | 4 | PMARA_EPA | Entry point offset (unsigned) |
6 (X'06') | 1 | PMARA_ATR | Attribute bytes (character) |
6 (X'06') | 1 | PMARA_ATR1 | First attribute byte (bitstring) |
6 (X'06') | 1 | PMARA_FTB2 | Alternative name for flags byte. These flags must be at the same offsets as the corresponding flags in PDS2FTB2 declared by macro IHAPDS. (bitstring) |
xxxx .... | - | Reserved | |
.... 11.. | PMARA_AMD | Alias entry addressing mode. If B'00', AMODE is 24. If B'10', AMODE is 31. If B'11', AMODE is ANY. | |
.... ..xx | - | Reserved | |
7 (X'07') | variable | PMARA_END | End of alias entry section (character) |