REQUEST=ALLOCATE option of IEFPRMLB

 

Syntax

The IEFPRMLB macro is written as follows:

Syntax Description
   
   name name: Symbol. Begin name in column 1.
   
One or more blanks must precede IEFPRMLB.
   
IEFPRMLB  
   
One or more blanks must follow IEFPRMLB.
   
REQUEST=ALLOCATE  
   
  ,S99RB=NO Default: S99RB=NO
  ,S99RB=YES  
   
  ,WAITDSN=NO Default: WAITDSN=NO
  ,WAITDSN=YES  
   
  ,MOUNT=YES Default: MOUNT=YES
  ,MOUNT=NO  
   
  ,RETMSG=NO Default: RETMSG=NO
  ,RETMSG=YES  
   
  ,CONSOLID=consolid consolid: RS-type address or register (2) - (12).
  ,CONSOLID=NOCONSID Default: CONSOLID=NOCONSID
   
  ,CART=cart cart: RS-type address or register (2) - (12).
  ,CART=NOCART Default: CART=NOCART
   
  ,MSGBUF=msgbuf msgbuf: RS-type address or register (2) - (12).
  ,MSGBUF=NOMSGBUF Default: MSGBUF=NOMSGBUF
   
  ,S99RBPTR=s99rbptr s99rbptr: RS-type address or register (2) - (12).
   
  ,ALLOCDDNAME=allocddname allocddname: RS-type address or register (2) - (12).
   
  ,READ=NO Default: READ=NO
  ,READ=YES  
   
  ,MEMNAME=memname memname: RS-type address or register (2) - (12).
   
  ,READBUF=readbuf readbuf: RS-type address or register (2) - (12).
   
  ,BLANK72=YES Default: BLANK72=YES
  ,BLANK72=NO  
   
  ,STARCOMMENT=NO Default: STARCOMMENT=NO
  ,STARCOMMENT=YES  
   
  ,MEMNOTFOUND=MSGOK Default: MEMNOTFOUND=MSGOK
  ,MEMNOTFOUND=NOMSG  
   
  ,FREECLOSE=NO Default: FREECLOSE=NO
  ,FREECLOSE=YES  
   
,CALLERNAME=callername callername: RS-type address or register (2) - (12).
   
  ,RETCODE=retcode retcode: RS-type address or register (2) - (12).
   
  ,RSNCODE=rsncode rsncode: RS-type address or register (2) - (12).
   
  ,PLISTVER=IMPLIED_VERSION  
  Default: PLISTVER=IMPLIED_VERSION
  ,PLISTVER=MAX  
  ,PLISTVER=plistver  
   
  ,MF=S Default: MF=S
  ,MF=(L,list addr) list addr: RS-type address or register (1) - (12).
  ,MF=(L,list addr,attr)  
  ,MF=(L,list addr,0D)  
  ,MF=(E,list addr)  
  ,MF=(E,list addr,COMPLETE)  
   

Parameters

The parameters are explained as follows:

