//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=* // 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.1 * * ===================================================== * * READ AND DUMP IPL INFORMATION AREA(IEAIPA). * *********************************************************************** OPEN (SYSPRINT,OUTPUT) OPEN SYSPRINT DATASET PUT SYSPRINT,TITLINE1 PRINT TITLE LINE-1 PUT SYSPRINT,TITLINE2 PRINT TITLE LINE-2 SPACE , L R1,CVTPTR LOAD CVT L R1,CVTECVT-CVT(,R1) LOAD ECVT L R2,ECVTIPA-ECVT(,R1) LOAD IPA USING IPA,R2 ADDRESS IT SPACE , STCKCONV STCKVAL=IPAILTOD, CONVERT TOD TO READABLE FORMAT + CONVVAL=PACKDTOD, + TIMETYPE=DEC,DATETYPE=YYYYMMDD L R0,PACKDTOD+8 LOAD DATE VALUE L R1,PACKDTOD+0 LOAD TIME VALUE STM R0,R1,PACKDTOD MOVE IT OI PACKDTOD+7,X'0F' CORRECT SIGN BIT UNPK IPLTIME,PACKDTOD(8) SET IPLED TIME MVC LOADPARM,IPALPARM SET LOADPARM VALUE PUT SYSPRINT,OUTLINE1 PRINT OUTLINE-1 SPACE , MVC IPLDEV,IPALPDDV SET IPLPARM DEVICE NUMBER MVC IPLDSN,IPALPDSN SET IPLPARM DSN PUT SYSPRINT,OUTLINE2 PRINT OUTLINE-2 SPACE , MVC IODFHLQ,IPAIOHLQ SET IODF HLQ MVC IODFLLQ,IPAIOSUF SET IODF SUFFIX(IODFxx) PUT SYSPRINT,OUTLINE3 PRINT OUTLINE-3 SPACE , MVC MCATVOL,IPASCVOL SET MASTER CATALOG VOLSER MVC MCATDSN,IPASCDSN SET MASTER CATALOG DSN PUT SYSPRINT,OUTLINE4 PRINT OUTLINE-4 SPACE , MVC IEASYS,IPASPSUF SET IEASYSxx SUFFIX MVC IEASYM,IPASYSUF SET IEASYMxx SUFFIX PUT SYSPRINT,OUTLINE5 PRINT OUTLINE-5 SPACE , LH R3,IPAPLNUMX LOAD NUM OF PARMLIBS L R4,IPAPLIB@ LOAD 1ST PARMLIB ENTRY USING IPAPLI,R4 ADDRESS IT LA RA,1 INIT PARMLIB SEQ NUMBER PARMLIB DS 0H CVD RA,PACKDTOD CONVERT SEQ NO. TO DECIMAL UNPK PARMSEQ,PACKDTOD(8) CONVERT IT TO ZONE DECIMAL OI PARMSEQ+2,X'F0' MAKE IT TO HUMAN READABLE TM IPAPLIFLG,IPAPLILCF+IPAPLIMNF+IPAPLIOPF UNUSED ? BZ *+4+6 NO, MVC PARMSEQ,=CL3'ERR' INDICATE PARMLIB ERROR MVC PARMVOL,IPAPLIVOL SET PARMLIB VOLSER MVC PARMDSN,IPAPLIDSN SET PARMLIB DSN LA R4,IPAPLI_LEN(,R4) LOCATE TO NEXT PARMLIB ENTRY PUT SYSPRINT,OUTLINE6 PRINT OUTLINE-6 LA RA,1(,RA) INCREMENT SEQ NUMBER BCT R3,PARMLIB LOOP FOR NEXT PARMLIB SPACE , CLOSE (SYSPRINT) CLOSE SYSPRINT DATASET SPACE , LR R3,R2 DUMP IPA AREA AH R3,IPALEN SET IPA ENDING ADDRESS BCTR R3,0 CORRECT IT OPEN (SNAPDUMP,OUTPUT) OPEN SNAPDUMP DATASET SNAP DCB=SNAPDUMP, PRINT STORAGE AREA + STORAGE=((2),(3)) CLOSE (SNAPDUMP) CLOSE SNAPDUMP DATASET *---------------------------------------------------------------------* B ENDPROGM GO TO EPILOGUE PROCEDURE USERDATA DS 0D USER DATA AREA START AT HERE *---------------------------------------------------------------------* PACKDTOD DC XL16'00' CONVERTED TOD VALUE * 0----+----1----+----2----+----3----+----4----+----5 TITLINE1 DC CL80'IPA(INITIALIZATION PARAMETER AREA) SUMMARY' TITLINE2 DC CL80'===================================================+ ====' * 0----+----1----+----2----+----3----+----4----+----5 OUTLINE1 DC CL80'IPL TIME=@@@@@@@@@@@@@@@, LOADPARM=@@@@@@@@' IPLTIME EQU OUTLINE1+9,15 LOADPARM EQU OUTLINE1+35,8 OUTLINE2 DC CL80'IPL LOADxx MEMBER: DEVICE=@@@@, DSN=@' IPLDEV EQU OUTLINE2+26,4 IPLDSN EQU OUTLINE2+36,44 OUTLINE3 DC CL80'IODF HLQ=@@@@@@@@ SUFFIX=@@' IODFHLQ EQU OUTLINE3+9,8 IODFLLQ EQU OUTLINE3+25,2 OUTLINE4 DC CL80'MASTER CATALOG VOL=@@@@@@, DSN=@' MCATVOL EQU OUTLINE4+19,6 MCATDSN EQU OUTLINE4+31,44 OUTLINE5 DC CL80'USE SYSTEM PARAMETER IEASYS@@ AND IEASYM@@ FROM PAR+ MLIB' IEASYS EQU OUTLINE5+27,2 IEASYM EQU OUTLINE5+40,2 OUTLINE6 DC CL80'SEQ=@@@ VOL=@@@@@@ DSN=@' PARMSEQ EQU OUTLINE6+4,3 PARMVOL EQU OUTLINE6+12,6 PARMDSN EQU OUTLINE6+23,44 SPACE , SYSPRINT DCB DDNAME=SYSPRINT, DCB FOR SYSPRINT DATASET + DSORG=PS,MACRF=PM,RECFM=FB,BLKSIZE=0,LRECL=80 *---------------------------------------------------------------------* CVT DSECT=YES,LIST=YES CVT IHAECVT DSECT=YES,LIST=YES ECVT IHAIPA , Initialization Parameter Area *---------------------------------------------------------------------* * 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 // //