General
Application area: | Linking and loading; see "Linking and loading" |
Macro type: | Type S, MF format 2: standard/C/D/L/M form; see "S-type macros" |
See also the “BLSSERV” manual [4 (Related publications)] for information on the dynamic binder loader DBL.
Macro description
The ETABIT macro generates an entry for a symbol table, which is transferred to the DBL when the ETABLE macro is called.
Macro format and description of operands
ETABIT |
MF=D / C / L / M ,AMODE=*NOT-SPECIFIED / *31 / *24 / *ANY ,HSI_CODE=*BY-SYSTEM / *390 / *RISC / *SPARC / *X86E 1 ,INVISIBLE=*NOT-SPECIFIED / *NO / *YES ,LEN=0 / <integer 0..2147473647> ,LOAD_ADDR=NULL-1 / <var: pointer> ,PAGE_ALIGNED=*NOT-SPECIFIED / *NO / *YES ,PRIVILEGED=*NOT-SPECIFIED / *NO / *YES ,PUBLIC=*NOT-SPECIFIED / *NO / *YES ,READ_ONLY=*NOT-SPECIFIED / *NO / *YES ,RESIDENT=*NOT-SPECIFIED / *NO / *YES ,SYMBOL_NAME= ,SYMBOL_TYPE=*NOT-SPECIFIED / *CSECT / *ENTRY / *COMMON ,PARAM=<var: pointer> / (reg: pointer>) ,PREFIX=P / p ,MACID=BET / macid |
1The operand values *RISC and *SPARC have no meaning in BS2000/OSD-BC V9.0 and higher
When creating an entry, the value *NOT-SPECIFIED causes the attributes of the symbols to be initialized with ’FALSE’.
The operands are described in alphabetical order below.
AMODE=*NOT-SPECIFIED / *31 / *24 / *ANY
Value of the AMODE attribute
HSI_CODE=*BY-SYSTEM / *390 / X86E
The code type that refers to the symbol must be specified (*390, *X86E).
The default value is the type of server on which the user program is running. However, the correct HSI code should always be entered in order to avoid an undesired and possibly incorrect update on an ETABLE ACTION=*UPDATE
macro.
INVISIBLE=*NOT-SPECIFIED / *NO / *YES
Value of the INVISIBLE attribute
LEN=0 / <integer 0..2147483647>
Length of element.
For CSECTs and COMMON areas, LEN must be greater than 0.
For ENTRYs, LEN must be 0.
LOAD_ADDR=NULL-1 / <var: pointer>
Load address of the symbol.
MF=
For a general description of the MF operand, its operand values and any of the specified operands PARAM, PREFIX and MACID, see section “S-type macros”. The valid MF values are given at the start of the macro description under “Macro type” and are included in the macro format.
It is possible to specify a PREFIX in the C form, D form, or M form of the macro, and additionally a MACID in the C form or M form (see section “S-type macros”).
PAGE_ALIGNED=*NOT-SPECIFIED / *NO / *YES
Value of the PAGE_ALIGNED attribute
PRIVILEGED=*NOT-SPECIFIED / *NO / *YES
Value of the PRIVILEGED attribute
PUBLIC=*NOT-SPECIFIED / *NO / *YES
Value of the PUBLIC attribute
READ_ONLY=*NOT-SPECIFIED / *NO / *YES
Value of the READ_ONLY attribute
RESIDENT=*NOT-SPECIFIED / *NO / *YES
Value of the RESIDENT attribute
SYMBOL_NAME=' '
/ <c-string 1..32> / <var: char 1..32>
Symbol name
SYMBOL_TYPE=*NOT-SPECIFIED / *CSECT / *ENTRY / *COMMON
Symbol type entered in the symbol table.
Notes on the macro call
If the HSI_CODE parameter is not specified, it is set to the default value *BY-SYSTEM. A subsequent call to the ETABLE macro with ACTION=*UPDATE could, in some cases, cause the HSI code to be inadvertently updated. To prevent this from happening, the HSI code of the symbol must always be specified.
The notes relating to the ETABLE macro also apply to the ETABIT macro. The layout of a table entry is also described there.
Return information and error flags
Standard header:
+---------------+ | | | | | |c|c|b|b|a|a|a|a| +---------------+
A return code relating to the execution of the ETABIT macro is transferred in the standard header (cc=Subcode2, bb=Subcode1, aaaa=Maincode):
X'cc' | X'bb' | X'aaaa' | Meaning |
X'00' | X'00' | X'0000' | The macro was executed normally. |
X'01' | X'00' | X'0000' | The same ETABLE symbol already exists. |
X'60' | X'01' | X'0006' | Error in addressing mode. |
X'60' | X'01' | X'0007' | Invalid length specification. |
X'60' | X'01' | X'0009' | Invalid attribute value. |
X'60' | X'01' | X'000B' | Invalid value in HSI. |
X'60' | X'01' | X'000C' | The symbol table entry for ETABLE is invalid. |
X'60' | X'01' | X'000D' | SYMBOL_TYPE was not specified when the entry was generated. |
X'60' | X'01' | X'002C' | Invalid symbol name. |
X'60' | X'01' | X'0060' | Symbol not found. |
X'60' | X'01' | X'0130' | Invalid LOAD_ADDR operand. |
X'60' | X'01' | X'0150' | Error in symbol type. |
X'60' | X'01' | X'0151' | A symbol generated with ETABLE with this name already exists. |
X' 60' | X' 01' | X'0152' | A symbol not generated with ETABLE with this name already exists and |
X' 00' | X' 01' | X'FFFF' | The function is no longer or not yet supported. |
X' 00' | X' 03' | X'FFFF' | The interface version is not supported. |
Other return codes which, in accordance with conventions, apply to all macros are given in the table “Standard return codes” (Standard header).