REQUEST=ALLOCATE
A required parameter. REQUEST=ALLOCATE allocates the logical parmlib data set concatenation. The allocation uses the data set name(s) and volume serial number(s) provided on the PARMLIB statements in the LOADxx member of SYSn.IPLPARM or SYS1.PARMLIB that is used during IPL processing or as specified by a SETLOAD command. If a volume serial number(s) isn't specified, IEFPRMLB searches the catalog for it. The allocation uses DISP=SHR and UNIT=SYSALLDA. If no PARMLIB statements are provided in the LOADxx member, the allocation uses only SYS1.PARMLIB.
,S99RB=NO
,S99RB=YES
An optional parameter, that specifies whether or not an SVC99 request block is input. The default is S99RB=NO.
,S99RB=NO
specifies that no S99RB is input.
,S99RB=YES
specifies that an SVC99RB (and optionally an SVC99RBX) is input. The SVC99 request block is only required when the caller requires S99FLAG1/S99FLAG2 options not automatically provided by the ALLOCATE function. If the caller requires that the allocation wait for data sets to become available or allow mounting of volumes, the caller must set the appropriate bits in the S99FLAG1/S99FLAG2 fields to request those options. The address of the list of text unit pointers (S99TXTPP) must be zero. If an SVC99 request block is passed and the caller wishes messages issued or returned, the caller must also provide an SVC99 request block extension. The SVC99 request block and SVC99 request block extension are mapped by mapping macro IEFZB4D0.
,WAITDSN=NO
,WAITDSN=YES
An optional parameter when S99RB=YES is not specified, that indicates whether waiting should be allowed for one or more of the data sets in the logical parmlib data set concatenation if they are not readily available (for example, enqueued exclusive by another job). The default is WAITDSN=NO.
,WAITDSN=NO
If one or more of the data sets in the logical parmlib data set concatenation is not readily available (e.g., enqueued exclusive by another job), waiting should not be allowed. In this case upon return from the IEFPRMLB service the logical parmlib data set concatenation will not have been allocated.
,WAITDSN=YES
If one or more of the data sets in the logical parmlib data set concatenation is not readily available (for example, enqueued exclusive by another job), waiting should be allowed. In this case the service will wait for the data set(s) to become available before proceeding with the allocation. Upon return from the IEFPRMLB service the logical parmlib data set concatenation will have been allocated barring other errors.
,MOUNT=YES
,MOUNT=NO
An optional parameter when S99RB=YES is not specified, that indicates whether the service should allow mounting of volumes or consideration of offline or pending offline devices for one or more of the data sets in the logical parmlib data set concatenation. The default is MOUNT=YES.
,MOUNT=YES
If one or more of the volumes on which one or more of the data sets in the logical parmlib reside is not currently mounted, mounting of that volume(s) should be allowed. If one or more of the devices on which one or more of the data sets in the logical parmlib reside is not currently online or is pending offline, consideration of the offline or pending offline device should be allowed. Upon return from the IEFPRMLB service the logical parmlib data set concatenation will have been allocated barring other errors.
,MOUNT=NO
If one or more of the volumes on which one or more of the data sets in the logical parmlib reside is not currently mounted, mounting of that volume(s) should not be allowed. If one or more of the devices on which one or more of the data sets in the logical parmlib reside is not currently online, consideration of the offline device should not be allowed. Upon return from the IEFPRMLB service the logical parmlib data set concatenation will not have been allocated.
,RETMSG=NO
,RETMSG=YES
An optional parameter when S99RB=YES is not specified, that specifies whether or not messages are to be returned to the caller in an input message buffer. The default is RETMSG=NO.
,RETMSG=NO
specifies that messages generated during IEFPRMLB processing should not be returned to the caller in the input message buffer (MSGBUF). Messages generated during IEFPRMLB processing will be issued to the console specified by the input console id or will be issued with Route Code 11 (Programmer Information) and descriptor code 4 (System Status) if no console id is input.
,RETMSG=YES
specifies that messages generated during IEFPRMLB processing should be returned to the caller in the input message buffer (MSGBUF). Note that the only messages capable of being returned are those issued by MVS™ Allocation and SMS. Also, only error messages (severity level 8 and higher) are returned with RETMSG=YES. If warning messages (severity level 4) or informational messages (severity level 0) are desired, then an S99RB and an S99RBX with the desired message severity level (S99EMGSV) must be built and passed by specifying, S99RB=YES, MSGBUF=msgbuf, and S99RBPTR=s99rbptr.
,CONSOLID=consolid
,CONSOLID=NOCONSID
An optional input parameter when RETMSG=YES and S99RB=YES are not specified. It contains the id of the console that originated this request and may be provided if messages are to be issued. The default is NOCONSID.

To code: Specify the RS-type address, or address in register (2)-(12), of a 4-character field.

,CART=cart
,CART=NOCART
An optional input parameter when RETMSG=YES and S99RB=YES are not specified, that contains the command and response token. The default is NOCART.

To code: Specify the RS-type address, or address in register (2)-(12), of an 8-character field.

