Sample application that uses stand-alone log services
Sample segments of an assembler program use three stand-alone log services (OPEN, GET, and CLOSE) to process one log record.
For
example:
TSTJSLR5 CSECT
⋮
OPENCALL EQU *
LA R2,NAME GET BSDS DDNAME ADDRESS
LA R3,RANGER GET ADDRESS OF RBA RANGE
DSNJSLR FUNC=OPEN,DDNAME=(R2),RANGE=(R3)
LTR R15,R15 CHECK RETURN CODE FROM OPEN
BZ GETCALL OPEN OK, DO GET CALLS
⋮
*****************************************************************
* HANDLE ERROR FROM OPEN FUNCTION AT THIS POINT *
*****************************************************************
⋮
GETCALL EQU *
DSNJSLR FUNC=GET,RBR=(R1)
C R0,=X'00D10020' END OF RBA RANGE ?
BE CLOSE YES, DO CLEANUP
C R0,=X'00D10021' RBA GAP DETECTED ?
BE GAPRTN HANDLE RBA GAP
LTR R15,R15 TEST RETURN CODE FROM GET
BNZ ERROR
⋮
⋮
******************************************************************
* PROCESS RETURNED LOG RECORD AT THIS POINT. IF LOG RECORD *
* DATA MUST BE KEPT ACROSS CALLS, IT MUST BE MOVED TO A *
* USER-PROVIDED AREA. *
******************************************************************
USING SLRF,1 BASE SLRF DSECT
L R8,SLRFFRAD GET LOG RECORD START ADDR
LR R9,R8
AH R9,SLRFRCLL GET LOG RECORD END ADDRESS
BCTR R9,R0
⋮
CLOSE EQU *
DSNJSLR FUNC=CLOSE,RBR=(1)
⋮
NAME DC C'DDBSDS'
RANGER DC X'00000000000000000005FFFF'
⋮
DSNDSLRB
DSNDSLRF
EJECT
R0 EQU 0
R1 EQU 1
R2 EQU 2
⋮
R15 EQU 15
END