System logger provides 64-bit addressing mode support for IXGBRWSE, IXGWRITE, and IXGIMPRT with the BUFFER64 keyword. The BUFFER64 keyword allows callers to pass a data buffer whose address is a 64-bit address. The 64-bit address can be anywhere in 64-bit storage, above or below the bar. BUFFER64 is mutually exclusive with the BUFFER keyword. The size of the input field (4 bytes) specified on the BUFFLEN parameter remains unchanged.
If you code the IXGBRWSE, IXGWRITE, or IXGIMPRT services with the BUFFER64 keyword, you then must recompile the modules invoking these services.
You can call any of the system logger services in AMODE 64, but all addresses passed to the services will be in 31-bit addresses, except for those coded in the BUFFER64 keyword on the IXGBRWSE, IXGWRITE, and IXGIMPRT services.
TITLE 'IXGASM64 - Logger Services Samples'
IXGASM64 CSECT ,
IXGASM64 AMODE 31
IXGASM64 RMODE ANY
*
* IXGASM64 - Logger Services Samples for Amode 64 and BUFFER64.
*
* This program contains samples of how to invoke Logger Services in
* 64 bit mode and samples of the use of the BUFFER64 keyword.
*
* This program runs on z/OS Release 1.6 or higher. It has been tested
* on that release and all services returned a successful return code.
*
* Note that for your installation, you may have to do considerable
* setup for this program to run correctly.
*
* It does not need to run Authorized, although various security
* permissions may need to be granted for it to run successfully.
*
* This program is REENTRANT.
*
* It is entered in AMODE 31 and switches to AMODE 64. R15 is assumed
* to point to the entry point.
*
* It will alter Registers 14, 15, 0, and 1.
*
* General Initialization
*
J PROLOG
DC AL1(20)
DC C'IXGASM64 SAMPLE PGM '
PROLOG BSM 14,0
BAKR 14,0
LAE 12,0
LR 12,15
USING IXGASM64,12
L 00,SIZDATD+4
LA 15,0
CPYA 01,12
STORAGE OBTAIN,LENGTH=(0),SP=(15),LINKAGE=SYSTEM
LAE 13,0(,01)
USING DATD,13
LLGTR 12,12 Static area register
LLGTR 13,13 Data area register
* Specify AMODE 64 for Macros, establish 64-bit Mode, obtain storage
* above the Bar, and then place data in the storage.
SYSSTATE ASCENV=ANY,AMODE64=YES,ARCHLVL=,OSREL=
SAM64
IARV64 REQUEST=GETSTOR,SEGMENTS=1,ORIGIN=ORIGIN, x
RETCODE=RETCODE,RSNCODE=RSNCODE
LG 2,ORIGIN
MVC BUFFER64(50,2),TESTDATA
* Prepare for issuing IXGxxxxx Services
LA 08,40
ST 08,ANSLEN
MVC STRUCTNAME(16),STRUCT
MVC STREAMNAME(26),STREAM
* Issue IXGxxxxx Services
IXGINVNT REQUEST=DELETE,TYPE=LOGSTREAM, X
ANSLEN=ANSLEN,ANSAREA=ANSAA,STREAMNAME=STREAMNAME, X
RETCODE=RETCODE,RSNCODE=RSNCODE,MF=(E,PLIST,COMPLETE)
IXGINVNT REQUEST=DEFINE,TYPE=LOGSTREAM,DASDONLY=YES, X
ANSLEN=ANSLEN,ANSAREA=ANSAA,STREAMNAME=STREAMNAME, X
STG_SIZE=16,LS_SIZE=16, X
RETCODE=RETCODE,RSNCODE=RSNCODE,MF=(E,PLIST,COMPLETE)
IXGCONN REQUEST=CONNECT,STREAMNAME=STREAMNAME,AUTH=WRITE, X
STREAMTOKEN=STREAMTOKEN,ANSAREA=ANSAA,ANSLEN=ANSLEN, X
RETCODE=RETCODE,RSNCODE=RSNCODE,MF=(E,PLIST,COMPLETE)
IXGWRITE BUFFER64=(2),BLOCKLEN=50, X
STREAMTOKEN=STREAMTOKEN,ANSAREA=ANSAA,ANSLEN=ANSLEN, X
RETCODE=RETCODE,RSNCODE=RSNCODE,MF=(E,PLIST,COMPLETE)
IXGOFFLD STREAMTOKEN=STREAMTOKEN,ANSAREA=ANSAA,ANSLEN=ANSLEN, X
RETCODE=RETCODE,RSNCODE=RSNCODE,MF=(E,PLIST,COMPLETE)
IXGCONN REQUEST=DISCONNECT, x
STREAMTOKEN=STREAMTOKEN,ANSAREA=ANSAA,ANSLEN=ANSLEN, X
RETCODE=RETCODE,RSNCODE=RSNCODE,MF=(E,PLIST,COMPLETE)
IXGCONN REQUEST=CONNECT,AUTH=WRITE,IMPORTCONNECT=YES, x
STREAMNAME=STREAMNAME, x
STREAMTOKEN=STREAMTOKEN,ANSAREA=ANSAA,ANSLEN=ANSLEN, X
RETCODE=RETCODE,RSNCODE=RSNCODE,MF=(E,PLIST,COMPLETE)
STCK STCK1
IXGUPDAT GMT_TIMESTAMP=STCK1, x
STREAMTOKEN=STREAMTOKEN,ANSAREA=ANSAA,ANSLEN=ANSLEN, X
RETCODE=RETCODE,RSNCODE=RSNCODE,MF=(E,PLIST,COMPLETE)
IXGQUERY CHECKCONNSTATUS=YES, x
STREAMTOKEN=STREAMTOKEN,ANSAREA=ANSAA,ANSLEN=ANSLEN, X
RETCODE=RETCODE,RSNCODE=RSNCODE,MF=(E,PLIST,COMPLETE)
IXGBRWSE REQUEST=START,OLDEST,BROWSETOKEN=BROWSETOKEN, x
STREAMTOKEN=STREAMTOKEN,ANSAREA=ANSAA,ANSLEN=ANSLEN, X
RETCODE=RETCODE,RSNCODE=RSNCODE,MF=(E,PLIST,COMPLETE)
STCK STCK1
IXGIMPRT BUFFER64=(2),BLOCKLEN=50,BLOCKID=BLOCKID, X
GMT_TIMESTAMP=STCK1,LOCALTIME=STCK1, x
STREAMTOKEN=STREAMTOKEN,ANSAREA=ANSAA,ANSLEN=ANSLEN, x
RETCODE=RETCODE,RSNCODE=RSNCODE,MF=(E,PLIST,COMPLETE)
IXGBRWSE REQUEST=READCURSOR,BROWSETOKEN=BROWSETOKEN, x
BUFFER64=(2),BUFFLEN=50,DIRECTION=OLDTOYOUNG, x
BLKSIZE=RETURNSIZE,RETBLOCKID=RETBLOCKID, x
STREAMTOKEN=STREAMTOKEN,ANSAREA=ANSAA,ANSLEN=ANSLEN, X
RETCODE=RETCODE,RSNCODE=RSNCODE,MF=(E,PLIST,COMPLETE)
IXGBRWSE REQUEST=END,BROWSETOKEN=BROWSETOKEN, x
STREAMTOKEN=STREAMTOKEN,ANSAREA=ANSAA,ANSLEN=ANSLEN, X
RETCODE=RETCODE,RSNCODE=RSNCODE,MF=(E,PLIST,COMPLETE)
IXGDELET BLOCKS=ALL, x
STREAMTOKEN=STREAMTOKEN,ANSAREA=ANSAA,ANSLEN=ANSLEN, X
RETCODE=RETCODE,RSNCODE=RSNCODE,MF=(E,PLIST,COMPLETE)
IXGCONN REQUEST=DISCONNECT, x
STREAMTOKEN=STREAMTOKEN,ANSAREA=ANSAA,ANSLEN=ANSLEN, X
RETCODE=RETCODE,RSNCODE=RSNCODE,MF=(E,PLIST,COMPLETE)
IXGINVNT REQUEST=DELETE,STREAMNAME=STREAMNAME,TYPE=LOGSTREAM, x
ANSAREA=ANSAA,ANSLEN=ANSLEN, X
RETCODE=RETCODE,RSNCODE=RSNCODE,MF=(E,PLIST,COMPLETE)
* Cleanup and return to caller
L 00,SIZDATD+4
LA 15,0
LR 01,13
CPYA 01,13
STORAGE RELEASE,LENGTH=(0),ADDR=(1),SP=(15),LINKAGE=SYSTEM
SLR 15,15
PR
* Static data
STATDATA DS 0F
SIZDATD DS 0A
DC AL1(0)
DC AL3(DYNSIZE)
DC A(DYNSIZE)
TESTDATA DC CL50'TEST DATA FOR TESTCASE IXGASM64 '
STREAM DC CL26'LOGGER.STREAMA '
STRUCT DC CL16'LIST01 '
BLOCKID DC A(0) Blockid is 8 bytes in length
DC A(256)
BUFFER64 EQU 0
* Dynamic Data
DATD DSECT
SA00001 DS 36F Save area must be first in DATD
RSNCODE DS F
RETCODE DS F
ANSLEN DS F
RETURNSIZE DS F
DS 0D
STCK1 DS CL8
ORIGIN DS CL8
RETBLOCKID DS CL8
STRUCTNAME DS CL16
STREAMNAME DS CL26
STREAMTOKEN DS CL16
IXGANSAA DSECT=NO
BROWSETOKEN DS CL4
PLIST DS CL256
BUFFER DS CL50
ORG *+1-(*-DATD)/(*-DATD)
ENDDATD DS 0X
DYNSIZE EQU ((ENDDATD-DATD+7)/8)*8
IXGASM64 CSECT ,
END