CVAFFEXP TITLE 'CVAF CVAFFILT EXAMPLE'
CVAFFEXP CSECT
CVAFFEXP AMODE 24
CVAFFEXP RMODE 24
*
***********************************************************************
* *
* CVAFFEXP - CVAFFILT EXAMPLE *
* *
* *
* CVAFFILT EXAMPLE TO BE USED IN DFSMS ADVANCED SERVICES MANUAL *
* *
* CVAFFILT MACRO RUN IN AMODE24/RMODE24 *
* *
* CVAFFILT TEST DSN'S / PROCESSING USED: *
* *
* 1) 2 SEQUENTIAL DATASETS WITH 5 EXTENTS. (1 FMT1/1 FMT3 EACH) *
* DSCBS RETURNED WILL BE COMBINED TO TOTAL 2 FMT1 / 2 FMT3'S *
* DSN: CVAFFLT1.DATA01 *
* DSN: CVAFFLT1.DATA02 *
* CREATE ON THE VOLUME ASSOCIATED WITH THE CVAFDD DD *
* *
* 2) PDSE DATASET WITH 122 EXTENTS. (1 FMT1/10 FMT3'S) *
* DSN: CVAFFLT1.PDSE01 *
* CREATE ON THE VOLUME ASSOCIATED WITH THE CVAFDD DD *
* *
* 3) 1 SEQUENTIAL DATASET WITH 5 EXTENTS (1 FMT1/1 FMT3) *
* DSN: CVAFFLT1.DATA01 *
* CREATE ON THE VOLUME ASSOCIATED WITH THE CVAFDD DD *
* *
* 4) RETURN DSCB COUNT FOR ENTIRE VOLUME USING CVAFFILT RESUME *
* PROCESING. *
* DSN'S ON THE VOLUME: (IN SEQUENCE ORDER) *
* SYS1.VTOCIX.V39L62 (VTOC INDEX - 1 FMT1) *
* CVAFFLT1.DATA01 (5 EXTENTS - 1 FMT1/1 FMT3) *
* CVAFFLT1.DATA02 (5 EXTENTS - 1 FMT1/1 FMT3) *
* CVAFFLT1.PDSE01 (122 EXTENTS - 1 FMT1/10 FMT3'S) *
* DSN'S CREATED ON THE VOLUME ASSOCIATED WITH THE CVAFDD DD *
* *
* *
* OUTPUT IN OUTDD DATASET SHOULD BE THE FOLLOWING: *
*---------------------------------------------------------------------*
* *
* *
* CVAFFEXP START OF OUTPUT MESSAGES *
* *
* RC00 VERIFIED - THE REQUEST WAS SUCCESSFUL *
* CVAFFILT RETURNED THE FOLLOWING DSCBS FOR DSN: CVAFFLT1.DATA01 *
* AND FOR DSN: CVAFFLT1.DATA02 *
* NUMBER OF FORMAT 1 DSCBS - 0000002 *
* NUMBER OF FORMAT 3 DSCBS - 0000002 *
* *
* RC00 VERIFIED - THE REQUEST WAS SUCCESSFUL *
* CVAFFILT RETURNED THE FOLLOWING DSCBS FOR DSN: CVAFFLT1.PDSE01 *
* NUMBER OF FORMAT 1 DSCBS - 0000001 *
* NUMBER OF FORMAT 3 DSCBS - 0000010 *
* *
* RC00 VERIFIED - THE REQUEST WAS SUCCESSFUL *
* CVAFFILT RETURNED THE FOLLOWING DSCBS FOR DSN: CVAFFLT1.DATA01 *
* NUMBER OF FORMAT 1 DSCBS - 0000001 *
* NUMBER OF FORMAT 3 DSCBS - 0000001 *
* *
* RC04 VERIFIED - CVSTAT 064 RESUME IS NECESSARY *
* CVAFFILT (INITIAL) RETURNED THE FOLLOWING DSCBS FOR THE VOLUME: *
* NUMBER OF FORMAT 1 DSCBS - 0000003 *
* NUMBER OF FORMAT 3 DSCBS - 0000002 *
* CVAFFILT (RESUME) RETURNED THE FOLLOWING DSCBS FOR THE VOLUME: *
* NUMBER OF FORMAT 1 DSCBS - 0000001 *
* NUMBER OF FORMAT 3 DSCBS - 0000010 *
* CVAFFILT RESUME OPERATION COMPLETE - ALL DSCBS RETURNED *
* *
* CVAFFEXP END OF OUTPUT MESSAGES *
* *
* *
*---------------------------------------------------------------------*
* *
* NOTE: THE NUMBER OF DSCBS RETURNED WILL VARY IF THE DATASET DOES *
* NOT EXIST ON THE VOLUME OF IF THE DATASET EXTENT IS NOT AS *
* LISTED ABOVE OR IF THERE IS NO VTOC INDEX ON THE VOLUME. *
* *
* NOTE: WHEN CREATING A PDSE ON A SMS MANAGED VOLUME A VVDS *
* WILL ALSO BE CREATED AND THE FMT1 COUNT WILL BE *
* INCREASED BY ONE. *
* *
* *
***********************************************************************
*
***********************************************************************
* *
* CVAFFEXP - LOGIC NOTES *
* *
* THIS EXAMPLE WILL PERFORM THE FOLLOWING: *
* *
* INITIALIZATION *
* - OBTAIN THE NECESSARY INFORMATION FROM THE DASD VOLUME *
* - OPEN AN OUTPUT FILE AND WRITE THE NECESSARY OUTPUT MESSAGES *
* - INITIALIZE THE NECESSARY BUFFER LIST FOR CVAFFILT *
* *
* MAINLINE *
* - INITIALIZE A FCL TO READ FOR TWO SPECIFIC SEQ DATASETS *
* - ISSUE CVAFFILT READ TO READ THE DSCBS FOR THE TWO DATASETS *
* - CHECK THE RETURN CODE AND CVSTAT CODE FROM CVAFFILT *
* - COUNT THE NUMBER OF FMT1 AND FMT3 DSCBS FOR THE REQUEST *
* - FORMAT THE DSCB COUNTS AND WRITE TO THE OUTPUT DATASET *
* - ISSUE CVAFFILT RLSE TO RELEASE THE WORK AREAS USED *
* *
* - INITIALIZE A FCL TO READ FOR ONE SPECIFIC PDSE DATASET *
* - ISSUE CVAFFILT READ TO READ THE DSCBS FOR THE PDSE DATASET *
* - CHECK THE RETURN CODE AND CVSTAT CODE FROM CVAFFILT *
* - COUNT THE NUMBER OF FMT1 AND FMT3 DSCBS FOR THE REQUEST *
* - FORMAT THE DSCB COUNTS AND WRITE TO THE OUTPUT DATASET *
* - ISSUE CVAFFILT RLSE TO RELEASE THE WORK AREAS USED *
* *
* - INITIALIZE A FCL TO READ FOR ONE SPECIFIC SEQ DATASET *
* - ISSUE CVAFFILT READ TO READ THE DSCBS FOR THE ONE DATASET *
* - CHECK THE RETURN CODE AND CVSTAT CODE FROM CVAFFILT *
* - COUNT THE NUMBER OF FMT1 AND FMT3 DSCBS FOR THE REQUEST *
* - FORMAT THE DSCB COUNTS AND WRITE TO THE OUTPUT DATASET *
* - ISSUE CVAFFILT RLSE TO RELEASE THE WORK AREAS USED *
* *
* - INITIALIZE A FCL TO READ THE DSCBS ON THE ENTIRE VOLUME *
* - ISSUE CVAFFILT READ TO READ THE DSCBS FOR THE VOLUME *
* - CHECK THE RETURN CODE AND CVSTAT CODE FROM CVAFFILT *
* - PROCESS ALL DSCBS USING CVAFFILT RESUME AS NECESSARY *
* - COUNT THE NUMBER OF FMT1 AND FMT3 DSCBS FOR THE REQUEST *
* - FORMAT THE DSCB COUNTS AND WRITE TO THE OUTPUT DATASET *
* - ISSUE CVAFFILT RLSE TO RELEASE THE WORK AREAS USED *
* *
* FINALIZATION *
* - CLOSE THE OUTPUT FILE *
* - EXIT *
* *
* *
* CVAFFEXP - JOB INFORMATION *
* *
* NORMAL END OF JOB: *
* - RC=00 AND OUTDD OUTPUT AS DETAILED ABOVE *
* *
* *
* ABNORMAL END OF JOB: *
* - ABEND 100 - ERROR OPENING VTOC ON THE DASD VOLUME THAT IS *
* ASSOCIATED WITH THE CVAFDD DD STATEMENT *
* - ABEND 101 - ERROR OPENING THE OUTDD DATASET *
* - ABEND 102 - ERROR CLOSING THE OUTDD DATASET *
* *
* *
* DASD VOLUMES USED IN THIS EXAMPLE: *
* - 339L61 - 3390 WHERE OUTDD DATASET IS DEFINED *
* - 339L62 - 3390 WHERE TEST DATASETS DETAILED ABOVE ARE DEFINED *
* *
* *
***********************************************************************
*
***********************************************************************
* *
* HOUSEKEEPING *
* - SAVE CALLER'S REGISTERS AND ESTABLISH A NEW REGISTER SAVE AREA *
* *
***********************************************************************
*
STM R14,R12,12(R13) STANDARD LINKAGE CONVENTION
BALR R11,0 DCL R11 AS IMPLIED BASE REG
USING BASE,R11,R12 R12 IS ALSO BASE REG
BASE L R12,BASEADDR SET UP ADDRESSING FOR R12
B CVAFFL00 BRANCH AROUND DECLARES
BASEADDR DC A(BASE+4096) ADDRESSING FOR R12
CVAFFL00 DS 0H CONTINUE...
ST R13,SAVE+4 SAVE PTR TO CALLER'S SAVE AREA
LA R14,SAVE GET ADDRESS OF THE NEW SAVE AREA
ST R14,8(,R13) CHAIN CALLER'S AREA TO OURS
LR R13,R14 ESTABLISH THE NEW SAVE AREA
*
***********************************************************************
* *
* INITIALIZATION *
* *
***********************************************************************
*
INITIAL DS 0H INITIALIZATION SECTION
BAL R14,IDVOLRTN INVOKE RTN TO IDENTIFY THE VOLUME(S)
BAL R14,OPENRTN INVOKE OPEN OUTPUT DATASET RTN
MVC PDETLINE(133),STRTMSG MOVE START MSG TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
MVC PDETLINE(133),BLNKLNE MOVE BLANK LINE TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
BAL R14,BUFLRTN INVOKE RTN TO INIT BUFFER LIST (H/E)
*
***********************************************************************
* *
* MAINLINE *
* *
***********************************************************************
*
MAINLINE DS 0H MAINLINE SECTION
MVI DSNNBR,X'02' SET DSNNBR FLAG TO TWO
BAL R14,FCL1RTN INVOKE RTN TO INIT FCL (DS01/DS02)
BAL R14,CVAFRD2 INVOKE CVAFFILT READ RTN 2
BAL R14,TSTRCRTN INVOKE TEST RC RTN
L R15,RETCODE LOAD R15 WITH RETURN CODE
CH R15,RCODE00 IS RC = 0
BNE MAIN0010 NO - DO NOT FORMAT/PRINT LINES
MVC DS(44),DS01 ELSE MOVE DSN FOR DS01 TO MSG LINE
MVC PDETLINE(133),DSCBMSGA MOVE MSG TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
MVC DS2(44),DS02 MOVE DSN FOR DS02 TO MSG LINE
MVC PDETLINE(133),DSCBMSGB MOVE MSG TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
BAL R14,FMTOPRTN INVOKE FORMAT OUTPUT MSG RTN
B MAIN0020 BRANCH TO MAIN0020
MAIN0010 DS 0H CVAFFILT - CVSTAT LOGICAL ERROR
MVC DS3(44),DS01 MOVE DSN FOR DS01 TO MSG LINE
MVC PDETLINE(133),DSCBMSGC MOVE MSG TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
MVC DS3(44),DS02 MOVE DSN FOR DS02 TO MSG LINE
MVC PDETLINE(133),DSCBMSGC MOVE MSG TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
MAIN0020 DS 0H
MVC PDETLINE(133),BLNKLNE MOVE BLANK LINE TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
BAL R14,CVAFRL INVOKE CVAFFILT RELEASE RTN
MVI DSNNBR,X'01' SET DSNNBR FLAG TO ONE
BAL R14,FCL2RTN INVOKE RTN TO INIT FCL (DS03)
BAL R14,CVAFRD1 INVOKE CVAFFILT READ RTN 1
BAL R14,TSTRCRTN INVOKE TEST RC RTN
L R15,RETCODE LOAD R15 WITH RETURN CODE
CH R15,RCODE00 IS RC = 0
BNE MAIN0030 NO - DO NOT FORMAT/PRINT LINES
MVC DS(44),DS03 ELSE MOVE DSN FOR DS03 TO MSG LINE
MVC PDETLINE(133),DSCBMSGA MOVE MSG TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
BAL R14,FMTOPRTN INVOKE FORMAT OUTPUT MSG RTN
B MAIN0040 BRANCH TO MAIN0040
MAIN0030 DS 0H CVAFFILT - CVSTAT LOGICAL ERROR
MVC DS3(44),DS03 MOVE DSN FOR DS03 TO MSG LINE
MVC PDETLINE(133),DSCBMSGC MOVE MSG TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
MAIN0040 DS 0H
MVC PDETLINE(133),BLNKLNE MOVE BLANK LINE TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
BAL R14,CVAFRL INVOKE CVAFFILT RELEASE RTN
BAL R14,FCL3RTN INVOKE RTN TO INIT FCL (DS01)
BAL R14,CVAFRD1 INVOKE CVAFFILT READ RTN
BAL R14,TSTRCRTN INVOKE TEST RC RTN
L R15,RETCODE LOAD R15 WITH RETURN CODE
CH R15,RCODE00 IS RC = 0
BNE MAIN0050 NO - DO NOT FORMAT/PRINT LINES
MVC DS(44),DS01 ELSE MOVE DSN FOR DS01 TO MSG LINE
MVC PDETLINE(133),DSCBMSGA MOVE MSG TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
BAL R14,FMTOPRTN INVOKE FORMAT OUTPUT MSG RTN
B MAIN0060 BRANCH TO MAIN0060
MAIN0050 DS 0H CVAFFILT - CVSTAT LOGICAL ERROR
MVC DS3(44),DS01 MOVE DSN FOR DS01 TO MSG LINE
MVC PDETLINE(133),DSCBMSGC MOVE MSG TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
MAIN0060 DS 0H
MVC PDETLINE(133),BLNKLNE MOVE BLANK LINE TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
BAL R14,CVAFRL INVOKE CVAFFILT RELEASE RTN
BAL R14,FCL4RTN INVOKE RTN TO INIT FCL (ENTIRE VOL)
BAL R14,CVAFRDA INVOKE CVAFFILT READ RTN (FOR RESUME)
LA R9,CVPLDEFA ESTABLISH ADDRESSABILITY
USING CVPLMAP,R9 TO THE CVPL (FOR CVSTAT)
BAL R14,TSTRCRTN INVOKE TEST RC RTN
*
***********************************************************************
* *
* FINALIZATION *
* *
***********************************************************************
*
FINAL DS 0H FINALIZATION SECTION
MVC PDETLINE(133),BLNKLNE MOVE BLANK LINE TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
MVC PDETLINE(133),ENDMSG MOVE END MSG TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
BAL R14,CLOSERTN INVOKE CLOSE OUTPUT DATASET RTN
L R13,4(R13) RESTORE REGISTER
LM R14,R12,12(R13) RESTORE CALLERS REGISTERS
LA R15,0 SET RC TO 0
BR R14 RETURN TO CALLER
*
***********************************************************************
* OPENRTN *
* - ROUTINE TO OPEN OUTPUT FILE USED BY THIS MODULE *
***********************************************************************
*
OPENRTN DS 0H OPEN FILES ROUTINE
ST R14,OPENSAVE STORE C(R14) INTO SAVE AREA
OPEN (OUTFILE,(OUTPUT)) OPEN THE OUTDD OUTPUT FILE FOR MSGS
TM OUTFILE+(DCBOFLGS-IHADCB),DCBOFOPN IS FILE OPEN?
BO OPENEXIT FILE OPEN OK - EXIT OPEN RTN
LA R1,EABN101 OUTPUT FILE NOT OPEN-USER ABEND 101
BAL R14,ABENDRTN INVOKE ABEND ROUTINE
OPENEXIT DS 0H EXIT FROM OPEN ROUTINE
L R14,OPENSAVE LOAD C(OPENSAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* CLOSERTN *
* - ROUTINE TO CLOSE OUTPUT FILE USED BY THIS MODULE *
***********************************************************************
*
CLOSERTN DS 0H CLOSE FILES ROUTINE
ST R14,CLOSSAVE STORE C(R14) INTO SAVE AREA
CLOSE (OUTFILE) CLOSE OUTPUT FILE
LTR R15,R15 CHECK IF CLOSED OK
BZ CLOSEXIT IF OK BRANCH TO CLOSEXIT
LA R1,EABN102 ELSE SETUP FOR USER ABEND 102
BAL R14,ABENDRTN INVOKE ABEND ROUTINE
CLOSEXIT DS 0H EXIT FROM CLOSE ROUTINE
L R14,CLOSSAVE LOAD C(CLOSSAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* ABENDRTN *
* - FORCE AN ABEND ROUTINE *
***********************************************************************
*
ABENDRTN DS 0H ABEND ROUTINE
ST R14,ABENSAVE STORE C(R14) INTO SAVE AREA
ABEND (R1),DUMP ISSUE USER ABEND WITH DUMP
ABENEXIT DS 0H EXIT FROM ABEND ROUTINE
L R14,ABENSAVE LOAD C(ABENSAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* IDVOLRTN *
* - OBTAIN THE NECESSARY INFORMATION FROM THE DASD VOLUME *
***********************************************************************
*
IDVOLRTN DS 0H IDENTIFY VOLUME ROUTINE
ST R14,IDVLSAVE STORE C(R14) INTO SAVE AREA
RDJFCB (VTOCDCB,(INPUT)) READ JFCB / OPEN VTOC
MVI JFCB1,X'04' PUT IN ID FOR FORMAT 4
MVC JFCB1+1(43),JFCB1 SETUP FOR VTOC OPEN
OPEN (VTOCDCB,(INPUT)),TYPE=J OPEN VTOC (OPEN TYPE=J)
TM VTOCDCB+(DCBOFLGS-IHADCB),DCBOFOPN
BO IDVOL010 BRANCH TO IDVOL010 - GOOD OPEN
LA R1,EABN100 ELSE SETUP FOR USER ABEND 100
BAL R14,ABENDRTN INVOKE ABEND ROUTINE
IDVOL010 DS 0H GOOD OPEN - OBTAIN VOLUME INFORMATION
SLR RDEB,RDEB INIT REG1 FOR DEB PTR
SLR RUCB,RUCB INIT REG2 FOR UCB PTR
ICM RDEB,B'0111',VTOCDCB+(DCBDEBA-IHADCB) GET DEB ADDRESS
ST RDEB,DEBADD SAVE DEB ADDRESS INTO R1
ICM RUCB,B'0111',(DEBBASND-DEBBASIC)+(DEBUCBA-DEBDASD)(RDEB)
ST RUCB,UCBADD SAVE UCB ADDRESS INTO R2
IDVLEXIT DS 0H EXIT FROM IDVOLRTN
L R14,IDVLSAVE LOAD C(IDVLSAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* TSTRCRTN *
* - TEST RETURN CODE FROM CVAFFILT *
* - FORMAT AND PRINT MESSAGES AS NEEDED *
***********************************************************************
*
TSTRCRTN DS 0H CHECK RETURN CODE ROUTINE
ST R14,TSTRSAVE STORE C(R14) INTO SAVE AREA
L R15,RETCODE LOAD R15 WITH RC SAVED FROM LAST CALL
CH R15,RCODE00 IF RETURN CODE = 00
BE TSTRC00 BRANCH TO PROCESS RC00
CH R15,RCODE04 IF RETURN CODE = 04
BE TSTRC04 BRANCH TO PROCESS RC04
TSTRCER DS 0H ELSE PRINT GENERAL ERROR MESSAGE
MVC PDETLINE(133),RCERMSG MOVE ERROR MSG TO PRINT LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
B TSTREXIT BRANCH TO EXIT RTN
TSTRC00 DS 0H PROCESS RETURN CODE = 00
MVC PDETLINE(133),RC00MSG MOVE RC00 MSG TO PRINT LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
BAL R14,FMTCTRTN BRANCH TO FMT COUNT RTN
BAL R14,FMTOPRTN INVOKE FORMAT OUTPUT MSG ROUTINE
B TSTREXIT BRANCH TO EXIT RTN
TSTRC04 DS 0H PROCESS RETURN CODE = 04
CLI CVSTAT,STAT064 DO WE NEED RESUME?
BNE TSTR0010 NO - PRINT LOGICAL ERROR MSG
BAL R14,CVAFRS INVOKE CVAFRS RESUME ROUTINE
B TSTREXIT BRANCH TO EXIT RTN
TSTR0010 DS 0H PRINT RC04-OTHER LOGICAL ERROR/CVSTAT
MVC PDETLINE(133),RC04MSG MOVE RC04 MSG TO PRINT LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
TSTREXIT DS 0H EXIT FROM TSTRCRTN
L R14,TSTRSAVE LOAD C(TSTRSAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* FMTCTRTN *
* - COUNT THE NUMBER OF FMT1 AND FMT3 DSCBS FOR THE REQUEST *
***********************************************************************
*
FMTCTRTN DS 0H COUNT DSCBS RETURNED ROUTINE
ST R14,FMTCSAVE STORE C(R14) INTO SAVE AREA
SLR R6,R6 ZERO OUT R6
SLR R7,R7 ZERO OUT R7
CLI DSNNBR,X'01' IF DSNNBR FLAG = 1
BE FMTC0010 BRANCH TO LOAD ADDR OF FCL
LA R4,FCLDEF2 ELSE LOAD R4 WITH ADDR OF FCL2
B FMTC0020 BRANCH TO SET USING
FMTC0010 DS 0H
LA R4,FCLDEF LOAD R4 WITH ADDR OF FCL
FMTC0020 DS 0H CONTINUE - SET USING
USING FCLMAP,R4 ESTABLISH ADDRESSABILITY TO FCL
SLR R5,R5 ZERO OUT R5
ICM R5,B'0011',FCLDSCBR DETERMINE IF ANY DSCBS RETURNED
BZ FMTC0060 NO - GO AND PRINT APPROPRIATE MSG
LA R4,DSCBDEF LOAD R4 WITH ADDR OF DSCB MAP
USING DSCBMAP,R4 ESTABLISH ADDRESSABILITY TO DSCB
FMTC0030 DS 0H COUNT DSCBS BY TYPE RETURNED
CLI DS1FMTID,X'F1' IF FORMAT1
BE FMTC0040 BRANCH TO FMTC0040
CLI DS1FMTID,X'F3' ELSE IF NOT FORMAT3
BNE FMTC0050 BRANCH TO FMTC0050
LA R7,1(R7) ADD 1 TO FORMAT3 COUNT
B FMTC0050 BRANCH TO FMTC0050
FMTC0040 DS 0H FMTC0040 - FORMAT1 INCREMENT
LA R6,1(R6) ADD 1 TO FORMAT1 COUNT
FMTC0050 DS 0H FMTC0050 - PROCESS THROUGH DSCBS
LA R4,DSCBSIZ(R4) ADD DSCBSIZ TO R4
BCT R5,FMTC0030 SUBTRACT 1 FROM DSCB COUNT AND CONT
ST R6,RETF1 STORE #FMT1'S INTO RETF1
ST R7,RETF3 STORE #FMT3'S INTO RETF3
DROP R4 DROP R4 USING
B FMTCEXIT BRANCH AROUND FMTC0060
FMTC0060 DS 0H PRINT MSG - NO DSCB'S RETURNED
MVC PDETLINE(133),NODSCBM MOVE MSG TO PRINT LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
SLR R6,R6 ZERO OUT R6
ST R6,RETF1 STORE ZERO INTO RETF1
SLR R7,R7 ZERO OUT R7
ST R7,RETF3 STORE ZERO INTO RETF3
FMTCEXIT DS 0H EXIT FROM FMTCTRTN
L R14,FMTCSAVE LOAD C(FMTCSAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* FMTOPRTN *
* - FORMAT THE DSCB COUNTS AND WRITE TO THE OUTPUT DATASET *
***********************************************************************
*
FMTOPRTN DS 0H FORMAT OUTPUT ROUTINE
ST R14,FMTOSAVE STORE C(R14) INTO SAVE AREA
MVC MSG(29),DSCBMSG1 MOVE MSG TO FORMAT LINE
L R6,RETF1 LOAD R6 WITH NBR OF FMT1'S RETURNED
CVD R6,WF1 CONVERT TO DEC FOR PRINTING
UNPK WFMTREC+29(7),WF1 UNPACK TO FORMAT LINE
OI WFMTREC+35,X'F0' SET APPROPRIATE BITS
MVC PDETLINE(133),WFMTREC MOVE RECORD TO OUTPUT LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
MVC MSG(29),DSCBMSG2 MOVE MSG TO FORMAT LINE
L R7,RETF3 LOAD R7 WITH NBR OF FMT3'S RETURNED
CVD R7,WF3 CONVERT TO DEC FOR PRINTING
UNPK WFMTREC+29(7),WF3 UNPACK TO FORMAT LINE
OI WFMTREC+35,X'F0' SET APPROPRIATE BITS
MVC PDETLINE(133),WFMTREC MOVE RECORD TO OUTPUT LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
FMTOEXIT DS 0H EXIT FROM FMTOPRTN
L R14,FMTOSAVE LOAD C(FMTOSAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* BUFLRTN *
* - INITIALIZE BUFFER LIST HEADER (BFLH) *
* - INITIALIZE BUFFER LIST ELEMENTS (BFLE) *
***********************************************************************
*
BUFLRTN DS 0H BUFFER LIST INITIALIZATION ROUTINE
ST R14,BUFLSAVE STORE C(R14) INTO SAVE AREA
XC BFLHDEF(BFLSIZE),BFLHDEF CLEAR BUFR LIST AREA
LA R1,BFLHDEF R1 - BUFFER LIST HEADER
USING BFLMAP,R1 ESTABLISH ADDRESSABILITY
MVI BFLHNOE,BUFNBR SET NUMBER OF BUFFER ELEMENTS
OI BFLHFL,BFLHDSCB IDENTIFY AS DSCB BUFR ELEMENT LIST
LA R2,BFLHDEF+BFLHLN R2 - FIRST BUFFER LIST ELEMENT
USING BFLE,R2 ESTABLISH ADDRESSABILITY
LA R3,DSCBDEF R3 - FIRST DSCB BUFFER
LA R4,BUFNBR R4 = NUMBER OF ELEMENTS AND BUFRS
BFL0010 OI BFLEFL,BFLECHR REQUEST CCHHR ON RETURN
MVI BFLELTH,DSCBSIZ SET BUFR LNGTH TO FULL DSCB SIZE
ST R3,BFLEBUF SET ADDR(DSCB BUFFER)
LA R2,BFLELN(R2) R2 - NEXT BUFFER LIST ELEMENT
LA R3,DSCBSIZ(R3) R3 - NEXT DSCB BUFFER
BCT R4,BFL0010 LOOP THROUGH ALL ELEMENTS
DROP R1,R2 DROP TEMP USINGS
BUFLEXIT DS 0H EXIT FROM BUFLRTN
L R14,BUFLSAVE LOAD C(BUFLSAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* FCL1RTN *
* - INITIALIZE FILTER CRITERIA LIST (FCL) HEADER AND ELEMENT *
* - INITIALIZE A FCL TO READ FOR TWO SPECIFIC SEQ DATASETS *
***********************************************************************
*
FCL1RTN DS 0H FCL INITIALIZATION ROUTINE
ST R14,FCL1SAVE STORE C(R14) INTO SAVE AREA
XC FCLDEF2(FCLSIZE2),FCLDEF2 CLEAR FCL AREA
LA R1,FCLDEF2 R1 - FCL HEADER
USING FCLMAP,R1 ESTABLISH ADDRESSABILITY
LA R2,FCLHDEND R2 - FIRST FCL ELEMENT
USING FCLDSN,R2 ESTABLISH ADDRESSABILITY
MVC FCLID,CFCLID SET THE EYECATCHER 'FCL '
MVC FCLCOUNT,=H'2' SET NUMBER OF FCL ELEMENTS
MVI FCL1FLAG,X'80' SET FLAG FOR FULLY QUAL DSN
MVI FCLDSNLG,X'0F' SET LENGTH FOR DSN1 (15)
LA R3,DS01 DSN=CVAFFLT1.DATA01
* SEQ DS - 5 EXTENTS
* 1 FORMAT1 AND 1 FORMAT3
ST R3,FCLDSNA SET ADDR OF DSN
LA R2,FCLDSNEL(R2) LOAD R2 WITH ADDR OF 2ND FCL ELEMENT
MVI FCLDSNLG,X'0F' SET LENGTH FOR DSN2 (15)
LA R3,DS02 DSN=CVAFFLT1.DATA02
* SEQ DS - 5 EXTENTS
* 1 FORMAT1 AND 1 FORMAT3
ST R3,FCLDSNA SET ADDR OF DSN
DROP R1,R2 DROP TEMP USING
FC1EXIT DS 0H EXIT FROM FCLRTN
L R14,FCL1SAVE LOAD C(FCL1SAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* FCL2RTN *
* - INITIALIZE FILTER CRITERIA LIST (FCL) HEADER AND ELEMENT *
* - INITIALIZE A FCL TO READ FOR ONE SPECIFIC PDSE DATASET *
***********************************************************************
*
FCL2RTN DS 0H FCL INITIALIZATION ROUTINE
ST R14,FCL2SAVE STORE C(R14) INTO SAVE AREA
XC FCLDEF(FCLSIZE),FCLDEF CLEAR FCL AREA
LA R1,FCLDEF R1 - FCL HEADER
USING FCLMAP,R1 ESTABLISH ADDRESSABILITY
LA R2,FCLHDEND R2 - FIRST (ONLY) FCL ELEMENT
USING FCLDSN,R2 ESTABLISH ADDRESSABILITY
MVC FCLID,CFCLID SET THE EYECATCHER 'FCL '
MVC FCLCOUNT,=H'1' SET NUMBER OF FCL ELEMENTS
MVI FCL1FLAG,X'80' SET FLAG FOR FULLY QUAL DSN
MVI FCLDSNLG,X'0F' SET LENGTH FOR DSN (15)
LA R3,DS03 DSN=CVAFFLT1.PDSE01
* PDSE DS - 122 EXTENTS
* 1 FORMAT1 AND 10 FORMAT3'S
ST R3,FCLDSNA SET ADDR OF DSN
DROP R1,R2 DROP TEMP USING
FC2EXIT DS 0H EXIT FROM FCLRTN
L R14,FCL2SAVE LOAD C(FCL2SAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* FCL3RTN *
* - INITIALIZE FILTER CRITERIA LIST (FCL) HEADER AND ELEMENT *
* - INITIALIZE A FCL TO READ FOR ONE SPECIFIC SEQ DATASET *
***********************************************************************
*
FCL3RTN DS 0H FCL INITIALIZATION ROUTINE
ST R14,FCL3SAVE STORE C(R14) INTO SAVE AREA
XC FCLDEF(FCLSIZE),FCLDEF CLEAR FCL AREA
LA R1,FCLDEF R1 - FCL HEADER
USING FCLMAP,R1 ESTABLISH ADDRESSABILITY
LA R2,FCLHDEND R2 - FIRST (ONLY) FCL ELEMENT
USING FCLDSN,R2 ESTABLISH ADDRESSABILITY
MVC FCLID,CFCLID SET THE EYECATCHER 'FCL '
MVC FCLCOUNT,=H'1' SET NUMBER OF FCL ELEMENTS
MVI FCL1FLAG,X'80' SET FLAG FOR FULLY QUAL DSN
MVI FCLDSNLG,X'0F' SET LENGTH FOR DSN (15)
LA R3,DS01 DSN=CVAFFLT1.DATA01
* SEQ DS - 5 EXTENTS
* 1 FORMAT1 AND 1 FORMAT3
ST R3,FCLDSNA SET ADDR OF DSN
DROP R1,R2 DROP TEMP USING
FC3EXIT DS 0H EXIT FROM FCLRTN
L R14,FCL3SAVE LOAD C(FCL3SAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* FCL4RTN *
* - INITIALIZE FILTER CRITERIA LIST (FCL) HEADER AND ELEMENT *
* - INITIALIZE A FCL TO READ THE DSCBS ON THE ENTIRE VOLUME *
***********************************************************************
*
FCL4RTN DS 0H FCL INITIALIZATION ROUTINE
ST R14,FCL4SAVE STORE C(R14) INTO SAVE AREA
XC FCLDEF(FCLSIZE),FCLDEF CLEAR FCL AREA
LA R1,FCLDEF R1 - FCL HEADER
USING FCLMAP,R1 ESTABLISH ADDRESSABILITY
LA R2,FCLHDEND R2 - FIRST (ONLY) FCL ELEMENT
USING FCLDSN,R2 ESTABLISH ADDRESSABILITY
MVC FCLID,CFCLID SET THE EYECATCHER 'FCL '
MVC FCLCOUNT,=H'1' SET NUMBER OF FCL ELEMENTS
MVI FCL1FLAG,X'00' SET FLAG FOR GENERIC DSN
MVI FCLDSNLG,X'02' SET LENGTH FOR DSN - ** (02)
LA R3,=C'**' ALL DATASETS ON THE VOLUME
ST R3,FCLDSNA SET ADDR OF DSN
DROP R1,R2 DROP TEMP USING
FC4EXIT DS 0H EXIT FROM FCLRTN
L R14,FCL4SAVE LOAD C(FCL4SAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* CVAFRD1 *
* - INVOKE THE CFAFFILT MACRO AND READ THE DSCBS (1 DSN) *
***********************************************************************
*
CVAFRD1 DS 0H CVAFFILT - READ ROUTINE (2 DSN)
ST R14,CVR1SAVE STORE C(R14) INTO SAVE AREA
SLR R2,R2 ZERO OUT R2
LA R2,CVPLDEF LOAD R2 WITH ADDR OF CVPL
L R3,UCBADD LOAD R3 WITH UCB ADDRESS
CVAFFILT ACCESS=READ,UCB=(R3),FCL=FCLDEF,BUFLIST=BFLHDEF, X
MF=(E,(R2))
ST R15,RETCODE STORE RC FOR LATER INTERROGATION
CVR1EXIT DS 0H EXIT FROM CVAFRD1
L R14,CVR1SAVE LOAD C(CVR1SAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* CVAFRD2 *
* - INVOKE THE CFAFFILT MACRO AND READ THE DSCBS (2 DSN'S) *
***********************************************************************
*
CVAFRD2 DS 0H CVAFFILT - READ ROUTINE (2 DSN'S)
ST R14,CVR2SAVE STORE C(R14) INTO SAVE AREA
SLR R2,R2 ZERO OUT R2
LA R2,CVPLDEF LOAD R2 WITH ADDR OF CVPL
L R3,UCBADD LOAD R3 WITH UCB ADDRESS
LA R4,FCLDEF2 LOAD R4 WITH ADDR OF FCLDEF2
LA R5,BFLHDEF LOAD R5 WITH ADDR OF FCLDEF2
CVAFFILT ACCESS=READ,UCB=(R3),FCL=(R4),BUFLIST=(R5), X
MF=(E,(R2))
ST R15,RETCODE STORE RC FOR LATER INTERROGATION
CVR2EXIT DS 0H EXIT FROM CVAFRD2
L R14,CVR2SAVE LOAD C(CVR2SAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* CVAFRDA *
* - INVOKE THE CFAFFILT MACRO AND READ ALL THE DSCBS *
***********************************************************************
*
CVAFRDA DS 0H CVAFFILT - READ ALL DSCBS ROUTINE
ST R14,CVRASAVE STORE C(R14) INTO SAVE AREA
CVAFFILT ACCESS=READ,UCB=UCBADD,FCL=FCLDEF,BUFLIST=BFLHDEF, X
FLTAREA=KEEP,IOAREA=KEEP, X
MF=(E,CVPLDEFA)
ST R15,RETCODE STORE RC FOR LATER INTERROGATION
CVRAEXIT DS 0H EXIT FROM CVAFRDA
L R14,CVRASAVE LOAD C(CVRASAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* CVAFRS *
* - INVOKE THE CFAFFILT MACRO USING RESUME *
***********************************************************************
*
CVAFRS DS 0H CVAFFILT - RESUME ROUTINE
ST R14,CVRSSAVE STORE C(R14) INTO SAVE AREA
CVRS0000 DS 0H NOW CHECK RC AND STAT CODES
CH R15,RCODE00 IS THE RC FROM RESUME 0?
BE CVRS0050 YES BRANCH TO CVRS0050
CH R15,RCODE04 IS THE RC FROM RESUME 4?
BE CVRS0020 YES BRANCH TO CVRS0020
CVRS0010 DS 0H ELSE PRINT MSG (RC IS 8,12,OR 16)
MVC PDETLINE(133),RCERMSG MOVE MSG TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
B CVRSEXIT BRANCH TO EXIT ROUTINE
CVRS0020 DS 0H PROCESS FOR RC04 - CHECK FOR STAT064
CLI CVSTAT,STAT064 IS THE CVSTAT CODE 064(RESUME NEEDED)
BNE CVRS0060 NO - BRANCH TO CVRS0060
CLI RESFLG,X'01' IS RESUME FLAG ON
BE CVRS0030 YES - BRANCH TO CVRS0030
MVC PDETLINE(133),ST64MSG1 MOVE MSG TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
MVC PDETLINE(133),ST64MSG2 MOVE MSG TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
BAL R14,FMTCTRTN INVOKE FORMAT COUNT ROUTINE
BAL R14,FMTOPRTN INVOKE FORMAT OUTPUT MSG ROUTINE
MVI RESFLG,X'01' RESUME NEEDED - SET FLAG ON
B CVRS0040 BRANCH TO CVRS0040
CVRS0030 DS 0H RESUME PROCESSING
MVC PDETLINE(133),ST64MSG3 MOVE MSG TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
BAL R14,FMTCTRTN INVOKE FORMAT COUNT ROUTINE
BAL R14,FMTOPRTN INVOKE FORMAT OUTPUT MSG ROUTINE
CVRS0040 DS 0H RESUME PROCESSING
CVAFFILT ACCESS=RESUME,MF=(E,CVPLDEFA)
B CVRS0000 BRANCH TO CHECK RETURN CODE AGAIN
CVRS0050 DS 0H RC IS 0 NO LONGER NEED RESUME
MVC PDETLINE(133),ST64MSG3 MOVE MSG TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
BAL R14,FMTCTRTN INVOKE FORMAT COUNT ROUTINE
BAL R14,FMTOPRTN INVOKE FORMAT OUTPUT MSG ROUTINE
MVC PDETLINE(133),ST64MSG4 MOVE MSG TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
*
* RELEASE WORK AREAS
*
CVAFFILT ACCESS=RLSE,FLTAREA=NOKEEP,IOAREA=NOKEEP, X
MF=(E,CVPLDEFA)
B CVRSEXIT BRANCH TO EXIT ROUTINE
CVRS0060 DS 0H RC IS 4 BUT CVSTAT IS NOT 064
MVC PDETLINE(133),RC04MSG MOVE MSG TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
CVRSEXIT DS 0H EXIT FROM CVAFRS
L R14,CVRSSAVE LOAD C(CVRSSAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* CVAFRL *
* - INVOKE THE CFAFFILT MACRO AND RELEASE WORK AREAS *
***********************************************************************
*
CVAFRL DS 0H CVAFFILT - RLSE ROUTINE
ST R14,CVRLSAVE STORE C(R14) INTO SAVE AREA
CVAFFILT ACCESS=RLSE,FCL=0,BUFLIST=0,FLTAREA=NOKEEP, X
MF=(E,CVPLDEF)
CH R15,RCODE00 IF RC = 0 THEN
BE CVRLEXIT BRANCH TO EXIT
MVC PDETLINE(133),RLSEMSG ELSE MOVE MSG TO LINE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
CVRLEXIT DS 0H EXIT FROM CVAFRL
L R14,CVRLSAVE LOAD C(CVRLSAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* WORKING STORAGE *
***********************************************************************
*
DS 0D
DC CL36'CVAFFEXP-WORKING STORAGE BEGINS HERE'
*
***********************************************************************
* EQUATES *
***********************************************************************
*
EABN100 EQU 100 USER ABEND CODE 100 - VTOC OPEN ERROR
EABN101 EQU 101 USER ABEND CODE 101 - OUTDD OPEN ERROR
EABN102 EQU 102 USER ABEND CODE 102 - OUTDD CLOSE ERROR
BUFNBR EQU 11 11 BUFFERS TO BE USED
R0 EQU 0
R1 EQU 1
RDEB EQU 1 REG1 FOR DEB ADDRESS
R2 EQU 2
RUCB EQU 2 REG2 FOR UCB ADDRESS
R3 EQU 3
R4 EQU 4
R5 EQU 5
R6 EQU 6
R7 EQU 7
R8 EQU 8
R9 EQU 9
R11 EQU 11
R12 EQU 12
R13 EQU 13
R14 EQU 14
R15 EQU 15
*
***********************************************************************
* SAVE AREAS *
***********************************************************************
*
SAVE DC 18F'0' MAIN PROGRAM SAVE AREA
OPENSAVE DC F'0' OPEN FILES ROUTINE SAVE AREA
CLOSSAVE DC F'0' CLOSE FILES ROUTINE SAVE AREA
ABENSAVE DC F'0' ABEND ROUTINE SAVE AREA
IDVLSAVE DC F'0' IDNETIFY VOLUME ROUTINE SAVE AREA
BUFLSAVE DC F'0' INITIALIZE BUFFER ROUTINE SAVE AREA
FCL1SAVE DC F'0' INITIALIZE FCL1 ROUTINE SAVE AREA
FCL2SAVE DC F'0' INITIALIZE FCL2 ROUTINE SAVE AREA
FCL3SAVE DC F'0' INITIALIZE FCL3 ROUTINE SAVE AREA
FCL4SAVE DC F'0' INITIALIZE FCL4 ROUTINE SAVE AREA
TSTRSAVE DC F'0' TEST RETURN CODE ROUTINE SAVE AREA
CVR1SAVE DC F'0' CVAFFILT READ 1 DSN ROUTINE SAVE AREA
CVR2SAVE DC F'0' CVAFFILT READ 2 DSN ROUTINE SAVE AREA
CVRASAVE DC F'0' CVAFFILT READ ALL ROUTINE SAVE AREA
CVRLSAVE DC F'0' CVAFFILT RLSE ROUTINE SAVE AREA
CVRSSAVE DC F'0' CVAFFILT RESUME ROUTINE SAVE AREA
FMTCSAVE DC F'0' FORMAT DSCB COUNT ROUTINE SAVE AREA
FMTOSAVE DC F'0' FORMAT OUTPUT ROUTINE SAVE AREA
*
***********************************************************************
* CONSTANTS *
***********************************************************************
*
RETCODE DC F'999'
RCODE00 DC H'0' RETURN CODE 0 - HALFWORD
RCODE04 DC H'4' RETURN CODE 4 - HALFWORD
DSNNBR DC X'FF' INDICATE NBR OF DSNS TO PROCESS
RESFLG DC X'00' RESUME FLAG - OFF
BLNKLNE DC CL133' '
STRTMSG DC CL133' CVAFFEXP START OF OUTPUT MESSAGES '
ENDMSG DC CL133' CVAFFEXP END OF OUTPUT MESSAGES '
ST64MSG1 DC CL133' RC04 VERIFIED - CVSTAT 064 RESUME IS NECESSARY '
ST64MSG2 DS 0CL133
DC CL49' CVAFFILT (INITIAL) RETURNED THE FOLLOWING DSCBS '
DC CL84'FOR THE VOLUME: '
ST64MSG3 DS 0CL133
DC CL49' CVAFFILT (RESUME) RETURNED THE FOLLOWING DSCBS '
DC CL84'FOR THE VOLUME: '
ST64MSG4 DS 0CL133
DC CL48' CVAFFILT RESUME OPERATION COMPLETE - ALL DSCBS '
DC CL85'RETURNED'
DSCBMSGA DS 0CL133
DC CL48' CVAFFILT RETURNED THE FOLLOWING DSCBS FOR DSN:'
DS DC CL44' '
DC CL41' '
DSCBMSGB DS 0CL133
DC CL48' AND FOR DSN:'
DS2 DC CL44' '
DC CL41' '
DSCBMSGC DS 0CL133
DC CL48' CVAFFILT LOGICAL ERROR STATUS RETURNED - DSN:'
DS3 DC CL44' '
DC CL41' '
NODSCBM DC CL133' NO DSCBS RETURNED FROM CVAFFILT '
RC00MSG DC CL133' RC00 VERIFIED - THE REQUEST WAS SUCCESSFUL '
RC04MSG DC CL133' RC04 VERIFIED - LOGICAL ERROR STATUS IN CVSTAT '
RCERMSG DC CL133' RC08, RC12, OR RC16 RETURNED FROM CVAFFILT '
RLSEMSG DC CL133' NON ZERO RETURN CODE BACK FROM RLSE '
DSCBMSG1 DC CL29' NUMBER OF FORMAT 1 DSCBS - '
DSCBMSG2 DC CL29' NUMBER OF FORMAT 3 DSCBS - '
DS01 DC CL44'CVAFFLT1.DATA01'
DS02 DC CL44'CVAFFLT1.DATA02'
DS03 DC CL44'CVAFFLT1.PDSE01'
CFCLID DC CL4'FCL '
***********************************************************************
* WORK AREAS *
***********************************************************************
*
WF1 DS D DOUBLE WORD - FORMAT 1 WORK AREA
WF3 DS D DOUBLE WORD - FORMAT 3 WORK AREA
DEBADD DC F'0' DEB ADDRESS SAVE AREA
UCBADD DC F'0' UCB ADDRESS SAVE AREA
RETF1 DC F'0' COUNT OF FMT 1 DSCBS RET BY CVAFFILT
RETF3 DC F'0' COUNT OF FMT 3 DSCBS RET BY CVAFFILT
WFMTREC DS 0CL133 WORK FORMAT RECORD FOR OUTPUT
MSG DC CL29' ' GENERAL MESSAGE
FMTCNT DC CL08' ' FORMAT COUNT
TOEOL DC CL96' ' SPACES TO END OF LINE
*
***********************************************************************
* PRINT LINES *
***********************************************************************
*
DS 0D TAKE CARE OF SLACK BYTES
PDETLINE DS 0CL133 DETAIL LINE
DC CL133' '
EPDETLEN EQU *-PDETLINE LENGTH OF DETAIL LINE
*
***********************************************************************
* DCB - OUTPUT FILE (OUTFILE) *
***********************************************************************
*
OUTFILE DCB DDNAME=OUTDD, X
DSORG=PS, X
RECFM=FBA, X
LRECL=133, X
MACRF=PM
*
***********************************************************************
* VTOC DCB AREA *
***********************************************************************
*
VTOCDCB DCB DDNAME=CVAFDD,MACRF=E,EXLST=XLST1,DSORG=PS
XLST1 DC X'87'
DC AL3(JFCB1)
JFCB1 DS 0CL176
TESTNAME DS CL44
DS CL8
DS BL1
DS CL123
*
***********************************************************************
* MAPPPING MACROS *
***********************************************************************
*
CVPLMAP ICVAFPL CVPLFSA=YES CVAF PARMLIST
FCLMAP ICVFCL FILTER CRITERIA LIST
BFLMAP ICVAFBFL BUFFER LIST
PUSH PRINT
PRINT NOGEN
DSCBMAP DSECT DSCB DSECT
IECSDSL1 (1) USE FMT 1 DSCB MAPPING TO GET BUFFER
DSCBSIZ EQU *-IECSDSL1 LENGTH OF FULL DSCB
DCBD DSORG=XE,DEVD=DA MAP OF DCB
IEZDEB MAP OF DEB
POP PRINT
*
*
CVAFFEXP CSECT , CONT OF CSECT AFTER MAPPING MACROS
*
*
***********************************************************************
* CVAF PARAMETER LISTS *
***********************************************************************
*
CVPLDEF CVAFFILT MF=L,BRANCH=NO,FLTAREA=KEEP
CVPLDEFA CVAFFILT BRANCH=(YES,SUP),MF=L
*
***********************************************************************
* SPACE ALLOCATION FOR CVPL, FCL, BFL, AND DSCB BUFFERS *
***********************************************************************
*
FCLDEF DS (FCLHDLEN+FCLDSNEL)X FCL HEADER AND ONE FCL ELEMENT
FCLSIZE EQU *-FCLDEF
* DEFINE A CVAF BUFFER LIST WITH
FCLDEF2 DS (FCLHDLEN+2*FCLDSNEL)X FCL HEADER AND TWO FCL ELEMENTS
FCLSIZE2 EQU *-FCLDEF2
* DEFINE A CVAF BUFFER LIST WITH
* N BUFFER LIST ELEMENTS
BFLHDEF DS (BFLHLN)X BUFFER LIST HEADER
BFLEDEF DS (BUFNBR*BFLELN)X N BUFFER LIST ELEMENTS
BFLSIZE EQU *-BFLHDEF
* DEFINE N FULL DSCB BUFFERS
DSCBDEF DS (BUFNBR*DSCBSIZ)X
*
END CVAFFEXP END OF CVAFFEXP