z/OS Unicode Services User's Guide and Reference
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Using the HLASM interface

z/OS Unicode Services User's Guide and Reference
SA38-0680-00

This is the call syntax in HLASM for calling the stub routine CUNLINFO (conversion information service for 31-bit callers) and CUN4LINF (conversion information service for 64-bit callers). A sample program, CUNSISMA, is provided in SYS1.SAMPLIB.

For AMODE (31)

----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
           EJECT                                                                  
CUNSISMA CSECT                                                                  
CUNSISMA AMODE 31                                                               
CUNSISMA RMODE ANY                                                              
         SPACE 1                                                                
         BRAS  R15,PSTART        ! ESTABLISH ADDRESSABILITY                     
PSTART   EQU   *                                                                
         USING PSTART,R15                                                       
         B     START                                                            
SAVE     DC    36F'0'                                                           
START    DS    0H                                                               
         STM   R14,R12,12(R13)   ! STORE CALLERS REGS                           
         LA    R10,SAVE                                                         
         USING SAVEAREA,R10      ! ESTABLISH ADDRESSABILITY                     
         SPACE 1                                                                
         ST    R13,PREVSA        ! CHAIN CALLER'S SAVEAREA ADDRESS              
         ST    R10,NEXTSA        ! TO CURRENT SAVERAREA                         
         LR    R13,R10           ! LET R13 POINT TO CURRENT SAVEAREA            
         DROP  R15,R10                                                          
         SPACE 1                                                                
         LAE   R12,0(R15,0)      ! LOAD BASE AND CLEAR ACCESS REGISTER          
         USING PSTART,R12                                                       
         SPACE 1                                                                
***********************************************************************         
* PREPARE PARAMETER AREA FOR CALL TO THE CONVERSION ROUTINES          *         
***********************************************************************         
         SPACE 1                                                                
         LA    R8,PARMAREA                   ! GET PARAMETER AREA ADDR          
         USING CUNBIPRM,R8                   ! ESTABLISH ADDRESSABILITY         
         SPACE 1                                                                
*                                            ! CLEAR PARAMETER AREA             
         LAE   R2,CUNBIPRM                   ! PA Address                       
         LHI   R3,CUNBIPRM_LEN               ! PA Len                           
         LHI   R15,0                         ! Filler - Nulls                   
         MVCL  R2,R14                        ! Cleaning...                      
         SPACE 1                                                                
*                                            ! SETTING PA VERSION               
         LA    R0,CUNBIPRM_VER               ! GET ACTUAL VERSION               
         ST    R0,CUNBIPRM_VERSION           ! STORE INTO PARAMETER             
         LA    R0,CUNBIPRM_LEN               ! GET ACTUAL LENGTH                
         ST    R0,CUNBIPRM_LENGTH            ! STORE INTO PARAMETER             
*                                 /***********************************/         
*                                 /*     Setting CCSIDs              */         
*                                 /***********************************/         
         SPACE 2                                                                
         LA    R0,CCSID1                     ! Loading CCSID1                   
         ST    R0,CUNBIPRM_CCSID1            ! Setting CCSID1                   
         SPACE 2                                                                
         LA    R0,CCSID2                     ! Loading CCSID2                   
         ST    R0,CUNBIPRM_CCSID2            ! Setting CCSID2                   
                                                                                
***********************************************************************         
*                  IMPORTANT: A DDA IS ALWAYS REQUIRED                *         
***********************************************************************         
*                                 /***********************************/         
*                                 /*     Setting   DDA  buffers      */         
*                                 /***********************************/         
         SPACE 2                                                                
         SR    R0,R0                                                            
         L     R0,ADDA                                                          
         ST    R0,CUNBIPRM_DDA_BUF_PTR                                          
         MVC   CUNBIPRM_DDA_BUF_ALET,=F'0'                                      
         L     R0,=A(CUNBIPRM_DDA_REQ)                                          
         ST    R0,CUNBIPRM_DDA_BUF_LEN                                          
         SPACE 1                                                                
***********************************************************************         
*                   CALLING THE CNV INFO SERVICE                      *         
***********************************************************************         
         SPACE 1                                                                
         CALL  CUNLINFO,PARMAREA                                                
         SPACE 1                                                                
EXIT     DS    0H                                                               
         LM    R15,R0,CUNBIPRM_RC_RS ! SET RETURN AND REASON CODE               
         L     R13,4(R13)            ! RESTORE CALLER'S R13                     
         L     R14,12(R13)           ! RESTORE R14                              
         LM    R1,R12,24(R13)        ! RESTORE R1-R12 (RETAIN                   
*                                    !   R15 AND R0)                            
         BR    R14                                                              
         SPACE 1                                                                
         LTORG ,                                                                
         SPACE 1                                                                
***********************************************************************         
*                                                                     *         
*                         DECLARATION                                 *         
*                                                                     *         
*                                                                     *         
*                           Section                                   *         
*                                                                     *         
*                                                                     *         
***********************************************************************         
                                                                                