,MSGBUF=msgbuf
,MSGBUF=NOMSGBUF
A required input parameter when RETMSG=YES is specified and S99RB=YES is not specified, that is the area into which all messages generated during IEFPRMLB processing are to be placed. The format of each message returned in the buffer is mapped by IEFZPMAP and is compatible with WTO format requirements for the TEXT keyword. There may be more than one message in the buffer. A 4K buffer is recommended. Messages are placed contiguously into the buffer in 256-byte message elements. If the input buffer is not large enough to contain all the generated messages, those messages that will fit are returned in the buffer in the order they are generated. If the message buffer is filled, an indicator (PRM_Msg_Buffer_Full) will be returned to indicate the buffer is full and, therefore, may not contain all messages. PRM_Message_Count will contain the number of messages in the buffer. See DSECT PRM_Message_Buffer in IEFZPMAP for a complete mapping of the message buffer.
The caller must fill in the following fields in the message buffer (DSECT PRM_Message_Buffer):
  • PRM_Msg_Buffer_Size set to the size of the buffer (including the header)
  • All other fields set to zero
The default is NOMSGBUF.

To code: Specify the RS-type address, or address in register (2)-(12), of a character field.

,S99RBPTR=s99rbptr
A required input parameter when S99RB=YES is specified that contains the address of the SVC99 request block to be used to process the allocation request.

To code: Specify the RS-type address, or address in register (2)-(12), of a pointer field.

,ALLOCDDNAME=allocddname
A required input output parameter, that is the DDname associated with the logical parmlib. If a non-blank/non-zero DDname is input, the service will examine the active task's TIOT to determine if the DDname is currently allocated. If it is currently allocated, the service will return to its caller without further processing. The service will set return code x'04' (PRMLB_WARNING) and reason code x'01' (PRMLB_DD_ALREADY_ALLOC) to indicate the DDname is currently allocated. If the DDname is not currently allocated, the service will allocate the logical parmlib data set concatenation using the input DDname.

If a blank or zero DDname is input, the service will allocate the logical parmlib data set concatenation and return the system-generated DDname to the caller.

To code: Specify the RS-type address, or address in register (2)-(12), of an 8-character field.

,READ=NO
,READ=YES
An optional parameter, that specifies whether or not a specified member is to be read from the logical parmlib. The default is READ=NO.
,READ=NO
indicates that no read is to be performed.
,READ=YES
indicates that the specified member of the logical parmlib data set concatenation is to be read and placed into the input buffer. If READ is requested, the member to be read (specified by MEMNAME) and the buffer in which to place the member contents (specified by READBUF) must be provided.
,MEMNAME=memname
A required input parameter when READ=YES is specified, that is the name of the member which is to be read from the logical parmlib data set concatenation. The entire contents of the specified member will be read from the logical parmlib data set concatenation and returned in the input buffer specified on the READBUF keyword.

To code: Specify the RS-type address, or address in register (2)-(12), of an 8-character field.

,READBUF=readbuf
A required input output parameter when READ=YES is specified, that is the area into which the contents of the member of the logical parmlib data set concatenation (specified by MEMNAME) are to be placed. The format of the buffer is mapped by IEFZPMAP. If the member is too large to fit into the buffer, records will be read into the buffer until the buffer is full. The service will terminate with return code x'0C' (PRMLB_Request_Failed) and reason code x'0A' (PRMLB_Read_Buffer_Full) and upon return, the buffer header will contain the buffer size needed to contain the entire member contents. The caller may obtain a larger buffer and invoke IEFPRMLB to read the member again from the beginning. The read buffer header will also contain the number of records that were successfully read the placed into the input buffer and the total number of records contained in the specified member.

For each record read, columns 73 - 80 will be blanked. Unless requested by the Blank72 parameter, column 72 will also be blanked. Symbolic substitution will be performed.

The caller must fill in the following fields in the READ buffer (DSECT PRM_Read_Buffer):
  • PRM_Read_BuffSize - set to the size of the buffer
  • All other fields set to zero

To code: Specify the RS-type address, or address in register (2)-(12), of a character field.

