What the enclave returns from CEE3PRM and CEE3PR2

CEE3PRM and CEE3PR2 return to the calling routine the user parameter string that was specified at program invocation. Only program arguments are returned.

See Table 1 to determine whether a user parameter string was passed to your routine, and where the user parameter string is found. This depends on the method you used to create the child enclave, the language of the routine in the child enclave, and the PLIST, TARGET, or SYSTEM setting of the main routine in the child enclave. If a user parameter string was passed to your routine, the user parameter string is extracted from the command-line equivalent for your routine (shown in Table 2) and returned to you.

Note: Under CICS®, CEE3PRM and CEE3PR2 always return a blank string.
Table 1. Determining the command-line equivalent
Language Option Suboption system() SVC LINK FETCH/CALL of a PL/I main
C #pragma runopts(PLIST) HOST, MVS™ PARM=, or the parameter string from the command string passed to system() Halfword length-prefixed string pointed to by R1 Not allowed
CICS, IMS™, OS, or TSO Not available Not available Not allowed
C++ PLIST and TARGET compiler options Default PARM=, or the parameter string from the command string passed to system() Halfword length-prefixed string pointed to by R1 Not allowed
PLIST(OS) or TARGET(IMS) Not available Not available Not allowed
COBOL N/A N/A Null   Not allowed
Fortran N/A Not available Halfword length-prefixed string pointed to by R1 Not allowed  
PL/I SYSTEM compiler option MVS PARM=, or the parameter string from the command string passed to system() Halfword length-prefixed string pointed to by R1 User parameters passed through CALL
CICS, IMS, TSO Not available Not available SYSTEM(CICS) not supported; others not available.
Language Environment-conforming assembler CEENTRY PLIST= HOST, MVS PARM=, or the parameter string from the command string passed to system() Halfword length-prefixed string pointed to by R1 Not allowed
CICS, IMS, OS, or TSO Not available Not available Not allowed

If Table 1 indicates that a parameter string was passed to your routine at invocation, the string is extracted from the command-line equivalent listed in the right-hand column of Table 2. The command-line equivalent depends on the language of your routine and the runtime options specified for it.

Table 2. Determining the order of runtime options and program arguments
Language of routine Runtime options in effect? Order of runtime options and program arguments
C #pragma runopts(EXECOPS) runtime options / user parms
#pragma runopts(NOEXECOPS) entire string is user parms
C++ Compiled with EXECOPS (default) runtime options / user parms
Compiled with NOEXECOPS entire string is user parms
COBOL CBLOPTS(ON) user parms / runtime options
CBLOPTS(OFF) runtime options / user parms
Fortran   runtime options / user parms
PL/I PROC OPTIONS(NOEXECOPS) or SYSTEM(CICS | IMS | TSO) is not specified. runtime options / user parms
PROC OPTIONS(NOEXECOPS) is specified, or NOEXECOPS is not specified but SYSTEM (CICS | IMS | TSO) is. See PL/I main procedure parameter passing considerations for more information on the SYSTEM compile option. entire string is user parms
Language Environment-conforming assembler CEENTRY EXECOPS=ON runtime options / user parms
CEENTRY EXECOPS=OFF entire string is user parms