//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=USR1.JCLLIB // 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 PDS MEMBER BY QSAM. * *---------------------------------------------------------------------* * CHANGE SYSUT1 DSNAME FOR YOUR ENVIRONMENT. * * //GO EXEC PGM=LOADER,COND=(5,LT,ASM), * * //SYSUT1 DD DISP=SHR,DSN=USR1.JCLLIB * *********************************************************************** MAINPROC DS 0H OPEN (PRTDCB,OUTPUT) OPEN PRINT DATASET SPACE , USING INFMJFCB,JFCBAREA ADDRESS TO JFCB READ AREA RDJFCB UT1DCB READ SYSUT1 DD STMT JFCB LTR RF,RF SUCCESSFUL ? BNZ DOCLOSE NO, MAY BE DD STMT NOT DEFINED OI JFCBIND1,JFCPDS INDICATES DATASET IS PDS MEMBER SPACE , MVC JFCBELNM,=CL8'COBOL' SET NEXT MEMBER NAME BAS RA,PRTMEMBR PRINT MEMBER RECORD SPACE , MVC JFCBELNM,=CL8'FTPBATCH' SET NEXT MEMBER NAME BAS RA,PRTMEMBR PRINT MEMBER RECORD SPACE , DOCLOSE DS 0H CLOSE (PRTDCB) CLOSE USED DATASET B ENDPROGM END OF PROCESSING SPACE , PRTMEMBR DS 0H OPEN (UT1DCB,INPUT),TYPE=J OPEN DATASET WITH MODIFIED JFCB+ (OPEN SPECIFIED PDS MEMBER) LOOP DS 0H GET UT1DCB READ NEXT RECORD LR R0,R1 PUT PRTDCB,(0) PRINT IT TO SYSPRINT B LOOP LOOP UNTIL EOD UT1EOD DS 0H CLOSE (UT1DCB) CLOSE INPUT DATASET B 0(,RA) RETURN TO MAINLINE SPACE , * *----------------------------------* * * END OF PROCESSING * * *----------------------------------* ENDPROGM DS 0H SLR 15,15 LOAD RETURN CODE = 0 B EXITPROC DO EXIT PROCESSING EJECT , *********************************************************************** * DATA AREA * *********************************************************************** DS 0D *---------------------------------------------------------------------* * *----------------------------------* * * QSAM INTERFACE PARAMETERS * * *----------------------------------* PRTDCB DCB DDNAME=SYSPRINT, QSAM DCB + DSORG=PS,MACRF=PM, + RECFM=FB,LRECL=80 UT1DCB DCB DDNAME=SYSUT1, QSAM DCB + DSORG=PS,MACRF=GL, + EXLST=UT1EXLST,EODAD=UT1EOD SPACE , UT1EXLST DS 0F DC XL1'87',AL3(JFCBAREA) JFCBAREA DS 0F DC (JFCBLGTH)X'00' JFCB READ AREA *---------------------------------------------------------------------* LTORG , LITERAL POOL AT HERE DROP , FORGET ALL BASE REGISTERS EJECT , *********************************************************************** * DATA AREA (OUTSIDE OUR BASE) * *********************************************************************** *---------------------------------------------------------------------* * LOCAL WORKAREA * *---------------------------------------------------------------------* *---------------------------------------------------------------------* * DSECTS * *---------------------------------------------------------------------* DJFCB DSECT , IEFJFCBN LIST=YES JFCB DSECT *---------------------------------------------------------------------* * 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 // //