,BLANK72=YES
,BLANK72=NO
An optional parameter when READ=YES is specified, that indicates whether or not to blank out column 72. Most parmlib processing is defined to ignore column 72. The default is BLANK72=YES.
,BLANK72=YES
Do blank out column 72.
,BLANK72=NO
Do not blank out column 72.
,STARCOMMENT=NO
,STARCOMMENT=YES
An optional parameter when READ=YES is specified, that indicates whether a line within the parmlib member that has an asterisk in column 1 should be considered to be a comment that is not even returned to the caller. The default is STARCOMMENT=NO.
,STARCOMMENT=NO
A line with an asterisk in column 1 is not to be considered a comment. It will be included within the data returned.
,STARCOMMENT=YES
A line with an asterisk in column 1 is to be considered a comment. It will not be included within the data returned. Due to this, the nth line of output will be the nth non-star comment line rather than the nth overall line of the member. If you use the line number, make it clear in your explanation that the line number is not the overall line number.
,MEMNOTFOUND=MSGOK
,MEMNOTFOUND=NOMSG
An optional keyword input thta indicates whether or not to write a message when the member is not found. The default is MEMNOTFOUND=MSGOK.
,MEMNOTFOUND=MSGOK
Specifies to write a message.
,MEMNOTFOUND=NOMSG
Specifies not to write a message..
,FREECLOSE=NO
,FREECLOSE=YES
An optional keyword input that indicates whether the “logical parmlib” dataset concatenation should be automatically unallocated when the DD is closed. The default is FREECLOSE=NO.
,FREECLOSE=NO
The “logical parmlib” dataset concatenation will not be automatically unallocated when the DD is closed. When the caller's use of the “logical parmlib” dataset concatenation has been complete, the caller must reinvoke the IEFPRMLB service with REQUEST=FREE to unallocated the “logical parmlib” dataset concatenation. Additionally, the caller must ensure the “logical parmlib” has been closed prior to reinvoking the IEFPRMLB service with REQUEST=FREE.
,FREECLOSE=YES
The “logical parmlib” dataset concatenation will be automatically unallocated when the DD is closed. The caller does not need to reinvoke the IEFPRMLB service with REQUEST=FREE. However, the caller should be aware that the “logical parmlib” dataset concatentaion will be automatically unallocated as soon as it is closed and would therefore no longer be allocated for use by the caller.
Note: If the caller requests READ(YES) and FREECLOSE(YES), the caller does not need to close the data set nor reinvoke the IEFPRMLB service to free the “logical parmlib” dataset concatenation. The close and free will be done by the Logical Parmlib Service.
,CALLERNAME=callername
A required input parameter, that is the EBCDIC caller's name which is to be used in messages, symptom records and other diagnostic areas as necessary during IEFPRMLB processing. Initial characters A-I and SYS are reserved for IBM® use.

The suggested callername definition is 'ProgramName || ServiceLevel'

Example:
IEF761I jjobname [procstep] stepname ddname callername
        DD IS ALREADY ALLOCATED AND WILL BE USED BY
        THIS TASK

To code: Specify the RS-type address, or address in register (2)-(12), of a 16-character field.

,RETCODE=retcode
An optional output parameter into which the return code is to be copied from GPR 15.

To code: Specify the RS-type address of a fullword field, or register (2)-(12).

,RSNCODE=rsncode
An optional output parameter into which the reason code is to be copied from GPR 0.

To code: Specify the RS-type address of a fullword field, or register (2)-(12).

,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX
,PLISTVER=plistver
An optional input parameter that specifies the version of the macro. PLISTVER determines which parameter list the system generates. PLISTVER is an optional input parameter on all forms of the macro, including the list form. When using PLISTVER, specify it on all macro forms used for a request and with the same value on all of the macro forms. The values are:
  • IMPLIED_VERSION, which is the lowest version that allows all parameters specified on the request to be processed. If you omit the PLISTVER parameter, IMPLIED_VERSION is the default.
  • MAX, if you want the parameter list to be the largest size currently possible. This size might grow from release to release and affect the amount of storage that your program needs.

    If you can tolerate the size change, IBM recommends that you always specify PLISTVER=MAX on the list form of the macro. Specifying MAX ensures that the list-form parameter list is always long enough to hold all the parameters you might specify on the execute form; in this way, MAX ensures that the parameter list does not overwrite nearby storage.

  • 0, if you use the currently available parameters.
To code: Specify one of the following:
  • IMPLIED_VERSION
  • MAX
  • A decimal value of 0
