SEQXMP2 TITLE 'CVAF CVAFSEQ - SEQXMP2 EXAMPLE'
SEQXMP2 CSECT
SEQXMP2 AMODE 24
SEQXMP2 RMODE 24
*
***********************************************************************
* *
* SEQXMP2 - THIS MODULE WILL READ THROUGH THE DSCBS ON A *
* NONINDEXED VOLUME. IT WILL USE THE CVAFSEQ MACRO *
* TO READ UP TO 5 DSCBS AT A TIME IN PHYSICAL *
* SEQUENTIAL ORDER. *
* OUTPUT FROM THIS MODULE WILL BE TO OUTDD. IT WILL *
* LIST ALL OF THE DATASETS ON THE VOLUME AND THEIR *
* CORRESPONDING CCHHR'S. THE FMT4, FMT5, AND FMT7 DSCBS *
* AND THEIR CORRESPONDING CCHHRS WILL NOT BE LISTED. *
* *
* THE FOLLOWING DATASETS WERE ALLOCATED IN THE FOLLOWING *
* ORDER ON A NONINDEXED VOLUME. *
* 10 SEQUENTIAL DATASETS: CVAFSEQ1.SEQ01-CVAFSEQ1.SEQ10 *
* 5 PDS DATASETS: CVAFSEQ1.PDS01-CVAFSEQ1.PDS05 *
* 5 PDSE DATASETS: CVAFSEQ1.PDSE01-CVAFSEQ1.PDSE05 *
* 2 VSAM DATASETS: CVAFSEQ1.VSAM01-CVAFSEQ1.VSAM02 *
* *
* NOTE: THE OUTPUT FROM THIS EXAMPLE IS BASED ON USING A NON SMS *
* MANAGED NON INDEXED VOLUME FOR ALLOCATING THE TEST *
* DATASETS (CVAFDD DD). *
* IF A SMS MANAGED NON INDEXED VOLUME IS USED THE POSITION *
* OF THE VVDS DATASET WILL BE THE SECOND ENTRY IN THE LIST. *
* *
* DASD VOLUMES USED IN THIS EXAMPLE: *
* - 1 3390-3 WHERE THE OUTDD DATASET IS DEFINED *
* - 1 3390-3 WHERE THE TEST DATASETS DETAILED ABOVE ARE DEFINED *
* THIS VOLUME INITIALIZED USING: VTOC(3326,0,195) NOINDEX *
* *
* *
* *
* OUTPUT IN OUTDD DATASET SHOULD BE THE FOLLOWING: *
*---------------------------------------------------------------------*
* *
* *
* SEQXMP2 START OF OUTPUT MESSAGES *
* *
* DSN: CVAFSEQ1.SEQ01 CCHHR: 0CFE000003 *
* DSN: CVAFSEQ1.SEQ02 CCHHR: 0CFE000004 *
* DSN: CVAFSEQ1.SEQ03 CCHHR: 0CFE000005 *
* DSN: CVAFSEQ1.SEQ04 CCHHR: 0CFE000006 *
* DSN: CVAFSEQ1.SEQ05 CCHHR: 0CFE000007 *
* DSN: CVAFSEQ1.SEQ06 CCHHR: 0CFE000008 *
* DSN: CVAFSEQ1.SEQ07 CCHHR: 0CFE000009 *
* DSN: CVAFSEQ1.SEQ08 CCHHR: 0CFE00000A *
* DSN: CVAFSEQ1.SEQ09 CCHHR: 0CFE00000B *
* DSN: CVAFSEQ1.SEQ10 CCHHR: 0CFE00000C *
* DSN: CVAFSEQ1.PDS01 CCHHR: 0CFE00000D *
* DSN: CVAFSEQ1.PDS02 CCHHR: 0CFE00000E *
* DSN: CVAFSEQ1.PDS03 CCHHR: 0CFE00000F *
* DSN: CVAFSEQ1.PSD04 CCHHR: 0CFE000010 *
* DSN: CVAFSEQ1.PDS05 CCHHR: 0CFE000011 *
* DSN: CVAFSEQ1.PDSE01 CCHHR: 0CFE000012 *
* DSN: CVAFSEQ1.PDSE02 CCHHR: 0CFE000013 *
* DSN: CVAFSEQ1.PDSE03 CCHHR: 0CFE000014 *
* DSN: CVAFSEQ1.PDSE04 CCHHR: 0CFE000015 *
* DSN: CVAFSEQ1.PDSE05 CCHHR: 0CFE000016 *
* DSN: CVAFSEQ1.VSAM01.DATA CCHHR: 0CFE000017 *
* DSN: SYS1.VVDS.V339003 CCHHR: 0CFE000018 *
* DSN: CVAFSEQ1.VSAM02.DATA CCHHR: 0CFE000019 *
* *
* END OF DATA REACHED - ALL DATA SETS PROCESSED *
* *
* SEQXMP2 END OF OUTPUT MESSAGES *
* *
* *
*---------------------------------------------------------------------*
* *
***********************************************************************
* *
* SEQXMP2 - LOGIC NOTES *
* *
* THIS MODULE WILL PERFORM THE FOLLOWING: *
* *
* INITIALIZATION *
* - INITIALIZE STARTING CCHHR VALUE TO 0 (GT ZERO USED IN CVAFSEQ) *
* - OBTAIN THE NECESSARY INFORMATION FROM THE DASD VOLUME *
* - OPEN AN OUTPUT FILE *
* - WRITE NECESSARY MESSAGES TO THE OUTPUT FILE *
* *
* MAINLINE *
* DO WHILE MORE DATASETS ON VOLUME TO PROCESS *
* - LOAD 5 ENTRY TABLE WITH DSCB ADDRESS *
* - INIT BUFFER LIST HDR TO READ DSCBS AND STARTING CCHHR *
* - INIT BUFFER LIST ENTRY WITH DSCB ADDRESS AND LENGTH *
* - ISSUE CVAFSEQ MACRO TO READ 5 ENTRIES *
* - LOAD CCHHR RETURNED FROM CVAFSEQ INTO TABLE *
* - PROCESS TABLE ENTRIES AND PRODUCE OUTPUT: DSN/CCHHR LIST *
* *
* FINALIZATION *
* - WRITE NECESSARY MESSAGES TO THE OUTPUT FILE *
* - CLOSE THE OUTPUT FILE *
* - EXIT *
* *
* *
* SEQXMP2 - 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 *
* *
* *
* *
***********************************************************************
*
***********************************************************************
* *
* 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 CVAFSQ00 BRANCH AROUND DECLARES
BASEADDR DC A(BASE+4096) ADDRESSING FOR R12
CVAFSQ00 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
MVC CCHHRS,CCHHR0 INIT CCHHR START TO ZERO
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
*
***********************************************************************
* *
* MAINLINE *
* *
***********************************************************************
*
MAINLINE DS 0H MAINLINE SECTION
MVI SWEOD,NOEOD SET SWITCH TO NO EOD INITIALLY
BAL R14,LDTABRTN INVOKE LDTABRTN TO LOAD TABLE
BAL R14,INITBRTN INVOKE INITBRTN TO INIT BUFFER LIST
BAL R14,CVAFSRTN INVOKE CVAFSRTN TO ISSUE CVAFSEQ CALL
BAL R14,LODCRTN INVOKE LODCRTN TO LOAD CCHHR IN TBL
BAL R14,PRTBRTN INVOKE PRTBRTN TO PROCESS TBL ENTRIES
CLI SWEOD,EOD DID WE REACH THE END OF DATA?
BNE MAINLINE NO, PROCESS MORE DATA
L R15,RETCODE LOAD R15 WITH RETURN CODE
CH R15,RCODE00 IF RC WAS 00?
BNE FINAL NO - DO NOT PRINT EOD MESSAGE
MVC PDETLINE(133),BLNKLNE YES- MOVE BLANK LINE TO LINE
PUT OUTFILE,PDETLINE WRITE THE REC TO OUTPUT FILE
MVC PDETLINE(133),EODMSG MOVE EOD MSG TO LINE
PUT OUTFILE,PDETLINE WRITE THE REC TO OUTPUT FILE
*
***********************************************************************
* *
* 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 TEST FOR GOOD OPEN
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 REG4 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 R4
IDVLEXIT DS 0H EXIT FROM IDVOLRTN
L R14,IDVLSAVE LOAD C(IDVLSAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* LDTABRTN *
* - LOAD 5 ENTRY TABLE WITH DSCB ADDRESS TO USE *
***********************************************************************
*
LDTABRTN DS 0H LOAD TABLE ROUTINE
ST R14,LDTBSAVE STORE C(R14) INTO SAVE AREA
LA R6,DSCB01 LOAD R6 WITH ADDRESS OF DSCB01
ST R6,TDSCB01 STORE ADDRESS OF DSCB01 INTO TABLE
LA R6,DSCB02 LOAD R6 WITH ADDRESS OF DSCB02
ST R6,TDSCB02 STORE ADDRESS OF DSCB02 INTO TABLE
LA R6,DSCB03 LOAD R6 WITH ADDRESS OF DSCB03
ST R6,TDSCB03 STORE ADDRESS OF DSCB03 INTO TABLE
LA R6,DSCB04 LOAD R6 WITH ADDRESS OF DSCB04
ST R6,TDSCB04 STORE ADDRESS OF DSCB04 INTO TABLE
LA R6,DSCB05 LOAD R6 WITH ADDRESS OF DSCB05
ST R6,TDSCB05 STORE ADDRESS OF DSCB05 INTO TABLE
LDTBEXIT DS 0H EXIT FROM LDTABRTN
L R14,LDTBSAVE LOAD C(LDTBSAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* INITBRTN *
* - INITIALIZE THE BUFFER LIST *
***********************************************************************
*
INITBRTN DS 0H INITIALIZE BUFFER LIST ROUTINE
ST R14,INITSAVE STORE C(R14) INTO SAVE AREA
LA R7,BUFLISTE LOAD R7 WITH ADDRESS OF BUFLIST ENTRY
USING BFLE,R7 ESTABLISH ADDRESSABILITY TO BFLE
LA R8,BUFLISTH LOAD R8 WITH ADDRESS OF BUFLIST HDR
USING BFLHDR,R8 ESTABLISH ADDRESSABILITY TO BFLHDR
LA R2,TABLE LOAD R2 WITH ADDRESS OF TABLE
USING TBLMAP,R2 ESTABLISH ADDRESSABILITY USING TBLMAP
XC BFLHDR(BFLHLN+TBLNBR*BFLELN),BFLHDR CLEAR BUFLIST
OI BFLHFL,BFLHDSCB DSCBS TO BE READ WITH BUFFER LIST
MVC BFLEARG,CCHHRS MOVE STARTING CCHHR TO ARG
MVI BFLHNOE,TBLNBR MOVE NBR OF TBL ENTRIES TO BUFE NBR
SLR R10,R10 INIT R10 WITH ZERO
IC R10,BFLHNOE NBR OF BUFFER ENTRIES IN R10
ST R10,COUNT NBR OF BUFFER ENTRIES IN COUNT
*
INIT0010 DS 0H INIT BUFFER LIST WITH DSCB ADDR/LENG
L R6,DSCBA LOAD R6 WITH DSCB ADDRESS FROM TABLE
ST R6,BFLEBUF-BFLE(,R7) PLACE IN BUFFER LIST
MVI BFLELTH-BFLE(R7),DSCBLTH FULL DSCB READ
OI BFLEFL,BFLECHR CCHHR TO BE RETURNED
LA R2,TBLLNG(,R2) POINT TO NEXT TABLE ENTRY
LA R7,BFLELN(,R7) POINT TO NEXT BUFFER LIST ENTRY
BCT R10,INIT0010 BRANCH TO INIT0010 IF C(R10) GT ZERO
DROP R2 DROP R2
INITEXIT DS 0H EXIT FROM INITBRTN
L R14,INITSAVE LOAD C(INITSAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* CVAFSRTN *
* - CVAFSEQ REQUEST TO READ UP TO 5 ENTRIES AND PLACE DATA FOR EACH *
* ENTRY STARTING AT THE CORRESPONDING DSCB ADDRESS IN THE BUFFER *
* LIST ENTRY. *
***********************************************************************
*
CVAFSRTN DS 0H CVAFSEQ REQUEST ROUTINE
ST R14,CVAFSAVE STORE C(R14) INTO SAVE AREA
L RUCB,UCBADD LOAD R4 WITH UCB ADDRESS
CVAFSEQ UCB=(RUCB), CVAFSEQ MACRO INVOCATION X
EADSCB=OK, X
BRANCH=(YES,PGM), X
MF=(E,CVPL)
ST R15,RETCODE STORE RC INTO RETCODE
LTR R15,R15 TEST RC RETURNED FROM CVAFSEQ
CH R15,RCODE00 IS IT A RC00?
BZ CVAFEXIT YES - BRANCH TO EXIT ROUTINE
CH R15,RCODE04 IS IT A RC04?
BE CVAFSR04 YES - BRANCH TO PROCESS RC04
CH R15,RCODE08 IS IT A RC08?
BE CVAFSR08 YES - BRANCH TO PROCESS RC08
CH R15,RCODE12 IS IT A RC12?
BE CVAFSR12 YES - BRANCH TO PROCESS RC12
CH R15,RCODE16 IS IT A RC16?
BE CVAFSR16 YES - BRANCH TO PROCESS RC16
MVC PDETLINE(133),RCERMSG ELSE FORMAT UNEXPECTED RC
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
B CVAFEXIT EXIT ROUTINE
CVAFSR04 DS 0H RETURN CODE 04
MVC PDETLINE(133),RC04MSG FORMAT RC04 MESSAGE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
CLI CVSTAT,STAT032 IS CVSTAT CODE STAT032?
BE CVAFSS32 YES - BRANCH TO PROCESS STAT032
MVC PDETLINE(133),STAT2MSG NO - FORMAT STAT2MSG
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
B CVAFEXIT BRANCH TO EXIT ROUTINE
CVAFSS32 DS 0H CVSTAT CODE = STAT032
MVC PDETLINE(133),STAT1MSG FORMAT STAT1MSG
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
B CVAFEXIT BRANCH TO EXIT ROUTINE
CVAFSR08 DS 0H RETURN CODE 08
MVC PDETLINE(133),RC08MSG FORMAT RC08 MESSAGE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
B CVAFEXIT BRANCH TO EXIT ROUTINE
CVAFSR12 DS 0H RETURN CODE 12
MVC PDETLINE(133),RC12MSG FORMAT RC12 MESSAGE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
B CVAFEXIT BRANCH TO EXIT ROUTINE
CVAFSR16 DS 0H RETURN CODE 16
MVC PDETLINE(133),RC16MSG FORMAT RC16 MESSAGE
PUT OUTFILE,PDETLINE WRITE A RECORD TO THE OUTPUT FILE
CVAFEXIT DS 0H EXIT FROM CVAFSRTN
L R14,CVAFSAVE LOAD C(CVAFSAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* LODCRTN *
* - LOAD CCHHR FROM BUFFER LIST ENTRY INTO PROCESSING TABLE. THIS *
* VALUE RETURNED FROM CVAFSEQ CALL. *
***********************************************************************
*
LODCRTN DS 0H LOAD CCHHR INTO PROCESSING TABLE
ST R14,LODCSAVE STORE C(R14) INTO SAVE AREA
DROP R7,R8 DROP R7 AND R8
LA R7,BUFLISTE LOAD R7 WITH ADDRESS OF BUFLIST ENTRY
USING BFLE,R7 ESTABLISH ADDRESSABILITY TO BFLE
LA R2,TABLE LOAD R2 WITH ADDRESS OF TABLE
USING TBLMAP,R2 ESTABLISH ADDRESSABILITY USING TBLMAP
L R10,COUNT LOAD R10 WITH TABLE ENTRY COUNT
*
LODC0010 DS 0H PROCESS CCHHR VALUE RETURNED
LA R8,BFLEARG LOAD R8 WITH ADDRESS OF BFLEARG
ST R8,CCHHRA STORE CCHHR VALUE INTO TABLE
LA R2,TBLLNG(,R2) POINT TO NEXT TABLE ENTRY
LA R7,BFLELN(,R7) POINT TO NEXT BUFFER LIST ENTRY
BCT R10,LODC0010 BRANCH TO LODC0010 IF C(R10) GT ZERO
DROP R2,R7 DROP R2 AND R7
LODCEXIT DS 0H EXIT FROM LODCRTN
L R14,LODCSAVE LOAD C(LODCSAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* PRTBRTN *
* - PROCESS TABLE WHICH CONTAINS ADDRESS OF DSCB AND ADDRESS OF *
* CCHHR FOR EACH ENTRY RETURNED FROM CVAFSEQ CALL. TABLE IS *
* CURRENTLY 5 ENTRIES. *
***********************************************************************
*
PRTBRTN DS 0H PROCESS TABLE ENTRIES (DSCBA/CCHHRA)
ST R14,PRTBSAVE STORE C(R14) INTO SAVE AREA
L R10,COUNT LOAD COUNT IN R10
LA R2,TABLE LOAD ADDRESS OF TABLE INTO R2
USING TBLMAP,R2 ESTABLISH ADDRESSABILITY TO TABLE
PRTB0000 DS 0H PROCESS ENTRIES
L R3,DSCBA ADDRESSABILITY TO DSCBA
L R4,CCHHRA ADDRESSABILITY TO CCHHRA
CLC 0(1,R3),FMT4 IS IT A FMT4?
BE PRTB0020 YES, BRANCH TO POINT TO NEXT ENTRY
CLC 0(1,R3),FMT5 IS IT A FMT5?
BE PRTB0020 YES, BRANCH TO POINT TO NEXT ENTRY
CLC 0(1,R3),FMT7 IS IT A FMT7?
BE PRTB0020 YES, BRANCH TO POINT TO NEXT ENTRY
CLC 0(1,R3),FMT9 IS IT A FMT9?
BE PRTB0020 YES, BRANCH TO POINT TO NEXT ENTRY
* DETERMINE IF END OF DATA WAS REACHED
CLC 0(1,R3),NODSN IS THERE '00' IN FIRST BYTE
BNE PRTB0010 NO, THEN CONTINUE TO PROCESS DSN
MVI SWEOD,EOD YES, SET SWITCH TO END OF DATA
B PRTBEXIT EXIT OUT OF ROUTINE
PRTB0010 DS 0H PROCESS DSN - FORMAT
MVC DSNMSG(44),0(R3) MOVE DSN TO PRINT LINE
* PROCESS / FORMAT CCHHR
MVC CCHHRS(5),0(R4) MOVE CCHHR TO CCHHRS START VARIABLE
UNPK CCHHRM(L'CCHHRM+1),CCHHRS(6) UNPACK CCHHR
TR CCHHRM,TCHAR1 CONVERT TO PRINTABLE HEX
PUT OUTFILE,MSG1 PRINT THE DSN LINE
PRTB0020 DS 0H INCREMENT COUNTER FILEEDIT
LA R2,TBLLNG(R2) POINT TO NEXT TABLE ENTRY
BCT R10,PRTB0000 BRANCH TO PRTB0000 IF C(R10) GT ZERO
PRTBEXIT DS 0H EXIT FROM PRTBRTN
L R14,PRTBSAVE LOAD C(PRTBSAVE) INTO R14
BR R14 EXIT
*
***********************************************************************
* WORKING STORAGE *
***********************************************************************
*
DS 0D
DC CL36'SEQXMP2-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
R0 EQU 0
R1 EQU 1
RDEB EQU 1 REG1 FOR DEB ADDRESS
R2 EQU 2
R3 EQU 3
R4 EQU 4
RUCB EQU 4 REG4 FOR UCB ADDRESS
R5 EQU 5
R6 EQU 6
R7 EQU 7
R8 EQU 8
R9 EQU 9
R10 EQU 10
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' IDENTIFY VOLUME ROUTINE SAVE AREA
LDTBSAVE DC F'0' LOAD TABLE ROUTINE SAVE AREA
INITSAVE DC F'0' INIT BUFFER ROUTINE SAVE AREA
PRTBSAVE DC F'0' PROCESS TABLE ROUTINE SAVE AREA
CVAFSAVE DC F'0' CVAFSEQ REQUEST ROUTINE SAVE AREA
LODCSAVE DC F'0' LOAD CCHHR ROUTINE SAVE AREA
*
***********************************************************************
* CONSTANTS *
***********************************************************************
*
RETCODE DC F'0' RETURN CODE SAVE FIELD
RCODE00 DC H'0' RETURN CODE 0 - HALFWORD
RCODE04 DC H'4' RETURN CODE 4 - HALFWORD
RCODE08 DC H'8' RETURN CODE 8 - HALFWORD
RCODE12 DC H'12' RETURN CODE 12 - HALFWORD
RCODE16 DC H'16' RETURN CODE 16 - HALFWORD
CCHHR0 DC XL5'0000000000' INIT WITH ZERO
FMT4 DC XL1'04' FMT4?
FMT5 DC XL1'05' FMT5?
FMT7 DC XL1'07' FMT7? (ONLY CERTAIN DEVICE TYPES)
FMT9 DC XL1'09' FMT9? (ONLY CERTAIN DEVICE TYPES)
NODSN DC XL1'00' END OF DATA?
BLNKLNE DC CL133' '
STRTMSG DC CL133' SEQXMP2 START OF OUTPUT MESSAGES '
ENDMSG DC CL133' SEQXMP2 END OF OUTPUT MESSAGES '
RC00MSG DC CL133' RC00 RETURNED FROM SEQXMP2 '
RC04MSG DC CL133' RC04 RETURNED FROM SEQXMP2 '
RC08MSG DC CL133' RC08 RETURNED FROM SEQXMP2 '
RC12MSG DC CL133' RC12 RETURNED FROM SEQXMP2 '
RC16MSG DC CL133' RC16 RETURNED FROM SEQXMP2 '
RCERMSG DC CL133' UNEXPECTED RC (??) RETURNED FROM SEQXMP2 '
STAT1MSG DC CL133' CVSTAT CODE STAT032 ENCOUNTERED '
STAT2MSG DC CL133' UNEXPECTED CVSTAT CODE RETURNED FROM SEQXMP2 '
EODMSG DC CL133' END OF DATA REACHED - ALL DATA SETS PROCESSED '
MSG1 DS 0CL133
DC CL6' DSN: '
DSNMSG DS CL44' '
DC CL7'CCHHR: '
CCHHRM DS CL10' '
DC CL66' '
***********************************************************************
* WORK AREAS *
***********************************************************************
*
BUFLST DS 0F BUFFER LIST WORK AREA
BUFLISTH DC 2F'0' BUFFER LIST HEADER
BUFLISTE DC 15F'0' 5 BUFFER LIST ENTRIES
*
UCBADD DC F'0' UCB ADDRESS SAVE AREA
DEBADD DC F'0' DEB ADDRESS SAVE AREA
COUNT DC F'0' TABLE COUNTER
DS D
DSCB01 DS XL140 DSCB01 BUFFER AREA
DSCB02 DS XL140 DSCB02 BUFFER AREA
DSCB03 DS XL140 DSCB03 BUFFER AREA
DSCB04 DS XL140 DSCB04 BUFFER AREA
DSCB05 DS XL140 DSCB05 BUFFER AREA
*
CCHHRS DC XL5'0000000000' STARTING CCHHR
*
***********************************************************************
* PRINT LINES *
***********************************************************************
*
DS 0D
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,DCBE=VTOCDCBE
XLST1 DC X'87'
DC AL3(JFCB1)
JFCB1 DS 0CL176
TESTNAME DS CL44
DS CL8
DS BL1
DS CL123
VTOCDCBE DCBE EADSCB=OK
*
***********************************************************************
* TABLES *
***********************************************************************
*
TABLE DC 0H START OF TABLE DSCB ADDR / CCHHR ADDR
*
TDSCB01 DS F'0' DSCB01 ADDRESS (140 BYTE DSCB)
TCHR01 DS F'0' CCHHR ADDRESS FOR DSCB01 - RETURNED
*
TBLLNG EQU *-TABLE LENGTH OF TABLE ENTRY
*
TDSCB02 DS F'0' DSCB02 ADDRESS (140 BYTE DSCB)
TCHR02 DS F'0' CCHHR ADDRESS FOR DSCB02 - RETURNED
*
TDSCB03 DS F'0' DSCB03 ADDRESS (140 BYTE DSCB)
TCHR03 DS F'0' CCHHR ADDRESS FOR DSCB03 - RETURNED
*
TDSCB04 DS F'0' DSCB04 ADDRESS (140 BYTE DSCB)
TCHR04 DS F'0' CCHHR ADDRESS FOR DSCB04 - RETURNED
*
TDSCB05 DS F'0' DSCB05 ADDRESS (140 BYTE DSCB)
TCHR05 DS F'0' CCHHR ADDRESS FOR DSCB05 - RETURNED
*
TBLNBR EQU (*-TABLE)/TBLLNG NBR OF TABLE ENTRIES
*
**********************************************************************
* TABLES (CONT) *
**********************************************************************
*
TCHAR1 EQU *-C'0' TABLE TO TRANSLATE TO PRINTABLE HEX
DC C'0123456789ABCDEF'
*
**********************************************************************
* SWITCHES *
**********************************************************************
SWEOD DC XL1'00' SWITCH - END OF DATA ?
EOD EQU X'FF' END OF DATA DETECTED
NOEOD EQU X'00' END OF DATA NOT DETECTED
*
**********************************************************************
* DSECTS *
**********************************************************************
TBLMAP DSECT DUMMY CONTROL SECTION FOR TABLE MAP
DSCBA DS F DSCB ADDRESS ENTRY
CCHHRA DS F CCHHR ADDRESS ENTRY
*
**********************************************************************
* MACROS / INCLUDES *
**********************************************************************
DCBD DSORG=XE,DEVD=DA MAP OF DCB
IEZDEB MAP OF DEB
ICVAFBFL BUFFER LIST WITH ONE ENTRY
DSCB DSECT
IECSDSL1 (1) FORMAT 1 DSCB
DSCBLTH EQU *-IECSDSL1 LENGTH OF DSCB
*
**********************************************************************
* CVAF PARAMETER LISTS *
**********************************************************************
*
SEQXMP2 CSECT
CVPL CVAFSEQ ACCESS=GT, CVAFSEQ MACRO REQUEST X
BUFLIST=BUFLISTH, ADDRESS OF BUFFER LIST X
MF=L
ORG CVPL
CVPLMAP ICVAFPL DSECT=NO CVAF PARM LIST MAP
*
*
END SEQXMP2 END OF SEQXMP2