Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

BIND - Link and load load unit

&pagelevel(3)&pagelevel

General

Application area:

Linking and loading; see "Linking and loading"

Macro type:

Type S, MF format 2: standard/C/D/L/E/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 BIND macro links another load unit into the executing program.

Macro format and description of operands

BIND


,ALTLIB=*DBLOPT / NO / YES / list-poss(2): *TASKLIB / *BLSLIB##

[,AMODE@=addr / (r) / label]

[,AMODCHK = *DBLOPT / STD / ADVANCED]

,AUTOLNK=*DBLOPT / YES / NO / ALTLIB

,BRANCH=NO / YES

,CLOSE=*DBLOPT / ALL / NONE / ALT

,ERREXIT=*DBLOPT / addr / (r) / label

,IGNATTR=*DBLOPT / NONE / READ

,INTVERS=BLSP2 / SRV001 / SRV002 / SRV003 / SRV004 / SRV005 / SRV006

[,LDINFO=*DBLOPT / DEF / MAP / NONE / REF ]

,{LIBNAM@={addr / (r) / label} / LIBNAM={*DBLOPT / file / *} / LIBLINK=name}

,{LNKCTX@={addr / (r) / label} / LNKCTX={*DBLOPT / name}}

,LNKCTXS=*DBLOPT / ANY / OLD / NEW

,LOAD=YES / NO / ILESERVER

[,LOAD@=addr / (r) / label]

,MAP=*DBLOPT / NO / BOTH / (BOTH,nn) / nn / SYSOUT

[,MPID=addr / (r) / label]

[,MSG=*DBLOPT / INFORMATION / WARNING / ERROR / NONE]

[,NACOL=*DBLOPT / STD / ABORT]

,OVERLAY=NO / YES

