//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) //GO1 EXEC PGM=LOADER,COND=(5,LT,ASM), // PARM=('LIST,LET,MAP,XREF,&LOPT') //SYSLOUT DD DUMMY //SYSLIN DD DSN=*.ASM.SYSLIN,DISP=(OLD,PASS) //SYSOUT1 DD SYSOUT=E //SYSOUT2 DD SYSOUT=F,SPIN=UNALLOC //SYSOUT3 DD SYSOUT=G,FREE=CLOSE //GO2 EXEC PGM=LOADER,COND=(5,LT,ASM), // PARM=('LIST,LET,MAP,XREF,&LOPT') //SYSLOUT DD DUMMY //SYSLIN DD DSN=*.ASM.SYSLIN,DISP=(OLD,DELETE) // 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-1' CHAPTER 5.8 * * ===================================================== * * SPIN SYSOUT VISUAL TESTING. * *********************************************************************** MAINPROC DS 0H DEVTYPE =CL8'SYSOUT1',DOUBLE ISSUE DEVTYPE LTR RF,RF PROVIDED SYSOUT DD STMT ? BNZ WTORONLY NO, WTORONLY USING IHADCB,SYSOUT ADDRESS TO OUTPUT DCB MVC DCBDDNAM,=CL8'SYSOUT1' SET DDNAME BAS RA,WRITEDS WRITE DATA TO SYSOUT1 MVC DCBDDNAM,=CL8'SYSOUT2' SET DDNAME BAS RA,WRITEDS WRITE DATA TO SYSOUT2 MVC DCBDDNAM,=CL8'SYSOUT3' SET DDNAME BAS RA,WRITEDS WRITE DATA TO SYSOUT3 SPACE , WTORONLY DS 0H MVI DOUBLE,0 CLEAR ECB WTOR 'CREATED SYSOUT DATASETS, ENTER $DOJnnnnn AND SEE PRINTA+ BLE SYSOUT LIST, REPLY ''GO'' TO CONTINUE.', + DOUBLE+4,4,DOUBLE,ROUTCDE=2,DESC=7 WAIT ECB=DOUBLE WAIT OPERATOR REPLY SPACE , * *----------------------------------* * * END OF PROCESSING * * *----------------------------------* SLR 15,15 LOAD RETURN CODE = 0 B EXITPROC DO EXIT PROCESSING EJECT , *********************************************************************** * I N T E R N A L S U B R O U T I N E S * *********************************************************************** WRITEDS DS 0H OPEN (SYSOUT,OUTPUT) OPEN DATASET LA R2,1000 SET LOOP COUNTER PUTLOOP1 DS 0H PUT SYSOUT,PUTRECRD PUT RECORD BCT R2,PUTLOOP1 LOOP AGAIN CLOSE SYSOUT CLOSE DATASET BR RA RETURN TO CALLER EJECT , *********************************************************************** * DATA AREA * *********************************************************************** DS 0D *---------------------------------------------------------------------* DOUBLE DC D'0' DOUBLE WORD WORKAREA SPACE , SYSOUT DCB DDNAME=********,DSORG=PS,MACRF=PM, + RECFM=FB,LRECL=120,BLKSIZE=0 SPACE , PUTRECRD DC 4CL36'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' *---------------------------------------------------------------------* 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 *---------------------------------------------------------------------* * 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 // //