{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: MTCHECK860)}}
====== MTCHECK860 ======
(George Source)
**Macros used:** [[george:macro:BFCBX|BFCBX]], [[george:macro:BXGE|BXGE]], [[george:macro:BXL|BXL]], [[george:macro:BXU|BXU]], [[george:macro:CHAIN|CHAIN]], [[george:macro:CORRUPTB|CORRUPTB]], [[george:macro:FFCA|FFCA]], [[george:macro:FIND|FIND]], [[george:macro:GEOERR|GEOERR]], [[george:macro:KEEPREP|KEEPREP]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MTCHECK|MTCHECK]], [[george:macro:MTREAD|MTREAD]], [[george:macro:PSTAC|PSTAC]], [[george:macro:PUTREP2|PUTREP2]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETREP2|SETREP2]], [[george:macro:UP|UP]], [[george:macro:UPPLUS|UPPLUS]], [[george:macro:WRONG|WRONG]]
22FL ... SEG MTCHECK,860,FILE,OLP
22^= ... SEGENTRY K1MTCHECK,MTCHECK [MTCHECK MACRO ENTRY WITH %D GIVEN
23DW ... SEGENTRY K11MTCHECK,MTCHECKNOD[MTCHECK MACRO WITHOUT %D
23YG ... SEGENTRY K2MTCHECK,MTREAD [ENTRY FROM MTOBJ WHEN READING
24D6 ... SEGENTRY K3MTCHECK,MTWRITE [ENTRY FROM MTOBJ WHEN WRITING
24XQ ... SEGENTRY K4MTCHECK,ZCONFURWB [ENTRY FROM EDOBJ FOR CONFURWB
25CB ...[
25X2 ...[ MACRO MTCHECK CHECKS A GSBS-SIZED BLOCK PURPORTING TO CONTAIN FOUR
26BL ...[ CONSECUTIVE MT INDEX FILE BLOCKLETS. IT IS USED BY DUMPER,COPY,
26W= ...[ RETRIEVAL SYSTEM ETC.
27*W ...[
27TG ...[ THE K2MTCHECK ENTRY IS USED TO CHECK AFTER A FILEREAD
28*6 ...[
28SQ ...[ THE K3 & K4 ENTRY POINTS ARE USED TO CHECK BEFORE A FILEAUTW
29#B ...[
29S2 ...[
2=?L ...[ FOR FORMAT OF MT FILESTORE FILES SEE PRM 5.5.3.2
2=R= ...[
2?=W ...[ THE BULK FILE ADDRESS IS CHECKED APPROXIMATELY IF THE NUMBER OF BULK
2?QG ...[ BLOCKS IS NOT KNOWN (E.G. *FH BLOCK WRITE).
2#=6 ...[
2#PQ ...[ THERE IS ONLY A SIMPLE CHECK THAT HDDR IS THE FIRST RECORD IN THE FILE
2*9B ...[ IF PRESENT AND NO CHECK THAT QUAL FOLLOWS MARK. HOWEVER FAILURE OF
2*P2 ...[ THESE CONDITIONS WILL NOT BREAK MTOBJ OR MATALO.
2B8L ...[
2BN= ...TEND 4HEND
2C7W ...TMARK 4HMARK
2CMG ...TQUAL 4HQUAL
2D76 ...THDDR 4HHDDR
2DLQ ...[
2F6B ...[
2FL2 ...MTREAD [DEPTH ZERO; CHECK FIRST BREA
2G5L ...[
2GK= ... STOZ AWORK4(2) [ DEPTH
2H4W ... MHUNTW 3,BSTB,BREAD [X3->BLOCK TO BE CHECKED
2HJG ... LDCT 7 #200 [ZFILEREAD SWITCH
2J46 ... BRN ZMERGE
2JHQ ...[
2K3B ...[
2KH2 ...MTWRITE [DEPTH ZERO; BLOCK WAS NEXT TO ACTIVITY BEFORE DOWN
2L2L ...[
2LG= ... STOZ AWORK4(2) [ DEPTH
2L^W ...[
2MFG ...ZCONFURWB [DEPTH [AWORK4]; ELSE AS ABOVE
2M^6 ...[
2NDQ ... LDX 3 FPTR(2) [X3->NEXT BLOCK
2NYB ... LDCT 0 BLINK/8
2PD2 ... ERX 0 ATYPE(3)
2PXL ... BNZ 0 NOBLINK [J IF BLINK NOT CREATED BY DOWN
2QC= ... LDX 3 FPTR(3) [X3->BLOCK NEXT TO BLINK
2QWW ...NOBLINK
2RBG ... LDCT 7 #400 [ZFILEWRIT SWITCH
2RW6 ...
2S*Q ...[
2STB ...ZMERGE
32NW ... STO 7 AWORK1(2) [KEEP SWITCHES
32Q4 ... LDX 6 A1(3) [PICK UP CURRENT BULK FILE ADDRESS
32R= ... CHAIN 3,2 [CHAIN NEXT TO ACTIVITY
32SD ... LDX 3 AWORK4(2) [DEPTH FOR FFCA
32TL ... FFCA [X2->FCA
32WS ... PSTAC 2,2 [X2->FSTACK
32Y2 ... BFCBX 2,2 [X2->FCB
32^8 ... NGX 5 BULKMOD(2)
332B ... BPZ 5 WRONG [J IF BULKMOD NEGATIVE
333J ... ADX 5 FBLMOD(2)
334Q ... SBN 5 FBLKS-A1 [LEAVES NO. OF BULK BLOCKS
335Y ... LDX 2 FX2
3376 ... LDX 3 FPTR(2) [RECOVER BLOCK POINTER
338G ... STO 5 AWORK3(2) [FOR FINAL CHECK
33N6 ... LDX 1 FX1
347Q ... BRN SUPPLIED
34MB ...[
3572 ...[
35LL ...MTCHECK [MTCHECK MACRO ENTRY POINT
366= ...[
36KW ... LDX 5 ACOMMUNE3(2) [NO. OF BULK BLOCKS IN FILE
375G ... STO 5 AWORK3(2)
37K6 ... BRN MTCHECKMERG
384Q ...[
38JB ...MTCHECKNOD [MTCHECK MACRO ENTRY POINT IF %D NOT GIVEN
3942 ...[
39HL ... LDN 5 FILESIZE-1 [USE MAXIMUM POSSIBLE
3=3= ... NGS 5 AWORK3(2) [I.E. NO FINAL CHECK
3=GW ...MTCHECKMERG
3?2G ... STOZ AWORK1(2) [SET ZERO FOR MTCHECK
3?G6 ... LDX 6 ACOMMUNE2(2) [CURRENT BULK FILE ADDRESS
3?^Q ... LDX 0 ACOMMUNE1(2) [ATYPE OF BLOCK TO BE CHECKED
3#FB ... FIND 3,0 [X3->BLOCK
3#^2 ...SUPPLIED
3*DL ... BNG 5 WRONG [J IF BULK SIZE NEGATIVE
3*Y= ... SLL 5 GSBSLOG [CONVERT BLOCKS TO WORDS
3BCW ... ADN 5 1 [ADJUST FOR TESTING EASE
3BXG ... LDX 7 ALOGLEN(3)
3CC6 ... SRL 7 GSBSLOG-BLS [CONVERT LENGTH TO BLOCKLETS
3CWQ ...NEXTBLKLET
3DBB ... NGN 4 1 [INITIALISE INDEX POINTER REL TO A1
3DW2 ... BRN MTBULKREC [1ST WORD OF BLOCKLET LOOKS LIKE
3F*L ...[ 2ND WORD OF DATA RECORD.
3FT= ...NEXTREC
3G#W ... SMO 4
3GSG ... LDX 0 A1(3) [NEXT RECORD HEADER
3H#6 ... BZE 0 NDBLKLET [J IF END OF BLOCKLET
3HRQ ... BNG 0 NOTBULK [J UNLESS BULK RECORD
3J?B ... ADS 0 6 [UPDATE BULK FILE ADDRESS
3JR2 ...MTBULKREC
3K=L ... SMO 4
3KQ= ... LDX 0 A1+1(3) [GET BULK FILE NEXT ADDRESS
3L9W ... BXU 0 6,WRONG [J IF BULK FILE ADDRESS INCORRECT
3LPG ... BXGE 0 5,WRONG [J IF BULK FILE ADDRESS OUT OF RANGE
3M96 ... ADN 4 AMTDATA [INCREMENT INDEX POINTER
3MNQ ...OVERBLKLET
3N8B ... BXL 4 BSBS4,NEXTREC [J UNLESS OVER END OF BLOCKLET
3NN2 ...WRONG
3NXS ... LDX 2 FX2
3P7L ... LDX 0 AWORK1(2)
3PM= ... BNG 0 ZGEOERR [J TO GEOERR IF FILEWRIT
3Q6W ... BZE 0 NOREPORT [J IF MTCHECK MACRO
3QLG ... CORRUPTB BACK1(3),BACK2(3) [REPORT ERROR & ABANDON FILE
3R66 ...NOREPORT
3RKQ ... SETREP2 CORRUPT
3S5B ... LDX 0 AWORK1(2)
3SK2 ... BNZ 0 UP [J UNLESS MTCHECK MACRO
3T4L ... UPPLUS 1
3TJ= ...[
3W3W ...NOTBULK
3WHG ... BXU 0 TEND(1),NOTEND [J UNLESS END OF INDEX FOUND
3X36 ... KEEPREP 7,ENDFILE
3XGQ ... LDX 5 AWORK3(2) [SIZE OF BULK FILE IN BLKS
3Y2B ... BNG 5 RETURN [J IF NOT KNOWN
3YG2 ... ADN 6 GSBS-1 [ROUND UP
3Y^L ... SRL 6 GSBSLOG [CONVERT TO BLOCKS
3^F= ... BXU 5 6,WRONG [J IF INDEX DISAGREES
3^YW ... BRN RETURN
42DG ...[
42Y6 ...NOTEND
43CQ ... BXU 0 TMARK(1),NOTMARK [J UNLESS TAPEMARK
43XB ... ADN 4 AMTMARK [INCREMENT INDEX POINTER
44C2 ... BRN OVERBLKLET
44WL ...[
45B= ...NOTMARK
45TW ... BXU 0 TQUAL(1),NOTQUAL [J UNLESS QUALIFIER
46*G ...THEADER
46T6 ... SMO 4
47#Q ... BXU 0 A1+AMTQUAL-1(3),WRONG [J IF ENDS DON'T MATCH
47SB ... ADN 4 AMTQUAL [INCREMENT INDEX POINTER
48#2 ... BRN OVERBLKLET
48RL ...[
49?= ...NOTQUAL
49QW ... BXU 0 THDDR(1),WRONG [J UNLESS HEADER
4==G ... BNZ 6 WRONG [J IF HDDR AFTER BULK DATA
4=Q6 ... BRN THEADER
4?9Q ...[
4?PB ...NDBLKLET
4#92 ... SBN 4 GSBS4-1
4#NL ... ADX 4 A1+GSBS4-1(3) [LAST WORD OF BLOCKLET
4*8= ... BNZ 4 WRONG [J IF BACKWARD POINTER WRONG
4*MW ... ADN 3 GSBS4 [MOVE BLOCK POINTER TO NEXT BLOCKLET
4B7G ... BCT 7 NEXTBLKLET [START AGAIN IF ANY LEFT
4BM6 ... KEEPREP 7,OK
4C6Q ...RETURN
4CLB ... SETREP2 OK [REPLY (UNLESS MTCHECK)
4D62 ... LDX 0 AWORK1(2)
4DKL ... BNZ 0 UP [J TO OMIT REPLY UNLESS MTCHECK
4F5= ... STO 6 ACOMMUNE1(2) [SET UPDATED BULK FILE ADDRESS REPLY
4FJW ... PUTREP2 7
4G4G ... UPPLUS 1
4GJ6 ...UP UP
4H3Q ...[
4HHB ...ZGEOERR
4J32 ... GEOERR 1,WRITE! [FORMAT ERROR IN MT FILE INDEX BLOCK
4JGL ...[
4K2= ...#END
^^^^ ...523361560006