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 LDSLICE macro loads a slice defined in an LLM by the user into main memory. The slices used to build the LLM are defined by the user by means of the SET-USER-SLICE-POSITION statement (see the “BINDER” manual [5 (Related publications)]).
Macro format and description of operands
LDSLICE |
[ { MODULE=name / MODULE@={addr / (r)} } ] [,MSG=*DBLOPT / INFORMATION / WARNING / ERROR / NONE ] ,{ NAME=name / NAME@={addr / (r)} } ,PATH=NO / YES ,RELOAD=NO / YES [,SLICE@=addr / (r) / label] ,MF=S / C / D / E / L / M [,PARAM=addr / (r)] ,PREFIX=P / p [,LABEL=name] |
The operands are described in alphabetical order below.
LABEL=name
For MF=M only.
Name of the structure, i.e. the DSECT which describes the operand list of the LDSLICE 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 LDSLICE MF=D
.The name “xSLICDS” if no “name” has already been specified, where “x” is the value of the PREFIX operand of a preceding macro
LDSLICE MF=D, PREFIX=x
.
The default value for “x” is “P”.The name of the longer DSECT containing the parameter list of the LDSLICE macro if the macro
LDSLICE MF=C
was specified earlier.
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, D form or M form of the macro (see section “S-type macros”).
MODULE=name
Specifies the internal name of the LLM or PAM-LLM defined when the LLM was generated (max. 32 characters). The internal name should always be specified when several LLMs with user-defined slices are loaded in main memory. If the MODULE operand is not specified DBL selects the first LLM which contains the slice.
MODULE@=
For MF=M only.
Specifies the address of a field containing the internal name of the LLM.
addr
Symbolic address of the field containing the name.
(r)
Register containing the address value “addr”.
MSG=
Specifies the lowest message class; messages at and above this level will be output. The value set with the LOAD-EXECUTABLE-PROGRAM or START-EXECUTABLE-
PROGRAM (or LOAD-PROGRAM or START-PROGRAM) load call is used as the default value.
*DBLOPT
The operand 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, MSG=INFORMATION 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.
NAME=name
Specifies the name of the slice which is to be loaded. The name is specified by the user in the SET-USER-SLICE-POSITION statement when defining the slice. This name must be inserted for “name” (max. 32 characters long).
The specified slice can only be loaded if the root slice (%ROOT) is loaded.
NAME@=
For MF=M only.
Specifies the address of a field containing the name of the slice to be loaded.
addr
Symbolic address of the field containing the name.
(r)
Register containing the address value “addr”.
PATH=
Determines whether only the slice specified with NAME will be loaded or whether in addition to the NAMEd slice all “higher” slices in the same path (between the root slice and the NAMEd slice) will be loaded.
NO
Only the slice specified with NAME will be loaded.
YES
All higher slices in the same path will be loaded in addition to the NAMEd slice.
RELOAD=
Specifies whether a slice which is already loaded in main memory will be reloaded.
NO
An already loaded slice will not be reloaded.
YES
An already loaded slice will be reloaded and will overwrite the previous slice in main memory.
SLICE@=
Specifies the address of a 4-byte field in which DBL passes the load address of the slice. The address transferred refers to the first byte of the slice specified with NAME. The field must be aligned on a word boundary and have write access.
If the SLICE@ operand is not specified the load address of the slice is not passed.
addr
Symbolic address of the field. May be specified only if MF=M
(r)
Register containing the address value “addr”. May be specified only if MF=M.
label
Direct specification of the symbolic address of the field. May be specified only if MF=S or MF=L.
Rules for the loading of slices
The slice to be loaded must form part of the physical structure for which the root slice was loaded.
The root slice must already have been loaded using the START-PROGRAM or LOAD-PROGRAM command or the BIND macro.
Return information and error flags
If a field has been specified with the SLICE@ operand, DBL passes the load address of the slice.
Standard header:
+---------------+ | | | | | |c|c|b|b|a|a|a|a| +---------------+
The following return code relating to the execution of the LDSLICE macro is transferred in the standard header
(cc=subcode2, bb=subcode1, aaaa=main code):
X'cc' | X'bb' | X'aaaa' | Meaning |
X'00' | X'00' | X'0000' | The macro was executed normally. |
X'0C' | X'01' | X'0018' | A reserved field in the parameter list is not prefilled with zeros. |
X'0C' | X'01' | X'0100' | Invalid parameter list. The mandatory NAME operand is missing. |
X'0C' | X'20' | X'0102' | The specified module has not been found. |
X'0C' | X'01' | X'0104' | The specified slice has not been found. |
X'00' | X'00' | X'0108' | The specified slice has already been loaded. |
X'0C' | X'01' | X'010C' | The field specified by SLICE@ is not aligned on a word boundary. |
X'0C' | X'01' | X'0110' | The field specified by SLICE@ has read access only or is not assigned. |
X'0C' | X'20' | X'0198' | Not enough memory space available for loading the object. |
X'0C' | X'40' | X'0204' | Internal memory management error. |
X'0C' | X'40' | X'0208' | Internal data manager error. |
X'0C' | X'20' | X'0300' | Error during a system call. |
X'00' | X'03' | 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).