Hi,
You can use this small piece of code, you only need to know the offset of the data you want to have..
RECORD = OPSTORE('S',EOJ.SMF30AD,4)
will put the first 4 bytes of the SMF30 record in the variable record.
The following sample will say the address of the SMF30 record and the 1st 40 bytes of the record itself.
)EOJ *
)PROC
SAY 'JOBNAME IS' EOJ.JOBNAME
SAY 'SMF30AD IS' C2X(EOJ.SMF30AD) <==== Say record address
RECORD = OPSTORE('S',EOJ.SMF30AD,40) <==== Get 40 bytes of record
SAY 'RECORD IS' C2X(RECORD) <==== Say 40 bytes of record
)END
And you can even use an offset to get a specific field:
ASVTAAV = C2D(OPSTORE('S',EOF.SMF30AD + 480),4))
And there is a sample in the manual, which is more difficult code then the one above
https://techdocs.broadcom.com/content/broadcom/techdocs/us/en/ca-mainframe-software/automation/ca-ops-mvs-event-management-and-automation/13-5/reference-information/command-and-function-reference/ops-rexx-built-in-functions/opstore-function.html
Best regards
Hennie Hermans
------------------------------
Principal Support Engineer
Broadcom
------------------------------
Original Message:
Sent: 12-19-2019 02:05 PM
From: Glen Stratton
Subject: EOJ rules to collect data from the assembler IEFACTRT SMF exit
I've had a request for our systems folks to investigate the use of EOJ rules to extract data processed by the assembler IEFACTRT SMF exit. I am running OPS/MVS 13.5. EOJRULES parameter and INITSMF are set to YES. The manual says EOJ.SMF30AD captures the address of the SMF type 30 record and you can use the OPSTORE function of OPS/REXX to access any field in the type 30 record to obtain data that is not provided by the EOJ event variables but does not show a way to extract the data. Has anyone explored how to achieve this? I am specifically interested in capturing enclave zIIP time used by the job.