64 bit virtual addressing support for system logger services

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.

The following example shows a program in which system logger services are invoked using the BUFFER64 keyword:
         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