I am rather late adding to the topic discussion, so, apologies if my information is essentially redundant.
The z/OS MVS JCL Reference contains the prose shown below regarding the PARM parameter of the JCL EXEC PGM statement. Yes, in order to understand the details you need to look at the referenced publication (z/OS MVS Programming: Assembler Services Guide). When the module specified as the operand of the PGM= parameter is entered, GPR 1 contains the address of a 32-bit (fullword) pointer aligned on a fullword boundary. The low order 31-bits of this pointer contain the address of a 16-bit (halfword) binary unsigned integer "length" field aligned on a halfword boundary which is not also a fullword boundary. Immediately following the 16-bit length field is the text of the operand of the PARM parameter. The length field describes the true length of the PARM text. Thus, a length field value of zero indicates no PARM text is present. If the PARM parameter is effectively not present on the JCL EXEC PGM statement the length field is zero. This is the "default" value. The length field is also zero when the PARM parameter is present and its operand is an empty string, e.g., PARM=''. This overall PARM data organization has been unchanged since the introduction of OS/360 (many moons ago!). There are a few things about this PARM convention which are not clearly documented (at least, not clear to me). . The content of GPR 1 at entry to the PGM= module. I believe that regardless of the AMODE of the PGM= module, only the low order 32 bits (the "low" half of the 64-bit GPR) of GPR 1 are valid and, further, the high order 8 bits of the low half of GPR 1 are all zero. In other words, the area referenced by GPR 1 resides in 24-bit addressable storage. . The pointer pointed to by GPR 1 at entry to the PGM= module. I believe that regardless of the AMODE of the PGM= module, only the low order 31 bits of this pointer value are valid. The high order bit of this 32-bit pointer is '1'. An AMODE 64 PGM= module must be set this bit to zero prior to its usage to reference storage (this is clearly documented). The area referenced by this 31-bit pointer value resides in 24-bit addressable storage (this is not clearly documented). .................................................................... Extraction from: z/OS Version 2 Release 3 MVS JCL Reference SA23-1385-30 Logical page 323, physical page 371. PARM Parameter Parameter Type: Keyword, optional Purpose: Use the PARM parameter to pass variable information to the processing program executed by this job step. To use the information, the processing program must contain instructions to retrieve the information. References: For details on the format of the passed information and its retrieval, see z/OS MVS Programming: Assembler Services Guide. ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
