Call Program With Variable Length Argument List (CALLPGMV)

Instruction Syntax

Bound Program Access
Built-in number for CALLPGMV is 668.
CALLPGMV (
          pgmOrTmpltPtr : address of system pointer,
                          address of space pointer(16), or
                          address of open pointer
          argArray      : address of array of space pointer(16)
          nargs         : unsigned binary(4)
)

Description:

Preserve the calling invocation and pass control to either the program entry procedure of a bound program or the external entry point of a non-bound program identified by pgmOrTmpltPtr.

The pgmOrTmpltPtr may address a system pointer which directly addresses the program that is to receive control, or may address a space pointer(16) to a call template which identifies the program to receive control. Specifying a template allows for additional controls over how the specified program is to be invoked. The format of the template is described under the CALLX instruction.

If the program to receive control is a Java program or a bound program that does not contain a program entry procedure, an invalid operation for program (hex 2C15) exception is signalled.

The number of arguments for the program call is given by nargs. The arguments are given by elements in argArray. The i'th argument of the OPM parameter list is constructed from the address of the i'th element of the array. Each element of the array is a space pointer(16) value.

The actual number of arguments passed, nargs, must be less than or equal to 16383 or else an argument list length modification violation (hex 0803) exception is signalled.

Authorization Required

  • Execute
    • Program referenced by pgmOrTmpltPtr
    • Context referenced for address resolution

Lock Enforcement

  • Materialize
    • Contexts referenced for address resolution

Exceptions

  • 06 Addressing
    • 0601 Space Addressing Violation
    • 0602 Boundary Alignment
    • 0603 Range
  • 08 Argument/Parameter
    • 0802 Argument List Length Violation
    • 0803 Argument List Length Modification Violation
  • 0A Authorization
    • 0A01 Unauthorized for Operation
  • 10 Damage Encountered
    • 1004 System Object Damage State
    • 1005 Authority Verification Terminated Due to Damaged Object
    • 1044 Partial System Object Damage
  • 1C Machine-Dependent
    • 1C03 Machine Storage Limit Exceeded
  • 20 Machine Support
    • 2002 Machine Check
    • 2003 Function Check
  • 22 Object Access
    • 2202 Object Destroyed
    • 2203 Object Suspended
    • 2207 Authority Verification Terminated Due to Destroyed Object
    • 2208 Object Compressed
    • 220B Object Not Available
  • 24 Pointer Specification
    • 2401 Pointer Does Not Exist
    • 2402 Pointer Type Invalid
  • 2A Program Creation
    • 2AB5 Observable Information Necessary For Retranslation Not Encapsulated
  • 2C Program Execution
    • 2C15 Invalid Operation for Program
    • 2C1D Automatic Storage Overflow
    • 2C1E Activation Access Violation
    • 2C1F Program Signature Violation
    • 2C20 Static Storage Overflow
    • 2C21 Program Import Invalid
    • 2C22 Data Reference Invalid
    • 2C23 Imported Object Invalid
    • 2C24 Activation Group Export Conflict
    • 2C25 Import Not Found
  • 2E Resource Control Limit
    • 2E01 User Profile Storage Limit Exceeded
  • 36 Space Management
    • 3601 Space Extension/Truncation
  • 38 Template Specification
    • 3801 Template Value Invalid
  • 44 Protection Violation
    • 4401 Object Domain or Hardware Storage Protection Violation