***********************************************************************         
*        CONSTANT CUNBIPRM_LEN IS USED TO ENSURE THAT SUFFICIENT      *         
*        STORAGE IS OBTAINED FOR THE PARAMETER AREA.                  *         
***********************************************************************         
         SPACE 1                                                                
PARMAREA DC    (CUNBIPRM_LEN)X'00' ! STORAGE FOR PARAMETER AREA                 
ADDA     DC    A(DDA)             ! ADDRESS OF DDA                              
                                                                                
***********************************************************************         
*        CONSTANT CUNBIPRM_DDA_REQ IS USED TO ENSURE THAT SUFFICIENT  *         
*        STORAGE FOR THE DDA IS OBTAINED.                             *         
***********************************************************************         
         SPACE 1                                                                
DDA      DC    (CUNBIPRM_DDA_Req)X'00'  ! DDA SIZE                              
CCSID1   DC    F'1047'            ! CCSID1                                      
CCSID2   DC    F'1208'            ! CCSID2                                      
SAVEAREA DSECT                                                                  
         DC    F'0'              ! RESERVED                                     
PREVSA   DC    F'0'              ! ADDRESS OF PREVIOUS SAVEARA                  
NEXTSA   DC    F'0'              ! ADDRESS OF NEXT     SAVEARA                  
SAVER14  DC    F'0'                                                             
SAVER15  DC    F'0'                                                             
SAVER0   DC    F'0'                                                             
SAVER1   DC    F'0'                                                             
SAVER2   DC    F'0'                                                             
SAVER3   DC    F'0'                                                             
SAVER4   DC    F'0'                                                             
SAVER5   DC    F'0'                                                             
SAVER6   DC    F'0'                                                             
SAVER7   DC    F'0'                                                             
SAVER8   DC    F'0'                                                             
SAVER9   DC    F'0'                                                             
SAVER10  DC    F'0'                                                             
SAVER11  DC    F'0'                                                             
SAVER12  DC    F'0'                                                             
         SPACE 1                                                                
         COPY  CUNBIIDF                                                         
         SPACE 1                                                                
         CUNBIIDF DSECT=YES,LIST=YES                                            
         SPACE 1                                                                
R0       EQU   0                                                                
R1       EQU   1                                                                
R2       EQU   2                                                                
R3       EQU   3                                                                
R4       EQU   4                                                                
R5       EQU   5                                                                
R6       EQU   6                                                                
R7       EQU   7                                                                
R8       EQU   8                                                                
R9       EQU   9                                                                
R10      EQU   10                                                               
R11      EQU   11                                                               
R12      EQU   12                                                               
R13      EQU   13                                                               
R14      EQU   14                                                               
R15      EQU   15                                                               
         END CUNSISMA 
For AMODE (64)

----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
         EJECT                                                                  
CUNSISMA CSECT                                                                  
CUNSISMA AMODE 31                                                               
CUNSISMA RMODE ANY                                                              
         SPACE 1                                                                
         BRAS  R15,PSTART        ! ESTABLISH ADDRESSABILITY                     
PSTART   EQU   *                                                                
         USING PSTART,R15                                                       
         B     START                                                            
SAVE     DC    36F'0'                                                           
START    DS    0H                                                               
         STM   R14,R12,12(R13)   ! STORE CALLERS REGS                           
         LA    R10,SAVE                                                         
         USING SAVEAREA,R10      ! ESTABLISH ADDRESSABILITY                     
         SPACE 1                                                                
         ST    R13,PREVSA        ! CHAIN CALLER'S SAVEAREA ADDRESS              
         ST    R10,NEXTSA        ! TO CURRENT SAVERAREA                         
         LR    R13,R10           ! LET R13 POINT TO CURRENT SAVEAREA            
         DROP  R15,R10                                                          
         SPACE 1                                                                
         LAE   R12,0(R15,0)      ! LOAD BASE AND CLEAR ACCESS REGISTER          
         USING PSTART,R12                                                       
         SPACE 1                                                                
***********************************************************************         
* PREPARE PARAMETER AREA FOR CALL TO THE CONVERSION ROUTINES          *         
***********************************************************************         
         SPACE 1                                                                
         LA    R8,PARMAREA                   ! GET PARAMETER AREA ADDR          
         USING CUN4BIPR,R8                   ! ESTABLISH ADDRESSABILITY         
         SPACE 1                                                                
*                                            ! CLEAR PARAMETER AREA             
         LAE   R2,CUN4BIPR                   ! PA Address                       
         LHI   R3,CUN4BIPR_LEN               ! PA Len                           
         LHI   R15,0                         ! Filler - Nulls                   
         MVCL  R2,R14                        ! Cleaning...                      
         SPACE 1                                                                
*                                            ! SETTING PA VERSION               
         LA    R0,CUN4BIPR_VER               ! GET ACTUAL VERSION               
         ST    R0,CUN4BIPR_VERSION           ! STORE INTO PARAMETER             
         LA    R0,CUN4BIPR_LEN               ! GET ACTUAL LENGTH                
         ST    R0,CUN4BIPR_LENGTH            ! STORE INTO PARAMETER             
