BACKTWO * /--- FILE TYPE = E * /--- BLOCK BACKTWO 00 000 81/04/29 11.24 BACKTWO IDENT BACKTWO,BEGIN,BACKTWO ENTRY BACKTWO SYSCOM B1 DEFINE (B1) = 1 *COMMENT BACKUPS DATA CRUNCH - PHASE TWO COMMENT COPYRIGHT CONTROL DATA CORP. 1980. TITLE BACKUPS DATA CRUNCH - PHASE TWO SPACE 4 *** BACKTWO - BACKUPS DATA CRUNCH PHASE TWO * J. J. BUCHMANN. 80/01/15. * *FUNCTION; * THIS PROGRAM DOES THE SECOND PHASE OF THE BACKUPS * DATABASE MERGE PROCESS. THIS PROGRAM USES THE * PARAMETERS FILE, AND THE FILE DATA FROM BACKONE (AFTER * IT HAS BEEN SORTED BY SORT/MERGE) AND IT ATTACHES THE * DUMP DIRECTORY. IT THEN EXTRACTS THE CURRENT SLOT * VALUE FROM THE PARAMETERS FILE. THE DUMP DIRECTORY * AND THE SORT FILE INFORMATION FILE ARE THEN COMPARED * ENTRY BY ENTRY (THE ACOUNT NAME, FILE NAME, AND FILE * TYPE/SIZE ARE COMPARED). IF AN OLD ENTRY IN THE DUMP * DIRECTORY IS FOUND WITHOUT AN EQUIVALENT NEW ENTRY, * THEN THE CURRENT SLOT INFORMATION IS CLEARED; IF ALL * SLOT ARE EMPTY, THIS ENTRY IS DISCARDED, OTHERWISE IT * IS WRITTEN TO THE NEW DUMP DIRECTORY FILE. IF A NEW * ENTRY IS FOUND WITHOUT AN EQUIVALENT OLD ENTRY; A NEW * ENTRY IS CREATED WITH THE CURRENT SLOT INFORMATION. * IF AN OLD AND NEW ENTRY ARE FOUND TO BE EQUIVALENT, * THE A MERGED ENTRY WITH UPDATED SLOT INFORMATION IS * WRITTEN TO THE NEW DIRECTORY FILE. AS INFORMATION IS * WRITTEN TO THE DUMP DIRECTORY, A FIRST-LEVEL INDEX IS * CREATED IN A PORTION OF THE PARAMETERS FILE CALLED THE * LOOK-ASIDE BUFFER. * * AFTER ALL ENTRIES HAVE BEEN WRITTEN TO THE NEW DUMP * DIRECTORY FILE, THAT FILE IS REWOUND AND COPIED OVER * THE ORIGINAL, THE SLOT POINTER IS ADVANCED TO THE NEXT * SLOT, AND THE PARAMETERS FILE IS REWRITTEN. * *PARAMETERS; NONE * *INFORMATIVE MESSAGES; * MERGING * WRITING DUMP DIRECTORY * SLOT = NNNN (CURRENT SLOT VALUE) * NEW SLOT = NNNN (NEW SLOT VALUE FOR TOMORROWS DUMP) * NNNNN NULL ENTRIES IGNORED * NNNNN OLD ENTRIES WITH NO MATCH * NNNNN NEW ENTRIES WITH NO MATCH * NNNNN MERGED OLD AND NEW ENTRIES * NNNNN ENTRIES WRITTEN TO DISK * NNNNN ENTRIES PURGED * DIRECTORY MERGE COMPLETE * *ERROR MESSAGES; * SLOT NUMBER OUT OF RANGE(SLOT VALUE .GT. 30 OR .LT. 1) * *INTERNAL ERROR MESSAGES; * LOOK ASIDE BUFFER TOO SMALL * *INFORMATION PASSED INTO THE OUTPUT FILE; * INPUT RECORDS OUT OF ORDER * MERGE RECORDS OUT OF ORDER * DUPLICATE INPUT RECORDS * DUPLICATE MERGE RECORDS * /--- BLOCK BACKTWO 00 000 81/04/29 08.06 SPACE 4 *CALL COMCMAC *CALL COMCCMD SPACE 4 **** ASSEMBLY CONSTANTS. BLDI EQU 10 INPUT BUFFER LENGTH BLDO EQU 10 OUTPUT BUFFER LENGTH BLDM EQU 4 SORT INFO. BUFFER LENGTH IBUFL EQU 2001B IFILE BUFFER LENGTH OBUFL EQU 2001B OFILE BUFFER LENGTH MBUFL EQU 2001B MFILE BUFFER LENGTH SBUFL EQU 2001B SFILE BUFFER LENGTH DBUFL EQU 2000B DUMP BUFFER LENGTH DSHF EQU 42 SHIFT COUNT DUMP DIR. NAME INC. BLKSZE EQU 320 BLOCK SIZE (WORDS) FOR S0BACKC MBPARM EQU 1 MAX NUM OF BLOCKS / PARAMETERS MBSLOT EQU 2 MAX NUM OF BLOCKS / SLOT TABLE MBLAB EQU 25 MAX NUM OF BLOCKS / LOOK ASIDE MBVSN EQU 25 MAX NUM OF BLOCKS / VSN TABLE MBALL EQU MBPARM+MBSLOT+MBLAB+MBVSN TOTAL NUM BLOCKS * OFFSETS WITHIN PARAMETER BLOCK PDATE EQU 0 LAST BACKUP DATE PTIME EQU 1 LAST BACKUP TIME PBASE EQU 2 DUMP DIRECTORY BASE NAME PDNUM EQU 3 NUMBER OF DATASETS IN DUMP DIR. PNREC EQU 4 NUMBER OF RECORDS IN DATASETS PLREC EQU 5 NUMBER OF RECORDS-LAST DATASET PLABW EQU 6 WORDS IN LOOK-ASIDE BUFFER PPAGE EQU 9 PAGE SIZE REQPK EQU 50 REQUIRED PACK OFFSET IN PARAMS. * /--- BLOCK BACKTWO 00 000 81/05/07 06.50 **** TITLE COMMON DATA BEGIN BSS 0 FETS BSS 0 I BSS 0 BACKDIR RFILEB IBUF,IBUFL,(FET=13D),EPR O BSS 0 DUMPDIR RFILEB OBUF,OBUFL,(FET=13D),EPR M BSS 0 TAPE4 RFILEB MBUF,MBUFL,(FET=8D) S BSS 0 S0BACKC RFILEB SBUF,SBUFL,(FET=8D) OUT BSS 0 OUTPUT RFILEB OUTBUF,2001B SPACE 4 * DATA WORDS USERI EQU 377773B USER INDEX FOR FILES PACK DATA 0 PACK NAME FOR ATTACHES DPER DATA 7LBACKDIR PERMANENT FILE FOR DUMP DIRECT. OPER DATA 7LDUMPDIR PERMANENT FILE FOR DUMP DIRECT. COLD DATA 0 COUNT OF OLD FILES WITH NO NEW CNEW DATA 0 COUNT OF NEW FILES WITH NO OLD CMRG DATA 0 COUNT OF NEW FILES WITH AN OLD COUT DATA 0 COUNT OF ENTRIES WRITTEN CPRG DATA 0 COUNT OF ENTRIES PURGED CZRO DATA 0 COUNT OF ENTRIES IGNORED SLTN DATA 0 SLOT NUMBER SLOFF DATA 0 SLOT OFFSET IN BUFFER SLSHF DATA 0 SLOT SHIFT WITHIN WORD PAGE DATA 0 PAGE SIZE CPAG DATA 0 CURRENT NUMBER OF WORDS IN PAGE DREC DATA 500 RECORD SIZE FOR DUMP DIRECTORY DNAM DATA 0 BASE NAME FOR DUMP DIRECTORY DNUM DATA 0 NUMBER OF DUMP DIRECTORIES DNOR DATA 0 NUMBER OF RECORDS/THIS DATASET DNORA DATA 0 NUMBER OF RECORDS/ALL DATASETS DNORL DATA 0 NUMBER OF RECORDS/LAST DATASET CNOR DATA 0 CURRENT RECORD NUMBER CNUM DATA 0 CURRENT DATASET NUMBER LABINC DATA 0 LOOK ASIDE INCREMENT LABSZE VFD 60/MBLAB*BLKSZE LOOK ASIDE BUFFER SIZE OLDI DATA 0,0,0 OLD INPUT FILE PARAMS OLDM DATA 0,0,0 OLD MERGE FILE PARAMS * /--- BLOCK BACKTWO 00 000 81/04/02 08.27 TITLE MAIN PROGRAM. *** BACKTWO BACKTWO SB1 1 (B1) = 1 RJ INIT INITIALIZE RJ INTS INITIALIZE SLOT OFFSETS RJ SETLA ZERO LOOK ASIDE BUFFER MESSAGE MRGM MRG1 RECALL I REWIND FILES REWIND I,R RECALL M REWIND M,R RECALL O REWIND O,R MRG2 READ I READ M MRG3 RJ RDIN READ INPUT ENTRY NZ X1,MRG9 IF EOR, EOF MRG4 RJ RDMR READ SORT ENTRY NZ X1,MRG12 IF EOR, EOF MRG5 SA1 BUFI FIRST WORD OF OLD DATA SA2 BUFM FIRST WORD OF NEW DATA IX7 X1-X2 NG X7,MRG6 IF OLD .LT. NEW NZ X7,MRG7 IF OLD .GT. NEW SA1 A1+B1 NEXT WORD OF OLD SA2 A2+B1 NEXT WORD OF NEW IX7 X1-X2 NG X7,MRG6 IF OLD .LT. NEW NZ X7,MRG7 IF OLD .GT. NEW SA1 A1+B1 NEXT WORD OF OLD SA2 A2+B1 NEXT WORD OF NEW MX3 30 BX1 X3*X1 TOP 30 OF OLD BX2 X3*X2 TOP 30 OF NEW IX7 X1-X2 PL X7,MRG7 IF OLD .GE. NEW * * OLD .LT. NEW - MOVE OLD ENTRY * MRG6 RJ MVEI MOVE OLD ENTRY RJ CLRS CLEAR SLOT RJ WRTO WRITE IT OUT SA1 COLD INCREMENT OLD SX7 X1+B1 SA7 A1 RJ RDIN READ NEXT ENTRY ZR X1,MRG5 IF NO EOR, EOF, ETC. EQ MRG10 MRG7 ZR X7,MRG8 IF OLD .EQ. NEW * * OLD .GT. NEW - CREATE NEW ENTRY * RJ CREM CREATE NEW ENTRY SA1 BUFM+3 GET VSN VALUE RJ INSM INSERT NEW SLOT RJ WRTO WRITE IT OUT SA1 CNEW INCREMENT NEW SX7 X1+B1 SA7 A1 EQ MRG4 GET NEXT NEW ENTRY * /--- BLOCK BACKTWO 00 000 81/03/26 13.00 * * OLD .EQ. NEW * MRG8 RJ MVEI MOVE OLD ENTRY SA1 BUFM+3 GET VSN VALUE RJ INSM INSERT SLOT RJ WRTO WRITE IT OUT SA1 CMRG INCREMENT MERGE COUNT SX7 X1+B1 SA7 A1 EQ MRG3 READ THE NEXT OLD/NEW ENTRIES MRG9 RJ RDMR GET NEXT SORT ENTRY NZ X1,MRG13 IF EOR, EOF MRG10 RJ CREM CREATE NEW ENTRY SA1 BUFM+3 GET VSN VALUE RJ INSM INSERT SLOT RJ WRTO WRITE IT OUT SA1 CNEW INCREMENT NEW SX7 X1+B1 SA7 A1 EQ MRG9 GET NEXT ENTRY MRG11 RJ RDIN GET NEXT ENTRY NZ X1,MRG13 IF EOR, EOF ETC. MRG12 RJ MVEI MOVE OLD ENTRY RJ CLRS CLEAR SLOT RJ WRTO WRITE IT OUT SA1 COLD INCREMENT OLD SX7 X1+B1 SA7 A1 EQ MRG11 GET NEXT ENTRY MRG13 WRITER O,R WRITEF O,R EQ END MRGM DIS ,*MERGING* TITLE SUBROUTINES. CKSTATS SPACE 4 ** CKSTATS - CHECK FILE STATUS FOR BUSY * ROLLOUT FOR 64 SECONDS IF BUSY * ABORT IF ERROR * * ENTRY X1-FET STATUS WORD * * EXIT X2=0, NOT BUSY CKSTATS DATA 0 ENTRY/EXIT AX1 10 MX7 -8 BX2 -X7*X1 ISOLATE STATUS ZR X2,CKSTATS IF NOT BUSY AND NO ERROR SX2 X2-1 NZ X2,ABORT ATTACH ERROR ROLLOUT CKSW SX2 1 BUSY STATUS EQ CKSTATS CKSW DATA 7700000100B * /--- BLOCK BACKTWO 00 000 81/04/02 08.28 CLREPR SPACE 4 ** CLREPR - CLEAR ERROR PROCESSING BIT IN THE FET * * ENTRY A1/X1=FET+1 AND CONTENTS CLREPR DATA 0 ENTRY/EXIT SX6 B1 MASK FOR EPR LX6 44 BX6 -X6*X1 SA6 A1 EQ CLREPR CLRS SPACE 4 ** CLRS - CLEAR SLOT ENTRY CLRS DATA 0 ENTRY/EXIT SX1 B0 SET TO STORE A ZERO RJ INSM INSERT SLOT EQ CLRS EXIT CREM SPACE 4 ** CREM - CREATE NEW ENTRY * * CREATE NEW ENTRY FROM MERGE DATA * SETS WRITE/CLEAR/INSERT POINTER TO NEW ENTRY CREM DATA 0 ENTRY/EXIT SB7 BLDO-1 ZERO OUTPUT WORKING BUFFER SX7 0 CRE1 SA7 BUFO+B7 SB7 B7-1 PL B7,CRE1 SA1 BUFM GET ACCOUNT NAME SA2 A1+B1 GET FILE NAME BX6 X1 BX7 X2 SA6 BUFO SA7 A6+B1 SA1 A2+B1 GET FILE INFO. WORD. MX6 30 STORE UPPER 30 ONLY BX6 X6*X1 SA6 A7+B1 EQ CREM EXIT INIT SPACE 4 ** INIT - INITIALIZE PARAMETERS INIT DATA 0 ENTRY/EXIT SETUI USERI SET USER INDEX PACKNAM PACK SET PACK NAME INIT1 ATTACH I,DPER,,,W SA1 I RJ CKSTATS NZ X2,INIT1 IF FILE WAS BUSY SA1 I+1 RJ CLREPR CLEAR EPR INIT2 ATTACH O,OPER,,,W SA1 O RJ CKSTATS NZ X2,INIT2 IF FILE WAS BUSY SA1 O+1 RJ CLREPR CLEAR EPR RJ RDPARAM READ PARAMETERS SA1 PARAM+PBASE DATABASE NAME SA2 PARAM+PDNUM NUMBER OF DATASETS BX6 X1 BX7 X2 SA6 DNAM SA7 DNUM SA1 PARAM+PNREC NUMBER OF RECORDS SA2 PARAM+PLREC NUMBER OF RECORDS(LAST DATASET) BX6 X1 BX7 X2 SA6 DNORA SA7 DNORL SA1 PARAM+PPAGE PAGE SIZE BX6 X1 SA6 PAGE SA6 CPAG EQ INIT * /--- BLOCK BACKTWO 00 000 81/04/02 08.11 INSM SPACE 4 ** INSM - INSERT SLOT INFO. * * SETS SLOT INFO. INTO ENTRY * * X1 = INFO TO BE ADDED TO SLOT (0 WILL CLEAR) INSM DATA 0 ENTRY/EXIT SA2 SLOFF SLOT OFFSET SA2 X2+BUFO READWORD SA3 SLSHF SHIFT COUNT SX7 77777B MASK SB7 X3 LX7 B7 BX6 -X7*X2 MASK OUT OLD ENTRY LX1 B7 NEW DATA IX6 X6+X1 SA6 A2 RESTORE EQ INSM EXIT INTS SPACE 4 ** INTS - INITIATE SLOT INTS DATA 0 ENTRY/EXIT SA1 SLOT GET SLOT POINTER SA1 SLOT+X1 GET SLOT NUMBER BX6 X1 SA6 SLTN ZR X6,SLERR NG X6,SLERR SX6 X6-31 PL X6,SLERR SX1 X1+9 OFFSET BX6 X1 AX6 2 DIVIDE BY 4 SA6 SLOFF BUFFER OFFSET LX6 2 MULTIPLY BY 4 IX6 X1-X6 0 FOR TOP, 3 FOR BOTTOM SX7 3 IX7 X7-X6 0 FOR BOTTOM, 3 FOR TOP BX6 X7 LX6 4 *16 IX6 X6-X7 *15 SA6 SLSHF SLOT SHIFT COUNT SA1 SLTN RJ CDD SA6 SLMSG+1 MESSAGE SLMSG OUTPUT SLOT MESSAGE EQ INTS MVEI SPACE 4 ** MVEI - MOVE OLD ENTRY * * SETS WRITE/CLEAR/INSERT POINTER TO OLD ENTRY MVEI DATA 0 ENTRY/EXIT SB7 BLDO-1 MVE1 SA1 BUFI+B7 BX6 X1 SB7 B7-B1 SA6 BUFO+1+B7 PL B7,MVE1 EQ MVEI EXIT * /--- BLOCK BACKTWO 00 000 80/09/11 13.07 RDIN SPACE 4 ** RDIN - READ INPUT FILE * * TEST FOR REAL EOR, EOF * TEST FOR LOGICAL EOR, EOF (ACCOUNT AND FILE = -1) * SKIPS ZERO ENTRIES * TESTS FOR DUPLICATE ENTRIES OR OUT OF ORDER * * EXIT - X1=0, NO EOR, EOF RDIN DATA 0 ENTRY/EXIT RDIN1 READW I,BUFI,BLDI NZ X1,RDIN IF REAL EOR, EOF SA1 BUFI NEW ACCOUNT NAME SA2 A1+B1 NEW FILE NAME SA3 A2+B1 NEW FIW ZR X1,RDIN9 RDIN2 SX6 B1 IX7 X6+X1 SEE IF ACCOUNT NAME = -1 ZR X7,RDIN8 RDIN3 SA4 OLDI OLD ACCOUNT NAME SA5 A4+B1 OLD FILE NAME BX6 X1 NEW ACCOUNT NAME SA1 A5+B1 OLD FIW MX7 30 BX3 X7*X3 MASK FIW IX7 X6-X4 NZ X7,RDIN4 IF ACCOUNT NAMES NOT EQUAL IX7 X2-X5 NZ X7,RDIN4 IF FILE NAMES NOT EQUAL IX7 X3-X1 ZR X7,RDIN7 IF DUPLICATE ENTRIES RDIN4 NG X7,RDIN5 IF ENTRIES OUT OF ORDER SA6 A4 SAVE ACCOUNT, FILE, AND FIW BX7 X2 SA7 A6+B1 BX6 X3 SA6 A7+B1 MX1 0 NO EOR FLAG EQ RDIN RDIN5 WRITEC OUT,RDIM1 ENTRIES OUT OF ORDER RJ OLDIOUT OUTPUT OLD INPUT ENTRIES RDIN6 RJ NEWIOUT OUTPUT NEW INPUT ENTRIES SA1 BUFI SAVE ACCOUNT, FILE, AND FIW SA2 A1+B1 SA3 A2+B1 MX4 30 BX6 X1 SA6 OLDI BX7 X2 SA7 A6+B1 BX6 X4*X3 SA6 A7+B1 MX1 0 NO EOR FLAG EQ RDIN RDIN7 WRITEC OUT,RDIM2 DUPLICATE ENTRIES EQ RDIN6 RDIN8 IX7 X6+X2 SEE IF FILE NAME = -1 NZ X7,RDIN3 CONTINUE PROCESSING SX1 B1 SET EOR FLAG EQ RDIN RDIN9 NZ X2,RDIN2 IF FILE NAME .NE. 0 SA1 CZRO INCREMENT ZERO COUNT SX6 X1+B1 SA6 A1 EQ RDIN1 READ ANOTHER RECORD * /--- BLOCK BACKTWO 00 000 81/03/26 11.41 RDMR SPACE 4 ** RDMR - READ MERGE FILE * * TEST FOR REAL EOR, EOF * TESTS FOR DUPLICATE ENTRIES OR OUT OF ORDER * * EXIT - X1=0, NO EOR, EOF RDMR DATA 0 ENTRY/EXIT READW M,BUFM,BLDM NZ X1,RDMR IF REAL EOR, EOF SA1 BUFM NEW ACCOUNT NAME SA2 A1+B1 NEW FILE NAME SA3 A2+B1 NEW FIW SA4 OLDM OLD ACCOUNT NAME SA5 A4+B1 OLD FILE NAME BX6 X1 NEW ACCOUNT NAME SA1 A5+B1 OLD FIW MX7 30 BX3 X7*X3 MASK FIW IX7 X6-X4 NZ X7,RDMR1 IF ACCOUNT NAMES NOT EQUAL IX7 X2-X5 NZ X7,RDMR1 IF FILE NAMES NOT EQUAL IX7 X3-X1 ZR X7,RDMR4 IF DUPLICATE ENTRIES RDMR1 NG X7,RDMR2 IF ENTRIES OUT OF ORDER SA6 A4 SAVE ACCOUNT, FILE, AND FIW BX7 X2 SA7 A6+B1 BX6 X3 SA6 A7+B1 MX1 0 NO EOR FLAG EQ RDMR RDMR2 WRITEC OUT,RDMM1 ENTRIES OUT OF ORDER RJ OLDMOUT OUTPUT OLD MERGE ENTRIES RDMR3 RJ NEWMOUT OUTPUT NEW MERGE ENTRIES SA1 BUFM SAVE ACCOUNT, FILE, AND FIW SA2 A1+B1 SA3 A2+B1 MX4 30 BX6 X1 SA6 OLDM BX7 X2 SA7 A6+B1 BX6 X4*X3 SA6 A7+B1 MX1 0 NO EOR FLAG EQ RDMR RDMR4 WRITEC OUT,RDMM2 DUPLICATE ENTRIES EQ RDMR3 SETLA SPACE 4 ** SETLA - SET LOOK ASIDE BUFFER TO ZERO SETLA DATA 0 ENTRY/EXIT SA1 LABSZE SIZE OF BUFFER SB6 LAB BEGINNING ADDRESS SB7 X1+LAB SX7 0 SLA1 SA7 B6 SB6 B6+B1 LT B6,B7,SLA1 EQ SETLA * /--- BLOCK BACKTWO 00 000 81/03/27 11.09 RDPARAM SPACE 4 ** RDSLOT - READ PARAMETER, SLOT AND VSN TABLES RDPARAM DATA 0 ENTRY/EXIT REWIND S,R READ S,R READW S,PARAM,MBALL*BLKSZE EQ RDPARAM WRDMP SPACE 4 ** WRDMP - REWRITE DUMP DIRECTORY WRDMP DATA 0 ENTRY/EXIT MESSAGE WRDW REWIND O,R REWIND BOTH FILES REWIND I,R READ O,R INITIAL READ WRD1 READW O,DBUF,DBUFL READ A CHUNK NG X1,WRD3 IF EOF,EOI NZ X1,WRD2 IF EOR WRITEW I,DBUF,DBUFL WRITE A CHUNK EQ WRD1 GET ANOUTHER CHUNK WRD2 SB7 B6-DBUF NUMBER OF WORDS TRANSFERED WRITEW I,DBUF,B7 WRITE CHUNK WRITER I,R WRITE EOR READ O,R READ NEXT RECORD EQ WRD1 GET NEXT CHUNK WRD3 SB7 B6-DBUF NUMBER OF WORDS TRANSFERED BX5 X1 SAVE EOF/EOI STATUS WRITEW I,DBUF,B7 WRITE CHUNK SX5 X5+1 TEST STATUS NZ X5,WRD4 IF EOI WRITEF I,R WRITE EOF READ O,R READ NEXT RECORD EQ WRD1 GET NEXT CHUNK WRD4 RECALL I WAIT FOR I/O TO COMPLETE SA1 I+2 TEST IN AND OUT SA2 A1+B1 BX1 X1-X2 ZR X1,WRDMP IF IN=OUT (EMPTY) WRITER I,R EQ WRDMP EXIT WRDW DIS ,*WRITING DUMP DIRECTORY* WRPARAM SPACE 4 ** WRPARAM - WRITE PARAMETER BLOCK AND REST OF S0BACKC WRPARAM DATA 0 ENTRY/EXIT REWIND S,R WRITEW S,PARAM,MBALL*BLKSZE WRITER S,R WRITEF S,R EQ WRPARAM EXIT * /--- BLOCK BACKTWO 00 000 81/03/27 10.39 WRTO SPACE 4 ** WRTO - WRITE OUTPUT * * WRITE THE OUTPUT ENTRY * INCREMENT OUTPUT COUNTER WRTO DATA 0 ENTRY/EXIT SB7 BLDO-4 CHECK FOR EMPTY ENTRY WRT1 SA1 BUFO+3+B7 NZ X1,WRT2 IF NOT EMPTY SB7 B7-B1 PL B7,WRT1 SA1 A1-B1 GET LAST 30 BITS MX7 30 BX7 -X7*X1 NZ X7,WRT2 SA1 CPRG INCREMENT PURGE COUNT SX7 X1+B1 SA7 A1 EQ WRTO EXIT WRT2 WRITEW O,BUFO,BLDO SA1 COUT INCREMENT OUTPUT COUNTER SX7 X1+B1 SA7 A1 SA1 CPAG INCREASE CURRENT PAGE COUNT SA2 PAGE MAX. NUMBER OF WORDS/PAGE SX6 X1+BLDO IX7 X1-X2 SA6 A1 NG X7,WRTO IF SAME PAGE IX6 X6-X2 SA6 A1 SA1 LABINC ADD INFO TO LOOK ASIDE BUFFER SB7 X1 SA1 BUFO SA2 A1+B1 BX6 X1 BX7 X2 SA6 LAB+B7 SA7 A6+B1 SX6 B7+2 SA6 LABINC SA1 LABSZE COMPARE WITH MAXIMUM IX7 X1-X6 PL X7,WRTO MESSAGE WRTE EQ ABORT * /--- BLOCK BACKTWO 00 000 81/03/27 10.31 TITLE OUTPUT ERROR MESSAGES NEWIOUT SPACE 4 ** NEWIOUT - OUTPUT NEW ACCOUNT, FILE, AND FIW NEWIOUT DATA 0 SA1 BUFI RJ SFN SA6 RDIM4 SA1 BUFI+1 RJ SFN SA6 RDIM4+1 SA1 BUFI+2 RJ WOD SA6 RDIM4+2 WRITEC OUT,RDIM3 EQ NEWIOUT OLDIOUT SPACE 4 ** OLDIOUT - OUTPUT OLD ACCOUNT, FILE, AND FIW OLDIOUT DATA 0 SA1 OLDI RJ SFN SA6 RDIM6 SA1 OLDI+1 RJ SFN SA6 RDIM6+1 SA1 OLDI+2 RJ WOD SA6 RDIM6+2 WRITEC OUT,RDIM5 EQ OLDIOUT NEWMOUT SPACE 4 ** NEWMOUT - OUTPUT NEW ACCOUNT, FILE, AND FIW NEWMOUT DATA 0 SA1 BUFM RJ SFN SA6 RDIM4 SA1 BUFM+1 RJ SFN SA6 RDIM4+1 SA1 BUFM+2 RJ WOD SA6 RDIM4+2 WRITEC OUT,RDIM3 EQ NEWMOUT OLDMOUT SPACE 4 ** OLDMOUT - OUTPUT OLD ACCOUNT, FILE, AND FIW OLDMOUT DATA 0 SA1 OLDM RJ SFN SA6 RDIM6 SA1 OLDM+1 RJ SFN SA6 RDIM6+1 SA1 OLDM+2 RJ WOD SA6 RDIM6+2 WRITEC OUT,RDIM5 EQ OLDMOUT MESSAGE SPACE 4 RDIM1 DIS ,* INPUT RECORDS OUT OF ORDER* RDIM2 DIS ,* DUPLICATE INPUT RECORDS* RDIM3 DATA 10H NEW ACCO DATA 10HUNT / FILE DATA 10H / FIW RDIM4 DATA 0,0,0,0 RDIM5 DATA 10H OLD ACCO DATA 10HUNT / FILE DATA 10H / FIW RDIM6 DATA 0,0,0,0 RDMM1 DIS ,* MERGE RECORDS OUT OF ORDER* RDMM2 DIS ,* DUPLICATE MERGE RECORDS* * /--- BLOCK BACKTWO 00 000 81/04/29 08.51 TITLE END PROGRAM - MESSAGES - COMDECKS - BUFFERS END SPACE 4 ** END - END PROGRAM. END BSS 0 END PROGRAM RJ WRDMP WRITE DUMP DIRECTORY SA1 SLOT INCREMENT SLOT POINTER SX6 X1+1 SA2 X6+SLOT SEE IF END OF TABLE NZ X2,END0 IF OK SX6 1 START OVER SA2 SLOT+1 END0 SA6 A1 REWRITE BX6 X2 SA6 SLTN NEW SLOT NUMBER DATE PARAM+PDATE CURRENT DATE IN PARAMETER TABLE CLOCK PARAM+PTIME CURRENT TIME SA1 LABINC LOOK ASIDE BUFFER LENGTH BX6 X1 SA6 PARAM+PLABW RJ WRPARAM REWITE PARAMETER BLOCK SA1 CZRO OUTPUT IGNORED ENTRIES RJ CDD SA6 CZROM SA1 COLD OUTPUT OLD WITH NO NEW RJ CDD SA6 COLDM SA1 CNEW OUTPUT NEW WITH NO OLD RJ CDD SA6 CNEWM SA1 CMRG OUTPUT MERGE COUNT RJ CDD SA6 CMRGM SA1 COUT OUTPUT WRITE COUNT RJ CDD SA6 COUTM SA1 CPRG OUTPUT PURGE COUNT RJ CDD SA6 CPRGM SA1 SLTN OUTPUT NEWSLOT NUMBER RJ CDD SA6 NEWSL+1 MESSAGE CZROM OUTPUT IGNORED COUNT MESSAGE COLDM OUTPUT OLD COUNT MESSAGE CNEWM OUTPUT NEW COUNT MESSAGE CMRGM OUTPUT MERGE COUNT MESSAGE COUTM OUTPUT OUTPUT COUNT MESSAGE CPRGM OUTPUT PURGE COUNT MESSAGE NEWSL OUTPUT NEW SLOT NUMBER MESSAGE (=C* DIRECTORY MERGE COMPLETED*) END1 WRITER OUT,R ENDRUN SLERR MESSAGE SMERR ABORT WRITER OUT,R ABORT * DERR1 MESSAGE DMERR1 * EQ ABORT * /--- BLOCK BACKTWO 00 000 81/04/29 08.51 SPACE 4 ** MESSAGES * CZROM DATA 0 DIS ,= NULL ENTRIES IGNORED.= COLDM DATA 0 DIS ,= OLD ENTRIES WITH NO MATCH.= CNEWM DATA 0 DIS ,= NEW ENTRIES WITH NO MATCH.= CMRGM DATA 0 DIS ,= MERGED OLD AND NEW ENTRIES.= COUTM DATA 0 DIS ,= ENTRIES WRITTEN TO DISK.= CPRGM DATA 0 DIS ,= ENTRIES PURGED.= * SMSG DIS ,* SLOT TABLE TOO LONG* SMERR DIS ,* SLOT NUMBER OUT OF RANGE* * DMERR1 DIS ,* NOT ENOUGH DUMP DIRECTORY DATASETS* WRTE DIS ,* LOOK ASIDE BUFFER TOO SMALL* SLMSG DATA 10H SLOT = DATA 0 DATA 0 NEWSL DATA 10HNEW SLOT = DATA 0 DATA 0 SPACE 4 * COMMON DECKS. *CALL COMCCIO *CALL COMCRDS *CALL COMCRDW *CALL COMCSYS *CALL COMCWTS *CALL COMCWTW *CALL COMCCDD *CALL COMCSFN *CALL COMCWOD *CALL COMCWTC SPACE 4 ** BUFFERS. BUFFERS BSS 0 TEMP BSS 1 BUFI BSS BLDI BUFO BSS BLDO BUFM BSS BLDM IBUF BSS IBUFL OBUF BSS OBUFL MBUF BSS MBUFL SBUF BSS SBUFL OUTBUF BSS 2001B PARAM BSSZ MBPARM*BLKSZE PARAMETER TABLE SLOT BSSZ MBSLOT*BLKSZE SLOT TABLE LAB BSSZ MBLAB*BLKSZE LOOK ASIDE BUFFER VSN BSSZ MBVSN*BLKSZE VSN TABLE DBUF BSSZ DBUFL DUMP BUFFER END BACKTWO