The following executable macros are used by UIMs.
Executable Macro Name |
Executable Macro Function |
CBDIGETM |
Obtains a contiguous virtual storage area |
CBDIMSG |
Issues a message. |
CBDIPPDS |
Puts an entry on or removes an entry from the HCD diagnostic stack. |
CBDISIML |
Generates either a similar device list or an attachable device list. |
CBDIGETM Executable Macro
The CBDIGETM macro obtains a contiguous virtual storage area, and clears
it to hexadecimal zero.
The syntax of the CBDIGETM macro is as follows:
[label] CBDIGETM {UNCOND|COND}
,LENGTH=length|(reg)
[,SUBPOOL={pool_number|(reg)}]
[,BNDRY={DBLWD|PAGE}]
,REQ=UIM
[,ADDRESS=address_variable]
[,RELATED=related value]
- label
- Specifies the label name that the system generates in the first instruction
of the macro expansion.
- UNCOND
- Specifies an unconditional storage request. If there is not enough
virtual storage, the active task terminates abnormally. UNCOND is the default.
- COND
- Specifies a conditional storage request. If there is not enough virtual
storage, this macro provides return code 4.
- LENGTH
- Specifies requested virtual storage length in bytes. Length can range
from 1 byte to 16 megabytes, automatically rounded up to the next multiple
of 8. If you use register notation, make sure the designated register contains
the length.
- SUBPOOL
- Specifies the subpool number from which virtual storage is allocated.
Valid numbers are between 0 and 127. If you use register notation, make sure
the designated register contains the subpool number. If this macro specifies
a subpool, it allocates storage from that subpool. Otherwise, it allocates
storage from the subpool assigned to the job step.
- BNDRY
- Specifies requested alignment:
- DBLWD
- Specifies alignment on a double word boundary.
- PAGE
- Specifies alignment at the start of a virtual page (a 4K boundary).
Note:
The default is DBLWD.
- REQ
- Must be UIM (specifies that a UIM is issuing
the macro).
- ADDRESS
- Specifies the variable to contain the address of acquired storage.
- RELATED
- Specifies an optional character string that can identify related macro
calls.
Registers used by the CBDIGETM macro:
- Register 1
- Parameter list address
- Register 14
- Linkage register
- Register 15
- Linkage register
Make sure the UIM has addressability to the UCA when issuing the CBDIGETM
macro.
Note:
You must also include the CBDZGETM definition macro in the
UIM. The CBDZGETM definition macro maps the GETM parameter list. The CBDIGETM
executable macro builds the GETM parameter list.
Return Codes
Return Code |
Reason Code |
Description |
Message |
Abend / Reason Code |
GETMOK |
GETMOK |
Request completed successfully |
- |
- |
GETMWARN |
GETMSNAV |
Storage not available (conditional only; on unconditional request,
a system abend occurs) |
CBDA056I |
- |
GETMTERM |
GETMINVF
GETMINVS
GETMLEN0 |
Invalid function code
Invalid Subpool number
Zero length
provided |
CBDA011I
CBDA011I
CBDA011I |
00F/00110011
00F/00110012
00F/00110015 |
Example
CBDIGETM LENGTH=BUFFLEN,ADDRESS=BUFFADDR,REQ=UIM
.
.
.
BUFFADDR DC A(0)
BUFFLEN DC F'80'
This example requests a dynamic storage area with a length of 80 bytes,
with the address returned in variable BUFFADDR.
CBDIMSG Executable Macro
The CBDIMSG macro issues a message that appears on a terminal or in a message
log.
The syntax of the CBDIMSG macro is as follows:
[label] CBDIMSG MID=message_id
[,VARn=(variable,{H|B|C})]
[,SEV=severity]
,REQ=UIM
- label
- Specifies the label name that the system generates in the first instruction
of the macro expansion.
- MID
- Specifies the message identifier. Make sure the message identifier
is eight bytes long.
Note:
The CBDIMSG macro can only issue messages
defined in the associated UIM data table (UDT). See UIM Data Tables (UDTs).
- VARn
- You can specify variables when defining a message. These variables cause
substitutions in the message, just before it is displayed. Because many languages
have different noun and verb sequences, message variables are numbered instead
of sequenced. Specify a message variable by including an @n in the message
text, where “n” is a number from 1 to 9.
This is a message text
example: “Number of units must be @1 for the @2 device.”
Each variable may be as long as 255 bytes. Specify variable type as:
- H
- Specifies a hexadecimal field type.
- B
- Specifies a fixed binary field type.
- C
- Specifies a character field type.
If you omit the variable type, its default is C.
- SEV
- Specifies the message severity. The following severities are supported:
- MSGINFO
- informational message. This message has no effect on HCD processing
or its return code.
- MSGWARN
- warning message. This message has no effect on HCD processing but will
cause HCD to issue a return code of 4 (unless the UIM issues a message of
higher severity).
- MSGERR
- error message. This message will prevent HCD from building any I/O configuration
members, and will cause HCD to issue a return code of 8 (unless HCD issues
a message of higher severity).
- MSGTERM
- severe error message. This message causes HCD to end its processing
and issue a return code of 16. A UIM must never issue
a severe error message.
This parameter is optional; the default is MSGERR.
- REQ
- Must be UIM (specifies that the macro call is
issued by a UIM).
Make sure the UIM can address the UCA when the UIM issues the CBDIMSG macro.
Note:
You must also include the CBDZMSG definition macro in the
UIM. The CBDZMSG definition macro maps the MSG parameter list. The CBDIMSG
executable macro builds the MSG parameter list.
Example
To issue message CBDB805I:
CBDIMSG MID=CBDB805I,VAR1=IODVUNIT, *
. STMT=YES,REQ=UIM
.
.
CBDB805I DC CL8'CBDB805I'
The message definition for CBDB805I must exist in the corresponding UDT.
The message definition in the sample UDT is:
CBDZUDT MID=CBDB805I,ID=FEATURE, *
TEXT='Features SHARED and SHAREDUP are mutually exclusive*
e for device type @1.', *
HELP=CBDED05
In the actual message text @1 is replaced with the device unit type that
is passed to the UIM through the IODV control block.
CBDIPPDS Executable Macro
The CBDIPPDS macro puts (pushes) an entry onto or removes (pops) an entry
from the diagnostic stack.
The syntax of the CBDIPPDS macro is as follows:
[label] CBDIPPDS {PUSH|POP}
,DIAG=diag
,REQ=UIM
[,RELATED=related]
- label
- Name of the label to be generated on the first instruction in the macro
expansion.
- PUSH
- The designated diagnostic entry is to be put on the diagnostic stack.
Either PUSH or POP must be specified.
- POP
- The designated diagnostic entry is to be removed from the diagnostic
stack. Either PUSH or POP must be specified.
- DIAG
- Name of the diagnostic entry. This name must be specified on the label
field of the CBDZDIAG macro.
- REQ
- Must be UIM (specifies that a UIM is issuing the
macro).
- RELATED
- Specifies an optional character string that can identify related macro
calls.
Make sure the UIM can address the UCA when the UIM issues the CBDIPPDS
macro.
Note:
A UIM must invoke the CBDZDIAG definition macro to build the
diagnostic stack entry that is to be pushed onto or popped from the diagnostic
stack.
Example
CBDIPPDS PUSH,DIAG=DIAGDATA,REQ=UIM
.
.
.
CBDIPPDS POP,DIAG=DIAGDATA,REQ=UIM
.
.
.
DIAGDATA CBDZDIAG MODNAME=CBDUC255, *
CSECT=CBDUC255,COMP=SC1XL, *
DESC=='UIM FOR DASD 33UU, 93UU', *
MODCAT=UIM
CBDISIML Executable Macro
The CBDISIML macro generates a list, by type and model, of either similar
devices or devices attachable to a specific control unit type.
- A similar device is a lookalike device, which you can define directly.
For example, a 3178 device has the same characteristics as the 3270-X device,
so you can define a 3178 as a 3178 directly.
- An attachable device is a device that you can attach to a particular control
unit.
The syntax of the CBDISIML executable macro is as follows:
label CBDISIML (device[,model])
[,(device,[model]),(...),]
[TYPE={DEV|CU}]
Specify the device list as positional parameters.
- device
- Specifies the device type.
- model
- Specifies the device model.
- TYPE
- Specifies the type of device list. The default is DEV.
- DEV
- Indicates that the list is a similar device list.
- CU
- Indicates that the list is an attachable device list.
Example
ATT39CC CBDISIML (33UU,1), *
(33VV,2), *
TYPE=CU
This example specifies a list of devices attachable to a specific control
unit.
|