Interface for Global Resource Serialization ENQ OBTAIN and RELEASE requests.
The requirements for the caller are:
Environmental factor | Requirement |
---|---|
Minimum authorization: | Problem state. Any PSW key To use OWNINGTTOKEN, ENQMAX, or when the specified QNAME is one of the authorized QNAMEs, authorization must be one of the following: Supervisor state, PSW key 0-7, or APF authorized. Note: When an authorized
caller issues an OBTAIN request with an unauthorized QNAME, if COND=YES,
the request is granted, but a warning return code and the reason ISGENQRsn_UnprotectedQName
are given. This is to warn that an unauthorized caller may block the
ENQ, or even release the ENQ if running under the owning task. If
COND=NO, authorized callers cannot obtain an ENQ on an unprotected
resource.
|
Dispatchable unit mode: | Task |
Cross memory mode: | Any PASN, any HASN, any SASN Note: The resulting ENQ is associated with the owning task in the home address space. |
AMODE: | 31- or 64-bit If in AMODE 64, specify SYSSTATE AMODE64=YES before invoking this macro. |
ASC mode: | Primary or access register (AR) If in access register ASC mode, specify SYSSTATE ASCENV=AR before invoking this macro. |
Interrupt status: | Enabled for I/O and external interrupts |
Locks: | The caller must not be locked. |
Control parameters: | Control parameters must be in the primary address
space or, for AR-mode callers, must be in an address/data space that
is addressable through a public entry on the caller's dispatchable
unit access list (DU-AL). The control parameters must be in the same key as the caller. The ECB specified must be in the caller's home address space or in common. The TCB of the owning task (the current task or specified by OWNINGTTOKEN) must be in the caller's home address space. If a captured UCB address is specified, the captured UCB must be in the caller's home address space. |
The caller must include the ISGYCON macro to get the return and reason codes.
The caller must include the ISGYENQ macro to get the mappings for the ISGYENQAA, ISGYENQRES, ISGYENQTOKEN, and ISGYENQRETURN tables.
See "Avoiding Interlock" in z/OS MVS Programming: Assembler Services Guide to ensure that you are following the required protocols to prevent the interlock.
The caller must not have functional recovery routines (FRRs).
This macro supports multiple versions. Some keywords are unique to certain versions. See the ,PLISTVER=IMPLIED_VERSION parameter description.
Before issuing the ISGENQ macro, the caller does not have to place any information into any general purpose register (GPR) or access register (AR) unless using it in register notation for a particular parameter, or using it as a base register.
Some callers depend on register contents remaining the same before and after issuing a service. If the system changes the contents of registers on which the caller depends, the caller must save them before issuing the service, and restore them after the system returns control.
None.
main diagram >>-+------+--b--ISGENQ--b--+-REQUEST--=--OBTAIN--| |--+--------> '-name-' +-REQUEST--=--CHANGE--| |--+ '-REQUEST--=--RELEASE--| |-' .-,--COND--=--NO--. >--+-----------------+--+------------------------+--------------> '-,--COND--=--YES-' '-,--RETCODE--=--retcode-' >--+------------------------+-----------------------------------> '-,--RSNCODE--=--rsncode-' .-,--PLISTVER--=--IMPLIED_VERSION-. >--+---------------------------------+--------------------------> +-,--PLISTVER--=--MAX-------------+ +-,--PLISTVER--=--1---------------+ '-,--PLISTVER--=--2---------------' .-,--MF--=--S--------------------------------------. >--+--------------------------------------------------+-------->< | .-,--0D---. | +-,--MF--=--(--L--,--list addr--+---------+--)-----+ | '-,--attr-' | | .-,--COMPLETE-. | '-,--MF--=--(--E--,--list addr--+-------------+--)-'
parameters-1 .-,--TEST--=--NO-. >>-+-+----------------+--| |---------------------------------------------------------------------------------------+--> | .-,--ANSLEN--=--NO_ANSLEN-. .-,--OWNINGTTOKEN--=--CURRENT_TASK-. | '-,--TEST--=--YES--+------------------------+--+-------------------------+--+----------------------------------+-' '-,--ANSAREA--=--ansarea-' '-,--ANSLEN--=--anslen----' '-,--OWNINGTTOKEN--=--owningttoken-' .-,--RESLIST--=--NO-. >--+-+-------------------+--| |-+----------------------------->< '-,--RESLIST--=--YES--| |----'
parameters-2 .-,--RESLIST--=--NO-. >>-+-+-------------------+--,--ENQTOKEN--=--enqtoken--------------------------------------------------------------+--> '-,--RESLIST--=--YES--,--NUMRES--=--numres--,--ENQTOKENTBL--=--enqtokentbl--+--------------------------------+-' '-,--RETURNTABLE--=--returntable-' .-,--OWNINGTTOKEN--=--CURRENT_TASK-. >--+----------------------------------+-------------------------> '-,--OWNINGTTOKEN--=--owningttoken-' >--+-,--CONTROL--=--EXCLUSIVE-+-------------------------------->< '-,--CONTROL--=--SHARED----'
parameters-3 .-,--RESLIST--=--NO-. >>-+-+-------------------+--,--ENQTOKEN--=--enqtoken--------------------------------------------------------------+--> '-,--RESLIST--=--YES--,--NUMRES--=--numres--,--ENQTOKENTBL--=--enqtokentbl--+--------------------------------+-' '-,--RETURNTABLE--=--returntable-' .-,--OWNINGTTOKEN--=--CURRENT_TASK-. >--+----------------------------------+------------------------>< '-,--OWNINGTTOKEN--=--owningttoken-'
parameters-4 .-,--CONTENTIONACT--=--WAIT-. .-,--WAITTYPE--=--SUSPEND-----------------------------------------------------. >>-+-+---------------------------+--+-----------------------------------------------------------------------------+-+--> | | .-,--OWNINGTTOKEN--=--CURRENT_TASK-. | | | '-,--WAITTYPE--=--ECB--,--ECB@--=--ecb@--+----------------------------------+-' | | '-,--OWNINGTTOKEN--=--owningttoken-' | | .-,--OWNINGTTOKEN--=--CURRENT_TASK-. .-,--ENQMAX -=--YES-. | '-,--CONTENTIONACT--=--FAIL--+----------------------------------+--+-------------------+-------------------------' '-,--OWNINGTTOKEN--=--owningttoken-' '-,--ENQMAX -=--NO--' .-,--USERDATA--=--NO_USERDATA-. >--+-----------------------------+----------------------------->< '-,--USERDATA--=--userdata----'
parameters-5 >>-,--QNAME--=--qname--,--RNAME--=--rname-----------------------> >--,--RNAMELEN--=--rnamelen-------------------------------------> >--+-,--CONTROL--=--EXCLUSIVE---------------------------+-------> +-,--CONTROL--=--SHARED------------------------------+ '-,--CONTROL--=--VALUE--,--CONTROLVAL--=--controlval-' .-,--RESERVEVOLUME--=--NO-. .-,--RNL--=--YES-. >--+-+-------------------------+--+-,--SCOPE--=--STEP----------------------------+--+----------------+-+--> | +-,--SCOPE--=--SYSTEM--------------------------+ '-,--RNL--=--NO--' | | +-,--SCOPE--=--SYSTEMS-------------------------+ | | +-,--SCOPE--=--SYSPLEX-------------------------+ | | '-,--SCOPE--=--VALUE--,--SCOPEVAL--=--scopeval-' | | .-,--SYNCHRES--=--SYSTEM-. | '-,--RESERVEVOLUME--=--YES--,--UCB@--=--ucb@--+------------------------+----------------------------' +-,--SYNCHRES--=--YES----+ '-,--SYNCHRES--=--NO-----' >--,--ENQTOKEN--=--enqtoken------------------------------------><
parameters-6 >>-,--NUMRES--=--numres--,--RESTABLE--=--restable---------------> >--,--ENQTOKENTBL--=--enqtokentbl-------------------------------> >--+--------------------------------+---------------------------> '-,--RETURNTABLE--=--returntable-' .-,--QNAME--=--DO_NOT_OVERRIDE-. >--+------------------------------+-----------------------------> '-,--QNAME--=--qname-----------' .-,--RNAME--=--DO_NOT_OVERRIDE-. >--+------------------------------+-----------------------------> '-,--RNAME--=--rname-----------' .-,--RNAMELEN--=--DO_NOT_OVERRIDE-. >--+---------------------------------+--------------------------> '-,--RNAMELEN--=--rnamelen--------' .-,--CONTROL--=--DO_NOT_OVERRIDE-. >--+--------------------------------+---------------------------> +-,--CONTROL--=--EXCLUSIVE-------+ '-,--CONTROL--=--SHARED----------' .-,--SCOPE--=--DO_NOT_OVERRIDE-. >--+------------------------------+-----------------------------> +-,--SCOPE--=--STEP------------+ +-,--SCOPE--=--SYSTEM----------+ +-,--SCOPE--=--SYSTEMS---------+ '-,--SCOPE--=--SYSPLEX---------' .-,--RNL--=--DO_NOT_OVERRIDE-. >--+----------------------------+-------------------------------> +-,--RNL--=--YES-------------+ '-,--RNL--=--NO--------------' .-,--UCB@--=--DO_NOT_OVERRIDE-. >--+-----------------------------+------------------------------> '-,--UCB@--=--ucb@------------' .-,--SYNCHRES--=--DO_NOT_OVERRIDE-. >--+---------------------------------+------------------------->< +-,--SYNCHRES--=--SYSTEM----------+ +-,--SYNCHRES--=--YES-------------+ '-,--SYNCHRES--=--NO--------------'
The parameters are explained as follows:
Note: The answer area is returned only when RC=0 or RC=4.
To code: Specify the RS-type address, or address in register (2)-(12), of a character field.
See z/OS MVS Planning: Global Resource Serialization for more information.
To code: Specify the RS-type address, or address in register (2)-(12), of a fullword field, or specify a literal decimal value.
Note: When COND=YES, ISGENQ tries to provide return and reason codes for the errors occurred during the process, though in some cases abends might be issued.
Note that a reserve request (where UCB@ is specified) that is not converted to only a global ENQ (Systems) will consist of an ENQ resource and a hardware reserve. For more information on reserve processing, see the description of the ,SYNCHRES=SYSTEM keyword for more information on reserve processing. The default is CONTENTIONACT=WAIT.
To code: Specify the RS-type address, or address in register (2)-(12), of an one-byte field.
When the ISGENQ service returns to the caller, the return and reason codes specify for each resource whether the task has been given control of the resource or needs to wait for the ECB to be posted.
When the ECB is posted, it contains a return/reason code pair. Bits 8-23 contain the low-order halfword of the reason code and bits 24-31 contain the low-order byte of the return code. For a RESLIST=NO request, the ECB contains the return and reason code for the request. For a RESLIST=YES request, the ECB contains an overall return code.
To code: Specify the RS-type address, or address in register (2)-(12), of a pointer field.
To code: Specify the RS-type address, or address in register (2)-(12), of a 32-character field.
To code: Specify the RS-type address, or address in register (2)-(12), of a 32-character field.
To code: Specify the RS-type address, or address in register (2)-(12), of a 32-character field.
To code: Specify the RS-type address, or address in register (2)-(12), of a character field.
To code: Specify the RS-type address, or address in register (2)-(12), of a character field.
To code: Specify the RS-type address, or address in register (2)-(12), of a character field.
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.
To code: Specify the RS-type address, or address in register (2)-(12), of a halfword field, or specify a literal decimal value.
To code: Specify the RS-type address, or address in register (2)-(12), of a halfword field, or specify a literal decimal value.
To code: Specify the RS-type address, or address in register (2)-(12), of a halfword field, or specify a literal decimal value.
Note: Mutually exclusive with RESERVEVOLUME=YES. The default is CURRENT_TASK.
To code: Specify the RS-type address, or address in register (2)-(12), of a 16-character field.
Note: Mutually exclusive with RESERVEVOLUME=YES. The default is CURRENT_TASK.
To code: Specify the RS-type address, or address in register (2)-(12), of a 16-character field.
Note: Mutually exclusive with RESERVEVOLUME=YES. The default is CURRENT_TASK.
To code: Specify the RS-type address, or address in register (2)-(12), of a 16-character field.
To code: Specify the RS-type address, or address in register (2)-(12), of a 16-character field.
To code: Specify the RS-type address, or address in register (2)-(12), of a 16-character field.
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, when both are assembled with the same level of the system. In this way, MAX ensures that the parameter list does not overwrite nearby storage.
For a list of QNAME (also known as major name) and RNAME (also known as minor name) ENQ or DEQ names and the resources that issue the ENQ or DEQ, see z/OS MVS Diagnosis: Reference.
To code: Specify the RS-type address, or address in register (2)-(12), of an 8-character field.
For a list of QNAME (also known as major name) and RNAME (also known as minor name) ENQ or DEQ names and the resources that issue the ENQ or DEQ, see z/OS MVS Diagnosis: Reference.
The default is DO_NOT_OVERRIDE.
To code: Specify the RS-type address, or address in register (2)-(12), of an 8-character field.
Note: RESERVEVOLUME=YES is mutually exclusive with OWNINGTTOKEN.
Note: An easy way to release a list of ENQs is to use the output ENQTOKEN table from the OBTAIN request as input to a RELEASE request.
Note: A easy way to release a list of ENQs is to use the output ENQTOKEN table from the OBTAIN request as input to a RELEASE request.
To code: Specify the RS-type address, or address in register (2)-(12), of a character field.
To code: Specify the RS-type address of a fullword field, or register (2)-(12) or (15), (GPR15), (REG15), or (R15).
To code: Specify the RS-type address, or address in register (2)-(12), of a character field.
To code: Specify the RS-type address, or address in register (2)-(12), of a character field.
To code: Specify the RS-type address, or address in register (2)-(12), of a character field.
To code: Specify the RS-type address, or address in register (2)-(12), of a character field.
To code: Specify the RS-type address, or address in register (2)-(12), of a character field.
To code: Specify the RS-type address, or address in register (2)-(12), of an one-byte field.
To code: Specify the RS-type address, or address in register (2)-(12), of an one-byte field.
To code: Specify the RS-type address of a fullword field, or register (0) or (2)-(12), (00), (GPR0), (GPR00), REG0), (REG00), or (R0).
To code: Specify the RS-type address, or address in register (2)-(12), of an one-byte field.
Note that an RC=4 (ISGENQRc_Warn), RSC=0403 (ISGENQRsn_ECBWillBePosted) is presented for CONTENTIONACT=WAIT, WAITTYPE=ECB, reserve requests (where UCB@ is specified) when there is contention on the ENQ resource or there was no contention on the resource, and the reserve I/O was done synchronously. The default is SYNCHRES=SYSTEM.
Mutually exclusive with COND=NO.
For existing requests from the same task, which match the specified resource, the ENQToken of that request is returned.
See ISGQUERY SEARCH=BY_ENQTOKEN for information about outstanding ENQ requests.
Note: Authorized callers do not need to allocate the UCB to the job step before invoking ISGENQ, but the caller must serialize the UCB against dynamic I/O reconfiguration requests. The caller can accomplish this serialization by allocating or pinning the UCB. Such serialization ensures that a dynamic I/O reconfiguration request does not delete or reuse the UCB before the ISGENQ macro uses the address.
To code: Specify the RS-type address, or address in register (2)-(12), of a pointer field.
To code: Specify the RS-type address, or address in register (2)-(12), of a pointer field.
Note that GRS has no interests in the contents of the USERDATA. Unlike the QNAME, RNAME, and SCOPE parameters, USERDATA has no meaning in the definition of the logically serialized resource identity. For example, exclusive requests with different user data and the same QNAME, RNAME, and SCOPE contend with each other.
This request requires a version 2 parameter list. The default is NO_USERDATA.
To code: Specify the RS-type address, or address in register (2)-(12), of a 32-character field.
Mutually exclusive with COND=NO.
For REQUEST=OBTAIN and REQUEST=CHANGE requests the caller might encounter abend codes X'138', X'238', X'338', X'438', X'538', X'638', X'738', X'838', X'938'.
For REQUEST=RELEASE requests the caller might encounter abend codes X'130', X'230', X'330', X'430', X'530', X'630', X'730', X'830', X'930'.
For explanations and responses for these codes, see z/OS MVS System Codes.
Note that the ABEND reason codes correspond to the same reason codes listed in Table 1.
Macro ISGYCON provides equate symbols for the return and reason codes.
The following table identifies the hexadecimal return and reason codes and the equate symbol associated with each reason code. IBM support the xxxx value, where xxxx represent 4 hex digits. Note that when the xxxx value is 'E0F2' hexadecimal, it indicates a reason-code set by the ISGNQXITBATCH or ISGNQXITBATCHCND exits.
Return Code | Reason Code | Equate Symbol Meaning and Action |
---|---|---|
00 | — | Equate Symbol: ISGENQRc_OK Meaning: ISGENQ request successful. Depending on the type of request, the ENQ is successfully obtained, changed to exclusive, or released. If RESLIST=YES is specified, all ENQ obtain, change, and release requests are successful. For REQUEST=OBTAIN, TEST=YES, the resource is immediately available. Action: None required. |
04 | — | Equate Symbol: ISGENQRc_Warn Meaning: Warning Action: Refer to action under the individual reason code. |
04 | xxxx0401 | Equate Symbol: ISGENQRsn_NonZeroReturnCodes Meaning: A non-zero return code was issued for one or more entries in a RESLIST=YES request. The return table has the return and reason codes for each of the requests in the list. Action: See the return and reason codes returned in the RETURNTABLE. |
04 | xxxx0402 | Equate Symbol: ISGENQRsn_RequestNotProcessed Meaning: For RESLIST=YES requests. One of the other requests in the RESTABLE failed such that this request was prevented from being processed. Note that requests in a RESTABLE are not necessarily processed in the order they appear in the RESTABLE. Note: This reason code returned only in the RETURNTABLE, not through the RSNCODE keyword. Action: Check the return and reason codes for all other requests in the RETURNTABLE to identify the problem. |
04 | xxxx0403 | Equate Symbol: ISGENQRsn_ECBWillBePosted Meaning: For REQUEST=OBTAIN CONTENTIONACT=WAIT WAITTYPE=ECB, the OBTAIN request was successful, but the ENQ resource was not immediately available or the reserve I/O needed to be done synchronously (SYNCHRES). The ECB is posted when all requested resources are owned by the specified task, or when an error has occurred. The ENQToken for the request has been returned. Action: Wait on the ECB and check the return code in the ECB before using the requested resources. |
04 | xxxx0404 | Equate Symbol: ISGENQRsn_NotImmediatelyAvailable Meaning: The ENQ of the resource was not immediately available. For REQUEST=OBTAIN CONTENTIONACT=FAIL, the requested resource is not obtained. For REQUEST=OBTAIN TEST=YES, the holder is a task other than OWNINGTTOKEN. Action: No action required. |
04 | xxxx0405 | Equate Symbol: ISGENQRsn_TaskOwnsExclusive Meaning: For REQUEST=OBTAIN, including TEST=YES, the given task specified by OWNINGTTOKEN already owns the specified resource exclusively. The ENQToken for the owning request has been returned. Action: No action required. |
04 | xxxx0406 | Equate Symbol: ISGENQRsn_TaskOwnsShared Meaning: For a REQUEST=OBTAIN, including TEST=YES, the given task specified by OWNINGTTOKEN already owns the specified resource shared. The ENQToken for the owning request has been returned. Action: No action required. |
04 | xxxx0407 | Equate Symbol: ISGENQRsn_TaskWaiting Meaning: For a REQUEST=OBTAIN, including TEST=YES, the given task specified by OWNINGTTOKEN is already waiting for control of the specified resource. The ENQToken for the waiting request has been returned. Action: No action required. |
04 | xxxx0409 | Equate Symbol: ISGENQRsn_OtherSharedOwners Meaning: For REQUEST=CHANGE. The control cannot be changed to exclusive. There are other shared owners of the resource. Action: No action required. |
04 | xxxx040A | Equate Symbol: ISGENQRsn_TaskDoesNotOwn Meaning: For REQUEST=CHANGE. The control cannot be changed to exclusive. The task does not yet own the resource. Action: No action required. |
04 | xxxx040B | Equate Symbol: ISGENQRsn_TaskSuspendedForResource Meaning: For REQUEST=RELEASE. The task that requested the ENQ obtain has not yet been assigned control of the resource The task continues waiting and the resource is not released. (This reason code might result in an exit routine, which received control because of an interruption, issued a RELEASE reqquest on behalf of the task.) Action: Correct the program so that the ISGENQ RELEASE request is issued only after the ISGENQ OBTAIN request has returned to the task. If possible, avoid issuing the RELEASE request in the exit routine. |
04 | xxxx040D | Equate Symbol: ISGENQRsn_UnprotectedQName Meaning: For REQUEST=OBTAIN. An authorized caller requested an ENQ with an unauthorized QNAME. For TEST=NO,COND=YES, the OBTAIN request completed successfully, an unauthorized caller under the same owning task might release the ENQ. The ENQToken has been returned. For TEST=NO, COND=NO, the requester was abended with a X'438' abend. The request might not have completed successfully For TEST=YES requests, the resource is currently available. Action: No action required. If the ENQ needs to be protected from unauthorized RELEASE requests or from unauthorized callers obtaining an ENQ to block this request, specifiy one of the authorized QNAMEs for the resource. |
04 | xxxx040E | Equate Symbol: ISGENQRsn_UnprotectedExitQNAME Meaning: For REQUEST=OBTAIN. An authorized caller requested an ENQ with a QNAME that a dynamic exit changed to an unauthorized QNAME. For TEST=NO, the OBTAIN request completed successfully, an unauthorized caller under the same owning task might release the ENQ. The ENQToken has been returned. For TEST=YES requests, the resource is currently available but the QNAME was changed by a dynamic exit to an unprotected QNAME. Action: No action required. Contact the system programmer, if the ENQ needs to be protected from unauthorized RELEASE requests or from unauthorized callers obtaining an ENQ to block this request. The system programmer should check the ISGNQXIT installation exits to ensure that they are not coded to specify an unauthorized QNAME for authorized requests. |
04 | xxxx040F | Equate Symbol: ISGENQRsn_ECBAtleastOneRequestFailed Meaning: For REQUEST=OBTAIN RESLIST=Yes with ECB@, at least one request failed to be processed. Some requests might have been processed unsuccessfully. The system might not backout any successfully processed requests. Note: This reason code is returned in a posted ECB, not through the RSNCODE or RETURNTABLE keywords. Action: The user should issue an ISGQUERY on the ENQTOKENs to see if they were obtained and take appropriate action. Alternately, the user can release all the ENQs with a ISGENQ REQUEST=RELEASE with ENQTOKENTBL and reissue the ISGENQ OBTAIN request. |
08 | — | Equate Symbol: ISGENQRc_ParmError Meaning: ISGENQ request specified parameters in error. Action: Refer to action under the individual reason code. |
08 | xxxx0801 | Equate Symbol: ISGENQRsn_BadPlistAddress Meaning: Unable to access parameter list. Action: Check that the entire parameter list is addressable. If in AR-mode, check that the ALET of the parameter list is correct. Note that if this macro is issued in AR-mode, SYSSTATE ASCENV=AR must be issued before this macro. Ensure that the storage is in the same key as the caller. |
08 | xxxx0802 | Equate Symbol: ISGENQRsn_BadPlistALET Meaning: Bad parameter list ALET. The ALET is neither zero nor is it associated with a valid public entry on the caller's Dispatchable Unit Access List (DU-AL), nor a valid entry for a common area data space. Action: Ensure that the ALET of the parameter list is valid. Its access register may not have been set up properly. |
08 | xxxx0803 | Equate Symbol: ISGENQRsn_BadPlistVersion Meaning: Bad parameter list version number. The service level of GRS on which the caller is running does not support this version of the ISGENQ service, or the ISGENQ parameter list version is lower than the minimum required for parameters that were specified. Action: Check for possible storage overlay of the parameter list. Retry the request with the correct version number. Verify that your program was assembled with the correct macro library for the release of MVS on which your program is running. |
08 | xxxx0804 | Equate Symbol: ISGENQRsn_ReservedFieldNotNull Meaning: A reserved field in the parameter list is non-zero. Action: Check for possible storage overlay of the parameter list. |
08 | xxxx0805 | Equate Symbol: ISGENQRsn_MutuallyExclusive Meaning: Mutually exclusive keywords were specified. Action: Check for a possible storage overlay of the parameter list. |
08 | xxxx0806 | Equate Symbol: ISGENQRsn_BadRequest Meaning: Bad REQUEST parameter. Action: IBM suggests that the ISGENQ macro is used when invoking the ISGENQ service. |
08 | xxxx0807 | Equate Symbol: ISGENQRsn_BadContentionAct Meaning: Bad CONTENTIONACT parameter. Action: Check for possible storage overlay of the parameter list. |
08 | xxxx0808 | Equate Symbol: ISGENQRsn_BadOwningTToken Meaning: The specified TToken does not represent a valid task. Action: Ensure that the task token (TToken) represents a valid task. |
08 | xxxx0809 | Equate Symbol: ISGENQRsn_BadAnsAreaAddress Meaning: Unable to access the answer area. Action: Ensure that the entire answer area is addressable. If in AR-mode, this field is accessed via its address and ALET, check that both these values are correct. Check that the specified answer area length is correct. Ensure that the storage is in the same key as the caller. |
08 | xxxx080A | Equate Symbol: ISGENQRsn_BadAnsAreaALET Meaning: Bad answer area ALET. The ALET is neither zero nor is it associated with a valid public entry on the caller's Dispatchable Unit Access List (DU-AL), nor a valid entry for a common area data space. Action: Ensure that the ALET of the answer area is valid. Its access register may not have been set up properly. |
08 | xxxx080B | Equate Symbol: ISGENQRsn_AnsLenTooSmall Meaning: The specified answer area length was too small to return the requested information. Action: Invoke ISGENQ again with a larger answer area. The answer area length needed is dependent on the number of resource requests specified in NUMRES. |
08 | xxxx080C | Equate Symbol: ISGENQRsn_BadRNameAddress Meaning: Unable to access the RNAME. Action: Ensure that the entire RNAME is addressable. If in AR-mode, this field is accessed via its address and ALET, check that both these values are correct. Check that the specified RNAME length is correct. Ensure that the storage is in the same key as the caller. |
08 | xxxx080D | Equate Symbol: ISGENQRsn_BadRnameALET Meaning: Bad RNAME ALET. The ALET is neither zero nor is it associated with a valid public entry on the caller's Dispatchable Unit Access List (DU-AL), nor a valid entry for a common area data space. Action: Ensure that the ALET of the RNAME is valid. Its access register may not have been set up properly. |
08 | xxxx080E | Equate Symbol: ISGENQRsn_BadRNameLen Meaning: The RNAME length specified is not valid. Action: Ensure the RNAME length field contains a number in the range of 1-255. |
08 | xxxx080F | Equate Symbol: ISGENQRsn_BadScope Meaning: Bad SCOPE keyword parameter. Action: Check for possible storage overlay of the parameter list. |
08 | xxxx0810 | Equate Symbol: ISGENQRsn_BadUCB@ Meaning: The storage specified by the UCB@ keyword does not map to a valid UCB. Action: Ensure that the UCB@ points to a valid UCB. |
08 | xxxx0811 | Equate Symbol: ISGENQRsn_BadCond Meaning: Bad COND keyword parameter. Action: IBM suggests that the ISGENQ macro is used when invoking the ISGENQ service. |
08 | xxxx0812 | Equate Symbol: ISGENQRsn_BadSynchRes Meaning: Bad SYNCHRES keyword parameter. Action: Check for possible storage overlay of the parameter list. |
08 | xxxx0813 | Equate Symbol: ISGENQRsn_BadENQTokenAddress Meaning: Unable to access the ENQToken. Action: Ensure that the entire ENQToken is addressable. If in AR-mode, this field is accessed via its address and ALET, check that both these values are correct. Ensure that the storage is in the same key as the caller. Note: The ISGENQ request might not have completed. |
08 | xxxx0814 | Equate Symbol: ISGENQRsn_BadENQTokenALET Meaning: Bad ENQToken ALET. The ALET is neither zero nor is it associated with a valid public entry on the caller's Dispatchable Unit Access List (DU-AL), nor a valid entry for a common area data space. Action: Ensure that the ALET of the ENQToken is valid. Its access register may not have been set up properly. Note: The ISGENQ request might not have completed. |
08 | xxxx0815 | Equate Symbol: ISGENQRsn_BadENQToken Meaning: For REQUEST=RELEASE or REQUEST=CHANGE, the specified ENQToken does not represent an ENQ for the given task (current task or specified by OWNINGTTOKEN). Action: Ensure that the specified ENQToken is from a previous request for the given task, that has not been subsequently released. |
08 | xxxx0816 | Equate Symbol: ISGENQRsn_BadNumRes Meaning: The NUMRES specified is not valid. Action: Ensure the NUMRES field contains a number in the range of 1-65535 (2?6-1) |
08 | xxxx0817 | Equate Symbol: ISGENQRsn_BadResTableAddress Meaning: Unable to access the resource table. Action: Ensure that the entire resource table is addressable. If in AR-mode, this field is accessed via its address and ALET, check that both these values are correct. Check that the resource table length is correct. Ensure that the storage is in the same key as the caller. |
08 | xxxx0818 | Equate Symbol: ISGENQRsn_BadResTableALET Meaning: Bad resource table ALET. The ALET is neither zero nor is it associated with a valid public entry on the caller's Dispatchable Unit Access List (DU-AL), nor a valid entry for a common area data space. Action: Ensure that the ALET of the resource table is valid. Its access register may not have been set up properly. |
08 | xxxx0819 | Equate Symbol: ISGENQRsn_BadResTable Meaning: The RESTABLE specified is not valid. Action: Ensure that the resource table does not specify mutually exclusive parameters. |
08 | xxxx081A | Equate Symbol: ISGENQRsn_BadENQTokenTblAddress Meaning: Unable to access the ENQToken table. Action: Ensure that the entire ENQToken table is addressable. If in AR-mode, this field is accessed via its address and ALET, check that both these values are correct. Check that the ENQToken table length is correct. Ensure that the storage is in the same key as the caller. Note: The ISGENQ request might not have completed. |
08 | xxxx081B | Equate Symbol: ISGENQRsn_BadENQTokenTblALET Meaning: Bad ENQToken table ALET. The ALET is neither zero nor is it associated with a valid public entry on the caller's Dispatchable Unit Access List (DU-AL), nor a valid entry for a common area data space. Action: Ensure that the ALET of the ENQToken table is valid. Its access register may not have been set up properly. Note: The ISGENQ request might not have completed. |
08 | xxxx081C | Equate Symbol: ISGENQRsn_BadReturnTableAddress Meaning: Unable to access the return table. Action: Ensure that the entire return table is addressable. If in AR-mode, this field is accessed via its address and ALET, check that both these values are correct. Check that the return table length is correct. Ensure that the storage is in the same key as the caller. Note: The ISGENQ request might not have completed. |
08 | xxxx081D | Equate Symbol: ISGENQRsn_BadReturnTableALET Meaning: Bad return table ALET. The ALET is neither zero nor is it associated with a valid public entry on the caller's Dispatchable Unit Access List (DU-AL), nor a valid entry for a common area data space. Action: Ensure that the ALET of the return table is valid. Its access register may not have been set up properly. Note: The ISGENQ request might not have completed. |
08 | xxxx081E | Equate Symbol: ISGENQRsn_NotAuthorizedForQName Meaning: For REQUEST=OBTAIN. An unauthorized caller specified an authorized QNAME. Action: Unauthorized callers must avoid specifying the authorized QNAMEs listed in the ISGENQ macro prologue. |
08 | xxxx081F | Equate Symbol: ISGENQRsn_NotAuthorizedForExitQname Meaning: For REQUEST=OBTAIN. An ISGNQXIT exit specified an authorized QNAME for an unauthorized OBTAIN request. Action: Contact your system programmer. The system programmer should check the ISGNQXIT installation exits to ensure they are not coded to specify an authorized QNAME for unauthorized requests. |
08 | xxxx0821 | Equate Symbol: ISGENQRsn_NotAuthorizedForOWNINGTTOKEN Meaning: An unauthorized caller specified OWNINGTTOKEN. Action: Unauthorized callers should avoid specifying OWNINGTTOKEN. |
08 | xxxx0822 | Equate Symbol: ISGENQRsn_BadUserDataAddress Meaning: Unable to access the USERDATA. Action: Ensure that the entire USERDATA is addressable. If in AR-mode, this field is accessed via its address and ALET, check that both these values are correct. Ensure that the storage is in the same key as the caller. |
08 | xxxx0823 | Equate Symbol: ISGENQRsn_BadUserDataAlet Meaning: Bad UserData ALET. The ALET is neither zero nor is it associated with a valid public entry on the caller's Dispatchable Unit Access List (DU-AL), nor a valid entry for a common area data space. Action: Ensure that the ALET of the userdata is valid. Its access register may not have been set up properly. |
08 | xxxx0824 | Equate Symbol: ISGENQRsn_DeviceNotAllocated Meaning: For REQUEST=OBTAIN with RESERVEVOLUME=YES. An unauthorized caller specified a device that is not allocated to the requesting task. Action: Unauthorized callers should allocate the UCB to the job step before ISGENQ RESERVEVOLUME(YES) is issued. |
08 | xxxx0825 | Equate Symbol: ISGENQRsn_ExitDeviceNotAllocated Meaning: For REQUEST=OBTAIN. An ISGNQXIT exit specified a UCB for a device that is not allocated to the requesting, unauthorized task. Action: Contact your system programmer. The system programmer should ensure that the installation exits do not modify the UCB to specify one that is not allocated to an unauthorized requests. |
08 | xxxx0826 | Equate Symbol: ISGENQRsn_BadControl Meaning: Bad CONTROL keyword parameter. Action: Check for possible storage overlay of the parameter list. |
08 | xxxx0827 | Equate Symbol: ISGENQRsn_BadExitUCB@ Meaning: The storage pointed to by the UCB address changed by a dynamic exit does not map to a valid UCB. Action: Contact your system programmer. The system programmer should ensure that the installation exits do not specify a bad UCB address. |
08 | xxxx0828 | Equate Symbol: ISGENQRsn_NotAuthorizedForENQMAX Meaning: For REQUEST=OBTAIN, an unauthorized caller specified ENQMAX=NO. Action: Unauthorized callers should avoid specifying ENQMAX=NO. |
0C | — | Equate Symbol: ISGENQRc_EnvError Meaning: ISGENQ request has an environment error. Action: Refer to action under the individual reason code. |
0C | xxxx0C01 | Equate Symbol: ISGENQRsn_RequestLimitExceeded Meaning: For REQUEST=OBTAIN, the limit for the number of concurrent resource requests has been reached. The task does not have control of the resource unless some previous ENQ or RESERVE request caused the task to obtain control of the resource. Action: Retry the request one or more times. If the problem persists, consult your system programmer. For more information on concurrent count limits and how the system can be tuned when necessary, see z/OS MVS Planning: Global Resource Serialization. |
0C | xxxx0C05 | Equate Symbol: ISGENQRsn_AbendInExit Meaning: One of the GRS dynamic exits abended. Action: Retry the request one or more times. Contact your system programmer. |
0C | xxxx0C0A | Equate Symbol: ISGENQRsn_TaskEnding Meaning: The task represented by the specified TToken was ending. The point was reached in task termination after which no ENQs can be obtained. Action: Determine why the task identified by the TToken was ending. Correct that error and retry the request. |
0C | xxxx0C0B | Equate Symbol: ISGENQRsn_FRRHeld Meaning: The caller issued ISGENQ when an FRR was established. Action: Avoid issuing ISGENQ when using functional recovery routines. |
0C | xxxx0C0C | Equate Symbol: ISGENQRsn_LockHeld Meaning: A lock was held upon entry. No locks can be held when calling ISGENQ. Action: Avoid using ISGENQ when locks are held. |
0C | xxxx0C0D | Equate Symbol: ISGENQRsn_SrbMode Meaning: ISGENQ was issued while in SRB mode. Action: Avoid using ISGENQ in SRB mode. |
0C | xxxx0C0E | Equate Symbol: ISGENQRsn_NotEnabled Meaning: ISGENQ was issued while not enabled. Action: Avoid using ISGENQ when not enabled. |
0C | xxxx0C0F | Equate Symbol: ISGENQRsn_MasidTarget Meaning: The requester to be released is still the target of an ENQ with the MASID and MTCB options specified. The release does complete and the resource might be damaged. Action: The task that issued the ENQ macro instruction with MASID and MTCB should issue the DEQ before this requester does so. |
0C | xxxx0C10 | Equate Symbol: ISGENQRsn_UnsupportedMode. Meaning: The current GRS mode does not support this specific request. Action: Defer the usage of this particular type of request. |
0C | xxxx0C11 | Equate Symbol: ISGENQRsn_MasidNotSupported. Meaning: The resource that was the target of this REQUEST=CHANGE,CONTROL=SHARED request currently or at one time contained MASID users. REQUEST=CHANGE,CONTROL=SHARED is not supported for resources that involve MASID requestors. Action: Do not use REQUEST=CHANGE,CONTROL=SHARED on resources that involve MASID requestors. |
10 | — | Equate Symbol: ISGENQRc_CompError Meaning: Component Error. Action: Contact the IBM Support Center. Reason code that are not defined below contain internal diagnostic information. |
10 | xxxx1002 | Equate Symbol: ISGENQRsn_CannotObtainHomeStorage Meaning: ISGENQ processing could not obtain storage in the home address space. |
10 | xxxx1003 | Equate Symbol: ISGENQRsn_CannotObtainCommonStorage Meaning: ISGENQ processing could not obtain storage in the common area. |
10 | xxxx1004 | Equate Symbol: ISGENQRsn_CannotObtainPrimaryAlet Meaning: ISGENQ processing could not obtain the ALET of the caller's primary address space. |
10 | xxxx1006 | Equate Symbol: ISGENQRsn_SynchResFlushFailed Meaning: For REQUEST=OBTAIN, a synchronous reserve failed device state transition flushing. |
10 | xxxx1007 | Equate Symbol: ISGENQRsn_ReserveStartFailed Meaning: For REQUEST=OBTAIN, reserve start processing failed. |
10 | xxxx1008 | Equate Symbol: ISGENQRsn_ReserveCountOverflow Meaning: For REQUEST=OBTAIN, reserve processing detected an overflow when updating the reserve count. |
10 | xxxx1009 | Equate Symbol: ISGENQRsn_CannotObtainDSQE Meaning: ISGENQ processing could not obtain a DSQE to suspend a request during an RNL change. |
10 | xxxx100A | Equate Symbol: ISGENQRsn_ReserveDoneFailed Meaning: For REQUEST=OBTAIN, synchronous reserve back end processing has failed; therefore, the reserve was never completed. |
10 | xxxx100B | Equate Symbol: ISGENQRsn_CannotObtainPrimaryStorage Meaning: ENQ/DEQ processing could not obtain storage in the primary address space. |
* **********************************************************************
* Request exclusive control of a single resource
* **********************************************************************
ISGENQ REQUEST=OBTAIN,QNAME=QNAM1,RNAME=RNAM1,RNAMELEN=RLEN1, X
SCOPE=SYSTEMS,CONTROL=EXCLUSIVE,ENQTOKEN=ENQT1
* **********************************************************************
* Release control of a single resource
* **********************************************************************
ISGENQ REQUEST=RELEASE,ENQTOKEN=ENQT1,COND=YES, X
RETCODE=(3),RSNCODE=(2)
* ***********************************************************************
* Conditionally request shared control of 3 resources
* ***********************************************************************
ISGENQ REQUEST=OBTAIN,RESLIST=YES,NUMRES=3,RESTABLE=RSTBL, X
ENQTOKENTBL=ETTBL,RETURNTABLE=RTTBL,COND=YES, X
RETCODE=(3),RSNCODE=(2),PLISTVER=1
QNAM1 DC CL8'QNAME1'
RNAM1 DC CL10'RNAME1'
RLEN1 DC AL1(L'RNAM1)
RNAM2 DC CL12'RNAME2'
RNAM3 DC CL14'RNAME3'
DS 0D
RSTBL DS 0CL(3*ISGYENQRES_LEN)
ENTRY1 DC CL8'QNAME1' QNAME
DC F'0' FIRST WORD OF RNAME ADDR
DC A(RNAM1) RNAME ADDR31
DC F'0' RNAME ALET
DC A(0) UCB@
DC AL1(L'RNAM1) RNAME LENGTH
DC AL1(ISGYENQ_kSTEP)
DC AL1(ISGYENQ_kCONTROLSHARED)
DC XL1'00' FLAGS
DC XL4'00' RESERVED
ENTRY2 DC CL8'QNAME2' QNAME
DC F'0' FIRST WORD OF RNAME ADDR
DC A(RNAM2) RNAME ADDR31
DC F'0' RNAME ALET
DC A(0) UCB@
DC AL1(L'RNAM2) RNAME LENGTH
DC AL1(ISGYENQ_kSYSTEM)
DC AL1(ISGYENQ_kCONTROLSHARED)
DC XL1'00' FLAGS
DC XL4'00' RESERVED
ENTRY3 DC CL8'QNAME3' QNAME
DC F'0' FIRST WORD OF RNAME ADDR
DC A(RNAM3) RNAME ADDR31
DC F'0' RNAME ALET
DC A(0) UCB@
DC AL1(L'RNAM3) RNAME LENGTH
DC AL1(ISGYENQ_kSYSTEMS)
DC AL1(ISGYENQ_kCONTROLSHARED)
DC XL1'00' FLAGS
DC XL4'00' RESERVED
DYNAREA DSECT
ENQT1 DS CL(ISGYENQTOKEN_LEN)
ETTBL DS CL(3*ISGYENQTOKEN_LEN)
RTTBL DS CL(3*ISGYENQRETURN_LEN)
* **********************************************************************
* Request exclusive control of a single resource with userdata
* **********************************************************************
ISGENQ REQUEST=OBTAIN,QNAME=QNAM1,RNAME=RNAM1,RNAMELEN=RLEN1, X
SCOPE=SYSTEMS,CONTROL=EXCLUSIVE,ENQTOKEN=ENQT1, X
USERDATA=UDATA1
UDATA1 DC CL32'MY USERDATA'
For more information on global resource serialization, see z/OS MVS Planning: Global Resource Serialization.