//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-2' CHAPTER 5.3 * * ===================================================== * * SEARCH CATALOG(FIND SPECIFIC DATASET IN THE CATALOG) BY * * DFSMS CSI(CATALOG SEARCH INTERFACE). * *********************************************************************** MAINPROC DS 0H OPEN (SYSPRINT,OUTPUT) OPEN SYSPRINT DATASET PUT SYSPRINT,TITLINE1 PRINT TITLE LINE-1 PUT SYSPRINT,TITLINE2 PRINT TITLE LINE-2 SPACE , * *----------------------------------* * * SETUP CSI INTERFACE AREA * * *----------------------------------* USING CSIFIELD,CSISCF ENABLE TO MAP CSI SELECTION + CRITERIA FIELDS USING CSIRWORK,CSIWORKA ENABLE TO MAP CSI RETURN WAREA MVC CSIFILTK,DSN SET TARGET DSNAME MVI CSICLDI,C'Y' RETURN DATA/INDEX WHEN CLUSTER + NAME WAS MATCHED MVI CSIS1CAT,C'Y' SEARCH TARGET CATALOG ONLY MVC CSINUMEN,=H'2' SET NUM OF ITEM NAME LIST SPACE , * *----------------------------------* * * CALL CSI ROUTINE * * *----------------------------------* CALLCSI DS 0H LINK EP=IGGCSI00, CALL CSI ROUTINE + PARAM=(CSIERROR,CSISCF,CSIWORKA) LTR R2,RF SUCCEFFUL ? + (SAVE RETURN CODE INTO GR2) BNZ DONE NO, LA R2,8 INDICATE DATASET NOT FOUND TM CSICFLAG,CSINOENT DATASET NOT FOUND ? BO DONE YES, SPACE , * *----------------------------------* * * PRINT CATALOGUED VOLUME LIST * * *----------------------------------* LA R6,CSIEWORK LOCATE 1ST CATALOG ENTRY DATA USING CSIEWORK,R6 ADDRESS IT PRT1STVL DS 0H MVC OUTLINE(4),=CL4'DSN=' SET DSN INDICATOR MVC DSN,CSIENAME REP. DSN BY CATALOG ENTRY NAME LH R0,CSILENF1 LOAD VOLUME DATA LENGTH LTR R0,R0 RETURNED VOLUME NAME ? BNZ PRINTVOL YES, PRINT IT SPACE , MVC VOL,=CL6' ' CLEAR VOLUME NAME MVC DEV,=CL6' ' CLEAR DEVICE TYPE PUT SYSPRINT,OUTLINE PRINT DSN AND 1ST VOLUME B NEXTENT CHECK NEXT ENTRY IN RWORK SPACE , PRINTVOL DS 0H LA R4,CSIDATFD GR4 --> 1ST VOLUME ENTRY LH R3,CSILENF1 LOAD VOLUME NAME FIELD LENGTH LA R5,CSIDATFD(R3) GR5 --> 1ST DEVTYP ENTRY SLR R2,R2 CLEAR WORKREG D R2,=F'6' GR3 --> NUM OF VOLUMES MVC VOL,0(R4) MOVE VOLUME NAME ICM R0,B'1111',0(R5) LOAD DEVICE TYPE CODE LA R1,DEV BAS RE,CNVRTX CONVERT IT TO HEX-DECIMAL PUT SYSPRINT,OUTLINE PRINT DSN AND 1ST VOLUME BCTR R3,0 DECREMENT REMAINING VOLS LTR R3,R3 SINGLE VOLUME DATASET ? BNP NEXTENT YES, CHECK NEXT ENTRY IN RWORK SPACE , MVC OUTLINE(1),=C' ' MVC OUTLINE+1(47),OUTLINE CLEAR DSN FIELD LOOP DS 0H LA R4,6(,R4) LOCATE TO NEXT VOLUME ENTRY LA R5,4(,R5) LOCATE TO NEXT DEVTYP ENTRY MVC VOL,0(R4) MOVE VOLUME NAME ICM R0,B'1111',0(R5) LOAD DEVICE TYPE CODE LA R1,DEV BAS RE,CNVRTX CONVERT IT TO HEX-DECIMAL PUT SYSPRINT,OUTLINE PRINT DSN AND 1ST VOLUME BCT R3,LOOP LOOP UNTIL LAST VOLUME SPACE , NEXTENT DS 0H LH RF,CSITOTLN LOAD TOTAL DATA LENGTH LA R6,CSIEDATA(RF) LOCATE TO NEXT CATALOG ENTRY L RF,CSIUSDLN LOAD WORKAREA USED LENGTH LA R0,CSIWORKA(RF) LOAD END OF USED AREA CLR R6,R0 CHECKED ALL RETURNED DATA ? BL PRT1STVL NO, LOOP FOR NEXT ENTRY DATA SPACE , DONE DS 0H CLOSE (SYSPRINT) CLOSE SYSPRINT DATASET LR RF,R2 LOAD LOCATE RETURN CODE 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 * *********************************************************************** *---------------------------------------------------------------------* * CNVRTX - CONVERT BINARY TO HEX-DECIMAL TEXT (REGISTER TYPE) * * CALL INTERFACE - * * GR0: FULL-WORD BINARY VALUE * * GR1: 8BYTES OUTPUT-AREA ADDRESS * * BAS 14,CNVRTX * *---------------------------------------------------------------------* CNVRTX DS 0H CONVERT GR0 TO HEX-DECIMAL LA 1,7(,1) LA 15,8 STC 0,0(,1) NI 0(1),X'0F' TR 0(1,1),CNVTRT2 SRL 0,4 BCTR 1,0 BCT 15,*-2-4-6-4-4 BR 14 CNVTRT2 DC CL16'0123456789ABCDEF' TRANS TABLE FOR HEX-CHARACTER EJECT , *********************************************************************** * DATA AREA * *********************************************************************** DS 0D *---------------------------------------------------------------------* * *----------------------------------* * * MISCELLANEOUS * * *----------------------------------* * 0----+----1----+----2----+----3----+----4----+----5 TITLINE1 DC CL80'CATALOGUED VOLUME LIST(CSI VERSION)' TITLINE2 DC CL80'===================================================+ ===================' * 0----+----1----+----2----+----3----+----4----+----5 OUTLINE DC CL80'DSN=USR1.JCL V+ OL=XXXXXX(XXXXXXXX)' DSN EQU OUTLINE+4,44 VOL EQU OUTLINE+54,6 DEV EQU OUTLINE+61,8 SPACE , SYSPRINT DCB DDNAME=SYSPRINT, DCB FOR SYSPRINT DATASET + DSORG=PS,MACRF=PM,RECFM=FB,BLKSIZE=0,LRECL=80 SPACE , * *----------------------------------* * * CSI CALLING PARAMETERS * * * ============================== * * * CSI ADDRESS PLIST FORMAT * * * GR1 --> A(Reason Field) * * * A(Selection * * * Criteria Fields) * * * A(Return Area) * * *----------------------------------* CSIERROR DC F'0' CSI ERROR CODE CSIERMID EQU CSIERROR+0,2 (MODULE ID) CSIERRSN EQU CSIERROR+2,1 (REASON CODE) CSIERRTN EQU CSIERROR+3,1 (RETURN CODE) SPACE , CSISCF DS 0F DC (CSIENTS-CSIFIELD)C' ' CSI SELECTION CRITERIA FIELDS + (MAPPED BY IGGCSINA MACRO) DC CL8'VOLSER' (REQUIRE RTN VOLUME NAME) DC CL8'DEVTYP' (REQUIRE RTN DEVICE TYPE) SPACE , CSIWORKA DS 0F CSIWORKL EQU 1024 CSI WORKAREA(RETURN AREA) SIZE DC A(CSIWORKL) SIZE OF CSI WORKAREA DC (CSIWORKL-4)X'00' ROOM FOR CSI RETURN WORKAREA *---------------------------------------------------------------------* LTORG , LITERAL POOL AT HERE DROP , FORGET ALL BASE REGISTERS EJECT , *********************************************************************** * DATA AREA (OUTSIDE OUR BASE) * *********************************************************************** *---------------------------------------------------------------------* * LOCAL WORKAREA * *---------------------------------------------------------------------* *---------------------------------------------------------------------* * DSECTS * *---------------------------------------------------------------------* *********************************************************************** * CSI INPUT/OUTPUT PARAMETER AREA DSECT * *********************************************************************** COPY IGGCSINA CSI SELECTION CRITERIA FIELD CSIRWORK DSECT , CSI RETURN WORKAREA MAP CSIUSRLN DC A(0) (IN) PROVIDE SIZE OF CSIRWORK CSIREQLN DC A(0) (OT) REQUIRE SIZE OF CSIRWORK CSIUSDLN DC A(0) (OT) USED SIZE OF CSIRWORK CSINUMFD DC Y(0) (OT) NUM OF FIELD NAMES +1 *---------------------------------------------------------------------* CSICWORK DS 0C CSICFLAG DC XL1'00' (OT) RELATED CATALOG FLAGS CSINOENT EQU X'40' NO CATALOG ENTRY FOUND. CSICTYPE DC XL1'F0' (OT) RELATED CATALOG TYPE CSICNAME DC CL44' ' (OT) RELATED CATALOG NAME CSICRTRN DS 0XL4 (OT) RELATED CATALOG RETURN INFO CSICRETM DC AL2(0) (OT) (MODULE ID) CSICRETR DC AL1(0) (OT) (REASON CODE) CSICRETC DC AL1(0) (OT) (RETURN CODE) *---------------------------------------------------------------------* CSIEWORK DS 0C CSIEFLAG DC XL1'00' (OT) ENTRY FLAGS CSIENTER EQU X'40' INDICATE ERROR ON THIS FIELD CSIERDAT EQU X'20' RETURN ANY DATA ON THIS FIELD CSIETYPE DC CL1' ' (OT) ENTRY TYPE CSIENAME DC CL44' ' (OT) ENTRY NAME CSIEDATA DS 0C (OT) ENTRY FIELD DATA(VARIABLE) CSITOTLN DC AL2(0) (OT) FIELD DATA LENGTH DC AL2(0) *** RESERVED *** CSILENFD DS 0C (OT) RETURN FIELD LENGTH(VARIABLE) CSILENF1 DC AL2(0) (OT) (1ST FILED LENGTH) CSILENF2 DC AL2(0) (OT) (2ND FILED LENGTH) CSIDATFD DC 0C (OT) RETURN FIELD DATA(VARIABLE) CSIDATF1 EQU * (OT) (1ST FILED DATA) ORG CSIEDATA CSIERTRN DS 0XL4 (ER) ENTRY ERROR INFO CSIERETM DC AL2(0) (ER) (MODULE ID) CSIERETR DC AL1(0) (ER) (REASON CODE) CSIERETC DC AL1(0) (ER) (RETURN CODE) ORG , *---------------------------------------------------------------------* * 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 // //