,MF=S
,MF=(L,list addr)
,MF=(L,list addr,attr)
,MF=(L,list addr,0D)
,MF=(E,list addr)
,MF=(E,list addr,COMPLETE)
An optional input parameter that specifies the macro form.

Use MF=S to specify the standard form of the macro, which builds an inline parameter list and generates the macro invocation to transfer control to the service. MF=S is the default.

Use MF=L to specify the list form of the macro. Use the list form together with the execute form of the macro for applications that require reentrant code. The list form defines an area of storage that the execute form uses to store the parameters. Only the PLISTVER parameter may be coded with the list form of the macro.

Use MF=E to specify the execute form of the macro. Use the execute form together with the list form of the macro for applications that require reentrant code. The execute form of the macro stores the parameters into the storage area defined by the list form, and generates the macro invocation to transfer control to the service.

,list addr
The name of a storage area to contain the parameters. For MF=S, MF=E, and MF=M, this can be an RS-type address or an address in register (1)-(12).
,attr
An optional 1- to 60-character input string, which can contain any value that is valid on an assembler DS pseudo-op. You can use this parameter to force boundary alignment of the parameter list. If you do not code attr, the system provides a value of 0D, which forces the parameter list to a doubleword boundary.
,COMPLETE
Specifies that the system is to check for required parameters and supply defaults for omitted optional parameters.

ABEND codes

None.

Return and reason codes

When the IEFPRMLB macro returns control to your program:
  • GPR 15 (and retcode, if you coded RETCODE) contains a return code.
  • When the value in GPR 15 is not zero, GPR 0 (and rsncode, if you coded RSNCODE) contains reason code.

Return and reason code constants are defined in macro IEFZPRC.

The following table identifies the hexadecimal return and reason codes and the equate symbol associated with each reason code.

Table 1. Return and Reason Codes for the IEFPRMLB Macro
Return Code Reason Code Equate Symbol Meaning and Action
X'00' Equate Symbol: PRMLB_Success

Meaning: Return Code - function completed successfully

Action: None required.

X'04' Equate Symbol: PRMLB_Warning

Meaning: Return Code - Warning

X'04' X'01' Equate Symbol: PRMLB_DD_Already_ALLOC

Meaning: The specified DDname is already allocated to this task.

Action: None required.

X'08' Equate Symbol: PRMLB_Locks_Held

Meaning: Return Code - the caller of IEFPRMLB holds a lock.

Action: Change the caller's code to release locks prior to invoking IEFPRMLB.

X'0C' Equate Symbol: PRMLB_Request_Failed

Meaning: Return Code - request failed.

X'0C' X'01' Equate Symbol: PRMLB_Member_Not_Found

Meaning: The specified member name was not found.

Action: Ensure the specified member name exists. If so, contact the system programmer.

X'0C' X'02' Equate Symbol: PRMLB_Read_IO_Error

Meaning: An I/O error was encountered while attempting to read the specified member.

Action: Contact the system programmer.

X'0C' X'03' Equate Symbol: PRMLB_Open_Error

Meaning: An error was encountered while attempting to open the logical parmlib.

Action: Contact the system programmer.

X'0C' X'04' Equate Symbol: PRMLB_ALLOC_Failed

Meaning: Allocation of one of the logical parmlib data sets failed

Action: Contact the system programmer.

X'0C' X'05' Equate Symbol: PRMLB_CONCAT_Failed

Meaning: Concatenation of the logical parmlib data sets failed

Action: Contact the system programmer.

X'0C' X'06' Equate Symbol: PRMLB_Reader_Load_Failed

Meaning: Load of the parmlib read routine failed.

Action: Contact the system programmer.

X'0C' X'07' Equate Symbol: PRMLB_Unable_To_Access_DS

Meaning: The parmlib read routine was unable to access the logical parmlib

Action: Contact the system programmer.

X'0C' X'08' Equate Symbol: PRMLB_Parmlib_Still_Open

Meaning: REQUEST=FREE was requested but the logical parmlib is still open.

Action: Close the data set prior to issuing the REQUEST=FREE.

X'0C' X'09' Equate Symbol: PRMLB_UNALLOC_Failed

Meaning: Unallocation of the logical parmlib data sets failed.

Action: Contact the system programmer.

X'0C' X'0A' Equate Symbol: PRMLB_Read_Buffer_Full

