NPM Procedure Parameter List Address (NPM_PARMLIST_ADDR)

Bound program access

Built-in number for NPMPARMLISTADDR is 143. NPM_PARMLIST_ADDR ( ) : space pointer(16) that points to the New Program Model parameter list

Description

The address of the New Program Model parameter list received by the current invocation is returned.

This function cannot be used by procedures defined to be a program entry procedure. Otherwise, an instruction stream not valid  (hex 2A1B) exception will be signalled during module creation.

Bound Procedure Parameter List Format

Calls to procedures use the parameter list format shown below. The parameter list is required to be quadword aligned.


Offset
Dec Hex
Field Name
Data Type and Length
0 0
Operational descriptor list address
Char(16)
16 10
Machine work area
Char(16)
32 20
Arguments
Char(*)
* *
--- End ---

The operational descriptor list address is used to pass the address of an operational descriptor to the current invocation. If an operational descriptor is provided by the caller, the machine will store the address in this field as a space pointer. If an operational descriptor is not provided, the contents of this field are undefined. (That is, the machines does not set this field to a special value to indicate the absence of an operational descriptor list address.) The Machine Interface does not define the layout of the operational descriptor list, and it is the MI program's responsibility to pass an operational descriptor list to a procedure which expects it.

The machine work area is reserved for use by the machine.

Arguments is a variable length field used to pass argument values to the current invocation. Even though the actual mechanism used by the machine to pass argument values is not visible at the Machine Interface, this field is large enough to accommodate all passed argument values, with each argument being aligned on its natural boundary. At most 400 arguments may be passed.

The rules for natural alignment are shown in Table 1. For packed decimal arguments, the length in bytes is derived from the number of digits, numberofDigits, using the following formula: ((numberofDigits/2) + 1). For zoned decimal separate leading sign and zoned decimal separate trailing sign arguments, the byte length is one greater than the length in digits.

Table 1. Rules for natural alignment

Length in Bytes Alignment
length = 1 byte
length = 2 halfword
length = 3, 4 word
length = 5, 6, 7, 8 doubleword
other lengths quadword

Authorization Required

Lock Enforcement

Exceptions