//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) // PEND //********************************************************************* //STEP1 EXEC ASMCG //ASM.SYSIN DD * &MODNAME SETC 'MYASMPGM' *=====================================================================* * MVS STANDARD HOUSE KEEPING PROCEDURE * *=====================================================================* * *----------------------------------* * * ENTRY PROCESSING * * *----------------------------------* &MODNAME CSECT , DEFINE CONTROL SECTION &MODNAME AMODE 31 DEFINE DEFAULT AMODE=31 &MODNAME 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.3 * * ===================================================== * * INTERVAL TIMER(REAL) BY STIMERM. * *********************************************************************** MAINPROC DS 0H WTOR TEXT=(RPLYMSG,DOUBLE, INFORM REPLY MESSAGE TO CONSOLE+ L'DOUBLE,WTORECB), + DESC=6,ROUTCDE=2 ST R1,DOMID SAVE MSGID FOR LATER SPACE , STIMERM SET, SET INTERVAL TIMER + ID=TIMERID, + EXIT=TIMREXIT, + BINTVL=INTRVAL SPACE , WAIT ECBLIST=ECBLIST WAIT WTOR COMPLETION OR TIMEOUT SPACE , TM TIMRECB,X'40' TIME OUT ? BO DONE YES, DONE... SPACE , WTORCOMP DS 0H STIMERM CANCEL, CANCEL TIMER + ID=TIMERID, + TU=DOUBLE L R0,DOUBLE LOAD REMAINING TIMER VALUE SRDL R0,32 MOVE GR0 TO GR1 AND CLEAR GR0 M R0,=F'2604166' CONEVRT TO MICRO SECOND UNIT D R0,=A(100000*10000) CONVERT TO 1/100 SECOND UNIT CVD R1,DOUBLE CONVERT TO DECIMAL UNPK WTOLIST+45(4),DOUBLE CONVERT TO ZONE OI WTOLIST+48,X'F0' MAKE IT TO REDABLE ICM R0,B'0011',WTOLIST+47 INSERT DECIMAL POINT MARK STCM R0,B'0011',WTOLIST+48 I MVI WTOLIST+47,C'.' V WTO MF=(E,WTOLIST) INFORM REMAINING TIMER B DONE WTOLIST WTO 'OPERATOR REPLY ACCEPTED. REMAINING TIMER=@@.@@ SECOND.'+ ,MF=L DONE DS 0H SPACE , * *----------------------------------* * * END OF PROCESSING * * *----------------------------------* SLR 15,15 LOAD RETURN CODE = 0 B EXITPROC DO EXIT PROCESSING SPACE , * *----------------------------------* * * ASYNCHRONOUS EXIT ROUTINE * * *----------------------------------* TIMREXIT DS 0H USING *,RF SET TEMP BASE STM RE,RC,12(RD) SAVE CALLER GPRS L RC,AOURBASE ESTABLISH OUR BASE REGISTER DROP RF FORGET TEMP BASE WTO 'OPERATOR REPLY TIMEOUT..' INFORM REPLY TIMEOUT DOM MSG=DOMID DELETE REPLY MSG POST TIMRECB WAKE UP MAIN ROUTINE LM RE,RC,12(RD) SAVE CALLER GPRS BR RE AOURBASE DC A(&MODNAME) OUR BASE ADDRESS EJECT , *********************************************************************** * DATA AREA * *********************************************************************** DS 0D *---------------------------------------------------------------------* DOUBLE DC D'0' DOUBLE WORD WORKAREA DOMID DC F'0' REPLY MSGID TIMERID DC F'0' STIMERM TIMER ID INTRVAL DC F'2000' 20.00 SECOND ECBLIST CALL ,(WTORECB,TIMRECB), ECBLIST + VL,MF=L WTORECB DC F'0' ECB FOR WTOR SYNCHRONIZATION TIMRECB DC F'0' ECB FOR WAKE-UP BY TIMER SPACE , RPLYMSG DS 0H REPLY MESSAGE TEXT DC AL2(LPLYTXT) RPLYTXT DC C'ZZZ000A WAITING REPLY.' LPLYTXT EQU *-RPLYTXT *---------------------------------------------------------------------* LTORG , LITERAL POOL AT HERE DROP , FORGET ALL BASE REGISTERS EJECT , *********************************************************************** * DATA AREA (OUTSIDE OUR BASE) * *********************************************************************** *---------------------------------------------------------------------* * LOCAL WORKAREA * *---------------------------------------------------------------------* *---------------------------------------------------------------------* * DSECTS * *---------------------------------------------------------------------* *---------------------------------------------------------------------* * 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 // //