//JOBNAME JOB (ACCT),NAME,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1), // USER=userid,PASSWORD=password //********************************************************************* //ASMCLG PROC N=TEMPNAM0,AOPT=,APARM=,LOPT=,NCAL=NCAL, // 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)') //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=* //* //LKD EXEC PGM=IEWL,COND=(5,LT,ASM), // PARM=('LIST,MAP,LET,XREF,&NCAL,&LOPT') //SYSPRINT DD SYSOUT=* //SYSLIN DD DSN=*.ASM.SYSLIN,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //SYSLMOD DD DISP=(,PASS),UNIT=SYSDA,SPACE=(TRK,(1,1,1)) //* //BLDCLST EXEC PGM=IEBGENER,COND=(5,LT,ASM) //SYSPRINT DD DUMMY //SYSUT2 DD DISP=(,PASS),DSN=&&CLIST(ISPFCMD), // UNIT=SYSDA,SPACE=(TRK,(1,1,1)), // DCB=(RECFM=FB,BLKSIZE=0,LRECL=80) //SYSIN DD DUMMY //* //ISPFRUN EXEC PGM=IKJEFT01,DYNAMNBR=256,COND=(5,LT,ASM) //SYSPROC DD DISP=(OLD,DELETE),DSN=&&CLIST //ISPPROF DD UNIT=SYSDA,SPACE=(TRK,(15,1,10)), // DCB=(RECFM=FB,BLKSIZE=6160,LRECL=80) //ISPLLIB DD DISP=SHR,DSN=ISP.SISPLOAD //ISPPLIB DD DISP=SHR,DSN=ISP.SISPPENU //ISPMLIB DD DISP=SHR,DSN=ISP.SISPMENU //ISPTLIB DD DISP=SHR,DSN=ISP.SISPTENU //ISPSLIB DD DISP=SHR,DSN=ISP.SISPSLIB // DD DISP=SHR,DSN=ISP.SISPSENU //SYSTSPRT DD SYSOUT=* //* //GO EXEC PGM=&N,COND=((5,LT,ASM),(0,NE,ISPFRUN)), // PARM=('') //STEPLIB DD DISP=SHR,DSN=*.LKD.SYSLMOD //ISPLOG DD DISP=(OLD,DELETE),DSN=ISPFJOB.&SYSUID..SPFLOG1.LIST //SYSUT1 DD DISP=(OLD,DELETE),DSN=ISPFJOB.&SYSUID..SPF1.LIST //SYSUT2 DD SYSOUT=* // PEND //********************************************************************* //MYASMPGM EXEC ASMCLG //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 * * ===================================================== * * INSERT VSAM TYPICAL ITEM INTO ISPF LMDLIST SERVICE LIST. * * RECFM --> VSAM DATASET TYPE(KSDS,ESDS,RRDS,LDS) * * LRECL --> MAXIMUM RECORD LENGTH * * BLKSZ --> CISIZE * * %USED --> HIGH-USED-RBA / HIGH-ALLOCATED-RBA * *********************************************************************** MAINPROC DS 0H IN USING IHADCB,SYSUT1 ADDRESS TO SYSUT1 DCB OT USING IHADCB,SYSUT2 ADDRESS TO SYSUT2 DCB OPEN (SYSUT1,INPUT) OPEN ISPF LIST DATASET MVC OT.DCBRECFM,IN.DCBRECFM COPY RECFM MVC OT.DCBLRECL,IN.DCBLRECL COPY LRECL MVC OT.DCBBLKSI,IN.DCBBLKSI COPY BLKSIZE OPEN (SYSUT2,OUTPUT) OPEN COPIED LIST DATASET SPACE , * *----------------------------------* * * SETUP CSI INTERFACE AREA * * * ============================== * * * - MAKE UP CSI SELECTION * * * CRITERIA FIELD * * * - LOAD CSI INTERFACE MODULE * * *----------------------------------* USING CSIFIELD,CSISCF ENABLE TO MAP CSI SELECTION + CRITERIA FIELDS MVC CSICATNM,BLANKS SET TARGET CATALOG NAME MVI CSIS1CAT,C'Y' SEARCH TARGET CATALOG ONLY MVC CSINUMEN,=H'5' SET NUM OF ITEM NAME LIST SPACE , LOAD EP=IGGCSI00 LOAD CSI SERVICE ROUTINE ST R0,ACSISERV SAVE ENTRY ADDRESS SPACE , *---------------------------------------------------------------------* * M A I N L I N E P R O C E S S I N G * *---------------------------------------------------------------------* * *----------------------------------* * * READ ISPF LIST DATASET(LMDLIST) * * *----------------------------------* READUT1 DS 0H GET SYSUT1 READ NEXT LIST RECORD LR R3,R1 GR3 --> LIST RECORD USING DLMDLIST,R3 ADDRESS IT CLC DORG,=CL4'VS' VSAM DATASET ? BNE WRITEUT2 NO, THROUGH IT CLC DVOL,=CL6'*VSAM*' VSAM CLUSTER ? BNE CALLCSI NO, CALL CSI TO OBTAIN VSAM + DATASET ATTRIBUTES MVI DLRECL+5,C' ' MVI DBLKSZ+5,C' ' ERASE '?' MARKER B WRITEUT2 PRINT IT SPACE , * *----------------------------------* * * CALL CSI ROUTINE * * *----------------------------------* USING CSIRWORK,CSIWORKA ADDRESS TO CSI RETURN WORKAREA CALLCSI DS 0H MVC CSIFILTK,DDSN SET CSI SEARCH FILTER KEY L RF,ACSISERV LOAD CSI ROUTINE ENTRY CALL (15),MF=(E,CSIPLIST) CALL IT C RF,HIGHCC HIGHEST RETURN CODE ? BNL *+4+4 NO, ST RF,HIGHCC YES, REPLACE IT LTR R2,RF SUCCESSFUL FUNCTION ? BNZ CSIERRET NO, INDICATE CSI ERROR RETURN TM CSIEFLAG,CSIENTER FIELD ERROR ? BO FLDERRET YES, INDICATE CSI ERROR RETURN + WITH CSI RETCD=0 B EDTVATTR NO, DO EDIT VSAM DS ATTRIBUTES SPACE , CSIERRET DS 0H L R0,CSIERROR LOAD CSI REASON CODE B EDTERCOD FLDERRET DS 0H ICM R0,B'1111',CSIERETN LOAD ERROR INFO CODE EDTERCOD DS 0H MVC DRECFM(23),=CL23'*CSI-ERROR=XX(XXXXXXXX)' LA R1,DOUBLE LOAD EDIT FIELD IN PRINT AREA BAS RE,CNVRTX CONVERT IT TO HEX-DECIMAL CHARS MVC DRECFM+14(8),DOUBLE SET CSI REASON CODE IN MSG LR R0,R2 LOAD CSI RETURN CODE LA R1,DOUBLE LOAD EDIT FIELD IN PRINT AREA BAS RE,CNVRTX CONVERT IT TO HEX-DECIMAL CHARS MVC DRECFM+11(2),DOUBLE+6 SET CSI RETURN CODE IN MSG B WRITEUT2 THROUGH LIST RECORD SPACE , * *----------------------------------* * * EDIT VSAM DATASET ATTRIBUTES * * *----------------------------------* EDTVATTR DS 0H CLI CSIETYPE,C'I' INDEX COMPONENT ? BNE SETRECFM NO, CHECK VSAM DATASET TYPE MVC DRECFM,=CL4'KSDS' YES, INDICATE KSDS B SETLRECL SETRECFM DS 0H MVC DRECFM,=CL4'KSDS' ASSUME KSDS TM CSIDATF1,X'80' KSDS ? BO *+4+6+4+4+6+4+4+6 YES, MVC DRECFM,=CL4'RRDS' ASSUME RRDS TM CSIDATF1,X'02' RRDS ? BO *+4+6+4+4+6 YES, MVC DRECFM,=CL4'LDS' ASSUME LDS TM CSIDATF1+1,X'04' LDS ? BO *+4+6 YES, MVC DRECFM,=CL4'ESDS' NO, SET ESDS SPACE , SETLRECL DS 0H ICM R0,B'1111',CSIDATF2+4 LOAD MAX.LRECL ******** ICM R0,B'1111',CSIDATF3 LOAD AVG.LRECL CVD R0,DOUBLE MAKE IT TO HUMAN READABLE MVC DLRECL,=XL6'402020202120' ED DLRECL,DOUBLE+5 SPACE , ICM R0,B'1111',CSIDATF2+0 LOAD CI SIZE CVD R0,DOUBLE MAKE IT TO HUMAN READABLE MVC DBLKSZ,=XL6'402020202120' ED DBLKSZ,DOUBLE+5 SPACE , SLR R0,R0 CLEAR WORKREG ICM R1,B'1111',CSIDATF5 LOAD USED RBA M R0,=F'100' ICM RF,B'1111',CSIDATF4 LOAD HIGH RBA DR R0,RF CVD R1,DOUBLE MAKE IT TO HUMAN READABLE MVC DUSED,=XL4'40202120' ED DUSED,DOUBLE+6 SPACE , * *----------------------------------* * * PRINT LIST RECORD * * *----------------------------------* WRITEUT2 DS 0H PUT SYSUT2,(3) WRITE NEXT LIST RECORD B READUT1 LOOP UNTIL SYSUT1 E.O.D SPACE , *---------------------------------------------------------------------* * E N D O F P R O C E S S I N G * *---------------------------------------------------------------------* EODUT1 DS 0H * *----------------------------------* * * CLEAN-UP USED RESOURCES * * *----------------------------------* CLOSE (SYSUT1,,SYSUT2) CLOSE LIST DATASET FREEPOOL SYSUT1 RELEASE QSAM BUFFER POOL FREEPOOL SYSUT2 RELEASE QSAM BUFFER POOL L RF,HIGHCC LOAD HIGHEST 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 * * *----------------------------------* DOUBLE DC D'0' DOUBLE WORD WORKAREA HIGHCC DC F'0' HIGHEST COMPLETION CODE BLANKS DC CL121' ' BLANK CONSTANT SYSUT1 DCB DDNAME=SYSUT1, DCB FOR SYSUT2 DATASET + DSORG=PS,MACRF=GL,EODAD=EODUT1 SYSUT2 DCB DDNAME=SYSUT2, DCB FOR SYSUT2 DATASET + DSORG=PS,MACRF=PM SPACE , * *----------------------------------* * * CSI CALLING PARAMETERS * * * ============================== * * * CSI ADDRESS PLIST FORMAT * * * GR1 --> A(Reason Field) * * * A(Selection * * * Criteria Fields) * * * A(Return Area) * * *----------------------------------* ACSISERV DC A(0) ENTRY OF CSI SERVICE ROUTINE CSIPLIST CALL ,(CSIERROR, CSI SERVICE CALLING PLIST + CSISCF, + CSIWORKA),MF=L SPACE , 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'VSAMTYPE' (REQUIRE RTN VSAM DS TYPE) DC CL8'AMDCIREC' (REQUIRE RTN CI AND MAX LRECL) DC CL8'LRECL' (REQUIRE RTN AVG LRECL) DC CL8'HARBADS' (REQUIRE RTN HIGH ALLOCED RBA) DC CL8'HURBADS' (REQUIRE RTN HIGH USED RBA) *---------------------------------------------------------------------* LTORG , LITERAL POOL AT HERE DROP , FORGET ALL BASE REGISTERS EJECT , *********************************************************************** * DATA AREA (OUTSIDE OUR BASE) * *********************************************************************** CSIWORKA DS 0F CSI RETURN WORKAREA(1024BYTES) DC F'1024' DC 1020X'00' *---------------------------------------------------------------------* * LOCAL WORKAREA * *---------------------------------------------------------------------* *********************************************************************** * ISPF/LMDLIST SERVICE OUTPUT RECORD LAYOUT (z/OS V2R3) * *********************************************************************** DLMDLIST DSECT , DC CL1' ' ANSI CODE DC CL1' ' DDSN DC CL44' ' DSNAME DC CL3' ' ZOSv23 DVOL DC CL6' ' VOLUME DC CL3' ' DORG DC CL4' ' DSORG DC CL2' ' DRECFM DC CL4' ' DSORG DC CL2' ' DLRECL DC CL6' ' LRECL(=X'402020202120') DC CL1' ' ZOSv23 DBLKSZ DC CL6' ' BLKSIZE(=X'402020202120') DC CL6' ' ZOSv23 DTRKS DC CL7' ' ALLOCATED TRACKS(=X'40202020202120') DC CL1' ' ZOSv23 DUSED DC CL4' ' %USED(=X'40202120') DC CL3' ' ZOSv23 DXTNT DC CL4' ' #EXTENT(=X'40202120') DC CL3' ' DCRDATE DC CL10'YYYY/MM/DD' DC CL2' ' LLMDLIST EQU *-DLMDLIST (LENGTH OF LIST RECORD) *---------------------------------------------------------------------* * 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) CSILENF3 DC AL2(0) (OT) (3RD FILED LENGTH) CSILENF4 DC AL2(0) (OT) (4TH FILED LENGTH) CSILENF5 DC AL2(0) (OT) (5TH FILED LENGTH) CSIDATFD DC 0C (OT) RETURN FIELD DATA(VARIABLE) CSIDATF1 DC XL2'00' (OT) (1ST FILED DATA) CSIDATF2 DC AL4(0) (OT) (2ND FILED DATA-1) DC AL4(0) (OT) (2ND FILED DATA-2) CSIDATF3 DC AL4(0) (OT) (3RD FILED DATA) CSIDATF4 DC AL4(0) (OT) (4TH FILED DATA) CSIDATF5 DC AL4(0) (OT) (5TH FILED DATA) ORG CSIEDATA CSIERETN 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 , *---------------------------------------------------------------------* DCBD DEVD=DA,DSORG=QS QSAM DCB *---------------------------------------------------------------------* * 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 //* //BLDCLST.SYSUT1 DD *,DLM='++' /* CLIST FOR ISPF BATCH SESSION */ /* PRINT DS LIST */ ISPEXEC LMDINIT LISTID(LID) LEVEL(MY) ISPEXEC LMDLIST LISTID(&LID) OPTION(SAVE) STATS(YES) ISPEXEC LMDFREE LISTID(&LID) END //* //ISPFRUN.SYSTSIN DD * PROFILE PREFIX(ISPFJOB) /* AVOID ISPF-LOG ENQ CONTENTION */ ISPSTART CMD(%ISPFCMD) /* ISPF EXECUTION COMMANDS CLIST */ // //