//JOBNAME JOB (ACCT),NAME,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1) //********************************************************************* //ASMCG PROC AOPT=,APARM=,LOPT=, // MAC1='SYS1.MACLIB', // MAC2='SYS1.MACLIB', // MAC3='SYS1.MODGEN' //ASM EXEC PGM=ASMA90, // PARM=('OBJ,NODECK,LC(32767),XREF(SHORT),TERM,RLD,ASA,&AOPT', // 'US(MAP,WARN(11)),SYSPARM(&APARM)') //SYSPRINT DD SYSOUT=* //SYSTERM DD SYSOUT=* //SYSLIB DD DISP=SHR,DSN=&MAC1 // DD DISP=SHR,DSN=&MAC2 // DD DISP=SHR,DSN=&MAC3 //SYSUT1 DD UNIT=SYSALLDA,SPACE=(TRK,(80,20)) //SYSLIN DD DISP=(,PASS),UNIT=SYSALLDA,SPACE=(TRK,(30,15),RLSE), // DCB=(RECFM=FB,BLKSIZE=0,LRECL=80) //GO EXEC PGM=LOADER,COND=(5,LT,ASM), // PARM=('LIST,LET,MAP,XREF,&LOPT') //SYSLOUT DD DUMMY //SYSLIN DD DSN=*.ASM.SYSLIN,DISP=(OLD,DELETE) //SNAPDUMP DD SYSOUT=* //RBAIN DD * 0 18432 202752 217088 221184 // PEND //********************************************************************* //STEP1 EXEC ASMCG //GO.SYSUT1 DD DISP=SHR,DSN=&SYSUID..SAMPKSD2 //ASM.SYSIN DD * *=====================================================================* * MVS STANDARD HOUSE KEEPING PROCEDURE * *=====================================================================* * *----------------------------------* * * ENTRY PROCESSING * * *----------------------------------* MYASMPGM CSECT , DEFINE CONTROL SECTION MYASMPGM AMODE 31 DEFINE DEFAULT AMODE=31 MYASMPGM RMODE 24 DEFINE DEFAULT RMODE=24 USING *,12 DEFINE BASE REGISTER SAVE (14,12),,* SAVE CALLER REGISTERS LA 12,0(,15) GR12 --> OUR 1ST BASE ADDRESS LR 15,13 SAVE CALLER SAVEAREA CNOP 0,4 INSURE FULL WORD BOUNDARY BAS 13,*+4+72 AROUND OUR SAVEAREA DC 18F'-1' OUR GPR SAVEAREA ST 15,4(,13) SAVE CALLER SAVEAREA POINTER ST 13,8(,15) SET BACK CHAIN FOR LINK TRACE B MAINPROC DO MAINLINE PROCESSING * *----------------------------------* * * EXIT PROCESSING * * *----------------------------------* EXITPROC DS 0H L 13,4(,13) RESTORE CALLER SAVEAREA ST 15,16(,13) PASS RETURN CODE TO CALLER RETURN (14,12),T RESTORE CALLER REGISTERS + AND RETURN TO CALLER EJECT , *********************************************************************** * MAIN LINE PROCESSING. * * ===================================================== * * GR1 -- EXEC PARAMETER PLIST * * GR12 - BASE REGISTER * * GR13 - OUR REGISTER SAVEAREA * *---------------------------------------------------------------------* * SAMPLE CODE OF 'MVS ADVANCED SKILL Vol-2' CHAPTER 5.4 * * ===================================================== * * READ CONTROL INTERVAL FROM MVS VSAM DATASET. * *---------------------------------------------------------------------* * CHANGE SYSUT1 DSNAME FOR YOUR ENVIRONMENT. * * //GO EXEC PGM=LOADER,COND=(5,LT,ASM), * * //SYSUT1 DD DISP=SHR,DSN=&SYSUID..SAMPKSD2 <=== * *********************************************************************** MAINPROC DS 0H * *----------------------------------* * * SETUP CI DUMP PROCESSING * * *----------------------------------* OPEN (SNAPDCB,OUTPUT, OPEN SNAPDUMP/RBAIN DATASET + RBAIN,INPUT) OPEN (UT1ACB) OPEN VSAM DATASET SPACE , * *----------------------------------* * * DUMP VSAM CI(CONTROL INTERVAL) * * *----------------------------------* USING IFGRPL,UT1RPL ADDRESS TO VSAM/RPL LOOP DS 0H GET RBAIN GET NEXT RBA DATA LR RE,R1 ASK THE NUM OF DIGIT OF RBA SLR RF,RF I CLI 0(RE),C' ' I BNH *+4+4+4+4 I LA RF,1(,RF) I LA RE,1(,RE) I B *-4-4-4-4 V BCTR RF,0 MAKE IT FOR S/370 LENGTH EX RF,*+4+4 PACK IT B *+4+6 (SKIP MODEL INSTRUCTION) PACK DOUBLE,0(0,R1) PACK MODEL INSTRUCTION CVB R0,DOUBLE CONVERT IT TO BINARY ST R0,RBA SET IT AS CI RBA SPACE , GET RPL=UT1RPL READ NEXT CONTROL INTERVAL LTR RA,RF SUCCESSFUL ? BNZ IOERROR NO, CHECK ERROR REASON L R2,ARECORD LOAD CI DATA AREA ADDRESS L R3,RPLRLEN LOAD ACTUAL CI LENGTH LA R3,0(R3,R2) LOAD END OF RECORD AREA ADDRESS BCTR R3,0 CORRECT IT SNAP DCB=SNAPDCB, PRINT STORAGE AREA + STORAGE=((2),(3)) B LOOP LOOP FOR NEXT CI SPACE , IOERROR DS 0H SLR R0,R0 IC R0,RPLERRCD CVD RF,DOUBLE CONVERT RETCD TO PACKED DECIMAL UNPK ERRMSG1+4+24(2),DOUBLE I OI ERRMSG1+4+25,C'0' V CVD R0,DOUBLE CONVERT ERRCD TO PACKED DECIMAL UNPK ERRMSG1+4+35(3),DOUBLE I OI ERRMSG1+4+37,C'0' V L R0,RBA CONVERT RBA TO PACKED DECIMAL CVD R0,DOUBLE I UNPK ERRMSG1+4+43(10),DOUBLE I OI ERRMSG1+4+52,C'0' V WTO MF=(E,ERRMSG1) INFORM VSAM OPEN ERROR LR RF,RA LOAD VSAM RETURN CODE B LOOP LOOP FOR NEXT CI SPACE , * *----------------------------------* * * END OF CI DUMP PROCESSING * * *----------------------------------* EODPROC DS 0H CLOSE (UT1ACB) CLOSE VSAM DATASET CLOSE (SNAPDCB,,RBAIN) CLOSE SNAPDUMP/RBAIN DATASET SPACE , * *----------------------------------* * * END OF PROCESSING * * *----------------------------------* SLR 15,15 LOAD RETURN CODE = 0 B EXITPROC DO EXIT PROCESSING EJECT , *********************************************************************** * DATA AREA * *********************************************************************** DS 0D *---------------------------------------------------------------------* * *----------------------------------* * * VSAM INTERFACE PARAMETERS * * *----------------------------------* UT1ACB ACB AM=VSAM, ACB FOR SYSUT1 + DDNAME=SYSUT1,MACRF=(IN,CNV) UT1RPL RPL AM=VSAM, RPL FOR SYSUT1 + ACB=UT1ACB, + ARG=RBA,AREA=ARECORD,AREALEN=L'ARECORD, + OPTCD=(CNV,DIR,LOC) SPACE , * *----------------------------------* * * WORKING DATA * * *----------------------------------* DOUBLE DC D'0' DOUBLE WORD WORKAREA RBA DC F'0' TARGET INDEX RECORD RBA ARECORD DC A(0) RECORD AREA POINTER ERRMSG1 WTO 'VSAM I/O ERROR, RETCODE=99 ERRCODE=999 RBA=9999999999',+ MF=L,MCSFLAG=HRDCPY ZOSv23 RBAIN DCB DDNAME=RBAIN,DSORG=PS,MACRF=GL,EODAD=EODPROC SPACE , SNAPDCB DCB DDNAME=SNAPDUMP, DCB FOR SNAP DUMP DATASET + DSORG=PS,MACRF=W,RECFM=VBA,BLKSIZE=1632,LRECL=125 *---------------------------------------------------------------------* LTORG , LITERAL POOL AT HERE DROP , FORGET ALL BASE REGISTERS EJECT , *********************************************************************** * DATA AREA (OUTSIDE OUR BASE) * *********************************************************************** *---------------------------------------------------------------------* * LOCAL WORKAREA * *---------------------------------------------------------------------* *---------------------------------------------------------------------* * DSECTS * *---------------------------------------------------------------------* IFGACB AM=VSAM VSAM ACB IFGRPL AM=VSAM VSAM RPL *---------------------------------------------------------------------* * S/370, ESA/390 REGISTER EQUATES * *---------------------------------------------------------------------* YREGS , OS: REGISTER EQUATES RA EQU 10 ADD EQUATION FOR GR10 RB EQU 11 ADD EQUATION FOR GR11 RC EQU 12 ADD EQUATION FOR GR12 RD EQU 13 ADD EQUATION FOR GR13 RE EQU 14 ADD EQUATION FOR GR14 RF EQU 15 ADD EQUATION FOR GR15 END // //