General
Application area: | Requesting and accessing lists and tables; see "Requesting and accessing lists and tables" |
Macro type: | Type S, MF format 2: standard/E/L/C/D/M form; see "S-type macros" |
NDM (Nucleus Device Management) supplies information to the user, operator, and system administration on the allocation and availability status of the configuration and mounted data volumes. The configuration comprises the following: CPUs, channels, controllers, and devices.
Devices (disk devices, tape devices, printers, ...) are assigned to device types (T-C), device families (F-C), volume types (V-T) and device classes, see the “System Installation” [10 (Related publications)] manual. A particular device can be addressed via its mnemonic device name (MN).
The NKGTYPE macro provides information about the names, device type codes, device characteristics, path addresses and path attributes for a particular device type or volume type, or about names and device type codes of the device types belonging to a device family or device class.
Macro description
The NKDINF macro enables access to data provided by the information services (NKD) of NDM. The data provides information on the following:
the allocation level of a task
the allocation and availability status of devices, device types device families, disks or tapes
the structure of the configuration
the device queue.
The NKDINF macro transfers the requested information in appropriately structured output records. The macro provides the user with the layouts of these output records as DSECTs to facilitate interpretation of the output.
The output records contain information on the allocation and availability status of the specified devices, hardware units or resources. The records are entered in an area of class 6 memory, which the macro has previously requested.
The output control record is also prefixed to the output records requested by the user in this output area; the output control record contains general information about macro execution and the structure of the output area. The start address of the area is passed in the NKDIOPTR
field to the operand list.
The caller is responsible for returning the memory area (RELM). The length specifications should be taken from the output control record. The following should be noted when returning the memory area:
the start address of the output buffer is aligned on a page boundary;
the
NKDIOLEN
field in the output control record contains the size of the output area. The size is specified in main memory pages (4K) for nonprivileged callers.
The user can generate the layout of any output record offered by NKDINF as a DSECT using a macro call with MF=D and the RECORD operand. The DSECT permits symbolic addressing of the individual fields of an output record.
The user must change the evaluation of his CONFIG record when compiling existing programs (from a version < BS2000/OSD-BC V3.0) with BS2000/OSD-BC >= V3.0. The layout has changed to one which is incompatible with BS2000/OSD-BC V2.0, since the number of inner connections of the CONFIG been increased from 4 to 8.
In versions < BS2000/OSD-BC V3.0 compiled programs receive the output in the same format as before, and so are still able to run.
The following restrictions apply to nonprivileged users:
task records are output only for tasks under the user's own ID,
the caller is given no information on device queues (DVQ operand), allocation and reservation of specified device types (TYPTASK operand), disks for which explicit utilization specifications were made with the SET-DISK-PARAMETER command (DISC operand) and disks for which the DRV product is in use (DRV operand).
Information on allocations by other users is masked out.
The caller receives the output of the SUMMARY information only in the LOC record.
Macro format and description of operands
NKDINF |
CONFIG={ NO / ALL / CHN / CPU / CTL / DVC / IOSIDE / SE / SIDE / ( {ctl-mn / chpid / chnrange / icuu / mn / ioside# / cpu# / se# / side# / dev#},{addr / (r)} [,{S / L}]) } ,EXTMN=NO / YES ,DISC={NO / MONITORED / SCHEDULED / ( {mn / vsn},{addr / (r)}[,{S / L[,TASK]}]) } ,TAPE={NO / {ALL / (ALL,CAR)} / ({mn / vsn},{addr / (r)}) / (mn,addr,CAR) } ,TASK={ NO / OWN / ({tsn / tid},{addr / (r)) } ,DEPOT={ NO / ALL / (mn / location}, {addr / (r)}) } ,DEVICE={ NO / ALL / ({mn / tt / fc},{addr / (r)}) } ,GLOBAL=NO / YES ,UNMONIT={ NO / ALL / (vsn,{addr / (r)}) } ,TYPTASK={ NO / ALL / ({fc / tt},{addr / (r}) } ,SUMMARY={ NO / ALL / ({fc / tt},{addr / (r)}) } ,DRV={ NO / ALL / ALL-DRV / (vsn,{addr / (r)}) } ,DVQ=NO / YES ,LOC={ NO / ALL / ({location / tt / fc / vt},{addr / (r)}) } [,RECORD=ALL / CONFIG / DEVICE / DEPOT / DISC / DRV / DVQ / GLOBAL / HEADER / LOC / SUMMARY / TAPE / TASK / TYPTASK / UNMONIT] ,HWSTATE=NO / YES ,MF=S / E / L / C / D / M [,PARAM=addr / (r)] ,PREFIX=N / p ,MACID=KDI / macid |
CONFIG=IOSIDE/SE/SIDE/(ioside#,...)/(se#,...)/(side#,...)
return no information, since the associated hardware is no longer supported. The operand values can still be specified, for compatibilty.The operands are described in alphabetical order below.
CONFIG=
One CONFIG output record is written for each specified unit of the configuration.
NO
This function is not desired.
ALL
Information relating to all generated hardware units is requested. A very large output area can occur with large configurations in the case of CONFIG=ALL.
CHN
Information relating to all channels is requested.
CPU
Information relating to all CPUs is requested.
CTL
Information relating to all multidevice controllers is requested.
DVC
Information relating to all devices is requested.
(ctl-mn,...)
The user transfers in a list (see "NKDINF - Output data on (peripheral) configuration") the mnemonic names of the device controllers about which information is required.
(chpid,...)
The user transfers in a list (see "NKDINF - Output data on (peripheral) configuration") the CHANNEL_PATH_ID of the channels about which information is required.
(chnrange,...)
The user transfers in a list (see "NKDINF - Output data on (peripheral) configuration") the channel range about which information is required.
(icuu,...)
The user transfers in a list (see "NKDINF - Output data on (peripheral) configuration") the device addresses of the hardware units about which information is required.
A device address designates the path on which a device can be addressed. The device address is 2 bytes long and comprises the following components:
Byte 1: | 1st half-byte: number of the input/output processor |
Byte 2: | port number of the multidevice controller and port number of the device, |
(mn,...)
The user transfers in a list (see below) the mnemonic device names of the hardware units on which information is required.
(cpu#,...)
The user transfers in a list (see below) the numbers of the CPUs on which information is required.
(dev#,...)
The user transfers in a list (see below) the device numbers of the hardware units on which information is required.
addr
Symbolic address (name) of a field. The field contains a list of mnemonic device names, device addresses or device numbers. It must be aligned on a word boundary.
(r)
Register containing the address value “addr”. A register may be specified only in conjunction with MF=M.
Format of the list for transferring mnemonic device names, device addresses or device numbers:
The first word contains the number of entries in the list, right-justified in hexadecimal form.
This is followed by the entries: each entry is 4 bytes long and contains (left-justified) the mnemonic device name, device address or device number. Bytes not required should be overwritten with X'00'.
S
Information is output in the short format (standard format).
L
Information is output in the long format and contains additional path descriptions.
DEPOT=
Provides information on the assignment of physical tape devices (mnemonics) to depots (locations).
NO
This function is not desired.
ALL
Information is output on all known locations.
(mn,...)
The user transfers in a list (see below) the mnemonic names of the tape devices on which information is required.
(location,...)
The user transfers in a list (see below) the locations on which information is required.
addr
Symbolic address of a field. The field contains a list of mnemonics or locations and must be aligned on a word boundary.
(r)
Register containing the address value “addr”. A register may be specified only in conjunction with MF=M.
Format of the list for transferring the (tape) mnemonics or locations:
The first word of the list contains the number of entries in the list, right-justified in hexadecimal form.
This is followed by the entries: For mnemonics, each entry is 4 bytes long. For locations, each entry is 8 bytes long. Each entry contains a mnemonic or location, left-justified.
DEVICE=
A DEVICE output record is output for each specified device.See the note at RECORD=DEVICE, "NKDINF - Output data on (peripheral) configuration".
NO
This function is not desired.
ALL
Information is requested on all devices.
(mn,...)
The user transfers in a list (see below) the mnemonic names of the devices about which information is required.
(tt,...)
The user transfers in a list (see below) the codes for the types of devices on which information is required.
(fc,...)
The user transfers in a list (see below) the codes for the families of devices about which information is required.
addr
Symbolic address (name) of a field. The field contains a list of mnemonic device names, codes for device families or device type codes. It must be aligned on a word boundary.
(r)
Register containing the address value “addr”. A register may be specified only in conjunction with MF=M.
Format of the list for transferring family codes, device type codes or mnemonic device names:
The first word contains the number of entries in the list, right-justified in hexadecimal form.
This is followed by the entries: when family device type codes are specified each entry is 2 bytes long, when mnemonic device names are specified the length of the entry depends on the value of the EXTMN operand: with EXTMN=NO each entry is 2 bytes long, with EXTMN=YES each entry is 4 bytes long.
The lists may contain a maximum 32 K of entries.
Example 1: | 2 device types with device type codes X'A5' (= D3435) and --------------------------------------------------------- |X‘00‘|X‘00‘|X‘00‘|X‘02‘|X‘A5‘|X‘00‘|X‘8F‘|X‘00‘| --------------------------------------------------------- ^ | adr |
Example 2: | 2 device families with family codes X'A0' (= disk devices) and --------------------------------------------------------- |X‘00‘|X‘00‘|X‘00‘|X‘02‘|X‘A0‘|X‘00‘|X‘C0‘|X‘00‘| --------------------------------------------------------- ^ | adr |
DISC=
Requests a DISC output record for each specified disk (disk device).
NO
This function is not desired.
MONITORED
Information is requested relating to all disks which are available online and monitored by NDM.
SCHEDULED
Information is requested relating to all disks for which explicit utilization specifications were made with the SET-DISK-PARAMETER command.
This value may be specified only under the system administration ID (TSOS).
(mn,...)
The user transfers in a list (see below) the mnemonic names of the disks about which information is required.
(vsn,...)
The user transfers in a list (see below) the VSNs (volume serial numbers) of the disks about which information is required.
addr
Symbolic address (name) of a field. The field contains a list of VSNs or mnemonic device names. It must be aligned on a word boundary.
(r)
Register containing the address value “addr”. A register may be specified only in conjunction with MF=M.
Format of the list for transferring mnemonic device names or VSNs:
The first word contains the number of entries in the list, right-justified in hexadecimal form.
This is followed by the entries: each entry is 8 bytes long and contains (left-justified) the VSN or the mnemonic device name. Bytes not required should be overwritten with X'00'.
S
Information is output in the short format (standard format).
L
Information is output in the long format and contains additional specifications about the SVL states and disk parameters.
This value may be specified only under the system administration ID (TSOS).
TASK
Output of a list of TSNs of the tasks that are currently working with the disk. The list consists of 4-byte entries and is output only for private disks in USE=DMS mode.TASK may be specified only in conjunction with the long format (L).
This value may be specified only under the system administration ID (TSOS).
DRV=
A DRV output record is requested for each disk specified for which the DRV product (Dual Recording by Volume; see the “DRV” manual [25 (Related publications)]) is in use.
NO
This function is not desired.
ALL
A DRV output record is requested for each disk known to the DRV component.This value may be specified only under the system administration ID (TSOS).
ALL-DRV
A DRV output record is requested for all disks for which the DRV operating mode is set.This value may be specified only under the system administration ID (TSOS).
(vsn,...)
The user transfers a list (see below) of the VSNs (volume serial numbers) of the disks about which information is required.
This value may be specified only under the system administration ID (TSOS).
addr
Symbolic address (name) of a field. The field contains a list of VSNs. It must be aligned on a word boundary.
(r)
Register containing the address value “addr”. A register may be specified only in conjunction with MF=M.
Format of the list for transferring the VSNs:
The first word contains the number of entries in the list, right-justified in hexadecimal form.
This is followed by the entries: each entry is 8 bytes long and contains (left-justified) the VSN. Bytes not required should be overwritten with X'00'.
DVQ=
Specifies whether information on the device queue (secure queue) is to be output.
NO
This function is not desired.
YES
DVQ output records are written.
This value may be specified only under the system administration ID (TSOS).
EXTMN=
Specifies whether the caller transfers mnemonic device names in the old format (2 bytes long) or in the new format (4 bytes long) in the operand list, and/or expects mnemonic device names in the old or new format in the output area of the macro.
The macro provides fields in the output area for the 2-byte or 4-byte format to accept the mnemonic names. An indicator specifies for each output record whether the 2-byte or 4-byte output field has been filled.
NO
The user transfers only 2-byte mnemonic device names in the operand list and also only interprets 2-byte names.
If information is output for a device whose mnemonic name is 4 bytes long, the 2-byte field in the output area is deleted, the indicator for output in 4-byte format is set and the incompleteness of the information is indicated in the output prefix (OCR) and in the standard header through return codes.
YES
The user transfers and expects mnemonic device names always in 4-byte format.
If shorter mnemonic device names are specified, they are to be entered left-justified in the fields provided in the operand list and padded with blanks on the right.
GLOBAL=
Specifies whether the setting of all global NDMS control parameters is to be output.
NO
This function is not desired.
YES
An output record with the global NDM control parameters is written.
HWSTATE=
Outputs information about the hardware status (ON/OFF) of the unit.
SIDE_/GP_
etc. HARDWARE_STATE
(in NKDCUTYP of the CONFIG record) should call NKDINF with the HWSTATE=NO operand in order to speed up processing.NO
This function is not desired.
YES
The hardware status of the unit is determined (only significant for special applications).
LOC=
Outputs the information scope of SUMMARY and TYPTASK, sorted according to location.
NO
This function is not desired.
ALL
An output record is created for each generated device type.
(location,...)
An output record is created for the specified locations for each generated device type. For the format of the location list, see DEPOT operand.
(tt,...)
The user transfers in a list (see below) the codes of the device types on which information is required.
(fc,...)
The user transfers in a list (see below) the codes of the device families on which information is required.
(vt,...)
The user transfers in a list (see below) the codes of the volume types on which information is required.
addr
Symbolic address of a field. The field contains a list of device type codes or family codes and must be aligned on a word boundary.
(r)
Register containing the address value “addr”. A register may be specified only in conjunction with MF=M.
Format of the list for transferring the device type codes or family codes:
The first word of the list contains the number of entries in the list, right-justified in hexadecimal form.
This is followed by the entries: each entry is 2 bytes long and contains (left-justified) the device type code or family code.
MF=
For a general description of the MF operand, its operand values and any subsequent operands (e.g. PREFIX, MACID and PARAM), 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 and additionally a MACID in the C form or M form (see section “S-type macros”).
RECORD=
May only be specified in conjunction with MF=C or MF=D and specifies for which output record a CSECT or DSECT is generated.
ALL
Generates CSECTs/DSECTs for all the output records (HEADER through DRV) offered by the macro.
CONFIG
Generate a CSECT/DSECT for the CONFIG output record (CONFIG operand).
DEPOT
Generates a CSECT/DSECT for the DEPOT output record (DEPOT operand).
DEVICE
Generates a CSECT/DSECT for the DEVICE output record (DEVICE operand).
Note
Given the functional extension “Dynamic I/O Configuration change”, the DEVICE record may now also contain records for those dummy devices which are present as placeholders in the BS2000 device table and which are subsequently replaced by real devices. The EXTENDED DEVICE MNEMONIC field in the records for these devices contains the mnemonic “DUMMY” and the DEVICE RECONFIGURATION STATE field contains the value X'0F' (INVALID).
DISC
Generates a CSECT/DSECT for the DISC output record (DISC operand).
DRV
Generates a CSECT/DSECT for the DRV output record (DRV operand).
DVQ
Generates a CSECT/DSECT for the DVQ output record (DVQ operand).
GLOBAL
Generates a CSECT/DSECT for the GLOBAL output record (GLOBAL operand).
HEADER
Generates a CSECT/DSECT for the output control record.The output control record contains:
pointers to the various output records
counters
length specifications (length of the output area, length of the individual output records) and
return codes for the various output records.
The layout is reproduced at the end of the description.
LOC
Generates a CSECT/DSECT for the LOC output record (LOC operand).
SUMMARY
Generates a CSECT/DSECT for the SUMMARY output record (SUMMARY operand).
TAPE
Generates a CSECT/DSECT for the TAPE output record (TAPE operand).
TASK
Generates a CSECT/DSECT for the TASK output record (TASK operand).
TYPTASK
Generates a CSECT/DSECT for the TYPTASK output record (TYPTASK operand).
UNMONIT
Generates a CSECT/DSECT for the UNMONIT output record (UNMONIT operand).
SUMMARY=
A SUMMARY output record is requested for each specified device family (device type). The record contains summary information on the device family or the device type. For each device family, the set of SUMMARY records for its device types is supplied.
NO
This function is not desired.
ALL
A SUMMARY output record is requested for each device type defined in the system.
(fc,...)
The user transfers in a list (see below) the codes of the device families about whose device types information is required.
(tt,...)
The user transfers in a list (see below) the codes for the types of devices about which information is required.
addr
Symbolic address (name) of a field. The field contains a list of family codes or device type codes. It must be aligned on a word boundary.
(r)
r = register containing the address value “addr”. A register may be specified only in conjunction with MF=M.
Format of the list for transferring family codes or device type codes:
The first word contains the number of entries in the list, right-justified in hexadecimal form.
This is followed by the entries: each entry is 2 bytes long and contains (left-justified) the family code or device type code.
TAPE=
A TAPE output record is written for each specified tape device.
NO
This function is not desired.
ALL
Information is requested on all tapes monitored by NDM.
(mn,...)
The user transfers in a list (see below) the mnemonic names of the tape devices about which information is required.
(vsn,...)
The user transfers in a list (see below) the VSNs (volume serial numbers) of the tapes about which information is required.
addr
Symbolic address (name) of a field. The field contains a list of VSNs or mnemonic device names. It must be aligned on a word boundary.
(r)
r = register containing the address value “addr”. A register may be specified only in conjunction with MF=M.
Format of the list for transferring mnemonic device names or VSNs:
The first word contains the number of entries in the list, right-justified in hexadecimal form.
This is followed by the entries: each entry is 8 bytes long and contains (left-justified) the VSN or the mnemonic device name. Bytes not required should be overwritten with X'00'.
CAR
Additional records are output for 3591 Magnetic Tape Cartridges in “random” mode. These apply to cartridges already in the cartridge loader and which have already been registered by the device management system. Multiple records can be issued for a device.
TASK=
A TASK output record is written. The record contains information on devices, disks and tapes that are used by the specified task.
NO
This function is not desired.
OWN
Specifications refer to the calling task.
(tsn,...)
The user transfers in one word the TSN (task sequence number) of the task about whose device and volume allocation information is required.
(tid,...)
The user transfers in one word the TID (task identifier) of the task about whose device and volume allocation information is required.
addr
Symbolic address (name) of the word containing the TSN or TID of a task.
(r)
Register containing the address value “addr”. A register may be specified only in conjunction with MF=M.
TYPTASK=
One TYPTASK output record is requested for each specified device family (device type). The record indicates the number of devices of the specified type that have been reserved by a task. For each device family, the set of TYPTASK records relating to its device types is output.
NO
This function is not desired.
ALL
A TYPTASK output record is requested for all device types defined in the system.This value may be specified only under the system administration ID (TSOS).
(fc,...)
The user transfers in a list (see below) the codes of the device families about whose device types information is required.
This value may be specified only under the system administration ID (TSOS).
(tt,...)
The user transfers in a list (see below) the device type codes of the device types about which information is required.
This value may be specified only under the system administration ID (TSOS).
addr
Symbolic address (name) of a field. The field contains a list of family codes or device type codes. It must be aligned on a word boundary.
(r)
Register containing the address value “addr”. A register may be specified only in conjunction with MF=M.
Format of the list for transferring family codes or device type codes:
The first word contains the number of entries in the list, right-justified in hexadecimal form.
This is followed by the entries: each entry is 2 bytes long and contains (left-justified) the family code or device type code.
UNMONIT=
An UNMONIT output record is requested for each of the tape volumes specified that has been reserved “offline”. This record indicates the VSN of the tape volume reserved as well as the TSN of the task which reserved it. “Offline” reservation means that a device/volume has been requested which is not (yet) monitored by NDM.
NO
This function is not desired.
ALL
An UNMONIT output record is requested for all tape volumes reserved “offline”.
(vsn,...)
The user transfers in a list (see below) the VSNs (volume serial numbers) of the tapes about which information is required.
addr
Symbolic address (name) of a field. The field contains a list of VSNs. It must be aligned on a word boundary.
(r)
Register containing the address value “addr”. A register may be specified only in conjunction with MF=M.
Format of the list for transferring the VSNs:
The first word contains the number of entries in the list, right-justified in hexadecimal form.
This is followed by the entries: each entry is 8 bytes long and contains (left-justified) the VSN. Bytes not required should be overwritten with X'00'.
Register contents
Register R15 is used internally as a general register when the NKDINF macro is called with MF=M and addresses are specified.
Return information and error flags
Standard header:
+---------------+ | | | | | |c|c|b|b|a|a|a|a| +---------------+
A return code relating to the execution of the NKDINF 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' | Function successfully executed. All requested information is provided in |
X'01'1 | X'00' | X'0008' | Output area was created but not all requested output records are |
X'02'1 | X'00' | X'0008' | Output area was created but not all requested output records are |
X'04'1 | X'00' | X'0008' | Output area was created but in some output records the information is |
X'08'1 | X'00' | X'0008' | Output area was created but the information is incomplete in some |
X'10'1 | X'00' | X'0008' | Output area was created but the DRV operand could not be processed: |
X'20'1 | X'00' | X'0008' | Output area was created but the information is incomplete in some |
X'xx'2 | X'01' | X'0010' | Operand error, no output area was created: |
X'xx'2 | X'01' | X'0011' | Operand error, no output area was created: |
X'00' | X'01' | X'0013' | Operand error, no output area was created: EXTMN operand is unknown |
X'00' | X'20' | X'0004' | System error, no output area was created |
X'xx'2 | X'40' | X'0012' | Type of a requested output record (record type) for the nonprivileged |
X'xx'2 | X'40' | X'0020' | List with the provided device type codes, VSNs, mnemonic names etc. |
X'xx'2 | X'40' | X'0021' | List with the provided device type codes, VSNs, mnemonic names etc. |
X'xx'2 | X'40' | X'0022' | More device type codes, VSNs, mnemonic names, etc. than allowed are |
X'xx'2 | X'40' | X'0023' | Version number of a layout is unknown |
X'00' | X'80' | X'0040' | No memory is currently available, no output area was created |
1The sub return codes are added to the main code X'0008': when a macro is called several of them can occur simultaneously
2X'xx' indicates the type of output record (record type) which led to the return code. The possible values for xx are as follows:
01 TASK output record
02 GLOBAL output record03 DEVICE output record04 TAPE output record
05 DISC output record
06 CONFIG output record07 DVQ output record
08 SUMMARY output record09 TYPTASK output record0A UNMONIT output record0B DRV output record
0C DEPOT output record0D LOC output record
Other return codes which, in accordance with conventions, apply to all macros are given in the table “Standard return codes” (Standard header).
The calling program is terminated when the following errors occur:
The data area is not assigned to the caller.
The data area is not aligned on a word boundary.
The data area is protected against write access.
Layout of the DSECT for the output control record (RECORD=HEADER)
NKDINF MF=D,RECORD=HEADER 1 *,NKDINF VERSION 500 1 #INTF INTNAME=NKDINF,REFTYPE=REQUEST,INTCOMP=1 1 * 1 * GENERATION OF OUTPUT-LAYOUTS 1 * 1 * 1 * C/DSECT FOR OUTPUT-CONTROL RECORD 1 * 1 MFCHK MF=D,PREFIX=N,SUPPORT=(C,D),MACID=KDI, C 1 DMACID=KDO,DNAME=KDOENT 2 NKDOENT DSECT , 2 *,##### PREFIX=N, MACID=KDO ##### 1 NKDOENTR DS 0F 1 OUTPUT_CONTROL_RECORD 1 NKDOBLEN DS F 2 LENGTH_OF_BUFFER_OBTAINED 1 NKDOSBUF DS 0F 2 SUBBUFFER_DESCRIPTION 1 NKDOTRBP DS A 3 PTR_TO_FIRST_TASK_RECORD 1 NKDOTRB# DS H 3 #_OF_TASK_RECORDS 1 NKDOTRBL DS H 3 LENGTH_OF_TASK_RECORD 1 NKDOTRBR DS X 3 RESULT_FOR_TASK_RECORDS SET 1 NKDOOKRO EQU X'00' (OK_RECORDS_OUTPUTED 1 NKDOOKPT EQU X'02' OK_RECORDS_PARTIAL_OUTPUT 1 NKDOOKRN EQU X'04' OK_RECORDS_NOT_REQUESTED 1 NKDOOKRE EQU X'08' OK_NO_RECORDS_EXISTS 1 NKDONOTA EQU X'0C' SCOPE_HIDES_REQUESTED_RECORDS 1 NKDOOKMN EQU X'0E' OK_NO_MN_DUE_TO_EXTENDED_MN 1 NKDODRBD DS 0F 2 DEVICE_RECORD_BUFFER_DESCRIPTION 1 NKDODRBP DS A 3 PTR_TO_FIRST_DEVICE_RECORD 1 NKDODRB# DS H 3 #_OF_DEVICE_RECORDS 1 NKDODRBL DS H 3 LENGTH_OF_DEVICE_RECORD 1 NKDODRBR DS X 3 RESULT_FOR_DEVICE_RECORDS SET 1 * &P.OKRO EQU X'00' (OK_RECORDS_OUTPUTED 1 * &P.OKPT EQU X'02' OK_RECORDS_PARTIAL_OUTPUT 1 * &P.OKRN EQU X'04' OK_RECORDS_NOT_REQUESTED 1 * &P.OKRE EQU X'08' OK_NO_RECORDS_EXISTS 1 * &P.NOTA EQU X'0C' SCOPE_HIDES_REQUESTED_RECORDS 1 * &P.OKMN EQU X'0E' OK_NO_MN_DUE_TO_EXTENDED_MN 1 NKDOGRBD DS 0F 2 GLOBAL_RECORD_BUFFER_DESCRIPTION 1 NKDOGRBP DS A 3 PTR_TO_GLOBAL_RECORD 1 NKDOGRB# DS H 3 #_OF_GLOBAL_RECORDS "ALWAYS 1" 1 NKDOGRBL DS H 3 LENGTH_OF_GLOBAL_RECORD 1 NKDOGRBR DS X 3 RESULT_FOR_GLOBAL_RECORD SET 1 * &P.OKRO EQU X'00' (OK_RECORDS_OUTPUTED 1 * &P.OKPT EQU X'02' OK_RECORDS_PARTIAL_OUTPUT 1 * &P.OKRN EQU X'04' OK_RECORDS_NOT_REQUESTED 1 * &P.OKRE EQU X'08' OK_NO_RECORDS_EXISTS
1 * &P.NOTA EQU X'0C' SCOPE_HIDES_REQUESTED_RECORDS 1 NKDOCRBD DS 0F 2 CONFIG_RECORD_BUFFER_DESCRIPTION 1 NKDOCRBP DS A 3 PTR_TO_FIRST_CONFIG_RECORD 1 NKDOCRB# DS H 3 #_OF_CONFIG_RECORDS 1 NKDOCRBL DS H 3 LENGTH_OF_CONFIG_RECORD 1 NKDOCRBR DS X 3 RESULT_FOR_CONFIG_RECORDS SET 1 * &P.OKRO EQU X'00' (OK_RECORDS_OUTPUTED 1 * &P.OKPT EQU X'02' OK_RECORDS_PARTIAL_OUTPUT 1 * &P.OKRN EQU X'04' OK_RECORDS_NOT_REQUESTED 1 * &P.OKRE EQU X'08' OK_NO_RECORDS_EXISTS 1 * &P.NOTA EQU X'0C' SCOPE_HIDES_REQUESTED_RECORDS 1 * &P.OKMN EQU X'0E' OK_NO_MN_DUE_TO_EXTENDED_MN 1 NKDOBRBD DS 0F 2 TAPE_RECORD_BUFFER_DESCRIPTION 1 NKDOBRBP DS A 3 PTR_TO_FIRST_TAPE_RECORD 1 NKDOBRB# DS H 3 #_OF_TAPE_RECORDS 1 NKDOBRBL DS H 3 LENGTH_OF_TAPE_RECORD 1 NKDOBRBR DS X 3 RESULT_FOR_TAPE_RECORDS SET 1 * &P.OKRO EQU X'00' (OK_RECORDS_OUTPUTED 1 * &P.OKPT EQU X'02' OK_RECORDS_PARTIAL_OUTPUT 1 * &P.OKRN EQU X'04' OK_RECORDS_NOT_REQUESTED 1 * &P.OKRE EQU X'08' OK_NO_RECORDS_EXISTS 1 * &P.NOTA EQU X'0C' SCOPE_HIDES_REQUESTED_RECORDS 1 * &P.OKMN EQU X'0E' OK_NO_MN_DUE_TO_EXTENDED_MN 1 NKDOPRBD DS 0F 2 DISC_RECORD_BUFFER_DESCRIPTION 1 NKDOPRBP DS A 3 PTR_TO_FIRST_DISC_RECORD 1 NKDOPRB# DS H 3 #_OF_DISC_RECORDS 1 NKDOPRBL DS H 3 LENGTH_OF_DISC_RECORD 1 NKDOPRBR DS X 3 RESULT_FOR_DISC_RECORDS SET 1 * &P.OKRO EQU X'00' (OK_RECORDS_OUTPUTED 1 * &P.OKPT EQU X'02' OK_RECORDS_PARTIAL_OUTPUT 1 * &P.OKRN EQU X'04' OK_RECORDS_NOT_REQUESTED 1 * &P.OKRE EQU X'08' OK_NO_RECORDS_EXISTS 1 * &P.NOTA EQU X'0C' SCOPE_HIDES_REQUESTED_RECORDS 1 * &P.OKMN EQU X'0E' OK_NO_MN_DUE_TO_EXTENDED_MN 1 NKDOQRBD DS 0F 2 DVQ_RECORD_BUFFER_DESCRIPTION 1 NKDOQRBP DS A 3 PTR_TO_DVQ_RECORD 1 NKDOQRB# DS H 3 #_OF_DVQ_RECORDS "ALWAYS 1" 1 NKDOQRBL DS H 3 LENGTH_OF_DVQ_RECORD 1 NKDOQRBR DS X 3 RESULT_FOR_DVQ_RECORD SET 1 * &P.OKRO EQU X'00' (OK_RECORDS_OUTPUTED 1 * &P.OKPT EQU X'02' OK_RECORDS_PARTIAL_OUTPUT 1 * &P.OKRN EQU X'04' OK_RECORDS_NOT_REQUESTED 1 * &P.OKRE EQU X'08' OK_NO_RECORDS_EXISTS 1 * &P.NOTA EQU X'0C' SCOPE_HIDES_REQUESTED_RECORDS 1 * &P.OKMN EQU X'0E' OK_NO_MN_DUE_TO_EXTENDED_MN 1 NKDOSRBD DS 0F 2 SUMMARY_RECORD_BUFFER_DESCRIPTION 1 NKDOSRBP DS A 3 PTR_TO_SUMMARY_RECORD 1 NKDOSRB# DS H 3 #_OF_SUMMARY_RECORDS
1 NKDOSRBL DS H 3 LENGTH_OF_SUMMARY_RECORD 1 NKDOSRBR DS X 3 RESULT_FOR_SUMMARY_RECORD SET 1 * &P.OKRO EQU X'00' (OK_RECORDS_OUTPUTED 1 * &P.OKPT EQU X'02' OK_RECORDS_PARTIAL_OUTPUT 1 * &P.OKRN EQU X'04' OK_RECORDS_NOT_REQUESTED 1 * &P.OKRE EQU X'08' OK_NO_RECORDS_EXISTS 1 * &P.NOTA EQU X'0C' SCOPE_HIDES_REQUESTED_RECORDS 1 NKDOYRBD DS 0F 2 TYPTASK_RECORD_BUFFER_DESCRIPTION 1 NKDOYRBP DS A 3 PTR_TO_TYPTASK_RECORD 1 NKDOYRB# DS H 3 #_OF_TYPTASK_RECORDS 1 NKDOYRBL DS H 3 LENGTH_OF_TYPTASK_RECORD 1 NKDOYRBR DS X 3 RESULT_FOR_TYPTASK_RECORD SET 1 * &P.OKRO EQU X'00' (OK_RECORDS_OUTPUTED 1 * &P.OKPT EQU X'02' OK_RECORDS_PARTIAL_OUTPUT 1 * &P.OKRN EQU X'04' OK_RECORDS_NOT_REQUESTED 1 * &P.OKRE EQU X'08' OK_NO_RECORDS_EXISTS 1 * &P.NOTA EQU X'0C' SCOPE_HIDES_REQUESTED_RECORDS 1 NKDOURBD DS 0F 2 UNMONIT_RECORD_BUFFER_DESCRIPTION 1 NKDOURBP DS A 3 PTR_TO_UNMONIT_RECORD 1 NKDOURB# DS H 3 #_OF_UNMONIT_RECORDS 1 NKDOURBL DS H 3 LENGTH_OF_UNMONIT_RECORD 1 NKDOURBR DS X 3 RESULT_FOR_UNMONIT_RECORD SET 1 * &P.OKRO EQU X'00' (OK_RECORDS_OUTPUTED 1 * &P.OKPT EQU X'02' OK_RECORDS_PARTIAL_OUTPUT 1 * &P.OKRN EQU X'04' OK_RECORDS_NOT_REQUESTED 1 * &P.OKRE EQU X'08' OK_NO_RECORDS_EXISTS 1 * &P.NOTA EQU X'0C' SCOPE_HIDES_REQUESTED_RECORDS 1 NKDOVRBD DS 0F 2 DRV_RECORD_BUFFER_DESCRIPTION 1 NKDOVRBP DS A 3 PTR_TO_DRV_RECORD 1 NKDOVRB# DS H 3 #_OF_DRV_RECORDS 1 NKDOVRBL DS H 3 LENGTH_OF_DRV_RECORD 1 NKDOVRBR DS X 3 RESULT_FOR_DRV_RECORD SET 1 * &P.OKRO EQU X'00' (OK_RECORDS_OUTPUTED 1 * &P.OKPT EQU X'02' OK_RECORDS_PARTIAL_OUTPUT 1 * &P.OKRN EQU X'04' OK_RECORDS_NOT_REQUESTED 1 * &P.OKRE EQU X'08' OK_NO_RECORDS_EXISTS 1 * &P.NOTA EQU X'0C' SCOPE_HIDES_REQUESTED_RECORDS 1 NKDOLRBD DS 0F 2 DEPOT_RECORD_BUFFER_DESCRIPTION 1 NKDOLRBP DS A 3 PTR_TO_DEPOT_RECORD 1 NKDOLRB# DS H 3 #_OF_DEPOT_RECORDS 1 NKDOLRBL DS H 3 LENGTH_OF_DEPOT_RECORD 1 NKDOLRBR DS X 3 RESULT_FOR_DEPOT_RECORD SET 1 * &P.OKRO EQU X'00' (OK_RECORDS_OUTPUTED 1 * &P.OKPT EQU X'02' OK_RECORDS_PARTIAL_OUTPUT 1 * &P.OKRN EQU X'04' OK_RECORDS_NOT_REQUESTED 1 * &P.OKRE EQU X'08' OK_NO_RECORDS_EXISTS
1 * &P.NOTA EQU X'0C' SCOPE_HIDES_REQUESTED_RECORDS 1 NKDOARBD DS 0F 2 LOCATION_REC_BUFFER_DESCRIPTION 1 NKDOARBP DS A 3 PTR_TO_LOCATION_RECORD 1 NKDOARB# DS H 3 #_OF_LOCATION_RECORDS 1 NKDOARBL DS H 3 LENGTH_OF_LOCATION_RECORD 1 NKDOARBR DS X 3 RESULT_FOR_LOCATION_RECORD SET 1 * &P.OKRO EQU X'00' (OK_RECORDS_OUTPUTED 1 * &P.OKPT EQU X'02' OK_RECORDS_PARTIAL_OUTPUT 1 * &P.OKRN EQU X'04' OK_RECORDS_NOT_REQUESTED 1 * &P.OKRE EQU X'08' OK_NO_RECORDS_EXISTS 1 * &P.NOTA EQU X'0C' SCOPE_HIDES_REQUESTED_RECORDS 1 DS XL3 RESERVED 1 NKDO# EQU *-NKDOENTR LENGTH_OF_CONTROL_RECORD 1 NKDOLGTH EQU NKDO# OLD NAME OF LENGTH