When trying to resolve a certificate problem in a Java program, see here, I tried unsuccessfully to take a RACF trace to see what calls were being issued, and what reason codes were being returned.
The RACF GTF had no entries for the Java program!
Start RACF trace
My started task was called OZUSRV4. I had to specify a jobname to RACF trace of OZUSRV4* because Java spawns address spaces, and it was a spawned address space that did all of the Java work. If your started task is 8 characters long – just specify the 8 character name.
The trace command was the RACF SET TRACE command, where # is my RACF subsystem recognition character.
#SET TRACE(CALLABLE(TYPE(41))JOBNAME(OZUSVR4*))
Where type(41) is for IRRSDL00 which performs the R_datalib, keyring processing.
Start GTF
S GTF.GTF R 1,trace=usrp R 2,USR=(F44) R 3,END R 4,U
Run the test
I ran my started task, and stopped the RACF trace
#SET TRACE(CALLABLE(NONE))JOBNAME(OZUSVR4*)) #set list
The output of the #set list command included
TRACE OPTIONS - NOIMAGE - NOAPPC - NOSYSTEMSSL - NORRSF - NORACROUTE - NOCALLABLE - NOPDCALLABLE - NODATABASE - NOGENERICANCHOR - NOASID - JOBNAME OZUSVR4* - NOCLASS - NOUSERID SUBSYSTEM USERID - START1
So the traces are off…. but it still has a reference to OZUSVR4 – strange.
Process the GTF file.
I used IPCS to look at the GTF file
- =0 and specify the GTF file name
- =6 dropd to drop any saved status from last time that dataset was used
- gtf usr(all) It displays the output in an editor like window.
- report view displays it in ISPF editor, view mod.
- You can the do things like
- x all
- f ‘RACF Reason code’ all
To display the records with non zero return codes.
The output is very chatty – and it was hard to find the data I wanted from data with a hex dump of the string “OFFSET” etc. For example
Trace Identifier: 00000036 Record Eyecatcher: RTRACE Trace Type: OMVSPRE Ending Sequence: ........ Calling address: 00000000 79403A2D Requestor/Subsystem: ........ ........ Primary jobname: OZUSVR44 Primary asid: 00000035 Primary ACEEP: 00000000 008FC8A0 Home jobname: OZUSVR44 Home asid: 00000035 Home ACEEP: 00000000 008FC8A0 Task address: 00000000 008CF298 Task ACEEP: 00000000 00000000 Time: DDD4C11D 776E2A40 Error class: ........ Service number: 00000029 RACF Return code: 00000000 RACF Reason code: 00000000 Return area address: 00000000 00000000 Parameter count: 0000002B ... Area length: 00000008 Area value: D6C6C6E2 C5E30050 | OFFSET.& | Area length: 00000007 Area value: 06E2E3C1 D9E3F1 | .START1 |
I wrote a REXX exec which post processes the output and removes what I think is irrelevant data.
An example of what I think is useful is below. Non zero return codes have ! in column 1
! Return code: 00000008 8 ! Reason code: 00000004 4 4 Parameter list error occurred. - - - - - - - - - - - - - - - - - - - - - - - - - - - ! Return code: 00000008 8 ! Reason code: 0000002C 44 44 No certificate found with the specified status - - - - - - - - - - - - - - - - - - - - - - - - - - - Area value: 00000050 10AFC67C ... ... - - - - - - - - - - - - - - - - - - - - - Area value: | .START1 | 06E2E3C1 D9E3F1 Area value: | .MQRING | 06D4D8D9 C9D5C7
You can download the rexx exec from
You need to upload it to a CLIST available to ISPF.