//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) //SYSPRINT DD SYSOUT=* //SYSUT1 DD DISP=SHR,DSN=&SYSUID..QSAMDS1.BASIC // PEND //********************************************************************* //STEP1 EXEC ASMCG //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.2 * * ===================================================== * * READ RECORD FROM MVS PS DATASET BY QSAM. * *---------------------------------------------------------------------* * CHANGE SYSUT1 DSNAME FOR YOUR ENVIRONMENT. * * //GO EXEC PGM=&N,COND=(5,LT,ASM), * * //SYSUT1 DD DISP=SHR,DSN=userid.QSAMDS1.BASIC * *********************************************************************** MAINPROC DS 0H IN USING IHADCB,INDCB ADDRESS TO DCB(INPUT DATASET) OUT USING IHADCB,OUTDCB ADDRESS TO DCB(OUTPUT DATASET) USING DCBE,INDCBE ADDRESS TO DCBE SPACE , MVC IN.DCBDDNAM,=CL8'SYSUT1' SET INPUT DATASET DDNAME OPEN (INDCB,INPUT) OPEN INPUT DATASET MVC OUT.DCBRECFM,IN.DCBRECFM SET RECFM FROM INPUT DATASET MVC OUT.DCBLRECL,IN.DCBLRECL SET LRECL FROM INPUT DATASET OPEN (OUTDCB,OUTPUT) OPEN OUTPUT DATASET LOOP DS 0H GET INDCB READ NEXT RECORD FROM SYSUT1 LTR R0,R1 EOD ? BZ DONE YES, PROCESSING DONE PUT OUTDCB,(0) NO, PUT TO OUTPUT DATASET B LOOP LOOP FOR NEXT RECORD DONE DS 0H CLOSE (INDCB,,OUTDCB) CLOSE USED DATASET SPACE , * *----------------------------------* * * END OF PROCESSING * * *----------------------------------* SLR 15,15 LOAD RETURN CODE = 0 B EXITPROC DO EXIT PROCESSING SPACE , * *----------------------------------* * * QSAM EOD PROCESSING * * *----------------------------------* EODRTN DS 0H SLR R1,R1 INDICATES EOD EXIT ENTERED BR RE RETURN TO MAINLINE PROCESSING EJECT , *********************************************************************** * DATA AREA * *********************************************************************** DS 0D *---------------------------------------------------------------------* * *----------------------------------* * * QSAM INTERFACE PARAMETERS * * *----------------------------------* INDCB DCB DDNAME=********, QSAM DCB + DSORG=PS,MACRF=GL, + DCBE=INDCBE INDCBE DCBE RMODE31=BUFF, + EODAD=EODRTN SPACE , OUTDCB DCB DDNAME=SYSPRINT, QSAM DCB + DSORG=PS,MACRF=PM SPACE , * *----------------------------------* * * WORKING DATA * * *----------------------------------* WORKAREA DC CL256' ' RECORD READ AREA SPACE , SYSPRINT DCB DDNAME=SYSPRINT, DCB FOR SYSPRINT DATASET + DSORG=PS,MACRF=PM,RECFM=FB,BLKSIZE=0,LRECL=80 *---------------------------------------------------------------------* LTORG , LITERAL POOL AT HERE DROP , FORGET ALL BASE REGISTERS EJECT , *********************************************************************** * DATA AREA (OUTSIDE OUR BASE) * *********************************************************************** *---------------------------------------------------------------------* * LOCAL WORKAREA * *---------------------------------------------------------------------* *---------------------------------------------------------------------* * DSECTS * *---------------------------------------------------------------------* DCBD DEVD=DA,DSORG=QS DCB QSAM IHADCBE , DCBE *---------------------------------------------------------------------* * 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 // //