If G8UTY abends at offset +X'C0C', this is normally as a result from a mismatch from a module in SYS1.LPALIB(on disk) and the version found in memory.
Different versions can be loaded from MLPA or from using the SYSLIB LPA statement in SYS1.PARMLIB member PROGnn.
How to determine if the version on DISK / TLMS matches the version in storage ?
I have created an LPA lib that contains IFG019RB.This module includes our FAILSAFE routine replacement for IFG019VM(CTS019VM).
The PROGnn entry to place my LPALIB ahead of SYS.LPALIB is:
SYSLIB LPALIB(SYS1.CATLMS126.CAILPA)
APF FORMAT(DYNAMIC)
APF FORMAT(DYNAMIC)
/*+----------------------------------------------------------------- */ ---+*
/*| PROGZA - IBM AND OEM SOFTWARE APF AND LNKLST IPL MEMBER. */ |*
/*| - PLEASE PUT AUTHORIZED USER LIBRARIES IN PROGUS. */ |*
/*| - PLEASE COPY THIS TO PROGZ9# BEFORE UPDATING. */ |*
/
When the system is IPL'ed, SYS1.CATLMS126.CAILPA will be stacked ahead of SYS1.LPALIB in the LPALST. This is the syslog at time of IPL.
IEE252I MEMBER PROGZD FOUND IN SYS1.PARMLIB
CSV410I APF FORMAT IS NOW DYNAMIC
IEE252I MEMBER LPALSTZD FOUND IN SYS1.PARMLIB
IEA713I LPALST LIBRARY CONCATENATION
SYS1.CATLMS126.CAILPA our LPALIB
SYS1.MINI.LPALIB
SYS1.SORTLPA
SYS1.SICELPA
SYS1.LPALIB
SYS2.LPALIB2
Verifying the lengths from each library, the sizes are different in our modified LPA library.
BROWSE SYS1.CATLMS126.CAILPA Row 00001 of 0000
Command ===> Scroll ===> CSR
Name Prompt Alias-of Size TTR AC AM RM
. IFG019RB 0002DDD0 000805 00 31 ANY
**End**
. . . . . . . . . . . . . . . . . . . . . . . . . .
Menu Functions Utilities Help
-----------------------------------------------------------------------------
BROWSE SYS1.LPALIB Row 00886 of 0177
Command ===> Scroll ===> CSR
Name Prompt Alias-of Size TTR AC AM RM
. IFG019RB 0002D2F8 01A60A 00 31 ANY
To verify the active versions length, enter the following command:
D PROG,LPA,MOD=IFG019RB
CSV550I 10.42.10 LPA DISPLAY 186
FLAGS MODULE ENTRY PT LOAD PT LENGTH DIAG
P IFG019RB 8288E000 0288E000 0002DD0 085FC5B0
Here you can see that the active copy's length matches out modified LPA library.
Solution:
In order to have G8UTY properly apply the intercepts.
First perform a restore of the failed TLMSOC1A
//RESTORE EXEC PGM=G8UTY,PARM='RESTORE,TLMSOC1A'
//CAG8MSG DD SYSOUT=*
//CAG8SNP DD SYSOUT=*
Then , add the CAGLIB1 DD's to both your CAS9 procedure and recycle CTS.SYS1. Lpalib must be concatenated after our LPA library.
//CAG8LIB1 DD DSN=SYS1.CATLMS126.CAILPA,DISP=SHR
// DD DSN=SYS1.LPALIB,DISP=SHR
Then either run CAS9 with the PARM for CA TLMS control statement being
PARM(REINIT,OSI=REINIT) or run G8UTY standalone.
If you run it standalone, then submit the following JCL:
//APPLY EXEC PGM=G8UTY,PARM='Apply,TLMSOC1A' **see note later
//CAG8MSG DD SYSOUT=*
//CAG8SNP DD SYSOUT=*
//CAG8LIB1 DD DSN=SYS1.CATLMS126.CAILPA,DISP=SHR
// DD DSN=SYS1.LPALIB,DISP=SHR
This will enable G8UTY to pair the memory resident copy with the version found on disk for SYS1.CATLMS126.CAILPA.
The intercepts will now apply successfully.
NOTE: In this we reference TLMSOC1A but these changes with the release of Z/OS that you are running.
TLMSOC1A is for Z:OS 110 and above
TLMSOC15 is for Z/OS 1,5- 1,9