//JOBNAME JOB (ACCT),NAME,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1), // USER=userid,PASSWORD=password //********************************************************************* //ASMCG PROC AOPT=,APARM=,LOPT=,NCAL=NCAL, // MAC1='SYS1.MACLIB', // MAC2='SYS1.MACLIB', // MAC3='SYS1.MODGEN', // LLIB='NULLFILE' //ASM EXEC PGM=ASMA90, // PARM=('OBJ,NODECK,LC(32767),XREF(SHORT),TERM,RLD,ASA,&AOPT', // 'US(MAP,WARN(11)),SYSPARM(&APARM)') //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=3120,LRECL=80) //SYSPRINT DD SYSOUT=* //SYSTERM DD SYSOUT=* //GO EXEC PGM=LOADER,COND=(5,LT,ASM), // PARM=('LIST,LET,MAP,PRINT,XREF,&NCAL,&LOPT') //SYSLOUT DD DUMMY //SYSLIB DD DISP=SHR,DSN=&LLIB //SYSLIN DD DSN=*.ASM.SYSLIN,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //SNAPDUMP DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSPRINT DD SYSOUT=* //*G2 EXEC PGM=ZZBREAK //*STEPLIB DD DISP=SHR,DSN=ART1.LINKLIB // PEND //********************************************************************* //MYASMPGM EXEC ASMCG //ASM.SYSIN DD * *=====================================================================* *======= HERE IS CONTROL CODE, NEVER CHANGE/MODIFY FROM HERE =========* *=====================================================================* MAINENTR CSECT , DEFINE CODE SECTION MAINENTR AMODE 31 DEFINE DEFAULT AMODE MAINENTR RMODE 24 DEFINE DEFAULT RMODE USING *,12 DEFINE BASE REGISTER STM 14,12,12(13) 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 ESPIE SET,SPIEEXIT,((1,15)) BUILD SPIE ENVIRONMENT B USERCODE AROUND DIAGNOSIS AREA DC 2X'FF' --- RESERVED FOR DIAGNOSIS --- SNAPGPRS DC 16F'0' GPR VALUE FOR DIAGNOSIS DC 60X'FF' --- RESERVED FOR DIAGNOSIS --- USERCODE DS 0H USER CODE START AT HERE *********************************************************************** * AVAILABLE YOUR ASSEMBLER LANGUAGE CODE AT HERE. * * GR1 -- EXEC PARAMETER PLIST * * GR12 - BASE REGISTER * * GR13 - OUR REGISTER SAVEAREA * *---------------------------------------------------------------------* * SAMPLE CODE OF 'MVS ADVANCED SKILL Vol-1' CHAPTER 5.7 * * ===================================================== * * SAMPLE CODE TO WRITE MESSAGE TO OPERATOR CONSOLE AND * * WAIT OPERATOR REPLY(WTOR). * *********************************************************************** * *----------------------------------* * * DISPLAY MSG AND WAIT REPLY * * *----------------------------------* MVI WTORECB,0 CLEAR ECB WTOR 'ABC100D ENTER OPERATOR REPLY, GO OR CANCEL.', + RPLYAREA,L'RPLYAREA,WTORECB, + ROUTCDE=2,DESC=7 WAIT ECB=WTORECB WAIT OPERATOR REPLY WTO TEXT=ECHOMSG, ECHO BACK ENTERED REPLY DATA + ROUTCDE=2,DESC=6 SPACE , MVI WTORECB,0 CLEAR ECB WTOR TEXT=(MSG101D, MESSAGE RETAIN DURING JOBSTEP + RPLYAREA,L'RPLYAREA,WTORECB), + ROUTCDE=2,DESC=(7,13) WAIT ECB=WTORECB WAIT OPERATOR REPLY WTO TEXT=ECHOMSG, ECHO BACK ENTERED REPLY DATA + ROUTCDE=2,DESC=6 SPACE , *---------------------------------------------------------------------* B ENDPROGM GO TO EPILOGUE PROCEDURE USERDATA DS 0D USER DATA AREA START AT HERE *---------------------------------------------------------------------* WTORECB DC F'0' ECB AREA ECHOMSG DS 0H REPLY DATA ECHO MESSAGE DC Y(LCHOMSG) DC C'ENTERED REPLY DATA ==> ' RPLYAREA DC CL16' ' REPLY DATA STORE AREA LCHOMSG EQU *-ECHOMSG-2 LENGTH OF MESSAGE TEXT SPACE , MSG101D DS 0H REPLY REQUEST MESSAGE DC Y(L'MSGTX101) MSGTX101 DC C'ABC101D ENTER PARAMETER VALUE, OR U.' *---------------------------------------------------------------------* *---------------------------------------------------------------------* * S/370, ESA/390 REGISTER EQUATES * *---------------------------------------------------------------------* *------- YREGS , OS: REGISTER EQUATES R0 EQU 0 GENERAL REGISTER 0 R1 EQU 1 GENERAL REGISTER 1 R2 EQU 2 GENERAL REGISTER 2 R3 EQU 3 GENERAL REGISTER 3 R4 EQU 4 GENERAL REGISTER 4 R5 EQU 5 GENERAL REGISTER 5 R6 EQU 6 GENERAL REGISTER 6 R7 EQU 7 GENERAL REGISTER 7 R8 EQU 8 GENERAL REGISTER 8 R9 EQU 9 GENERAL REGISTER 9 RA EQU 10 GENERAL REGISTER 10 RB EQU 11 GENERAL REGISTER 11 RC EQU 12 GENERAL REGISTER 12 RD EQU 13 GENERAL REGISTER 13 RE EQU 14 GENERAL REGISTER 14 RF EQU 15 GENERAL REGISTER 15 *=====================================================================* *======= HERE IS CONTROL CODE, NEVER CHANGE/MODIFY FROM HERE =========* *=====================================================================* MAINENTR CSECT , DEFINE CODE SECTION(CONTINUE) LTORG , USER LITERAL PLACE AT HERE *---------------------------------------------------------------------* * SNAPDUMP DATASET CONTAIN YOUR PROGRAM EXECUTION RESULT. * * 'GPR VALUES' INDICATES GENERAL REGISTERS 2 - 15 VALUE AT PROGRAM * * ENDED. GPR0 AND 1 USED BY SYSTEM CONTROL, SO YOU CANNOT USE THESE * * REGS FOR YOUR PROGRAM RESULT. 'STORAGE' CONTAIN YOUR PROGRAM * * MACHINE CODE AS YOU WRITTEN. * * WHEN YOUR PROGRAM HAS PROGRAM CHECK INTERRUPTION, CONTROL CODES * * INFORM 'PROGRAM ABENDED' MSG UPON CONSOLE AND YOUR JOBLOG. * *---------------------------------------------------------------------* ENDPROGM DS 0H USERCEND DS 0H USER CODE ENDED AT HERE STM 0,15,SNAPGPRS SAVE USER GPRS VALUE OPEN (SNAPDUMP,OUTPUT) OPEN SNAPDUMP DATASET LM 0,1,SNAPGPRS RELOAD USER GPR0-1 LM 14,15,SNAPGPRS+56 RELOAD USER GPR14-15 SNAP DCB=SNAPDUMP,PDATA=REGS, PRINT USER REGS AND STORAGE + STORAGE=(USERCODE,USERCEND-1) CLOSE (SNAPDUMP) CLOSE SNAPDUMP DATASET SVC 3 RETURN TO OS(END OF PROGRAM) SNAPDUMP DCB DDNAME=SNAPDUMP, DCB FOR SNAP DUMP DATASET + DSORG=PS,MACRF=W,RECFM=VBA,BLKSIZE=1632,LRECL=125 SPIEEXIT DS 0H USING EPIE,1 ADDRESS TO EPIE MVC SNAPGPRS+0(8),EPIEGR14 SAVE GPR14,15,0,1 AT ABENDED MVC SNAPGPRS+8(8),EPIEGR00 LH 0,EPIEINC1 LOAD INTERRUPT CODE L 1,EPIENXT1 LOAD ABENDED ADDRESS LA 1,0(,1) DROP AMODE BIT LR 15,0 EDIT INTERRUPT CODE TO TEXT LA 15,240(,15) I CH 0,=H'9' I BNH *+4+4 I SH 15,=H'57' V STC 15,SWTOLIST+28 SET INTERRUPT CODE IN MSG SLL 1,8 EDIT INTERRUPTED ADDRESS SRL 1,8 I SLR 1,12 V LR 0,1 SET INTERRUPT ADDR IN MSG LA 1,SWTOLIST+39 I BAS 14,CNVRTX4 V WTO MF=(E,SWTOLIST) INFORM PROGRAM ABENDED MSG LM 14,1,SNAPGPRS LOAD GPR14,15,0,1 AT ABENDED B USERCEND DO COMMON WAY CNVRTX4 DS 0H CONVERT GR0 TO HEX-DECIMAL LA 1,3(,1) I LA 15,4 I STC 0,0(,1) I NI 0(1),X'0F' I TR 0(1,1),CNVTRT4 I SRL 0,4 I BCTR 1,0 I BCT 15,*-2-4-6-4-4 I BR 14 V CNVTRT4 DC CL16'0123456789ABCDEF' SWTOLIST DS 0F WTO 'YOUR PROGRAM ABENDED(S0C0) OFFSET(X0000)',MF=L IHAEPIE , ESPIE EXIT PARAMETER AREA END // //