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