Problem:
Upgrade to Cobol release 5.1 or 5.2 and the Cobol User exit causes a S0C4 in GVRESTOR process. Customer can compile and link the GVCOBOL user exit and receive a return code of 0 and still receive the S0C4 abend for every restore job. Back level the exit to Cobol 4.2 or earlier and the user exit works properly.
Resolution:
Test PTF TR84080 was created to resolve the issue but required a complete revision of the documented process in the manual. The section of the Faver 4.5 User Guide titled "Appendix C: User Exit Facility" provides a sample link JCL on page 208. The JCL provided in TR84080 replaces this sample.
These are the new instructions for application of the GVCOBOL user exit.
The procedure for Application of the User exit has now changed.
Please follow these instructions.
1) Download APAR TR84080 from CA Support Online.
2) Once the APAR is ready on the mainframe please edit the APAR.
3) Copy the JCL required to link your exit and create a new link job. This will be executed as before, after the APPLY. Once the JCL is removed the PTF will be ready to APPLY. After the APPLY you will notice this JCL in the CBSVSAMP library.
4) In the JCL please note the lines that must be altered to fit your environment:
//COB2 EXEC PGM=IGYCRCTL,
// PARM='DATA(24),moreparms...'
//SYSPRINT DD SYSOUT=*
//STEPLIB DD DISP=SHR,DSN=your.SIGYCOMP
// DD DISP=SHR,DSN=CEE.SCEERUN
//SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(5,5))
//SYSUT2 DD UNIT=SYSDA,SPACE=(CYL,(5,5))
//SYSUT3 DD UNIT=SYSDA,SPACE=(CYL,(5,5))
//SYSUT4 DD UNIT=SYSDA,SPACE=(CYL,(5,5))
//SYSUT5 DD UNIT=SYSDA,SPACE=(CYL,(5,5))
//SYSUT6 DD UNIT=SYSDA,SPACE=(CYL,(5,5))
//SYSUT7 DD UNIT=SYSDA,SPACE=(CYL,(5,5))
//SYSUT8 DD UNIT=SYSDA,SPACE=(CYL,(5,5))
//SYSUT9 DD UNIT=SYSDA,SPACE=(CYL,(5,5))
//SYSUT10 DD UNIT=SYSDA,SPACE=(CYL,(5,5))
//SYSUT11 DD UNIT=SYSDA,SPACE=(CYL,(5,5))
//SYSUT12 DD UNIT=SYSDA,SPACE=(CYL,(5,5))
//SYSUT13 DD UNIT=SYSDA,SPACE=(CYL,(5,5))
//SYSUT14 DD UNIT=SYSDA,SPACE=(CYL,(5,5))
//SYSUT15 DD UNIT=SYSDA,SPACE=(CYL,(5,5))
//SYSMDECK DD UNIT=SYSDA,SPACE=(CYL,(15,5))
//SYSLIN DD DSNAME=&OBJ,UNIT=SYSALLDA,DISP=(MOD,PASS),
// SPACE=(TRK,(3,3))
//SYSIN DD DISP=SHR,DSN=your.source.lib(COBLEXIT)
//*
//LKED EXEC PGM=IEWL,
// PARM='LIST,XREF,LET,MAP,AMODE(24)',
// COND=(5,LT,COB2)
//******************************************************************
//* LIBS FOR COBOL 5.1 TESTING *
//******************************************************************
//SYSLIB DD DISP=SHR,DSN=CEE.SCEELKED
// DD DISP=SHR,DSN=your.CBSVLINK < get GVMODINS from here
//SYSLIN DD DSN=&&OBJ,DISP=(OLD,DELETE)
// DD DDNAME=SYSIN
//SYSLMOD DD DISP=SHR,DSN=your.CBSVLINK < home for your user exit
//SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
<Make sure you keep the INLINE code for this job to run.>
INCLUDE SYSLIB(GVMODINS)
ENTRY GVCOBLE
NAME yourexit(R)
5) Once you have made the appropriate changes to your JCL and have APPLYd the APAR you can run your new link job with the inline code.
6) Run a test job to be sure the RESTORE process performs as expected.