//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=* // 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.4 * * ===================================================== * * LIST UP PAGE AND SMF DATASETS. * * SIMULATE 'D ASM','D SMF' COMMAND. * *********************************************************************** MAINPROC DS 0H OPEN (SYSPRINT,OUTPUT) OPEN SYSPRINT DATASET SPACE , MVC TITLINE1(4),=CL4'PAGE' INDICATE PAGE DATASET SUMMARY PUT SYSPRINT,TITLINE1 PRINT TITLE LINE-1 PUT SYSPRINT,TITLIN2A PRINT TITLE LINE-2 PUT SYSPRINT,TITLINE3 PRINT TITLE LINE-3 SPACE , L R3,CVTPTR GR3 --> CVT USING CVT,R3 ADDRESS IT L R2,CVTASMVT-CVT(,R3) LOAD ASM VECTOR TABLE L R2,ASMPART-ASMVT(,R2) LOAD PAGE ACTIVITY REF.TABLE USING PART,R2 ADDRESS IT L R4,PARTSIZE LOAD NUM OF ENTRIES + (FROM IEASYSxx:PAGTOTL) L R5,PARTDSNL LOAD 1ST DSN ENTRY LA R2,PARTENTS LOCATE 1ST PART ENTRY USING PARTENTS,R2 ADDRESS IT PAGEDS DS 0H TM PAREFLG1,X'80' UNUSED ENTRY ? BO PAGENXT YES, IGNORE THIS ENTRY SPACE , LA R1,PGTYPE LOAD PAGE DS TYPE TABLE CLI 0(R1),0 TABLE END ? BE *+4+6+4+4+4 YES, CLC 0(1,R1),PARETYPE FIND PAGE DS TYPE BE *+4+4+4 I LA R1,LGTYPE(,R1) I B *-4-4-6-4-4 V MVC TYPE,1(R1) SET PAGE DS TYPE SPACE , L R1,PARESZSL LOAD TOTAL SLOT# CVD R1,DOUBLE CONVERT TO DECIMAL MVC SIZE,=XL8'4020202020202120' SET EDIT MASK BYTE ED SIZE,DOUBLE+4 EDIT BY ZZZZZZ9 S R1,PARESLTA GET USED SLOT# SLR R0,R0 CALCULATE USED% MH R1,=H'100' I D R0,PARESZSL I CVD R1,DOUBLE V MVC USED,=XL4'40202120' SET EDIT MASK BYTE ED USED,DOUBLE+6 EDIT BY ZZ9 SPACE , L R1,PAREUCBP LOAD UCB ADDRESS MVC VOL,UCBVOLI-UCBOB(R1) SET VOLUME NAME MVC DSN,0(R5) SET PAGE DATASET NAME PUT SYSPRINT,OUTLINE1 PRINT DSNAME DATA LINE PAGENXT DS 0H LA R5,44(,R5) LOCATE TO NEXT DSN ENTRY LA R2,96(,R2) LOCATE TO NEXT PART ENTRY BCT R4,PAGEDS LOOP FOR NEXT PAGE DATASET PUT SYSPRINT,BLANK PRINT BLANK LINE SPACE , MVC TITLINE1(4),=CL4'SMF' INDICATE PAGE DATASET SUMMARY PUT SYSPRINT,TITLINE1 PRINT TITLE LINE-1 PUT SYSPRINT,TITLIN2B PRINT TITLE LINE-2 PUT SYSPRINT,TITLINE3 PRINT TITLE LINE-3 SPACE , L R2,CVTSMCA LOAD SMF CNTL AREA USING SMCABASE,R2 ADDRESS IT ******** TM CVTOSLV5,CVTZOS_V1R9 Z/OS V1R9 OR ABOVE ? TM CVTOSLV5,X'10' Z/OS V1R9 OR ABOVE ? BNO USESMFDS NO, DOESN'T SUPPORT LOGSTREAM L R1,SMCASMCX LOAD SMCX ******** TM SMCXLSBT-SMCX(R1),SMCXLSDS USE LOGSTREAM ? TM X'58'(R1),X'80' USE LOGSTREAM ? BNO USESMFDS NO, LISTUP SMF DATASET PUT SYSPRINT,OUTLINE2 PRINT SMF DS NOT AVAILABLE B SMFDONE ABORT PROCESSING... USESMFDS DS 0H LA R4,SMCAFRDS LOAD 1ST DSN ENTRY SH R4,=H'4' SETUP FOR CHAIN LOOP SMFDS DS 0H L R4,4(,R4) LOAD NEXT RDS CHAIN CLI 16(R4),C'A' UNUSED ENTRY ? BL SMFNXT YES, IGNORE THIS ENTRY SPACE , LA R1,SMFSTAT LOAD SMF DS STATUS TABLE CLI 0(R1),0 TABLE END ? BE *+4+6+4+4+4 YES, CLC 0(1,R1),12(R4) FIND SMF DS STATUS BE *+4+4+4 I LA R1,LMFSTAT(,R1) I B *-4-4-6-4-4 V MVC STATE,1(R1) SET SMF DS STATUS SPACE , L R1,76(,R4) LOAD TOTAL BLOCK# CVD R1,DOUBLE CONVERT TO DECIMAL MVC SIZE,=XL8'4020202020202120' SET EDIT MASK BYTE ED SIZE,DOUBLE+4 EDIT BY ZZZZZZ9 L R1,80(,R4) GET USED BLOCK# SLR R0,R0 CALCULATE USED% MH R1,=H'100' I D R0,76(,R4) I CVD R1,DOUBLE V MVC USED,=XL4'40202120' SET EDIT MASK BYTE ED USED,DOUBLE+6 EDIT BY ZZ9 SPACE , MVC VOL,60(R4) SET VOLUME NAME MVC DSN,16(R4) SET SMF DATASET NAME PUT SYSPRINT,OUTLINE1 PRINT DSNAME DATA LINE SMFNXT DS 0H CL R4,SMCALRDS IS HERE LAST ENTRY ? BNE SMFDS NO, LOOP FOR NEXT SMF DATASET DROP R2 FORGET SMCA SMFDONE DS 0H PUT SYSPRINT,BLANK PRINT BLANK LINE SPACE , CLOSE (SYSPRINT) CLOSE SYSPRINT DATASET SPACE , * *----------------------------------* * * END OF PROCESSING * * *----------------------------------* SLR 15,15 LOAD RETURN CODE = 0 B EXITPROC DO EXIT PROCESSING EJECT , *********************************************************************** * DATA AREA * *********************************************************************** DS 0D *---------------------------------------------------------------------* DOUBLE DC D'0' DOUBLE WORD WORKAREA BLANK DC CL80' ' BLANK DATA PGTYPE DS 0H DC XL1'80',CL7'PLPA' LGTYPE EQU *-PGTYPE DC XL1'40',CL7'COMMON' DC XL1'20',CL7'DUPLEX' DC XL1'10',CL7'LOCAL' DC XL1'00',CL7'UNKNOWN' SMFSTAT DS 0H DC XL1'08',CL7'DUMPREQ' LMFSTAT EQU *-SMFSTAT DC XL1'04',CL7'ALTR' DC XL1'00',CL7'ACTIVE' * 0----+----1----+----2----+----3----+----4----+----5 TITLINE1 DC CL80'@@@@ DATASET SUMMARY' TITLIN2A DC CL80'TYPE USE% SLOTS VOLUME DSNAME' TITLIN2B DC CL80'STATUS USE% BLOCKS VOLUME DSNAME' TITLINE3 DC 80C'=' OUTLINE1 DC CL80'@@@@@@ 100% 999999 @@@@@@ @' TYPE EQU OUTLINE1+0,6 STATE EQU OUTLINE1+0,7 USED EQU OUTLINE1+7,4 SIZE EQU OUTLINE1+12,8 VOL EQU OUTLINE1+22,6 DSN EQU OUTLINE1+30,44 OUTLINE2 DC CL80'SMF RECORDING USE LOG-STREAM.' SPACE , SYSPRINT DCB DDNAME=SYSPRINT, DCB FOR SYSPRINT DATASET + DSORG=PS,MACRF=PM,RECFM=FB,BLKSIZE=0,LRECL=80 *---------------------------------------------------------------------* LTORG , LITERAL POOL AT HERE DROP , FORGET ALL BASE REGISTERS EJECT , *********************************************************************** * DATA AREA (OUTSIDE OUR BASE) * *********************************************************************** *---------------------------------------------------------------------* * LOCAL WORKAREA * *---------------------------------------------------------------------* *---------------------------------------------------------------------* * DSECTS * *---------------------------------------------------------------------* CVT DSECT=YES,LIST=YES CVT IEESMCA , SMF Control Block IEESMCX , SMF Control Block Extension IEFUCBOB PREFIX=YES UCB ILRASMVT , ASM Vector Table ******** ILRPART , PART PART DSECT , DC XL80'00' PART HEADER PARTSIZE EQU PART+4,4 PARTDSNL EQU PART+24,4 PARTENTS DC XL96'00' PART ENTRY PARETYPE EQU PARTENTS+8,1 PAREFLG1 EQU PARTENTS+9,1 PARESZSL EQU PARTENTS+16,4 PARESLTA EQU PARTENTS+20,4 PAREUCBP EQU PARTENTS+44,4 *---------------------------------------------------------------------* * 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 // //