12 22#C ... SEG COPYB,8,FILE, USERCOMS 15 22LS ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982 4 22_= [ 4 23DW [ 10 23YG SEGENTRY K1COPYB,QDIR 10 24D6 SEGENTRY K2COPYB,QMAG 10 24MY ... SEGENTRY K3COPYB,QCOMM 11 24RT ... SEGENTRY K4COPYB,QCREATE 4 24XQ [ 4 25CB [ 19 25X2 [ THIS SEGMENT HANDLES COPYING DIRECTORIES AND OFF-LINE FILES. 4 26BL [ 4 26W= [ 20 27*W [ AWORK1 = NO. OF FILES OPEN AT K1COPY & ARE TO BE LEFT OPEN WHEN 9 27TG [ LEAVING THE SEGMENT. 15 28*6 [ AWORK2 IS +VE IF NOT FIRST TIME THRU A LOOP 20 28SQ [ X6 AT XEND TIME => -VE IF BRKIN HAS OCCURRED AND GOES TO COMBRKIN 21 29#B [ B0-X5 = 1 => INFILE IS A MULT; B15-23 OF X5 SET => OUTFILE IS A MULT 18 29S2 [ B15-23 OF X5 ALSO = NO. OF NEW ELEMENTS (EXCLUDING MDF) 21 2=?L [ AWORK3 -VE => OUTFILE IS A NEW FILE (TO BE ERASED IF INFILE NOT OK) 6 2=BQ ...#UNS FCYCOMM 19 2=FW ...[ AWORK4 = B0 SET => APPEND, B10 SET => GDR, B16 SET => COMMUNE 7 2=K2 ...#UNS FCYCOMM 4 2=N6 ...#SKI 20 2=R= [ AWORK4 = 0 => NOT APPEND (ADJUNCTS FREED, IF ANY); -VE => APPEND 4 2?=W [ 9 2?QG TCLUDGE +ACLUDGE 20 2*9B MEINF1 #56400020 [SER, MDF, MULTEL, MTFILE, PFCC 15 2*HR ... [AND FHDIRMODE BITS 20 2*W8 ...MEINF1A #54400020 [NO MULTELEM -- FOR COPYING ELEMS 4 2F6B [ 4 2FL2 [ 4 2G5L [ 16 2GK= QDIR [DIRECTORY PATH 20 2H4W [ THE INFILE IS A DIRECTORY. THE DIRECTORY IS CLOSED BEFORE A 20 2HJG [ WHATBACK IS DONE TO GET B.S. FOR THE OUTFILE. THE WHATBACK 19 2J46 [ PARAM IS INCREASED BY 2**N (N INCREASING BY 1 EACH TIME 18 2JHQ [ ANOTHER GETBAX IS TO BE DONE), IN CASE THE DIRECTORY 20 2K3B [ INCREASES IN SIZE. WHEN OUTFILE EXISTS, DIR IS REOPENED. IF 19 2KH2 [ NOT OK, MUST ERASE OUTFILE IF IT IS A NEWFILE -- OTHERWISE 21 2L2L [ LEFT EMPTY UNLESS APPENDING. IF OK CHECK THAT OUTFILE HAS ENUF 21 2LG= [ SPACE. IF ENUF J TO APPROPRIATE APPEND/NOAPPEND PATHS IN COPYA. 15 2L_W [ IF NOT ENUF GETBAX MORE, APPEND XTRA BS TO 14 2MFG [ OUTFILE FCB & REOP DIRECTORY AGAIN. 4 2M_6 [ 9 2NDQ CALL 4 RCREATE 9 2NYB CALL 4 RFREEW 7 2PD2 LDN 7 2 9 2PXL CALL 4 RTOPFCB 9 2QC= LDX 6 FBLMOD(2) 9 2QWW SBN 6 FBLKS-A1 17 2RBG LDX 4 7 [GET ADDITIONAL BLKS 6 2RW6 QDBSINCRE 21 2S*Q LDN 0 FILESIZE [LOOP: INCREASE WHATBACK/GETBAX PARAM 6 2STB QDBSINCREA 21 2T*2 BXGE 6 0,QDENUFBS [AT MOST BY 2**N (N = NO. OF TIMES 20 2TSL ADN 6 1 [WHATBACK/GETBAX IS DONE + 1) BUT 19 2W#= BCT 4 QDBSINCREA [TOTAL NOT EXCEEDING FILESIZE 5 2WRW QDENUFBS 9 2X?G #SKI K6COPYB>199-199 10 2XR6 TRACE 6,CYWHATBK 8 2Y=Q LDX 2 FX2 9 2YQB LDX 0 AWORK2(2) 10 2_=2 BZE 0 QDFIRSTCLOS 10 2_PL BZE 5 QDIRLEVEL1 21 329= LDN 1 2 [IN MULT (OUTFILE) CASE, DIR IS AT 20 32NW LDN 2 1 [LEVEL 2; SO MOVE IT TO LEVEL 1 10 338G CALL 4 RFILEMOVEX 6 33N6 QDIRLEVEL1 20 347Q CLOSEDIR [NOT 1ST TIME => DIR AT LEVEL 1 15 34MB SETUPCORE 6,1,BSTB,EMPTYB [FOR GETBAX 6 3572 QDREGETBAX 19 35LL STO 6 A1(1) [[6] - 2 BLKS + 2 FOR REC HDR 14 366= CALL 4 RTOPFCB [OUTFILE 21 36KW LDX 3 BSPRE(2) [BS MUST BE IN SAME FILE AS OUTFILE 9 375G STO 3 A1+1(1) 9 37K6 #SKI K6COPYB>199-199 10 384Q TRACE 6,CYGETBAX 8 38JB SMO FX2 9 3942 LDX 0 AWORK4 9 39HL BNG 0 QDNOINCRE 10 3=3= CALL 4 RINCREAMBS 8 3=GW BRN XBRK8 6 3?2G QDNOINCRE 6 3?G6 GETBAX 10 3?_Q MHUNT 1,BSTB,FULLB 20 3#FB SBX 3 A1+1(1) [IF BS NOT IN SAME FILE, REPEAT 9 3#_2 BZE 3 QDALTFCB 20 3*DL FREEBAX [BSTB/EMPTYB LEFT, SO NO NEED TO 17 3*Y= MHUNT 1,BSTB,EMPTYB [SETUPCORE ANOTHER 10 3BCW BRN QDREGETBAX 5 3BXG QDALTFCB 15 3CC6 SBN 6 2 [FOR REC HDR 14 3CDN ... CALL 4 RTOPFCB [OUTFILE 9 3CG= ... LDX 0 FUSEBL(2) 7 3CKB ... ADX 0 6 20 3CNG ... SBN 0 FBLKS-A1+FILESIZE+1 [X0 -VE UNLESS INFILE WONT FIT 20 3CRL ... BPZ 0 XERROR7 [WITHOUT MAKING FILE>FILESIZE 16 3DBB LDX 4 ALOGLEN(2) [SAVE OLD ALOGLEN 18 3DL8 ... BZE 6 NMAPBIN [J IF NO BLOCKS TO ADD 15 3DW2 ADX 4 6 [XTRA BLKS 10 3F*L ALTLENG 2,4,REALTLENG 16 3FT= SBX 4 6 [GET OLD ALOGLEN 16 3G#W MHUNTW 1,BSTB,FULLB [GETBAX LEFT ONE 20 3GSG TOPFCB 2 [OUTFILE; CANT USE CALL 4 RTOPFCB 9 3H#6 LDN 0 A1+2(1) 9 3HRQ SMO FUSEBL(2) 8 3J?B LDN 1 A1(2) 7 3JR2 LDX 3 6 17 3K=L MOVE 0 0(3) [XTRA BLKS INTO FCB 19 3KGD ... LDX 4 FUSEBL(2) [SAVE OLD VALUE FOR LATER USE 9 3KQ= ADS 3 FUSEBL(2) 9 3KST ... BS 2,BFALTB 20 3KXD ... JBC NMAPBIN,2,BFCARE [J UNLESS CAREFUL UPDATING TO DO 10 3L23 ... SBN 4 FBLKS-A1-1 17 3L4L ... MAPBIN 4,,3 [DO CAREFUL UPDATING 5 3L79 ...NMAPBIN 10 3L9W MFREE BSTB,FULLB 9 3LPG BRN QDREOPDIR 6 3M96 QDFIRSTCLOS 17 3MNQ CALL 4 RCLOSE [DIR BEFORE WHATBACK 7 3N8B LDN 0 1 18 3NN2 STO 0 AWORK2(2) [MARKER: 'NOT FIRST TIME' 10 3P7L CALL 4 RSPARNORM2 8 3PM= BRN XEND6 7 3PPT ...#UNS FCYCOMM 4 3PSD ...( 9 3PX3 ... LDEX 0 AWORK4(2) 20 3P_L ... BNZ 0 XILLACC [ERROR IF COMMUNE SPECIFIED 4 3Q49 ...) 9 3Q6W LDX 0 AWORK4(2) 9 3QLG BNG 0 QDUSEROP2 10 3R66 CALL 4 RINCREAMBS 8 3RKQ BRN XBRK6 6 3S5B QDUSEROP2 9 3SK2 CALL 4 RWHATBACK 5 3T4L #SKI 1 4 3TJ= ( 9 3W3W LDX 0 AWORK4(2) 18 3WHG BPZ 0 QDUSEROPING [J IF NOT APPEND CASE 10 3X36 MHUNT 3,BSTB,FULLB 20 3XGQ NAME 3,FILE,FINTER [STOPS USEROPEN FROM FREEING IT 6 3Y2B QDUSEROPING 4 3YG2 ) 9 3Y_L #SKI K6COPYB>599-599 4 3_F= ( 10 3_YW MHUNT 1,CPB,CUNI 11 42DG TRACE APARA(1),CYQDIR 4 42Y6 ) 15 44WL USEROPEN XBRK6,WRITE,CREATE,EMPTY,STREAMS 9 45B= REPERR2 QDTREP 8 45TW BRN XEND6 5 46*G QDTREP 11 46T6 TREPN2 NEWFILE,QDOLDFILE 8 47#Q LDX 0 GSIGN 9 47SB STO 0 AWORK3(2) 6 48#2 QDOLDFILE 17 48RL TREPN2 MULTFILE,QDREP [J IF NOT MULTIFILE 19 49?= LDN 5 1 [REMEMBER IF OUTFILE IS MULT 5 49QW QDREP 9 4==G CALL 4 RFREEW2 6 4=Q6 QDREOPDIR 19 4?9Q CALL 4 RCHAIN [DIR JUNK ABOVE OUTFILE JUNK 14 4?D2 ... USEROPEN XBRK7,READR,TERMDIR,FROZEN 14 4#92 [ NO NEED TO DO FNORM TO GET AND FREE 19 4#NL [ ADJUNCTS (IF ANY) SINCE USEROP ON FABSNB & ANY WAS FREED ABOVE 19 4*8= [ TERMDIR PERMITS ACCESS TO DIRECTORIES IF USER IS NOT :MANAGER 9 4*MW REPERR2 QDREOPOK 9 4B7G CALL 4 RFREEJ 8 4BM6 BRN XEND9 5 4C6Q QDREOPOK 19 4CLB CALL 4 RCHAIN [OUTFILE JUNK ABOVE DIR JUNK 9 4D62 BZE 5 QDOUTGARD 7 4DKL LDN 1 0 7 4F5= LDN 2 2 18 4FJW CALL 4 RFILEMOVEX [DIR TO BELOW OUTFILE MDF 9 4G4G BRN QDCHEKLEN 6 4GJ6 QDOUTGARD 7 4H3Q LDN 1 0 7 4HHB LDN 2 1 17 4J32 CALL 4 RFILEMOVEX [DIR TO BELOW OUTFILE 6 4JGL QDCHEKLEN 19 4K2= [ CHECK IF OUTFILE SIZE .GE. DIR SIZE. CHECK FOR WHETHER SUM OF 15 4KFW [ THESE SIZES EXCEEDS [FSIZE] IS DONE IN COPYA 14 4K_G CALL 4 RTOPFCB [OUTFILE 20 4LF6 LDX 1 FUSEBL(2) [AMOUNT OF USEABLE BLOCKS IN FILE 20 4LYQ LDX 3 FBLMOD(2) [AMOUNT OF BLOCKS CURRENTLY USED 7 4MDB LDN 0 1 9 4MY2 BPZ 5 QDCHEKGAR 21 4NCL LDN 0 2 [DIR AT LEVEL 2 IF OUTFILE IS MULT 6 4NX= QDCHEKGAR 13 4PBW CALL 4 RSFCB [DIR 19 4PWG [ BECAUSE DISGUISING A BSTB/FULLB OVER TWO USEROPENS IS NOT 20 4QB6 [ VERY EFFICIENT, ONE SOLUTION IS TO PAST THE USEROPEN 'OFFSET' 20 4QTQ [ (I.E., APPEND) MODE TO OPENREL WHICH WOULD APPEND THE FULLB 19 4R*B [ BLOCKS TO THE OUTFILE FCB AND UPDATE FUSEBL (NOT FBLMOD). 9 4RT2 LDX 6 FBLMOD(2) 5 4S#L #SKI 1 4 4SS= ( 8 4T?W SMO FX2 9 4TRG LDX 0 AWORK4 17 4W?6 BPZ 0 QDNOAPPEND [J IF NOT APPEND CASE 21 4WQQ SBX 1 3 [CHEK IF ENUF BLOX APPENDED TO OUTFIL 18 4X=B BZE 1 QDNORMAL [J IF NO BLOX APPENDED 17 4XQ2 BPZ 1 QDCOMPARE [J IF SOME XTRA BLOX 20 4Y9L GEOERR 1,RONGUSBL [ [FUSEBL] SHDNT BE LS [FBLMOD] 6 4YP= QDCOMPARE 20 4_8W SBX 1 6 [CHEK IF DIRECTORY SIZE IN X6 CAN 17 4_NG [ BE ACCOMODATED BY THE XTRA BLOX IN THE OUTFILE FCB 17 5286 BNG 1 QDNORMAL [J IF DIR TOO LARGE 10 52MQ MHUNT 1,FILE,FINTER 18 537B BNG 1 QDSIZOK [J IF NO DISGUISED FULLB 10 53M2 NAME 1,BSTB,FULLB 16 546L MFREEBAX [RETURN UNUSED BS 9 54L= BRN QDSIZOK 5 555W QDNORMAL 18 55KG SBN 6 FBLKS-A1 [NORMALIZE TO NO. OF BLKS 16 5656 MHUNT 3,FILE,FINTER [RENAMED ABOVE 9 56JQ BPZ 3 QDRENAME 9 574B BRN QDGETMORE 5 57J2 QDRENAME 10 583L NAME 3,BSTB,FULLB 8 58H= ... LDX 4 A1(3) 16 592W ... SBN 4 2 [RECORD HEADER 7 59GG ... SBX 4 6 19 5=26 ... BNG 4 QDIRLARGER [J IF DIR INCREASED IN SIZE 16 5=FQ CALL 1 REALTLENG [FCB OF OUTFILE 21 5=JW ... ADX 4 6 [X4= NO OF BLOCKS TO BE ADDED 9 5=N2 ... ADX 4 FUSEBL(2) 21 5=R6 ... SBN 4 FBLKS-A1+FILESIZE+1 [X4 -VE UNLESS INFILE TOO BIG ALREADY 9 5=W= ... BPZ 4 XERROR7 17 5=_B LDX 0 BSPRE(2) [GET LOGICAL FILE NO. 9 5?F2 SBX 0 A1+1(3) 18 5?YL BNZ 0 QDWRONGFILE [J IF NOT IN SAME FILE 8 5#D= LDX 3 A1(3) 15 5#XW SBN 3 2 [NO. OF BLKS 10 5*CG LDX 4 ALOGLEN(2) 18 5*M# ... BZE 3 NMAPBIN2 [J IF NO BLOCKS TO ADD 17 5*X6 ADX 4 3 [ADD XTRA NO. OF BLKS 10 5BBQ ALTLENG 2,4,REALTLENG 7 5BWB SBX 4 3 9 5CB2 CALL 1 REALTLENG 10 5CTL MHUNTW 1,BSTB,FULLB 9 5D*= LDN 0 A1+2(1) 9 5DSW SMO FUSEBL(2) 8 5F#G LDN 1 A1(2) 17 5FS6 MOVE 0 0(3) [XTRA BLKS INTO FCB 9 5G3Y ... LDX 4 FUSEBL(2) 9 5G?Q ADS 3 FUSEBL(2) 9 5GB* ... BS 2,BFALTB 20 5GDY ... JBC NMAPBIN2,2,BFCARE [J UNLESS CAREFUL UPDATING TO DO 10 5GHH ... SBN 4 FBLKS-A1-1 21 5GL6 ... MAPBIN 4,,3 [CARRY OUT NECESSARY CAREFUL UPDATING 5 5GNP ...NMAPBIN2 10 5GRB MFREEW BSTB,FULLB 5 5H?2 QDSIZOK 16 5HQL BZE 5 QGAPPEND [J IF NOT MULT 9 5J== BRN QMAPPEND 6 5JPW QDIRLARGER 7 5K9G ... NGX 6 4 19 5KP6 ADX 6 A1(3) [ADD XTRA BLKS TO BE GOTTEN 6 5L8Q QDWRONGFILE 15 5LNB FREEBAX [OLD BLOKS 10 5M82 MFREEW BSTB,EMPTYB 14 5MML BRN QDGETMORE [NEW BLKS 6 5N7= QDNOAPPEND 4 5NLW ) 7 5P6G SBX 1 6 15 5PL6 BPZ 1 QDNONEED [J IF ENUF BS 19 5Q5Q NGX 6 1 [X6 CONTAINS THE DIFFERENCE 9 5QKB BRN QDGETMORE 5 5R52 QDNONEED 10 5RJL BZE 5 QGNOAPPEND 10 5S4= BRN QMNOAPPEND 6 5SHW QDGETMORE 21 5T3G BZE 5 QDGARBS [IN GARDEN CASE GET SUFFICIENT AMOUNT 19 5TH6 LDN 6 FILESIZE+FBLKS-A1 [MULT CASE: GET MAXIMUM BS 14 5W2Q CALL 4 RTOPFCB [OUTFILE 20 5WGB SBX 6 ALOGLEN(2) [DECREMENT EXISTING BS OF OUTFILE 9 5X22 BRN QDENUFBS 5 5XFL QDGARBS 18 5X_= SLL 7 1 [DOUBLE BS TO BE GOTTEN 7 5YDW LDX 4 7 15 5YYG BRN QDBSINCRE [& GO GET IT 4 5_D6 [ 4 5_XQ [ 16 62CB QMAG [MAG REPLY PATH 19 62X2 [ A 'MAG' REPLY GIVEN WHEN USEROP ON INFILE. SO USEROP ON 19 63BL [ OUTFILE BEFORE DOING (LENGTHY) RETRIEVE FOR INFILE (I.E., 20 63W= [ REOPEN BUT WITHOUT 'NOWAIT' MODE). IF OFF-LINE INFILE TURNS 20 64*W [ INTO A MULTIFILE OR DISAPPEARS AFTER OUTFILE OPENED, LATTER IS 21 64TG [ ERASED IF IT IS A NEWFILE; OTHERWISE LEFT EMPTY. IF OK, J TO QG 10 65*6 [ OR QM PATHS IN COPYA. 17 65SQ [ SINCE CANT GET 'MAG' WHEN OPENING MDF (IT'S EMPTY) 14 66#B [ TWO ENT BLOX MEANS OFF-LINE MULTIFILE 19 66S2 [ CANT SIMPLY CHECK MULTIFILE BITS IN EINF1 BECAUSE COULD 10 67?L [ BE CY MULT(2/),NEWFILE 4 67R= [ 10 68=W MHUNTW 1,FILE,ENT 10 68QG HUNT2OPT 3,FILE,ENT,1 16 69=6 BNG 3 QMNOTMULT [J IF NO MDF ENT 16 69PQ LDX 5 GSIGN [INFILE IS MULT 19 6=9B LDEX 6 EINF3(1) [GET MAX SIZE FOR MULTIFILE 21 6=P2 [ RESET GEN. NO. OF INFILE FABSNB = 1 (FASTER THAN 'GEN. NO.' = 0 18 6?8L [ FOR GETDIR). COMPOST/USEROPEN HAS SET GEN. NO. = 2. 10 6?N= MHUNT 1,FILE,FABSNB 7 6#7W LDN 0 1 8 6#MG SMO A1(1) 15 6*76 STO 0 A1-6+4(1) [GEN. NO. = 1 6 6*LQ QMNOTMULT 9 6B6B CALL 4 RCREATE 16 6BL2 BNZ 5 QMNOCOPS [J IF MULT CASE 16 6C5L LDX 6 ECOPS(1) [GET BLKS SIZE 8 6CK= SRL 6 15 5 6D4W QMNOCOPS 9 6DJG CALL 4 RFREEW 21 6F46 [ IF MULT CASE, THE FILE/ENT FREED HERE IS THE ONE FOR THE ELEMENT 21 6F9# ... FINDNAME [EXPAND FILENAME FOR LATER COMPARISIO 17 6FBG ... [WITH OUTPUT FILENAME 10 6FHQ CALL 4 RSPARNORM2 8 6G3B BRN XEND6 4 6G3W ...# 21 6G4B ...# THE FOLLOWING IS NEEDED TO PREVENT AN OFFLINE FILE BEING COPIED TO 18 6G4W ...# ITSELF IN ERROR BEING EMPTIED BEFORE THE ERROR IS FOUND. 18 6G5B ...# IF THE OUTFILE EXISTS WE EXPAND BITH FILENAMES TO A FULL 9 6G5W ...# FORM AND COMPARE THEM 4 6G6B ...# 10 6G6W ... MHUNT 3,FILE,FABSNB 14 6G7B ... JMBS NOTSAME,3,BFABTSN,BFABWORK 21 6G7W ... FINDNAME [EXPAND OUTFILE FABSNB FOR COMPARISIO 12 6G8B ... OPENDIR (GEOERR),READ,QUERY 10 6G8W ... TESTRPN2 OK,NOTSAME 7 6G9B ... CLOSETOP 10 6G9W ... MHUNTW 1,FILE,ENT 10 6G=6 ... MHUNT 3,FILE,FABSNB 21 6G=B ... BWNZ EUSE1(1),NOUPDATE [IF USER HAS MISTAKENLY GIVEN A DIR 20 6G=L ... [FOR THE OUTFILE THE NEXT STEP IS 20 6G=W ... [LEFT OUT AS IT MIGHT RESULT IN 17 6G?6 ... [A CORRUPT FABSNB. 21 6G?B ... LDX 0 EREEL(1) [OTHERWISE WE UPDATE THE REEL NO IN 20 6G?L ... SMO A1(3) [IN THE FABSNB (OPENDIR DOESNT). 9 6G?W ... STO 0 A1-3(3) 5 6G#6 ...NOUPDATE 9 6G#B ... MFREEW FILE,ENT 11 6G#W ... HUNT2 1,FILE,FABSNB,3 8 6G*B ... LDX 2 A1(3) 19 6G*W ... BXU 2 A1(1),NOTSAME [OK IF DIFFERENT LENGTH FABS 5 6GBB ...MCOMPARE 7 6GBW ... SMO 2 9 6GCB ... LDX 0 A1-1(3) 7 6GCW ... SMO 2 19 6GDB ... BXU 0 A1-1(1),NOTSAME [OK IF WORDS DIFFER IN FABS 9 6GDW ... BCT 2 MCOMPARE 9 6GFB ... ACROSS COPYA,40 5 6GFW ...NOTSAME 4 6GGB ...# 9 6GH2 LDX 0 AWORK4(2) 9 6H2L BNG 0 QMUSEROP2 19 6HG= SLL 6 1 [DOUBLE AMT OF BS INCREASE 12 6H_W [ SINCE INFILE IS NOT OPEN HERE 10 6JFG CALL 4 RINCREAMBS 8 6J_6 BRN XBRK6 17 6KDQ SRL 6 1 [CORRECT AMT OF BS 6 6KYB QMUSEROP2 9 6LD2 CALL 4 RWHATBACK 9 6LXL #SKI K6COPYB>599-599 4 6MC= ( 10 6MWW MHUNT 1,CPB,CUNI 11 6NBG TRACE APARA(1),CYQMAG 4 6NW6 ) 7 6P2X ...#UNS FCYCOMM 4 6P7N ...( 18 6P#F ... STOZ 4 [INITIALISE 2ND MODE WORD 9 6PF= ... LDEX 0 AWORK4(2) 8 6PL3 ... BZE 0 NCOM 16 6PQS ... SETUPMODE 7,4,APPEND,COMMUNE,CREATE,EMPTY,GDR 18 6PXK ... ANDX 4 AWORK4(2) [ADD IN GDR IF SPECIFIED 8 6Q4B ... BRN OPEN 4 6Q97 ...NCOM 4 6Q*Y ...) 14 6QGP ... SETMODE 7,WRITE,EMPTY,CREATE,STREAMS 4 6QMG ...OPEN 9 6QSL BPZ 5 QMOPEX 10 6R#= ... ADDMODE 7,STREAMONLY 14 6YN6 MFREEW FILE,ENT [OF MDF 5 6_7Q QMOPEX 7 6_#Y ...#UNS FCYCOMM 4 6_G6 ...#SKI 9 6_M# ... USEROPEX XBRK6,7 6 6_SG ...#UNS FCYCOMM 9 6__Q ... USEROPEX XBRK6,7,4 9 7272 REPERR2 QMTREP 8 72LL BRN XEND6 5 736= QMTREP 11 73KW TREPN2 NEWFILE,QMOLDFILE 8 745G LDX 0 GSIGN 9 74K6 STO 0 AWORK3(2) 6 754Q QMOLDFILE 17 75JB TREPN2 MULTFILE,QMREP [J IF NOT MULTIFILE 18 7642 LDN 5 1 [REMEMBER OUTFILE IS MULT 5 76HL QMREP 9 773= CALL 4 RFREEW2 19 77GW CALL 4 RCHAIN [MAG JUNK ABOVE OUTFILE JUNK 7 77LW ...#UNS FCYCOMM 4 77QW ...( 9 77WW ... LDEX 0 AWORK4(2) 16 782W ... BZE 0 NOCOMM [J IF NOT COMMUNE 15 78=W ... USEROPEN XBRK7,READ,STREAMS,TERMDIR,FROZEN 8 78QW ... BRN NOWOP 5 78WW ...NOCOMM 4 792W ...) 16 799H ... USEROPEN XBRK7,READR,STREAMS,TERMDIR,FROZEN 5 79P8 ...NOWOP 9 79_2 REPERR2 QMRTRVOK 9 7=DL CALL 4 RFREEJ 8 7=Y= BRN XEND9 5 7?CW QMRTRVOK 11 7?XG TREP2 MULTFILE,QMSTREAM 10 7#C6 TREPN2 DIR,QMFILE 18 7#WQ GEOERR 1,DIROFFLI [DIR NOT ALLOWED OFF-LINE 5 7*BB QMFILE 19 7*W2 CALL 4 RCHAIN [OUTFILE JUNK ABOVE MAG JUNK 17 7B*L BNZ 5 QMSTRMOUT [J IF OUTFILE IS MULT 7 7BDQ ... TOPFCB2 2 12 7BHW ... JMBS NOTDA,2,BFSER,BFMT 19 7BM2 ... LDX 7 FSIZE(2) [REMEMBER MAXSIZE FOR DA FILE 5 7BQ6 ...NOTDA 7 7BT= LDN 1 0 7 7C#W LDN 2 1 19 7CSG CALL 4 RFILEMOVEX [MAG FILE TO BELOW OUTFILE 8 7D38 ... LDX 2 FX2 7 7D9W ... TOPFCB2 3 11 7DDJ ... JMBS NDA,3,BFSER,BFMT 18 7DM= ... STO 7 FSIZE(3) [UPDATE MAXIMUM FILE SIZE 4 7DTY ...NDA 15 7F4L ... LDX 0 AWORK4(2) [APPENDING? 9 7F?B BNG 0 QGAPPEND 10 7FR2 BRN QGNOAPPEND 6 7G=L QMSTRMOUT 7 7GQ= LDN 1 0 7 7H9W LDN 2 2 20 7HPG CALL 4 RFILEMOVEX [MAG FILE TO BELOW MDF (OUTFILE) 9 7J96 BRN QMGOTOSTR 5 7JNQ QMSTREAM 16 7K8B ORX 5 GSIGN [INFILE IS MULT 19 7KN2 CALL 4 RCHAIN [OUTFILE JUNK ABOVE MAG JUNK 7 7L7L LDEX 0 5 10 7LM= BNZ 0 QMBOTHMULT 20 7M6W BRN XERROR8 [OUTFILE NOT MULT WHILE INFILE IS 6 7MLG QMBOTHMULT 7 7N66 LDN 1 0 7 7NKQ LDN 2 3 21 7P5B CALL 4 RFILEMOVEX [MAG FILE ELEM TO BELOW OUTFILE MDF 7 7PK2 LDN 1 0 7 7Q4L LDN 2 3 21 7QJ= CALL 4 RFILEMOVEX [MAG FILE MDF TO BELOW MAG FILE ELEM 7 7T2B LDN 0 1 9 7TG2 STO 0 AWORK2(2) 6 7T_L QMGOTOSTR 8 7WF= SMO FX2 15 7WYW LDX 0 AWORK4 [APPENDING? 13 7XDG BNG 0 QMAPPEND [YES 10 7XY6 BRN QMNOAPPEND 4 7YCQ [ 14 7YCW ...[ ENTRY FROM COPYA TO SET UP CREATE BLOCK 4 7YD2 ...[ 5 7YD6 ...QCREATE 9 7YD= ... CALL 4 RCREATE 5 7YDB ... UP 4 7YDG ...[ 7 7YDL ...#UNS FCYCOMM 4 7YFG ...( 5 7YGB ...QCOMM 19 7YH= ...[ THE OUTPUT FILE IS OPEN COMMUNALLY SO THE COPYING MUST BE DONE 14 7YJ6 ...[ RECORD BY RECORD INSTEAD OF BLOCK BY BLOCK 4 7YK2 ...[ 18 7YKW ... STOZ 7 [INITIALISE RECORD COUNT 5 7YLQ ...YSTEP 19 7YML ... STEP 1 [READ A RECORD FROM INFILE 16 7YNG ... BZE 3 XEND2 [J IF END OF FILE 5 7YPB ...YAPAG 7 7YQ= ... STO 3 6 18 7YR6 ... LDEX 1 0(3) [NO. OF WORDS TO APPEND 18 7YS2 ... STEP ,0(1),XBRK2 [GET POINTER IN OUTFILE 20 7YSW ... TESTREP APPWAIT,WAIT,FILEFULL,XFULL,COORED,YSAG,FNEARLY,YSAG 8 7YTQ ... LDEX 1 0(3) 17 7YWL ... LDX 2 6 [PICK UP READ POINTER 20 7YXG ... MOVE 2 0(1) [COPY RECORD ACROSS TO OUTFILE 18 7YYB ... ADN 7 1 [INCREMENT RECORD COUNT 8 7Y_= ... BRN YSTEP 4 7_26 ...YSAG 17 7_32 ... STEPAGAIN 1 [REGAIN READ POINTER 8 7_3W ... BRN YAPAG 20 7_4Q ...XFULL [FILEFULL REACHED ON OUTPUT FILE 18 7_5L ... OUTNUM 7,0 [NO. OF RECORDS COPIED 19 7_6G ... MONOUT FCYFULL [OUTPUT INFORMATORY MESSAGE 8 7_7B ... BRN XEND2 19 7_8= ...WAIT [WAITING TO APPEND A RECORD 11 7_96 ... LONGSET IWTDEST,XGEOERR 8 7_=2 ... LONGSTOP XBRK2 15 7_=W ... BRN YSAG [TRY AGAIN 5 7_?Q ...XGEOERR 10 7_#L ... GEOERR 1,LONGSET? 4 7_*G ...) 21 7_C2 RCREATE [ROUTINE WHICH SETS UP FILE/CREATE 18 7_WL SBX 4 FX1 [GET INFO FROM ENT BLK 7 82B= CREATEB 10 82TW MHUNTW 2,FILE,CREATE 10 83*G MHUNTW 1,FILE,ENT 9 83T6 LDX 0 ERET(1) 9 84#Q STO 0 CERET(2) 9 84SB LDX 0 ETM(1) 9 85#2 STO 0 CETM(2) 9 85RL LDX 0 EINF1(1) 8 86?= BNZ 5 RCOMP 8 86QW SMO FX1 9 87=G ANDX 0 MEINF1A 9 87Q6 BRN RNCOMP 5 889Q RCOMP 8 88PB SMO FX1 9 8992 ANDX 0 MEINF1 5 89NL RNCOMP 9 8=8= STO 0 CEINF1(2) 9 8=MW LDX 0 EINF3(1) 9 8?7G STO 0 CEINF3(2) 9 8?M6 LDX 0 EFLOW(1) 9 8#6Q STO 0 CEFLOW(2) 9 8#LB LDX 0 EORG(1) 9 8*62 STO 0 CEORG(2) 20 8*KL JBS RINDEX,1,BEINDEX [IF INFILE INDEXED, OUTFILE NOT 9 8B5= LDX 0 EKEY(1) 9 8BJW STO 0 CEKEY(2) 5 8C4G RINDEX 10 8CJ6 LDX 0 EENDBUCK(1) 10 8D3Q STO 0 CEENDBUCK(2) 10 8DHB LDX 0 EVERSION(1) 10 8F32 STO 0 CEVERSION(2) 19 8F66 ... JBC NOTSERIAL,2,CESERIAL[IF ITS SERIAL SET MAXSIZE 21 8F9= ... LDN 0 FILESIZE [=MAX AS INFILE COULD BE SJFILE WITH 16 8F#B ... DEX 0 CEINF3(2) [MAXSIZE<