*                                 /***********************************/         
*                                 /*     Setting CCSIDs              */         
*                                 /***********************************/         
         SPACE 2                                                                
         LA    R0,CCSID1                     ! Loading CCSID1                   
         ST    R0,CUN4BIPR_CCSID1            ! Setting CCSID1                   
         SPACE 2                                                                
         LA    R0,CCSID2                     ! Loading CCSID2                   
         ST    R0,CUN4BIPR_CCSID2            ! Setting CCSID2                   
                                                                                
***********************************************************************         
*                  IMPORTANT: A DDA IS ALWAYS REQUIRED                *         
***********************************************************************         
*                                 /***********************************/         
*                                 /*     Setting   DDA  buffers      */         
*                                 /***********************************/         
         SPACE 2                                                                
         SR    R0,R0                                                            
         L     R0,ADDA                                                          
         ST    R0,CUN4BIPR_DDA_BUF_PTR                                          
         MVC   CUN4BIPR_DDA_BUF_ALET,=F'0'                                      
         L     R0,=A(CUN4BIPR_DDA_REQ)                                          
         ST    R0,CUN4BIPR_DDA_BUF_LEN                                          
         SPACE 1                                                                
***********************************************************************         
*                   CALLING THE CNV INFO SERVICE                      *         
***********************************************************************         
         SPACE 1                                                                
         CALL  CUN4LINF,PARMAREA                                                
         SPACE 1                                                                
EXIT     DS    0H                                                               
         LM    R15,R0,CUN4BIPR_RC_RS ! SET RETURN AND REASON CODE               
         L     R13,4(R13)            ! RESTORE CALLER'S R13                     
         L     R14,12(R13)           ! RESTORE R14                              
         LM    R1,R12,24(R13)        ! RESTORE R1-R12 (RETAIN                   
*                                    !   R15 AND R0)                            
         BR    R14                                                              
         SPACE 1                                                                
         LTORG ,                                                                
         SPACE 1                                                                
***********************************************************************         
*                                                                     *         
*                         DECLARATION                                 *         
*                                                                     *         
*                                                                     *         
*                           Section                                   *         
*                                                                     *         
*                                                                     *         
***********************************************************************         
                                                                                
***********************************************************************         
*        CONSTANT CUN4BIPR_LEN IS USED TO ENSURE THAT SUFFICIENT      *         
*        STORAGE IS OBTAINED FOR THE PARAMETER AREA.                  *         
***********************************************************************         
         SPACE 1                                                                
PARMAREA DC    (CUN4BIPR_LEN)X'00' ! STORAGE FOR PARAMETER AREA                 
ADDA     DC    A(DDA)             ! ADDRESS OF DDA                              
                                                                                
***********************************************************************         
*        CONSTANT CUN4BIPR_DDA_REQ IS USED TO ENSURE THAT SUFFICIENT  *         
*        STORAGE FOR THE DDA IS OBTAINED.                             *         
***********************************************************************         
         SPACE 1                                                                
DDA      DC    (CUN4BIPR_DDA_Req)X'00'  ! DDA SIZE                              
CCSID1   DC    F'1047'            ! CCSID1                                      
CCSID2   DC    F'1208'            ! CCSID2                                      
SAVEAREA DSECT                                                                  
         DC    F'0'              ! RESERVED                                     
PREVSA   DC    F'0'              ! ADDRESS OF PREVIOUS SAVEARA                  
NEXTSA   DC    F'0'              ! ADDRESS OF NEXT     SAVEARA                  
SAVER14  DC    F'0'                                                             
SAVER15  DC    F'0'                                                             
SAVER0   DC    F'0'                                                             
SAVER1   DC    F'0'                                                             
SAVER2   DC    F'0'                                                             
SAVER3   DC    F'0'                                                             
SAVER4   DC    F'0'                                                             
SAVER5   DC    F'0'                                                             
SAVER6   DC    F'0'                                                             
SAVER7   DC    F'0'                                                             
SAVER8   DC    F'0'                                                             
SAVER9   DC    F'0'                                                             
SAVER10  DC    F'0'                                                             
SAVER11  DC    F'0'                                                             
SAVER12  DC    F'0'                                                             
         SPACE 1                                                                
         COPY  CUN4BIID                                                         
         SPACE 1                                                                
         CUN4BIID DSECT=YES,LIST=YES                                            
         SPACE 1                                                                
R0       EQU   0                                                                
R1       EQU   1                                                                
R2       EQU   2                                                                
R3       EQU   3                                                                
R4       EQU   4                                                                
R5       EQU   5                                                                
R6       EQU   6                                                                
R7       EQU   7                                                                
R8       EQU   8                                                                
R9       EQU   9                                                                
R10      EQU   10                                                               
R11      EQU   11                                                               
R12      EQU   12                                                               
R13      EQU   13                                                               
R14      EQU   14                                                               
R15      EQU   15                                                               
         END CUNSISMA 

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014