Restrictions on MVS Services Available to DSPs and Installation Exit Routines
All MVS™ control program services, with the following exceptions, are available to user-written DSPs. User exits run under a DSP.
ATTACH FIND PURGE
BLDL LINK WAIT
CLOSE LOAD WTO
DOM LOCATE WTOR
DYNALLOC OPEN XCTLDSPs should not use these macros. Use of these macros disrupts the flow of processing on the global main and can cause a degradation in system performance by possibly causing JES3 itself to wait.The queued access methods, QSAM and QISAM, use these macros and, therefore, should not be invoked.
If your program needs to use one of the above macros, you must first establish a JES3 subtask environment in which to use the macro. To do so, include the IATXCSF macro in your program. IATXCSFpasses control to a JES3 subtask.
Do not use the MVS macros LOAD, DELETE, STIMER, and PCLINK because they interfere with JES3's processing procedures. Use the ALOAD and ADELETE macros instead of LOAD and DELETE, and use the ATIME macro instead of STIMER. Use the MVS ESTAE and SETFRR macros only where absolutely necessary. Instead, use the JESTAE macro.
Under certain restrictions, your module may issue a DYNALLOC macro. First, be sure you issue the IATXCSF macro before the DYNALLOC macro to set up the JES3 subtask. Secondly, use the DYNALLOC macro only for jointly-managed or MVS-managed devices, not JES3-managed devices. Modules that run in a C/I FSS address space follow the same rules for using DYNALLOC as an authorized problem program.
If your DSP uses an MVS function that could cause an abnormal termination, be sure that you set up a JESTAE recovery environment.The purpose of the recovery environment is to insure that a failing DSP does not also bring down the JES3 primary task (IATNUC).
- Let the DSP continue processing
- Reinitialize the DSP to handle the next request
- End the DSP
The following example illustrates the use of the IATXCSF macro, which is described in IntroductionThe code to be executed under control of the subtask begins at label DRCLSBTK.
IATXCSF Macro Example
TM DCBOFLGS,DCBOFOPN Is DCB open?
BC ALLOFF,DRTTB347 No, avoid closing it
IATXCSF ENTER=DRCLSBTK Call subtask to close it
.
.
.
* THE FOLLOWING CODE EXECUTES
* AS A SUBTASK OF JES3
DRCLSBTK DS 0H Subtask to close DCB
LR R4,R14 Save return address
CLOSE (ICTPRDCB),MF=(E,ICTMFLOP) Issue MVS CLOSE macro
LR R14,R4 Restore return address
SR R15,R15 Clear return code
BR R14 Return to caller