,{PGMVER@={addr / (r) / label} / PGMVERS={*DBLOPT / *STD / version}

,PROGMOD=*DBLOPT / ANY / 24

[,PURESOR= list-poss(3): USERSHARE / SYSSHARE / LNKCTX ]

[ ,PURESTY=*DBLOPT / STD / USER]

[, {REFCTX@={addr / (r) / label} / REFCTX={name / (name1,name2,...name200)}]

,REFCTX#=0 / n

,{REPFIL@={addr / (r) / label} / REPFILE={*DBLOPT / file}}

,REPSCOP=*DBLOPT / CONTEXT / UNIT

[,RESORD= list-poss(4): LNKCTX / USERSHARE / SYSSHARE / REFCTX ]

,RESTYP=*DBLOPT / STD / USER

,SHARE=*DBLOPT / SYSTEM / NONE / USER / GROUP / USER_GROUP / GLOBAL / ALL

, {SYMBOL@={addr / (r) / label} / SYMBOL= {name / *ALL}}, SYMBLAD={addr / (r) / label}

,SYMTYP=ANY / CSECT / ENTRY / CSEN / MODULE

[,TSTOPT=*DBLOPT / NONE / AID]

[,{ UNIT@={addr / (r) / label} / UNIT= name}]

[,UNRES=*DBLOPT / STD / DELAY / DELAYWARN / ABORT]

,USRMAPI = NONE / STD / ALL

[,USRMAP@ = addr / (r) / <label> ]

[,USRMAPL = integer 1..21474836479]

[,USRUNR@ = addr / (r) / label]

[,USRUNRL = integer 1..21474836479]

,USRUNRI = STD / DELAY / BOTH

[, {VERS@={addr / (r) / label} / VERS=version}]

,XPAND=PARAM / XRC / USRMAP / USRUNR

[,XRC=addr / (r) / label]

The operands are described in alphabetical order below.

ALTLIB=
Specifies whether alternate libraries are to be searched for the object defined by
SYMBOL@ or SYMBOL. Alternate libraries are assigned using the file link name BLSLIBnn (00<=nn<=99) or $BLSLBnn. They are also used for the autolink function of DBL.

*DBLOPT
The parameter value is taken from the last call of the MODIFY-DBL-DEFAULTS command. If a value for the parameter has not yet been set using the MODIFY-DBL-DEFAULTS command, ALTLIB=NO applies.

NO
Alternate libraries or tasklibs will not be searched.

YES
Alternate libraries will be searched.

*TASKLIB
May be specified only if INTVERS=SRVxxx and xxx >= 002.

Tasklibs are searched in the following order:

  1. The library which is assigned with the SET-TASKLIB command

  2. The $userid.TASKLIB library

    or, in the event that this does not exist:

    The TASKLIB library under the default system ID (DEFLUID user ID)

*BLSLIB##
May be specified only if INTVERS=SRVxxx and xxx >= 002.

Alternate libraries will be searched.

Notes

  • The operand values *TASKLIB and *BLSLIB## can be specified as a list. The order of values in this list defines the order in which the relevant libraries will be searched.

  • The specifications ALTLIB=YES and ALTLIB=BLSLIB## have the same meaning.

  • The ALTLIB=YES and LIBNAM@/LIBNAM/LIBLINK operands may be specified together in the same macro. If, however, the main library specified by LIBNAM@/LIBNAM/LIBLINK is not present, DBL will abort the processing. ALTLIB=YES cannot serve as a substitute for a missing or invalid main library.

AMODCHK=
Determines whether additional checks of the addressing mode should be performed during loading (only in conjunction with INTVERS=SRVxxx and xxx >= 005). If the AMODCHK operand is not specified, the value set in the START-EXECUTABLE-PROGRAM or LOAD-EXECUTABLE-PROGRAM (or START-PROGRAM or LOAD-PROGRAM) load call will be used as the default value.

*DBLOPT
The operand value is taken over from the last call of the MODIFY-DBL-DEFAULTS command. If no value has yet been defined with MODIFY-DBL-DEFAULTS for the operand involved, AMODCHK=STD applies.

STD
Only the checks compatible with BLSSERV < V2.5 are executed.

ADVANCED
The same checks as for AMODE-CHECK = *STD are performed.
During loading a check is also performed to see whether inconsistencies can occur while resolving external references because of the load unit’s addressing mode.

AMODE@=
Specifies the address of a 1-byte long field into which the DBL enters the addressing mode for the load unit call. The field must be aligned on a word boundary.
The following are possible values for the addressing mode:

2
1
4

for AMODE 24
for AMODE 31
for AMODE 32

addr
Address of an auxiliary field which contains the field address searched for.
May be specified only if MF=M.

(r)
r = register containing the field address searched for. May be specified only if MF=M.

label
Symbolic field address. May be specified only if MF=S or MF=L.

AUTOLNK=
Specifies whether the autolink function of DBL is to be turned on or off.

*DBLOPT
The parameter value is taken from the last call of the MODIFY-DBL-DEFAULTS command. If a value for the parameter has not yet been set using the MODIFY-DBL-DEFAULTS command, AUTOLNK=YES applies.

YES
The autolink function is to be turned on.

NO

The autolink function is to be turned off. External references are resolved only with the help of programs (private and shared) that are already loaded.

ALTLIB
The autolink function accesses only alternate libraries, which are assigned using the file link name BLSLIBnn (00<=nn<=99) or $BLSLBnn.

BRANCH=
Specifies whether the calling program is to be resumed immediately after the load unit has been loaded or whether the loaded load unit will be processed. The addressing mode is set by DBL.

NO
After the load unit has been loaded the instruction following the BIND macro in the calling program will be executed.

YES
After being loaded the load unit will be processed first. DBL determines the address using the symbol or module name specified with SYMBOL@ or SYMBOL.

CLOSE=
Specifies whether libraries used by DBL are to be closed or remain open when processing of the DBL macro has been completed. This refers to all libraries which DBL searches for modules. The operand can be used to speed processing when DBL is called a number of times with the same library.

*DBLOPT
The parameter value is taken from the last call of the MODIFY-DBL-DEFAULTS command. If a value for the parameter has not yet been set using the MODIFY-DBL-DEFAULTS command, CLOSE=ALL applies.

ALL
All libraries used will be closed.

NONE
All libraries used will remain open and can be used for a further DBL call.

ALT
All alternate libraries used will be closed. Only the main library specified by the LIBNAM@, LIBNAM or LIBLINK operand is to remain open.

ERREXIT=
Specifies the address of a 4-byte field.
If the UNRES operand is specified with the value STD/DELAY/DELAYWARN the address that is to be assigned to unresolved external references should be entered in this field.

*DBLOPT
The parameter value is taken from the last call of the MODIFY-DBL-DEFAULTS command. If a value for the parameter has not yet been set using the MODIFY-DBL-DEFAULTS command, unresolved external references are assigned the address
X'FFFFFFFF'.

addr
Address of an auxiliary field which contains the field address searched for. May be specified only if MF=M.

(r)
r = register containing the field address searched for. May be specified only if MF=M.

label
Symbolic address of the field. May be specified only if MF=S or MF=L.

IGNATTR=
Specifies which CSECT attributes are to be ignored during loading.

*DBLOPT
The parameter value is taken from the last call of the MODIFY-DBL-DEFAULTS command. If a value for the parameter has not yet been set using the MODIFY-DBL-DEFAULTS command, IGNATTR=NONE applies.

NONE
All CSECT attributes are taken into account during loading.

READ
The CSECT attribute READ-ONLY is ignored during loading. The CSECT is loaded into a readable/writable main memory page. This makes it possible to set breakpoints when debugging using AID, for example.

INTVERS=
The operand specifies the version of the BIND macro interface.

BLSP2
Default. Corresponds to macro version 5.

SRV001
Corresponds to macro version 6. This version is supported by BLSSERV as of V2.2.

SRV002
Corresponds to macro version 7. This version is supported by BLSSERV as of V2.3A.

SRV003
Corresponds to macro version 8. This version is supported by BLSSERV as of V2.3B.

SRV004
Corresponds to macro version 9. This version is supported by BLSSERV as of V2.4A.

SRV005
Corresponds to macro version 10. This version is supported by BLSSERV as of V2.5A.

SRV006
Corresponds to macro version 11. This version is supported by BLSSERV as of V2.6A.

LABEL=name
May be specified only if MF=M.
Name of the structure, i.e. the DSECT which describes the operands of the BIND macro. The operand is mandatory if there is no valid USING statement for the definition of the base address register for the DSECT of the parameter list. The LABEL operand must be specified in conjunction with the PARAM operand. Both operands are used to produce a valid USING statement.

The following may be specified for “name”:

  • The name specified in the name field of a preceding macro name BIND MF=D.

  • The name “xPBBNDS” if no “name” has already been specified, where “x” is the value of the PREFIX operand of a preceding macro BIND MF=D, PREFIX=x. The default value for “x” is “P”.

  • The name of the longer DSECT containing the parameter list of the BIND macro if the macro BIND MF=C was specified earlier.

LDINFO=
Defines the load information for the load unit.
If the LDINFO operand is not specified, the value set with the START-EXECUTABLE-PROGRAM or LOAD-EXECUTABLE-PROGRAM (or START-PROGRAM or LOAD-PROGRAM) load call is used as the default value.

*DBLOPT
The parameter value is taken from the last call of the MODIFY-DBL-DEFAULTS command. If a value for the parameter has not yet been set using the MODIFY-DBL-DEFAULTS command, the value that follows *DBLOPT in the syntax definition applies.

DEF
An external symbol dictionary containing the program definitions of all modules in the load unit will be loaded.
Program definitions are control sections (CSECTs), entry points (ENTRYs),
COMMONs, dummy sections (DSECTs), external dummy sections (XDSEC-Ds) and module names.

MAP

Only an external symbol dictionary which is required for building the DBL map will be loaded temporarily. The external symbol dictionary will be unloaded as soon as the DBL map is built.

NONE
No external symbol dictionary will be loaded.

REF
An external symbol dictionary will be loaded containing the resolved references of all modules in the load unit in addition to the program definitions. References are external references (EXTRNs), V-type constants, weak external references (WXTRNs) and external dummy sections (XDSEC-Rs).

LIBLINK=name
File link name of the main library. The name may be up to 8 characters long.

LIBNAM@=
Specifies the main library in which the search for the object defined with SYMBOL@ or SYMBOL is to take place. The main library is defined through the address of a field that contains the file name of the library. The EAM object module file is defined using the file name “*”. It is not possible to specify a file link name for the EAM object module file.
The main library is searched before the alternate libraries (see "BIND - Link and load load unit"). It is also used for the autolink function of DBL. If the LIBLINK operand is used, any LIBNAM@ entry is ignored.

addr
Address of an auxiliary field which contains the field address searched for. May be specified only if MF=M.

(r)
r = register containing the field address searched for. May be specified only if MF=M.

label
Symbolic ield address. May be specified only if MF=S or MF=L.

LIBNAM=
File name of the main library. May be specified only if MF=S or MF=L. If the LIBLINK operand is used, any LIBNAM entry is ignored.

*DBLOPT
The parameter value is taken from the last call of the MODIFY-DBL-DEFAULTS command. If a value for the parameter has not yet been set using the MODIFY-DBL-DEFAULTS command, the library with the file link name BLSLIB is searched.

file
Explicit specification of the file name of the main library. The file name may be up to 54 characters long.

*
Specifies the EAM object module file as the main library.

LNKCTX@=
Specifies the address of a field containing the name of the link context. The name must begin with a letter.

addr
Address of an auxiliary field which contains the field address searched for. May be specified only if MF=M.

(r)
r = register containing the field address searched for. May be specified only if MF=M.

label
Symbolic field address. May be specified only if MF=S or MF=L.

LNKCTX=
May be specified only if MF=S or MF=L.

name
Explicit specification of the name for the link context. The name may be up to 32 characters long and must begin with a letter.

*DBLOPT
The parameter value is taken from the last call of the MODIFY-DBL-DEFAULTS command. If a value for the parameter has not yet been set using the MODIFY-DBL-DEFAULTS command, the link context “LOCAL#DEFAULT” is used.

LNKCTXS=
Specifies whether or not the new link context defined via LNKCTX@ or LNKCTX may be located within the existing user contexts.

*DBLOPT
The parameter value is taken from the last call of the MODIFY-DBL-DEFAULTS command. If a value for the parameter has not yet been set using the MODIFY-DBL-DEFAULTS command, LNKCTXS=ANY applies.

ANY
If a user context with the name specified by means of the LNKCTX@ or LNKCTX operand is present in the user context, the existing context will be used. If no context with the same name is present a new context will be generated.

OLD
The specified link context must already be located within the existing user context. A new context will not be generated.

NEW
The specified link context must not be located within the existing user context. A new context will be generated.

LOAD=
Specifies whether a symbol with the symbol name SYMBOL@ or SYMBOL is to be loaded or whether loading of an ILE server module is required. This will depend on whether the DBL takes ILE type symbols into account when searching for the primary input.

YES
The symbol will be loaded if it is not already loaded. ILE symbols will be included.

NO
The symbol will not be loaded. If it is already loaded the load address will be passed by DBL. ILE symbols will be included.
The BIND...,LOAD=NO call should be replaced by the VSVI1...,SELECT=BYNAME call for performance reasons.

ILESERVER
The symbol to be loaded is the entry point of an ILE server module. ILE symbols will therefore be ignored.

LOAD@=
Specifies the address of an area below 16 Mb in class 6 memory at which the first module is to be loaded. If other modules are present they will be loaded into a free area after the first module.
If the address is located above 16 Mb in class 6 memory the LOAD@ operand is ignored and the OVERLAY operand set to NO. Loading is not performed if:

  • the address is not aligned on a doubleword boundary or an invalid address in class 6 memory was specified,

  • the user has defined multiple contexts in class 6 memory,

  • the area of class 6 memory in which the first module is to be loaded is already occupied and the OVERLAY=NO operand was specified,

  • an LLM was loaded either as the first module or using autolink,

  • the MPID operand was also specified.

If the LOAD@ operand is not specified DBL determines the load address. If a load address was specified when storing an LLM, the LLM is loaded starting at this address if this is possible.

addr
Address of a field which contains the area address. May be specified only if MF=M.

(r)
r = register containing the area address searched for. May be specified only if MF=M.

label
Area address. The address can be specified as a symbolic address or as a constant (X'...'). May be specified only if MF=S or MF=L.

MAP=
Specifies whether a DBL map is to be output or not, and if so, indicates the output destination.

*DBLOPT
The parameter value is taken from the last call of the MODIFY-DBL-DEFAULTS command. If a value for the parameter has not yet been set using the MODIFY-DBL-DEFAULTS command, MAP=NO applies.

NO
No DBL map is to be output.

BOTH
The output destination is the SYSOUT and SYSLST00 system files.

(BOTH,nn)
The output destination is the SYSOUT system file and a SYSLSTnn system file(where 00<=nn<=99).

nn

The output destination is a system file from the set SYSLST00 to SYSLST99 whose number must be specified here.
The number must given in 2-digit form (00 for 0, etc.).

SYSOUT
The output destination is the SYSOUT system file.

MF=
For a general description of the MF operand, its operand values and any of the specified operands PARAM and PREFIX, 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.
A PREFIX can be specified in the C form or D form of the macro (see section “S-typemacros”).

MPID=
Address of a 4 byte field which contains the identifier of the memory pool into which the load unit is loaded.
This short identifier is made available to the user by means of the ENAMP macro.
The operand must not be specified:

  • if the LOAD@ and OVERLAY operands are specified,

  • if an LLM containing user-defined slices is loaded.

The user is responsible for management of the memory pool. DBL passes information concerning the loaded load unit in the memory pool only to the user who issued the BIND macro call.
Multiple load units can be loaded into a memory pool within a user context. Shared code that is to be made available as such in memory pools must be loaded using the ASHARE macro.

addr
Address of an auxiliary field which contains the field address searched for. May be specified only if MF=M.

(r)
r = register containing the field address searched for. May be specified only if MF=M.

label
Symbolic field address. May be specified only if MF=S or MF=L.

MSG=
Specifies the lowest message class; messages at and above this level will be output.
If the MSG operand is not specified, the value set in the START-EXECUTABLE-PROGRAM or LOAD-EXECUTABLE-PROGRAM (or START-PROGRAM or LOAD-PROGRAM) load call will be used as the default value.

*DBLOPT
The parameter value is taken from the last call of the MODIFY-DBL-DEFAULTS command. If a value for the parameter has not yet been set using the MODIFY-DBL-DEFAULTS command, the value that follows *DBLOPT in the syntax definition applies.

INFORMATION
All classes of message will be output.

WARNING
Only messages of the WARNING and ERROR classes will be output. Messages of the INFORMATION message class will not be output.

ERROR
Only messages of the ERROR class will be output.

NONE
No messages will be output.

NACOL=
Defines how name conflicts affecting symbols with identical names are to be handled. Name conflicts are detected only if the symbols are not masked.
If the NACOL operand is not specified the value set in the START-PROGRAM or LOAD-PROGRAM load call is used as the default value.

*DBLOPT
The parameter value is taken from the last call of the MODIFY-DBL-DEFAULTS command. If a value for the parameter has not yet been set using the MODIFY-DBL-DEFAULTS command, NACOL=STD applies.

STD
Name conflicts between nonmasked symbols will be indicated by warning messages. The module containing the symbol with the same name will be loaded. The new occurrence of the symbol will be masked, i.e. it will no longer be used for resolving external references.

ABORT
Loading of the current load unit will be aborted if a name conflict between nonmasked symbols is detected.

OVERLAY=
Specifies whether the modules of the load unit may overlay the module located at the address specified with LOAD@. This operand requires the LOAD@ operand to be specified and is incompatible with the MPID operand.

NO
The modules of the load unit must not overlay the module located at the address specified with LOAD@.

YES
The modules of the load unit may overlay the LOAD@ module. The first module of the load unit is loaded at the address specified with LOAD@. If other modules are present they will be loaded contiguously after the first. An exception are areas locked by means of the CSECT attributes READ-ONLY and PAGEABLE. The user must ensure that the overlaid area is no longer needed later.
All modules overlaid by modules of the load unit are unloaded by DBL. The used memory contents are not deleted before the new load operation, however.
COMMONs are loaded independently of the specified load address.

PGMVER@=
Specifies the address of a field containing the program version. If this program version is already loaded, a link to it is created. If this program version is not loaded, the new load unit receives the specified version.

addr
Address of an auxiliary field which contains the field address searched for.May be specified only if MF=M.

(r)
r = register containing the field address searched for. May be specified only if MF=M.

label
Symbolic field address. May be specified only if MF=S or MF=L.

PGMVERS=
Specifies the program version.

*DBLOPT
The parameter value is taken from the last call of the MODIFY-DBL-DEFAULTS command. If a value for the parameter has not yet been set using the MODIFY-DBL-DEFAULTS command, PGMVERS=*STD applies.

*STD
The load unit resulting from the load call receives the version of the loaded library element as the program version. If the symbol specified in the load call is already loaded, a search is carried out for the program version that was set using the SELECT-PROGRAM-VERSION command. If no program version has been set, DBL uses the first symbol found.

version

may be up to 24 characters long.

PROGMOD=
Specifies in which part of the address space (above or below 16 Mb) the modules of the load unit are to be loaded.

*DBLOPT
The parameter value is taken from the last call of the MODIFY-DBL-DEFAULTS command. If a value for the parameter has not yet been set using the MODIFY-DBL-DEFAULTS command, PROGMOD=ANY applies.

ANY
The modules of the load unit can be loaded above or below 16 Mbytes.

24
The entire load unit will be loaded below 16 Mb.
The program will be executed in 24-bit addressing mode. External references will be interpreted as 24-bit addresses.

PURESOR
Specifies the user-defined search sequence for the resolution of external references in PUBLIC parts of LLMs if PURESTY=USER was specified (only in conjunction with INTVERS=SRVSRVxxx and xxx >= 001).

list-poss(3): USERSHARE / SYSSHARE / LNKCTX
The search sequence is defined by the sequence of the keywords within the list. The keywords have the following meaning:


USERSHARE

for shared code of the user

SYSSHARE

for shared code of the system

LNKCTX

for link context


If PURESOR=(SYSSHARE, LNKCTX, USERSHARE) is specified, for example, when resolving external references in PUBLIC parts the search is carried out in the following sequence:

  1. in the shared code of the system

  2. in the link context

  3. in the shared code of the user

Notes

  • Each keyword can only occur once in the list.

  • Keywords that are not specified in the list are appended to the end of the list internally by DBL in accordance with the predefined sequence (USERSHARE, SYSSHARE, LNKCTX). For example, PURESOR=(SYSSHARE) is handled in the same way as PURESOR=(SYSSHARE, USERSHARE, LNKCTX).

  • The PURESTY and PURESOR operands have no influence on which contexts are searched. They only specify the sequence. Whether shared code is searched must be specified with the SHARE operand. DBL does not carry out any consistency checks on these operands. If PURESOR=(LNKCTX, SYSSHARE), SHARE=NONE is specified, for example, the shared code of the system is not used for the resolution of external references although the corresponding keyword is specified in the list of the search sequence.

PURESTY=
Specifies the search strategy for the resolution of external references in PUBLIC parts of LLMs (only in conjunction with INTVERS=SRVxxx and xxx >= 001).

*DBLOPT
The parameter value is taken from the last call of the MODIFY-DBL-DEFAULTS command. If a value for the parameter has not yet been set using the MODIFY-DBL-DEFAULTS command, PURESTY=STD applies.

STD
The search sequence predefined by DBL applies:

  1. shared code of the user

  2. shared code of the system

  3. link context

USER
The search sequence is specified by the user with the PURESOR operand.

REFCTX@=
Specifies the address of a field containing a name list of reference contexts which will be searched in order to resolve external references.
Up to 200 names of reference contexts can be entered in the list. A name must begin with a letter. The contexts specified in the list must be present. The reference contexts are searched in the order in which they appear in the list. The number of reference contexts can be defined using the REFCTX# operand. A link context defined using LNKCTX@ or LNKCTX cannot be used as a reference context.

addr
Address of an auxiliary field which contains the field address searched for.May be specified only if MF=M.

(r)
r = register containing the field address searched for. May be specified only if MF=M.

label
Symbolic field address. May be specified only if MF=S or MF=L.

REFCTX=name / (name1,...,name200)

May be specified only if MF=S or MF=L.
Explicit specification of a list containing the names of reference contexts. Each name may consist of up to 32 characters. Up to 200 names may be entered in the list. The names must not begin with a dollar sign ($).

REFCTX#=0 / n
Specifies the number of reference contexts in the name list defined with REFCTX@ or REFCTX.0<=n<=200; Default value: 0

REPFIL@=
Specifies the address of a field which contains the name of a REP file.
This enables the user to apply REP records to the modules of a load unit. The REP records must have the standard record format for processing by the RMS utility routine (see the “Utility Routines” manual [27 (Related publications)]). If there is an error during processing of REP records, a warning message is output and the errored REP record is skipped. REP processing then resumes.

addr
Address of an auxiliary field which contains the field address searched for. May be specified only if MF=M.

(r)
r = register containing the field address searched for. May be specified only if MF=M.

label
Symbolic field address. May be specified only if MF=S or MF=L.

REPFILE=
May be specified only if MF=S or MF=L.Specifies the name of the REP file.

*DBLOPT
The parameter value is taken from the last call of the MODIFY-DBL-DEFAULTS command. If a value for the parameter has not yet been set using the MODIFY-DBL-DEFAULTS command, no REP file is used.

file
Explicit specification of the name of the REP file. The name may be up to 54 characters long.

REPSCOP=

Specifies whether REP processing is to be performed for all modules in the context or only for modules in the current load unit.

*DBLOPT
The parameter value is taken from the last call of the MODIFY-DBL-DEFAULTS command. If a value for the parameter has not yet been set using the MODIFY-DBL-DEFAULTS command, REPSCOP=CONTXT applies.

CONTEXT
REP processing is to be performed for all modules in the context.

UNIT
REP processing is to be performed only for modules in the current load unit. All other modules in the context will be skipped.

RESORD=
Specifies the user-defined search sequence for the resolution of external references if RESTYP=USER was specified (only in conjunction with INTVERS=SRVxxx and xxx >= 001).

list-poss(4): LNKCTX / USERSHARE / SYSSHARE / REFCTX
The search sequence is defined by the sequence of the keywords within the list. The keywords have the following meaning:


LNKCTX

for link context

USERSHARE

for shared code of the user

SYSSHARE

for shared code of the system

REFCTX

for reference context


If RESORD=(REFCTX, USERSHARE, SYSSHARE, LNKCTX) is specified, for example, the search is carried out in the following order when resolving external references:

  1. in the reference context

  2. in the shared code of the user

  3. in the shared code of the system

  4. in the link context

Notes

  • Each keyword can appear in the list only once.

  • Keywords that are not specified in the list are appended to the end of the list internally by DBL in accordance with the predefined sequence (LNKCTX, USERSHARE, SYSSHARE, REFCTX). For example, RESORD=(REFCTX, USERSHARE) is handled in the same way as RESORD=(REFCTX, USERSHARE, LNKCTX, SYSSHARE).

  • The RESTYP and RESORD operands have no influence on which contexts are searched. They only specify the sequence. Whether shared code or reference context is searched must be specified with the SHARE or REFCTX operand (or REFCTX@). DBL does not carry out any consistency checks on these operands. If RESORD=(LNKCTX, SYSSHARE), SHARE=NONE is specified, for example, the shared code of the system is not used for the resolution of external references although the corresponding keyword is specified in the list of the search sequence.

RESTYP=
Specifies the search strategy for the resolution of external references (only in conjunction with INTVERS=SRV001/SRV002).

*DBLOPT
The parameter value is taken from the last call of the MODIFY-DBL-DEFAULTS command. If a value for the parameter has not yet been set using the MODIFY-DBL-DEFAULTS command, RESTYP=STD applies.

STD
The search sequence predefined by DBL applies:

  1. link context

  2. shared code of the user

  3. shared code of the system

  4. reference context(s)

USER
The search sequence is specified by the user with the RESORD operand.

SHARE=
Specifies what part of the shared code is to be included in the search for the symbol specified with SYMBOL@ or SYMBOL and for resolving external references. This also applies to the autolink function of DBL if AUTOLNK=YES is specified. If the symbol involved is located in a common memory pool, DBL returns the load address, links the user task with the common memory pool and terminates the load procedure. If the symbol involved is located in a nonprivileged subsystem (see “Subsystem Management” manual [12 (Related publications)]), DBL returns the load address, establishes a connection to the subsystem and terminates the load procedure. If BRANCH=YES is specified, a branch is then made to the address of the symbol found.

*DBLOPT
The parameter value is taken from the last call of the MODIFY-DBL-DEFAULTS command. If a value for the parameter has not yet been set using the MODIFY-DBL-DEFAULTS command, SHARE=SYSTEM applies.

SYSTEM
Only the shared code of the system (in class 3/4/5 memory) is included in the search.

NONE
No shared code is to be included in the search. DBL causes a private copy of the program to be loaded.

USER
Only the user's shared code in common memory pools is to be included in the search, irrespective of the scope of the common memory pool.

GROUP
Only shared code in common memory pools with the scope GROUP is to be included in the search.

USER_GROUP
Only shared code in common memory pools with the scope USER_GROUP is included in the search.

GLOBAL
Only shared code in common memory pools with the scope GLOBAL is included in the search.

ALL
The shared code of both the system and the user is included in the search.

SYMBLAD=
Specifies the address of a 4-byte field, aligned on a word boundary. In this field DBL enters the address at which the program run has to be continued when the load unit is referenced.

This address depends on the operand SYMTYP:

  • If SYMTYP=MODULE or SYMTYP=ANY is specified and a module with the name that was specified with the SYMBOL (or SYMBOL@) operand is loaded, then the address is the start address of the module (LLM or OM). Details for computing the start address of LLMs see manual “BINDER” [5 (Related publications)]. If the start address of the LLM is an external name, the address of that CSECT or ENTRY is returned.

  • In all other cases (if SYMTYP=CSECT, ENTRY or CSEN is specified or SYMTYP=MODULE or SYMTYP=ANY is specified and a module with another name than specified with the SYMBOL (or SYMBOL@) operand was loaded) the returned address is the address of the CSECT or ENTRY with the name specified with the SYMBOL (or SYMBOL@) operand.

The addressing mode to be used for the load unit call is indicated as following:

  • on /390 servers in the leftmost bit of the field specified with the SYMBLAD operand,

  • on other BS2000 servers in the field AMODE@ if specified.

In the following cases loading is aborted:

  • SYMBLAD is not specified

  • the field is not aligned on a word boundary

  • the according memory area has no write access or is not allocated.

    addrAddress of an auxiliary field which contains the field address searched for. May be specified only if MF=M.

    (r)r = register containing the field address searched for. May be specified only if MF=M.

    labelField address. The address can be specified as a symbolic address or as a constant (X'...'). May be specified only if MF=S or MF=L.

SYMBOL@=
Specifies the address of a field containing the name of an object. DBL uses this name to determine which module of the load unit is to be loaded first. The name can refer to the following objects:

  • control section (CSECT),

  • entry point (ENTRY),

  • object module (OM) (element name),

  • link and load module (LLM) (element name).

The type of the object is defined using the SYMTYP operand.

addr
Address of an auxiliary field which contains the field address searched for. May be specified only if MF=M.

(r)
r = register containing the field address searched for. May be specified only if MF=M.

label
Symbolic field address. May be specified only if MF=S or MF=L.

The field which contains the name must be 32 characters long. If the name is shorter, it must be padded with blanks.

SYMBOL=

May be specified only if MF=S or MF=L.
Specifies the name of a control section (CSECT), an entry point (ENTRY), an object module (OM) or a linking loader module (LLM). DBL uses this name to determine which module of the load unit is to be loaded first.

name
Explicit specification of the object name. The name may be up to 32 characters long.

An asterisk (*) can be specified as the last character of the name. This represents any character string. In this case all library elements whose name corresponds to the specified pattern are loaded from the main library (LIBNAM/LIBNAM@/LIBLINK operand) into one list name unit.

If multiple asterisks (*) are specified in the name, all characters after the first asterisk are ignored.

*ALL
All library elements of the main library (LIBNAM/LIBNAM@/LIBLINK operand) are loaded into one list name unit.

SYMTYP=
Specifies the type of object defined with the name SYMBOL@ or SYMBOL and defines the search sequence for the object. A symbol (CSECT or ENTRY) or module (OM or LLM) can be defined as the type of object.
If the object is a symbol the name SYMBOL@ or SYMBOL designates a symbol name and can be:

  • the name of a nonmasked CSECT or ENTRY entry in a program library (type R or type L),

  • the name of a nonmasked CSECT or ENTRY entry in an object module library (OML) or in the EAM object module file (OMF).

If the object is a module the name SYMBOL@ or SYMBOL designates a module name and can be:

  • the name of a library element (type R or type L) in a program library,

  • the name of a library element in an object module library (OML).

    ANY All symbol tables are included in the search. The search is performed in the following sequence, as defined by DBL:

    1. LLMs with the module name SYMBOL@ or SYMBOL

    2. OMs with the module name SYMBOL@ or SYMBOL

    3. Symbols with the symbol name SYMBOL@ or SYMBOL in an LLM. DBL searches for CSECTs first. If no CSECT is found, it searches for ENTRYs.

    4. Symbols with the symbol name SYMBOL@ or SYMBOL in an OM. DBL searches for CSECTs first. If no CSECT is found, it searches for ENTRYs.

CSECT
Only control sections (CSECTs) with the symbol name SYMBOL@ or SYMBOL are searched for.

ENTRY
Only entry points (ENTRYs) with the symbol name SYMBOL@ or SYMBOL are searched for.

CSEN
CSECTs and ENTRYs with the symbol name SYMBOL@ or SYMBOL are searched for. DBL searches for CSECTs first. If no CSECT is found, it searches for ENTRYs.

MODULE
Only modules with the module name SYMBOL@ or SYMBOL are searched for.

A search for any already loaded CSECT or ENTRY names does not take place. In this way, repeated BIND calls can lead to multiple loading, which can result in BLS0339 messages.

TSTOPT=
Specifies whether symbolic addresses in the source program may be used for debugging with AID. Only programs for which test and diagnostic information (LSD) has been generated during compilation may be debugged using symbolic addresses. For this purpose certain compiler options must be set when compiling the source program (refer to user guide for the relevant compiler or assembler). If the TSTOPT operand is not specified, the value set with the START-EXECUTABLE-PROGRAM or LOAD-EXECUTABLE-PROGRAM (or START-PROGRAM or LOAD-PROGRAM) load call is used as the default value.

*DBLOPT
The parameter value is taken from the last call of the MODIFY-DBL-DEFAULTS command. If a value for the parameter has not yet been set using the MODIFY-DBL-DEFAULTS command, TSTOPT=NONE applies.

NONE
Test and diagnostic information (LSD) is not taken into account.

AID
Permits symbolic addresses from the source program to be used when debugging the program with AID (see the “AID” manual [3 (Related publications)]). This entry is valid only if LDINFO=DEF or LDINFO=REF is specified at the same time.

UNIT@=

Specifies the address of a field containing the name of the load unit. The name can be used in subsequent UNBIND macros.
If the operand is not given, the name defined via SYMBOL@ or SYMBOL will be used.

addr
Address of an auxiliary field which contains the field address searched for. May be specified only if MF=M.

(r)
r = register containing the field address searched for. May be specified only if MF=M.

label
Symbolic field address. May be specified only if MF=S or MF=L.

UNIT=name
May be specified only if MF=S or MF=L.
Explicit specification of the name of the load unit. The name may be up to 32 characters long.

UNRES=
Specifies how unresolved external references are to be handled. All unresolved external references will be output to the SYSOUT system file, with external dummy sections (XDSECs-R) being listed separately.
If the UNRES operand is not specified the value set in the START-EXECUTABLE-PROGRAM or LOAD-EXECUTABLE-PROGRAM (or START-PROGRAM or LOAD-PROGRAM) load call will be used as the default value.

*DBLOPT
The parameter value is taken from the last call of the MODIFY-DBL-DEFAULTS command. If a value for the parameter has not yet been set using the MODIFY-DBL-DEFAULTS command, the value that follows *DBLOPT in the syntax definition applies.

STD
Unresolved external references (except for external dummy sections (XDSECs-R)) will be given an address which is specified in the ERREXIT operand.

DELAY
Unresolved external references will be resolved at a later time. This operand is valid only in combination with LDINFO=REF.
DBL stores the unresolved external references in the link context. When the next load unit is loaded in the context DBL attempts to resolve the stored external references with CSECTs and ENTRYs from this load unit at the end of the loading operation. This process is repeated each time a new load unit is loaded for as long as the context exists.External dummy sections (XDSEC-Rs) cannot be stored.
When stored in the context, the unresolved external references are given a (provisional) address which is specified in the ERROR-EXIT operand.

DELAYWARN

Specified only in conjunction with INTVERS=SRVxxx, where xxx >= 004.
The behavior is like UNRES=DELAY. In addition, when unresolved external references occur, a corresponding return code is issued.

UNRES=DELAYWARN is also a prerequisite for USRUNRI=DELAY.

ABORT
Unresolved external references are not allowed. Loading of the current load unit will be aborted.

USRMAP@=
Address of a user-defined data area to which information of the DBL map which is defined with the USRMAPI operand (only in conjunction with INTVERS=SRVxxx and xxx >= 005) is to be output. The data area must be aligned on word boundary. The length of the area must be transferred with the USRMAPL operand. You can also obtain the layout of the information with
BIND MF=D,XPAND=USRMAP,INTVERS=SRV005.

This specification is ignored if USRMAPI=NONE.

addr
Address of an auxiliary field which contains the address of the data area. May be specified only if MF=M.

(r)
r = register containing the address of the data area. May be specified only if MF=M.

label
Symbolic address of the data area. May be specified only if MF=S or MF=L.

USRMAPI=
Determines which part of the DBL map is to be output to a data area whose address the user transfers with the USRMAP@ operand (only in conjunction with INTVERS=SRVxxx and xxx >= 005).

NONE
The DBL map is not output to a user-defined data area.

STD
The header of the DBL map and the information on load unit and modules are output to a user-defined data area, but no information on CSECTs and ENTRYs.

ALL
The entire DBL map (as with SYSOUT) is output to a user-defined data area.

USRMAPL=integer 1..21474836479

Length of the user-defined data area whose address is transferred with the USRMAP@ operand (only in conjunction with INTVERS=SRVxxx and xxx >= 005). The length must be specified in bytes. It must (for the minimum information) be at least 248 bytes for INTVERS=SRV005 and 336 bytes for INTVERS=SRV006.

This specification is ignored if USRMAPI=NONE.

USRUNR@=
Address of a user-defined data area to which a list of the unresolved external references is to be output (only in conjunction with INTVERS=SRVxxx and xxx >= 005). The data area must be aligned on word boundary. The length of the area must be transferred with the USRUNRL operand.

The information output mainly consists of a list header, the length of the information output and the number of unresolved external references, and a list of records, each of which define one of these external references.
The layout of the area can be generated with BIND MF=D,XPAND=USRUNR,INTVERS=SRVxxx where xxx >= 005. The layout depends on the version (INTVERS operand).

addr
Address of an auxiliary field which contains the address of the data area. May be specified only if MF=M.

(r)
r = register containing the address of the data area. May be specified only if MF=M.

label
Symbolic field address of the data area. May be specified only if MF=S or MF=L.

USRUNRI=
Determines which unresolved external references are to be output to the data area whose address the user transfers with the USRUNR@ operand (only in conjunction with INTVERS=SRVxxx und xxx >= 006).

The specification is ignored if USRUNR@ is not specified.

STD
The external references from the current load operation which remain unresolved are output to the user-defined data area.

DELAY
The external references from earlier load operations (with UNRES=DELAY) which remained unresolved are output to the user-defined data area.

When USRUNRI=DELAY, UNRES=DELAYWARN must also be specified.

BOTH

Both types of unresolved external references are output to the user-defined data area.

When USRUNRI=BOTH, UNRES=DELAYWARN must also be specified.

USRUNRL=integer 1..21474836479
Length of the user-defined data area whose address is transferred with the USRUNR@ operand (only in conjunction with INTVERS=SRVxxx and xxx >= 005). The length must be specified in bytes. It must (for the output header) be at least16 bytes for INTVERS=SRV005 and 20 bytes for INTVERS=SRV006.

This specification is ignored if USRUNR@ is not specified.

VERS@=
Specifies the address of a field containing the element version of the element defined by SYMBOL@ or SYMBOL. If SYMTYP=ANY is specified, the VERS@ operand is taken into account only if the object name (SYMBOL@ or SYMBOL) refers to a module in a program library (type R or type L). If a CSECT or ENTRY name is specified, the VERS@ operand is ignored. If the operand is not specified, the default value for the highest element version in program libraries is used (see the “LMS” manual [29 (Related publications)]).

addr
Address of an auxiliary field which contains the field address searched for.May be specified only if MF=M.

(r)
r = register containing the field address searched for. May be specified only if MF=M.

label
Symbolic field address. May be specified only if MF=S or MF=L.

VERS=version
May be specified only if MF=S or MF=L.
Explicit specification of the element version. The name may be up to 24 characters long.

XPAND=
Specified only with MF=D.
Determines the layout of the data area to be generated.

PARAM
Generates the layout of the parameter list for calling the BIND macro.

XRC
Generates the layout for the extended return code.

USRMAP

Specified only in conjunction with INTVERS=SRVxxx and xxx >= 005.
Generates the layout for the data area to which the DBL map can be output (see USRMAPI, USRMAP@ and USRMAPL operands).

USRUNR
Specified only in conjunction with INTVERS=SRVxxx and xxx >= 005.
Generates the layout for the data area to which a list of the unresolved external references can be output (see USRUNR@, USRUNRI and USRUNRL operands).

XRC=
Specifies the address of a field containing the extended return code.
The address must be aligned on a word boundary. The field has the following format:

Byte

Length

Content

0- 6

7

Message code of the last message output during processing of the BIND macro

7

1

blank

8-11

4

DMS error code

12-23

12

PLAM error code

24-27

4

Error code for other types of error that may occur when searching in libraries

28

1

ILE flag and 7 reserved bits

29-31

3

reserved

32

4

Address of the ILE server module

addr
Address of an auxiliary field which contains the field address searched for. May be specified only if MF=M.

(r)
r = register containing the field address searched for. May be specified only if MF=M.

label
Symbolic field address. May be specified only if MF=S or MF=L.

XRCL=
Defines the length of the field specified in XRC. Depending on the length set, DBL transfers all or only some of the possible information.

28
The XRC field is 28 bytes long. No information about ILEs will be transferred.

36
The XRC field is 36 bytes long. All information, including ILE information, will be transferred.

Notes on the macro call

  • Modules or control sections (CSECTs) which have already been loaded once in the link context are not loaded a second time by DBL. With BRANCH=YES DBL branches to the address of the symbol (CSECT or ENTRY) that was loaded. With BRANCH=NO processing is continued with the next instruction in the calling program.

  • CSECTs or COMMONs which have names consisting of blanks are given the default name “%CSECT” or “%COM”.

  • If an LLM containing no relocation information cannot be loaded at a suitable address an error condition is produced.

  • When loading the load unit DBL attempts to resolve unresolved external references from a previous load unit which were stored in the link context (UNRES=DELAY operand) for the current load unit.

  • The OPEN mode for the program libraries and elements is determined by the value defined with the system parameter BLSOPENX.

  • The ALTLIB=YES and LIBNAM@/LIBNAM/LIBLINK operands may be specified together in the same macro. If, however, the main library specified by the LIBNAM@/LIBNAM/LIBLINK operand is not present, DBL aborts the processing. Specifying ALTLIB=YES is no substitute for a missing or invalid main library.

  • If the specified program version has not yet been loaded but a program with this name already exists in the link context (see CONTEXT operand), loading is rejected because of the name conflict.

  • When a REP file (REPFILE, REPFIL@) is specified, DBL can also process an associated NOREF file provided the name convention for BS2000-REP files is adhered to: either the NOREF file name includes the element “SYSNRF” (instead of SYSREP), or the NOREF file has the same name as the main library with the extension “.NOREF”. NOREF files must have the same format in the user environment as in the system environment.

  • When BIND MF=D,XPAND=USRMAP is specified, the same prefix must be specified as for BIND MF=D,XPAND=PARAM.

  • If the user-defined output area for the DBL map (USRMAPI, USRMAP@ and USRMAPL operands) is too small to contain all the information, a return code (X’08010129’) is entered in the map header. Output is aborted, but the load operation is continued.

  • The list of unresolved external references or external references from earlier load operations (with UNRES=DELAY) which remained unresolved (if there is one) is output to the area defined with USRUNR@, USRUNRI and USRUNRL. This output is independent of the UNRES operand. If the area that is to contain all the information is

    too small, a return code (X’0801012D’) is entered in the map header. Output is aborted, but the load operation is continued. If all external references have been resolved, 0 is entered in the map header.

  • When

    SYMBOL=*ALL or SYMBOL=name is specified and the last character of name being the wildcard symbol “*”, the result of the load process is a socalled list name unit. For details, see the „BLSSERV“ manual [4 (Related publications)].

Format of the name structure in the parameter list of the BIND macro

DBL manages the various names defined in the BIND macro with the aid of the BIND macro parameter list. For each name the parameter list contains a pointer which points to the address of the associated name field (see figure on the next page). Except for SYMBOL@ all names are optional. If a name is not defined in the macro the macro sets the associated pointer to the address value X'FFFFFFFF'.

A name can also be explicitly specified in the macro. In this case the names are entered in the parameter list.

Figure 23: Name structure in the parameter list of the BIND macro

Search strategy

DBL searches in various containers for the object defined using SYMBOL@ and SYMTYP. If a suitable object is found in a container it is inserted in the load unit, the load unit is loaded and the start address passed to the user via the SYMBLAD field.

The search operation is performed in the following stages:

  1. Search in the link context. The reference context is not searched.

  2. Search in the user's shared code that was loaded into a common memory pool by means of the ASHARE macro of DBL. The search can be restricted to memory pools with a particular scope or suppressed in its entirety (SHARE-SCOPE operand).

  3. Search in the shared code in the system address space in which nonprivileged subsystems are loaded (see the “Subsystem Management” manual [12 (Related publications)]). The user can suppress searching in nonprivileged subsystems by specifying SHARE-SCOPE != SYSTEM in the load call.

  4. Search libraries which the user specified with the LIBNAM@ or LIBNAM or LIBLINK operand in the load call.

  5. Search alternate (system) libraries assigned using the file link name BLSLIBnn (where 00<=nn<=99) or $BLSLBnn. The libraries are searched in ascending numerical order (by “nn”). The alternate system libraries $BLSLB00..49 are searched first, followed by the alternate libraries BLSLIB00..99, and finally, the remaining alternate system libraries $BLSLB50..99.

    The system and/or user tasklibs can be searched, depending on the operand ALTLIB.

    The user can suppress searching in alternate libraries by specifying the ALTLIB=NO operand in the load call.

Note

For list name units, no names in the link context or shared code are searched for as these names are element names and not symbol names.

For details, see the „BLSSERV“ manual [4 (Related publications)].

Return information and error flags

The start address of the load unit is transferred to the field specified with the SYMBLAD operand. The high-order bit of the transferred start address indicates which addressing mode has to be set (bit = 1 for 31-bit addressing, bit = 0 for 24-bit addressing).

Standard header:

+---------------+
|   |   |   |   |
|c|c|b|b|a|a|a|a|
+---------------+

The following return code relating to the execution of the BIND 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'

Macro executed normally

X'0C'

X'01'

X'0018'

A reserved field of the parameter list is not prefilled with zeros

X'0C'

X'01'

X'0100'

Illegal combination of parameters in the parameter list. Illegal
combinations may, for example, include:

  • OVERLAY=YES specified without LOAD@

  • LDINFO=NONE specified together with TEST-OPTIONS in the
    LOAD-EXECUTABLE-PROGRAM or LOAD-PROGRAM command

  • RESTYP=USER specified without RESORD

  • USRMAPI=STD/ALL specified without USRMAP@ or USRMAPL

X'0C'

X'01'

X'0104'

The macro call is invalid because it was issued under a user ID that is
permitted for maintenance only

X'0C'

X'40'

X'0114'

LNKCTXS=OLD was given and the specified context is not present

X'0C'

X'40'

X'0118'

LNKCTXS=NEW was given and the specified context is present

X'0C'

X'40'

X'011C'

A context specified with REFCTX@ is not present

X'0C'

X'01'

X'0120'

  • An output area has read access only, is not assigned or is not

    aligned on a word boundary,

  • MPID is not assigned or is not aligned on a word boundary

X'0C'

X'01'

X'0121'

Invalid parameter list: One of the input parameters is wrong.

X'0C'

X'01'

X'0124'

An area that is to contain a name is not assigned. The name can be:

  • the object name (SYMBOL)

  • the name of the load unit (UNIT)

  • the version name (VERS)

  • the library name (LIBNAM)

  • the name of the REP file (REPFILE)

  • the link context name (LNKCTX)

  • a name in the list of reference context names (REFCTX)

X'0C'

X'01'

X'0125'

The number of reference context names is too big. No more than
200 names are permitted

X'0C'

X'01'

X'0127'

The mandatory operand SYMBLAD has not been specified.

X'08'

X'01'

X'0129'

The length specified with USRMAPL is too small. Output of the DBL map
to a user-defined data area is aborted without an end record. Loading is
continued. This return code is output in the data area’s header.

X'0C'

X'01'

X'012A'

The length specified with USRMAPis too small.

X'08'

X'01'

X'012D'

The length specified with USRUNRL is too small. Output of the list of
unresolved external references or of external references from earlier
load operations (with UNRES=DELAY) which remained unresolved to a
user-defined data area is aborted. Loading is continued.
This return code is output in the data area’s header.

X'0C'

X'01'

X'012E'

The length specified with USRUNRL is too small.

X'0C'

X'01'

X'0134'

Illegal LNKCTXS operand

X'0C'

X'01'

X'0144'

Invalid link context name

X'0C'

X'01'

X'0146'

A reference context has the same name as the link context

X'0C'

X'01'

X'0148'

A link or reference context cannot be used

X'0C'

X'01'

X'014C'

An invalid symbol name consisting of blanks has been specified

X'0C'

X'01'

X'014D'

No symbol name has been specified

X'0C'

X'01'

X'0150'

Illegal entry in the SYMTYP operand.
One of the following must be specified as the object type:
CSECT (1) / ENTRY (2) / CSEN (3) / MODULE (4) / ANY (5).
An object type other than those listed above was specified

X'0C'

X'20'

X'0158'

The maximum number of 16 user contexts has been reached. A new
context cannot be generated

X'0C'

X'40'

X'016C'

Internal error in the AID debugging routine (system error)

X'0C'

X'40'

X'0184'

The identifier for MPID is invalid because

  • the memory pool (MP) was not set up or the user not connected to
    the MP

  • the MP is not in class 6 memory

  • the MP is already being used for the user' s shared code

X'0C'

X'01'

X'0188'

Invalid load address specified in LOAD@

X'0C'

X'40'

X'018C'

An attempt was made to use a context which has been corrupted by a
previous error

X'0C'

X'40'

X'0190'

An illegal residence mode (RMODE) has been defined for the load unit
by DBL. This can happen when loading modules or COMMONs.
Possible cause when loading a module:

  • The dummy RMODE defined for the module is 24 and the load unit
    is loaded into a memory pool (MP) above 16 Mb

Possible causes when loading a COMMON:

  1. The COMMON is to be loaded below 16 Mb and the load unit is
    loaded into a MP above 16 Mb. This is the case when:

    • the COMMON has RMODE 24 or

    • the load unit has PROGMOD 24 or

    • at least one module of the load unit is loaded below 16 Mb.

  2. The COMMON was loaded in same context in a previous load unit
    above 16 Mb and is to be loaded below 16 Mb in the current load unit

X'0C'

X'01'

X'0194'

A class 6 memory area requested by DBL has been released by the
user, or the attributes of memory pages have been changed by the user.
An error occurred during the validity check of the released area.

X'0C'

X'20'

X'0196'

Common memory pool connection error. The task cannot be connected
to the memory pool because (for example) part of the memory area for
the memory pool has already been requested by the current task

X'0C'

X'20'

X'0198'

There is not enough space available for loading the objects specified by
the user

X'0C'

X'20'

X'01A0'

A resource cannot be accessed because it is locked

X'0C'

X'40'

X'0200'

Error during DBL execution (system error)

X'0C'

X'40'

X'0204'

Inconsistencies in the DBL memory management tables (system error)

X'0C'

X'40'

X'0208'

Inconsistencies in the DBL data management tables (system error)

X'0C'

X'40'

X'020C'

Inconsistencies in the symbolic information tables (system error)

X'0C'

X'20'

X'0300'

Error in $REQM, $RELM, $CSTAT, RDTFT (system error)

X'0C'

X'40'

X'0400'

Errors detected in object records during processing of a module
(OM or LLM)

X'0C'

X'40'

X'0404'

Invalid type code in the ESD/ESV record

X'0C'

X'40'

X'0408'

Inconsistencies in the input module (e.g. in the order of ESD/ESV
records)

X'0C'

X'40'

X'040C'

The specified module is not contained in the current load unit. Error in
the RLD/LRLD record

X'0C'

X'40'

X'0410'

Error in the TXT record

X'0C'

X'40'

X'0414'

Error during processing of symbolic information

X'04'

X'40'

X'0418'

Error in REP record. Processing is continued. (Message BLS0230 was
answered with YES in interactive mode.)

X'08'

X'40'

X'0418'

Error in REP record. Processing is continued (batch mode)

X'0C'

X'40'

X'0418'

Error in REP record. Processing was aborted. (Message BLS0230 was
answered with NO in interactive mode.)

X'04'

X'40'

X'041C'

The specified module is not in the current load unit. The REP record is
ignored. Processing is continued. (Message BLS0234 answered YES)

X'0C'

X'40'

X'041C'

The specified module is not in the current load unit. The REP record
cannot be processed. Processing was aborted. (Message BLS0234 was
answered with NO.)

X'04'

X'40'

X'0420'

Error in the INCLUDE statement. Processing is continued. (Message
BLS0230 was answered with YES.)

X'0C'

X'40'

X'0420'

Error in the INCLUDE statement. Processing was aborted

X'0C'

X'40'

X'0430'

The LLM cannot be loaded. Possible reasons:

  • It cannot be loaded with the current BLSSERV version.

  • Only one LLM with user-defined slices can be loaded in a context,
    and one already exists.

  • LLM can only be processed by BINDER and LLMAM .

  • LLM with CSECT AMODE=31 cannot be loaded with
    PROGMOD=24.

  • An LLM with user-defined slices cannot be loaded in a list name unit.

X'0C'

X'40'

X'0432'

An address resulting from a relocation was truncated. Processing is
continued

X'0C'

X'40'

X'0433'

An address resulting from a instruction is outside the current segment.
Processing is aborted

X'0C'

X'40'

X'0434'

This LLM is inconsistent with the “PRE-LOADING” option and preloading
was requested. Processing is aborted

X'0C'

X'40'

X'0435'

The length transferred to DSSM for the preloadable section does not
match the actual length of the preloadable LLM section

X'04'

X'01'

X'0600'

The module specified in an INCLUDE statement cannot be found.
Processing is continued. (Message BLS0232 was answered with YES.)

X'0C'

X'01'

X'0600'

The module specified in an INCLUDE statement cannot be found.
Processing was aborted. (Message BLS0232 was answered with NO.)
or
The module specified with SYMBOL@ or SYMBOL cannot be found in
the specified libraries

X'04'

X'01'

X'0604'

A name conflict has occurred and has been accepted

X'0C'

X'01'

X'0604'

A name conflict has occurred. Processing was aborted

X'04'

X'01'

X'0608'

External references cannot be resolved.
Processing is continued. (Message BLS0350 was answered with YES.)

X'08'

X'01'

X'0608'

Unresolved external references remain in the context and are processed
later when possible. Processing is continued.
(Return code issued only with UNRES=DELAYWARN.)

X'0C'

X'01'

X'0608'

External references cannot be resolved.
Processing was aborted. (Message BLS0350 was answered with NO.)

X'04'

X'01'

X'0609'

XDSECs-Rs cannot be resolved. Processing is continued

X'0C'

X'01'

X'0609'

XDSECs-Rs cannot be resolved. Processing was aborted

X'04'

X'40'

X'060C'

LOAD=NO was specified but the module is not loaded

X'0C'

X'40'

X'060D'

The symbol is already loaded in LNKCTX. It is not loaded again so as to
avoid name conflicts

X'0C'

X'01'

X'0610'

The specified file is not a program library (PL) or an object module library
(OML)

X'0C'

X'01'

X'0614'

The specified file is not a valid object module library (OML)

X'0C'

X'01'

X'0618'

The PLAM library routine is not available

X'0C'

X'01'

X'061C'

PAM read error in the library

X'0C'

X'01'

X'0620'

Error in the OML directory

X'0C'

X'40'

X'0624'

The load unit contains a CSECT with AMODE 31 and:

  • the hardware does not allow 31-bit addressing

  • PROGMOD=24 was specified or

  • the module with the specified symbol has already been loaded
    above 16 Mb and PROGMOD=24 was specified

X'04'

X'40'

X'0628'

The current addressing mode does not match the addressing mode that
has to be used for the entry point (e.g. when the called program is
executing with AMODE=31 and the entry point has AMODE=24). The
addressing mode has to be switched over. However, DBL still passes the
correct start address in the SYMBLAD field

X'0C'

X'40'

X'062C'

An attempt was made to load a module with RMODE=24 into a memory
pool above 16 Mb

X'0C'

X'01'

X'0630'

An LLM containing slices for loading above and below 16 Mb cannot be
loaded into a memory pool

X'0C'

X'01'

X'0634'

An LLM containing user-defined slices cannot be loaded into a memory
pool

X'0C'

X'01'

X'0636'

The HSI codes of the ILE and server module are incompatible.
The server module has not been loaded.

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).

Example

During the BIND1 program run, a BIND macro is issued to load a second CSECT, BIND2, as an overlay. BIND2 is stored as an LLM in library MACEXMP.LIB. Both CSECTs are to execute in 31-bit addressing mode. BIND1 is to be loaded below, and BIND2 above, the 16-Mb boundary. After the BIND macro is called BIND2 is to execute first.

Program BIND1

BIND1    START
         PRINT NOGEN
BIND1    AMODE 31 —————————————————————————————————————————————————————  (1) 
BIND1    RMODE 24
         BALR  3,0
         USING *,3
         USING BINDSECT,6 —————————————————————————————————————————————  (2) 
         ST    3,AREA11
         UNPK  AREAH,AREA1
         MVC   AREAA(8),AREAH
WROUT1   WROUT OUT,ERROR,PARMOD=31 ————————————————————————————————————  (3) 
BACK     LA    12,MVC
BIND     BIND  MF=E,PARAM=BINDPAR —————————————————————————————————————  (4) 
         LA    6,BINDPAR
         CLC   XBINRET,=X'00000000' ———————————————————————————————————  (5) 
         BE    MVC
         MVC   OUT+5(26),='BIND error!               '
         WROUT OUT,ERROR,PARMOD=31
         B     ERROR
MVC      MVC   OUT+5(26),='Back in BIND1             '
         WROUT OUT,ERROR,PARMOD=31 ————————————————————————————————————  (6) 
ERROR    TERM
OUT      DC    Y(OUTE-OUT)
         DS    CL3
         DC    C'BIND1: BASEREG.= '
AREAA    DS    CL8
OUTE     EQU   *
AREA     DS    0F
AREA1    DS    0CL5
AREA11   DS    CL4
AREA12   DC    C'0'
         DS    0F
AREAH    DS    CL9
BINDPAR  BIND  MF=L,SYMBOL=BIND2,SYMBLAD=BIND2@,BRANCH=YES,PROGMOD=ANY,*
               LIBLINK=PLAMLIB,MAP=SYSOUT
BIND2@   DS    A
BINDSECT BIND  MF=D,PREFIX=X ——————————————————————————————————————————  (7) 
         END

Program BIND2

BIND2    CSECT ————————————————————————————————————————————————————————  (8) 
         PRINT NOGEN
BIND2    AMODE ANY ————————————————————————————————————————————————————  (9) 
BIND2    RMODE ANY
         BALR  4,0
         USING *,4
         ST    4,AREA11
         UNPK  AREAH,AREA1
         MVC   AREAA(8),AREAH
         WROUT OUT,ERROR,PARMOD=31 ———————————————————————————————————— (10) 
         BR    12
ERROR    TERM
OUT      DC    Y(OUTE-OUT)
         DS    CL3
         DC    C'BIND2: BASEREG.= '
AREAA    DS    CL8
OUTE     EQU   *
AREA     DS    0F
AREA1    DS    0CL5
AREA11   DS    CL4
AREA12   DC    C'0'
AREAH    DS    CL9
         END

(1)

The AMODE=31 attribute is defined for program segment BIND1. The RMODE=24 attribute means that BIND1 will always be loaded below the 16Mb boundary.

(2)

Register 6 is assigned by the assembler as the base address register for addressing the DSECT for the operand list of the BIND macro, which is generated at the symbolic address BINDSECT as a result of a BIND macro specifying MF=D.

(3)

The contents of the base register for BIND1 are output to indicate the addressing mode and the load address.

(4)

The BIND macro is called in its E form at the symbolic address BIND. At this point in the program, therefore, only the instruction part is generated. The associated operand list is created at the symbolic address BINDPAR by means of a BIND macro specifying MF=L. As a result of the operand values specified in the list, the BIND macro causes the following to happen at program runtime:

  • the CSECT BIND2 (SYMBOL=BIND2,SYMTYP=CSECT) is reloaded from the library assigned with the link name PLAMLIB (LIBLINK=PLAMLIB),

  • the start address of BIND2 is stored in field BIND2@ (SYMBLAD=BIND2@),

  • the 31-bit addressing mode is set for BIND2 (PROGMOD=ANY),

  • a DBL map is output to SYSOUT (MAP=SYSOUT), and

  • the program run is continued in BIND2 after BIND2 has been loaded (BRANCH=YES).

(5)

Following execution of the BIND macro, a check is made to verify that the XBINRET field of the standard header contains the return code X'00000000', which indicates error-free execution of the macro. The name XBINRET originates from the DSECT that was generated under the symbolic address BINDSECT as a result of a BIND macro specifying MF=D and PREFIX=X (see (7)). This DSECT describes the layout of the operand list of the BIND macro. The symbolic names of the DSECT can be used for addressing within the operand list once the assigned base address register (in this case, register 6) has been loaded with the start address of the operand list (in this case, BINDPAR).

(6)

A message is written to SYSOUT to indicate that the program run is continued in BIND1 following execution of BIND2.

(7)

The BIND macro specifying MF=D generates a DSECT which describes the layout of the operand list of the BIND macro. The PREFIX=X operand causes the letter X to be prefixed to all symbolic names in this DSECT (field names and equates).

(8)

The CSECT statement defines the program segment BIND2.

(9)

AMODE=ANY indicates to the operating system that BIND2 can execute in 24-bit or 31-bit addressing mode.

(10)

The contents of the base register for BIND2 are output to indicate the addressing mode and the load address.

Runtime log

/start-assembh
%  BLS0500 PROGRAM 'ASSEMBH', VERSION '<ver>' OF '<date>' LOADED
%  ASS6010 <ver> OF BS2000 ASSEMBH  READY 
//compile source=*library-element(macexmp.lib,bind1), -  ——————————————— (11) 
//        compiler-action=module-generation(module-format=llm), -
//        module-library=macexmp.lib, -
//        listing=parameters(output=*library-element(macexmp.lib,bind1))
%  ASS6011 ASSEMBLY TIME: 557 MSEC
%  ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES
%  ASS6019 HIGHEST ERROR-WEIGHT: NO ERRORS
%  ASS6006 LISTING GENERATOR TIME: 84 MSEC
//compile source=*library-element(macexmp.lib,bind2), -  ——————————————— (12) 
//        compiler-action=module-generation(module-format=llm), -
//        module-library=macexmp.lib, -
//        listing=parameters(output=*library-element(macexmp.lib,bind2))
%  ASS6011 ASSEMBLY TIME: 270 MSEC
%  ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES
%  ASS6019 HIGHEST ERROR-WEIGHT: NO ERRORS
%  ASS6006 LISTING GENERATOR TIME: 82 MSEC
//end
%  ASS6012 END OF ASSEMBH
/add-file-link link-name=plamlib,file-name=macexmp.lib ———————————————— (13) 
/start-executable-program library=macexmp.lib, - —————————————————————— (14) 
/      element-or-symbol=bind1,prog-mode=*any
%  BLS0523 ELEMENT 'BIND1', VERSION '@' FROM LIBRARY
   ':2OSG:$QM212.MACEXMP.LIB' IN PROCESS
%  BLS0524 LLM 'BIND1', VERSION ' ' OF '<date> <time>' LOADED
BIND1: BASEREG.= 80000002 ————————————————————————————————————————————— (15) 
——————————————————————————————————————————————————————————————————————— (16) 
############################### A D B L   M A P #############################
#                                                                           #
# LOAD UNIT: BIND2. . . . . . . . . . . . . LOAD INFO  =DEF               #
# VERSION  : ~                              LOAD TIME  =<date> <time>     #
# CONTEXT  : LOCAL#DEFAULT. . . . . . . . . TEST OPTION=NONE              #
#                                                                           #
#  LLM     : BIND2. . . . . . . . . . . . . BY_ATTR  / EXPLICIT  PLAMLIB  #
#   OM     : BIND2. . . . . . . . . . . . . STANDARD                      #
#    CSECT : BIND2. . . . . . . . . . . . . @= 1000000 L=      7E         #
#                                                                           #
# LOAD UNIT STARTING POINT. . . . . . . . . @= 1000000 AMODE=31 HSI=/7500 #
#                                                                           #
######################## E N D   O F   A D B L   M A P ######################
BIND2: BASEREG.= 81000002 ————————————————————————————————————————————— (17) 
Back in BIND1 ————————————————————————————————————————————————————————— (18) 

(11)

Program BIND1 is assembled.

(12)

Program BIND2 is assembled.

(13)

The file link name used in the BIND call (4) is assigned.

(14)

DBL is invoked to link, load and start the program.

(15)

The contents of the base register for BIND1 are output. 31-bit addressing is set (bit 231 = 1); the load address is below the 16-Mb boundary.

(16)

DBL has loaded the CSECT BIND2. A DBL log is written to SYSOUT.

(17)

The contents of the base register for BIND2 are output. 31-bit addressing is set (bit 231 = 1); the load address is above the 16-Mb boundary.

(18)

Following the return from BIND2, the program run is continued in BIND1.