Meaning: The input READ buffer is full and READ processing could not continue

Action: The caller may obtain a buffer large enough to contain the entire member contents (PRM_Buff_Size_Needed in DSECT PRM_Read_Buffer which is mapped by IEFZPMAP contains the required size) and re-invoke IEFPRMLB to begin reading the specified member again.

X'0C' X'0B' Equate Symbol: PRMLB_Putline_Error

Meaning: Putline processing abended. This could be due to an error in the user-provided CPPL (pointed to by S99ECPPL when the user provides an S99RB).

Action: Verify that the CPPL is valid.

X'10' Equate Symbol: PRMLB_Internal_Error

Meaning: Return Code - an internal error occurred.

X'10' X'01' Equate Symbol: PRMLB_Bad_Parameter

Meaning: A bad parameter list was passed to the parmlib read routine.

Action: Contact the system programmer.

X'10' X'02' Equate Symbol: PRMLB_Unknown_Reason

Meaning: Return Code - Reason for failure is unknown.

Action: Contact the system programmer.

X'14' Equate Symbol: PRMLB_Not_Task_Mode

Meaning: Return Code - the caller is not in Task mode.

Action: Contact the system programmer.

X'1C' Equate Symbol: PRMLB_Invalid_Parameter_List

Meaning: Return Code - the input parameter list is invalid.

X'1C' X'01' Equate Symbol: PRMLB_Plist_Unaccessible

Meaning: The IEFPRMLB service was unable to access the input parameter list.

Action: Ensure the parameter list resides in storage belonging to the caller. If so, contact the system programmer.

X'1C' X'02' Equate Symbol: PRMLB_ListBuff_Unaccessible

Meaning: The IEFPRMLB service was unable to access the input LIST buffer.

Action: Ensure the list buffer resides in storage belonging to the caller. If so, contact the system programmer.

X'1C' X'03' Equate Symbol: PRMLB_MsgBuff_Unaccessible

Meaning: The IEFPRMLB service was unable to access the input message buffer.

Action: Ensure the message buffer resides in storage belonging to the caller. If so, contact the system programmer.

X'1C' X'04' Equate Symbol: PRMLB_ReadBuff_Unaccessible

Meaning: The IEFPRMLB service was unable to access the input read buffer.

Action: Ensure the read buffer resides in storage belonging to the caller. If so, contact the system programmer.

X'1C' X'05' Equate Symbol: PRMLB_Plist_S99TXTPP_NOT0

Meaning: The S99RB provided to the IEFPRMLB service contains a non-zero S99TXTPP field.

Action: Change the caller's code to zero the S99TXTPP prior to the call to IEFPRMLB.

X'1C' X'06' Equate Symbol: PRMLB_MsgBuff_Format_Error

Meaning: The format of the message buffer provided to the IEFPRMLB service is invalid.

Action: Correct the message buffer format.

X'1C' X'07' Equate Symbol: PRMLB_ReadBuff_Format_Error

Meaning: The format of the read buffer provided to the IEFPRMLB service is invalid.

Action: Correct the read buffer format.

X'1C' X'08' Equate Symbol: PRMLB_ListBuff_Format_Error

Meaning: The format of the list buffer provided to the IEFPRMLB service is invalid.

Action: Correct the list buffer format.

X'1C' X'09' Equate Symbol: PRMLB_S99RB_Unaccessible

Meaning: The IEFPRMLB service was unable to access the input read buffer.

Action: Ensure the S99RB resides in storage belonging to the caller. If so, contact the system programmer.

X'20' Equate Symbol: PRMLB_Cross_Memory

Meaning: Return Code - the caller is in cross memory mode.

Action: Change the caller's code so it is not in cross memory mode when invoking IEFPRMLB.

X'24' Equate Symbol: PRMLB_ESTAE_Setup_Failed

Meaning: Return Code - a failure occurred when IEFPRMLB processing attempted to set up an ESTAE environment.

Action: Contact the system programmer.

X'28' Equate Symbol: PRMLB_Notauth_To_Subpool

Meaning: Return Code - an unauthorized caller requested messages in an authorized subpool.

Action: Only specify subpools to which the program is authorized.