15 22FL ...#SEG OPENWORK [ROB RUSHTON 8 22_= #OPT K0OPENWORK=0 14 23DW #LIS K0OPENWORK>K0WORK>K0FILESTORE>K0ALLGEO 14 23YG #OPT K6OPENWORK=K6WORK>K6FILESTORE>K6ALLGEO 7 24D6 8HOPENWORK 12 24XQ SEGENTRY K1OPENWORK,OPENWORK 12 25CB SEGENTRY K2OPENWORK,OPENWORK2 13 25X2 SEGENTRY K3OPENWORK,ZGETDIRWORK 13 26BL SEGENTRY K13OPENWORK,ZGETDIRWORA 11 26W= SEGENTRY K4OPENWORK,THAWWF 12 27*W SEGENTRY K5OPENWORK,OPENTEST 12 27TG SEGENTRY K8OPENWORK,USERCRWF 4 28*6 [ 21 28SQ [THIS SEGMENT CONTAINS THE CODING FOR SOME SUPER FAST WORKFILE MACROS, 7 29#B [AS FOLLOWS:- 9 29S2 [ K1 - OPENWORK 13 2=?L [ K3 - GETDIRWORK (%A ABSENT) 13 2=R= [ K13 - GETDIRWORK (%A PRESENT) 9 2?=W [ K4 - THAWWF 9 2?QG [ K5 - OPENTEST 9 2#=6 [ K7 - FREEZEWF 9 2#PQ [ K8 - USERCRWF 4 2*9B [ 9 2*F8 ...XWORK 4HWORK 11 2*P2 XMODES +ADIROPEN+ALEAVE 9 2B8L TCLUDGE +ACLUDGE 10 2BN= MCL +AUSERCLEAN 20 2C7W SERAZADD #40000 [BIT 9 FOR ERASE ADDITIVE MODE 20 2CMG XFCB SETMODE 0,THAW [S/R TO LOCATE FCB IN ALL CASES 8 2D76 LDX 2 FX2 20 2DLQ ANDX 0 7 [J TO LOOK FOR FILE IN CURRENT 17 2F6B BNZ 0 YETH [IF MODE NOT THAW OR 19 2FL2 LDCH 0 ATYPE(2) [ACT NOT ACTLF WORKFILE MUST 19 2G5L SBN 0 ACTLF/64 [BE IN CURRENT ACT'S WFRING 8 2GK= BNZ 0 NOTH 4 2H4W YETH 21 2HJG LDX 5 AWORK1(2) [IF JOBNO IS ALREADY CALCULATED PICK 21 2J46 BNZ 5 NXCP [IT UP FROM AWORK1, OTHERWISE CALCULA 4 2JHQ XJC 10 2K3B MHUNT 1,FILE,FABSNB 20 2KH2 OCTCON A1+5(1) [CONVERT JOBNO IN NAME TO BINARY 8 2L2L SMO FX2 20 2LG= STO 5 AWORK1 [PRESERVE JOBNO FOR FUTURE USE 4 2L_W NXCP 17 2MFG JOBLOCK 5,2 [LOCATE JOB BLOCK & 17 2M_6 BNG 2 NOFF [J IF NO O JOBLOCK 8 2NDQ FCAJO 2,,N 9 2NYB LDCH 0 ATYPE(2) 9 2PD2 SBN 0 CPAT/64 15 2PXL BNZ 0 NOFF [J IF NO CPAT 10 2QC= LDN 5 BWORKRING(2) 4 2QWW XFN 20 2RBG FINDWN 5,3,1 [LOCATE FCB ALLOWING TO-BE-ERASED 9 2RW6 TESTREPN OK,NOCP 15 2S*Q LDX 0 7 [J IF NOT OPEN ENTRY 8 2STB ANDN 0 #7000 8 2T*2 BZE 0 XIT 21 2TSL LDX 0 BACK1(3) [PICK UP THE BACKING STORE HOME OF 21 2W#= STO 0 AWORK2(2) [FCB & STORE IN CASE FCB IS REMOVED 21 2WRW LDX 0 BACK2(3) [TO FILE CHAIN DURING THE OPENWORK 9 2X?G STO 0 AWORK3(2) 17 2XR6 XIT EXIT 6 0 [EXIT IF FCB FOUND 19 2Y=Q NFCB GEOERR 1,NOWFFCB [ERROR IF FROZEN FILE MISSING 9 2YQB NJO GEOERR 1,NOJOBNO 4 2_=2 NOTH 8 2_PL SMO FX2 9 329= LDN 5 BWORKRING 20 32NW SETMODE 0,ERASING [IF ERASING MODE IS SET ALLOW FOR 17 338G ANDX 0 7 [TO-BE-ERASED FCBS. 8 33N6 BNZ 0 XFN 8 347Q FINDWN 5,3 9 34MB TESTREPN OK,NOFF 7 3572 EXIT 6 0 4 35LL NOCP 4 366= NOFF 8 36KW LDX 2 FX2 9 375G SETREP2 NOFILE 7 37K6 LDX 0 7 8 384Q ANDN 0 #7000 21 38JB BZE 0 UP [J TO GO UP IF NO MAIN MIDE(I.E.GDEW) 20 3942 LDEX 0 CLONG1(2) [IF LONG-EVENT FIELD SET, IT MUST 20 39HL BZE 0 NLS [BE UNSET BEFORE ABANDINING THE 19 3=3= LONGOFF [OPENWORK TO DO AN OPENREL 4 3=GW NLS 7 3?2G UPPLUS 1 4 3?G6 UP 21 3?_Q SBN 7 1 [IF GETDIRWORK ENTRY THE ENT SHOULD 14 3#FB BZE 7 UPP [BE FREED 9 3#_2 MFREEW FILE,ENT 4 3*DL UPP 5 3*Y= UP 4 3*_S ...# 20 3B3B ...# THIS SUBROUTINE REDUCES A JOB'S ONLINE BS COUNT FOR A ! FILE. 19 3B4Y ...# ON ENTRY, X0= SIZE OF DECREMEMT IN BLOCKS. X6 IS LINK. 18 3B6G ...# ON EXIT, X1=FX1, X2=FX2. USES X0. NO COORDINATION. 4 3B84 ...# 5 3B9L ...SUBCUBS 10 3B?8 ... SUBCUBS NOTOPEN,0,JOB 7 3B#Q ... EXIT 6 0 4 3BB# ...# 20 3BCW [THIS ROUTINE TESTS WHETHER THE FCB INDICATED BY X2 CAN BE OPENED 5 3BXG TRYREEL 17 3CC6 LDN 0 AEMPTY [IF IT IS EMPTY MODE, 7 3CWQ ANDX 0 7 9 3DBB BZE 0 ORDINARY 18 3DW2 LDX 4 FWAITCOUNT(2) [WE MUST MAKE SURE THAT 19 3F*L ORX 4 CTOPEN(2) [THE FILE IS UTTERLY UNUSED. 7 3FT= SLC 4 1 19 3G#W SLL 4 1 [COMMUNE BIT DOESN'T MATTER. 17 3GSG ORX 4 FREEZECOUNT(2) [NO GOOD IF FROZEN 8 3H#6 BZE 4 OK 19 3HRQ SETMODE 0,REPLY [TEST MODE WORD FOR REPLY BIT 7 3J?B ANDX 0 7 17 3JR2 BNZ 0 SAYCANT [IF THERE DONT WAIT 21 3K=L LDN 5 0 [SET FCB B.S. HOME PAIR (I.E. ZERO & 18 3KQ= LDX 6 BACK2(2) [UNIQUW N0.) FOR LONGSTOP 9 3L9W LONGSET 6,XSET,6 8 3LPG LDN 0 #400 20 3M96 ORS 0 COMM(3) [SET WAITING TO EMPTY BIT IN FCB 21 3MNQ DOWN OPENWAIT,3 [GO DOWN TO OPENWAIT FOR CLUDGETEST 16 3N8B BRN NOCL [J IF NO CLUDGE 7 3NN2 NGN 4 1 15 3P7L CALL 6 XFCB [RELOCATE FCB 8 3PM= LDN 0 #400 21 3Q6W ERS 0 COMM(3) [UNSET WAITING TO EMPTY BIT IN FCB 9 3QLG BRN SAYCANT 4 3R66 NOCL 7 3RDH ...#UNS EWAITFILE 19 3RQY ... LDX 6 XWORK(1) [WORKFILE SWITCH FOR WHATSTATE 10 3S5B LONGSTOP XBRK2,,FWFREE 13 3TJ= CALL 6 XFCB [WAIT 8 3W3W LDN 0 #400 21 3WHG ERS 0 COMM(3) [UNSET WAITING TO EMPTY BIT IN FCB 9 3X36 BRN ONEREEL 21 3XGQ XBRK [BREAKIN DURING OPENWAIT OR LONGSTOP 15 3Y2B CALL 6 XFCB [RELOCATE FCB 7 3YG2 LDN 0 1 20 3Y_L SBS 0 FWAITCOUNT(3) [BROKEN IN SO NO LONGER WAITING 8 3_F= BRN NLFT 5 3_YW XBRK2 15 42DG CALL 6 XFCB [RELOCATE FCB 8 42Y6 LDN 0 #400 21 43CQ ERS 0 COMM(3) [UNSET WAITING TO EMPTY BIT IN FCB 18 43XB LONGON 6,5 [WAKE UP OTHER WAITERS 21 44C2 NLFT HUNT 1,BSTB,FULLB [SEE IF THERE IS A BSTB/FULLB LYING A 14 44WL BNG 1 NBSTB [J IF NOT 21 45B= FREEBAX [FREE IT AND ITS BLOCKS IF THERE IS 10 45TW MFREE BSTB,EMPTYB 5 46*G NBSTB 5 46T6 UP 20 47#Q OPDIR GEOERR 1,DIREMPTY [OPENREL EMPTY ON A DIRECT-ORY 21 47SB [NO ONE CAN BE USING THE FILE IN ANY SENSE IN THE MULTI-REEL/EMPTY CASE. 14 48#2 [WE MIGHT AS WELL DO THE SAME FOR ONE REEL. 5 48RL ORDINARY 17 49?= LDX 4 CTOPEN(2) [PICK UP OPEN MODE: 9 49QW #SKI K6OPENWORK>599-599 10 4==G TRACE 4,WKCTOPEN 21 4=Q6 [FORMAT IS; L.S. 12 BITS,COUNT OF READ OPENERS. NEXT L.S. 9 BITS,COUNT 18 4?9Q [OF APPEND OPENERS. B0=SOLE OPENER BIT B1=COMMUNAL BIT. 11 4?PB LDX 0 FREEZECOUNT(2) 16 4#92 BZE 0 NOFRZ [OK IF NOT FROZEN 8 4#NL LDN 0 #7000 18 4*8= ANDX 0 7 [TEST MODE WORD FOR READ 8 4*MW SBN 0 #3000 16 4B7G BPZ 0 WAIT [WAIT IF IT ISNT 5 4BM6 NOFRZ 17 4C6Q BZE 4 OK [CARRY ON IF FCB OPEN 8 4CLB LDN 0 #7000 19 4D62 ANDX 0 7 [ISOLATE MAIN PART OF MODE 16 4DKL SBN 0 #3000 [TEST FOR READ 16 4F5= BPZ 0 S31 [SKIP IF NOT READ 7 4FJW LDX 0 4 20 4G4G SRL 0 12 [ISOLATE APPEND COUNT & SOLE BIT 17 4GJ6 ANDN 0 #5777 [RID OF COMMUNE BIT. 19 4H3Q BNZ 0 TBC [TRY FOR COMMUNE MODE & FILE 8 4HHB BRN OK 4 4J32 S31 11 4JGL LDEX 0 FREEZECOUNT(2) 17 4K2= BNZ 0 WAIT [MUST NOT IF FROZEN 4 4KFW TBC 10 4K_G LDX 4 FCOMMCT(2) 17 4LF6 ANDN 4 #7777 [CT OF CLEAN OPENERS 15 4LYQ BZE 4 RCOMM [J IF NONE 8 4MDB SMO FX1 8 4MY2 LDX 0 MCL 7 4NCL ANDX 0 7 16 4NX= BZE 0 WAIT [J IF NOT CLEAN 9 4PBW LDX 0 CTOPEN(2) 16 4PWG BPZ 0 RDCT [J IF NO WRITER 7 4QB6 LDX 0 7 15 4QTQ ANDN 0 #7000 [MAIN MODE 8 4R*B SBN 0 #3000 9 4RT2 #SKI K6OPENWORK>599-599 10 4S#L TRACE 0,WORKMODE 16 4SS= BPZ 0 WAIT [J IF NOT READER 7 4T?W OK EXIT 6 0 5 4TRG RCOMM 10 4W?6 LDX 4 FCOMMCT(2) 9 4WQQ #SKI K6OPENWORK>599-599 10 4X=B TRACE 4,WORKCOMM 17 4XQ2 BZE 4 WAIT [WAIT IF NO COMMUNERS 9 4Y9L LDN 0 ACOMMUNE 7 4YP= ANDX 0 7 9 4_8W #SKI K6OPENWORK>599-599 9 4_NG TRACE 0,COMMODE 18 5286 BZE 0 WAIT [J IF NOT COMMUNE MODE 9 52MQ LDX 0 CTOPEN(2) 8 537B SRL 0 12 17 53M2 ANDN 0 #1777 [EXTRACT APPEND CT 9 546L #SKI K6OPENWORK>599-599 9 54L= TRACE 0,WORKAPP 16 555W BNZ 0 OK [J IF APPENDERS 16 55KG SRL 4 12 [CT OF COMMUNES 4 5656 RDCT 9 56JQ LDX 0 CTOPEN(2) 16 574B ANDN 0 #7777 [CT OF READERS 7 57J2 ERX 4 0 9 583L #SKI K6OPENWORK>599-599 10 58H= TRACE 4,WORKRDCM 15 592W BZE 4 OK [J IF EQUAL 8 59GG BRN WAIT 4 5=26 [ 20 5=FQ [THIS IS THE ENTRY FROM THE OPENWORK MACRO. THIS OPENS A WORKFILE 5 5=_B OPENWORK 17 5?F2 STOZ AWORK1(2) [ZEROIZE JOBNO MARKER 16 5?YL LDX 7 EXEC1(2) [MODE WORD IN X7 7 5#D= #SKI K6OPENWORK 10 5#XW TRACE 7,OPENWORK 15 5*CG CALL 6 XFCB [LOCATE FCB 8 5*X6 SMO FX1 19 5BBQ ORX 7 XMODES [ADD DIROPEN AND LEAVE MODES 9 5BWB BRN ONEREEL 4 5CB2 WAIT 7 5CTL LDN 4 0 9 5D*= SETMODE 0,REPLY 21 5DSW ANDX 0 7 [TEST THE REPLY BIT IN THE MODE WORD: 17 5F#G BZE 0 OOR3 [IF NOT THERE WAIT: 5 5FS6 SAYCANT 15 5G?Q BNG 4 SCLD [J IF CLUDGE 8 5GRB SETREP CANT 15 5H?2 BRN REPG [REPLY SET 9 5HQL SCLD SETREP CLUDGE 21 5J== TOPFCB 2 [X2 -> FCB OF FILE OPEN AT TOP LEVEL 9 5JPW LDX 6 BACK2(3) 19 5K9G BXU 6 BACK2(2),REPG [TEST FOR CLUDGE AT TOP LEVEL 8 5KP6 SMO FX1 19 5L8Q LDX 0 TCLUDGE [IF IT IS, SET BIT FOR COPY 7 5LNB TOPFCA 2 16 5M82 ORS 0 FGENERAL1(2) [MARK1 ONLY **** 7 5MML REPG UPPLUS 1 10 5N7= XSET GEOERR 1,OPENWORK 4 5NLW OOR3 7 5P6G LDN 0 1 20 5PL6 ADS 0 FWAITCOUNT(3) [ADD ONE TO THE COUNT OF WAITERS 21 5Q5Q LDN 5 0 [SET UP B.S. HOME PAIR FOR FCB (I.E. 20 5QKB LDX 6 BACK2(3) [ZERO & UNIQUE NO.) FOR LONGSTOP 17 5R52 LONGSET 6,XSET,6 [SET WAITING STYLE 16 5RJL DOWN OPENWAIT,3 [TEST FOR CLUDGE 20 5S4= BRN NCLD [NO CLUDGE IF COMES STRAIGHT UP 17 5SHW NGN 4 1 [SET CLUDGE MARKER 15 5T3G CALL 6 XFCB [RELOCATE FCB 7 5TH6 LDN 0 1 18 5W2Q SBS 0 FWAITCOUNT(3) [NO LONGER GOING TO WAIT 20 5WGB BRN SAYCANT [REMOVE UNCLEAN BIT AND CLEAR UP 4 5X22 NCLD 15 5XFL CALL 6 XFCB [RELOCATE FCB 7 5X_= LDX 0 7 18 5YDW ADN 0 #1000 [TEST FOR AN UNCLEAN MODE 8 5YYG ANDN 0 #4000 15 5_D6 BZE 0 TSTRP [J IF IT ISNT 7 5_XQ LDCT 0 2 19 62CB ORS 0 COMM(3) [OTHERWISE PUT BIT INTO FCB 5 62X2 TSTRP 9 63BL #SKI K6OPENWORK>599-599 10 63W= TRACE 6,WORKSTOP 7 648M ...#UNS EWAITFILE 19 64H4 ... LDX 6 XWORK(1) [WORKFILE SWITCH FOR WHATSTATE 10 64TG LONGSTOP XBRK,,FWFREE 6 66#B OPENWORK2 15 66S2 CALL 6 XFCB [LOCATE FCB 5 67?L SFCBA 20 67R= LDN 0 1 [REMOVE THIS ACTIVITY FROM THE 17 68=W SBS 0 FWAITCOUNT(3) [COUNT OF WAITERS. 5 68QG ONEREEL 18 69=6 LDX 2 3 [X2 -> REEL TO BE OPENED: 9 69PQ CALL 6 TRYREEL 4 6=9B [ 21 6=P2 [N.B.THE ERASING MODE WILL NEVER BE SET IN OPENWORK SINCE THIS CASE IS 11 6?8L [DEALT WITH BY ERASEWORK MACRO 4 6?N= [ 20 6#7W SETMODE 0,EMPTY [IF EMPTY MODE IS SET THE POINTER 21 6#MG ANDX 0 7 [WITHIN FCB (FBLMOD) SHOULD BE SET 21 6*76 BZE 0 NEMP [TO INDICATE FILE HAS BEEN EMPTIED 9 6*BY ... LDX 0 FBLMOD(2) 19 6*LQ ... SBN 0 FBLKS-A1 [X0= NO. OF BLOCKS TO FREE 9 6*WJ ... LDN 1 FBLKS-A1 9 6B6B ... STO 1 FBLMOD(2) 21 6BB8 ... CALL 6 SUBCUBS [DO SUBCUBS TO REDUCE JOB'S ONLINE BS 4 6BL2 NEMP 7 6C5L LDX 1 7 8 6CK= SMO FX1 8 6D4W ANDX 1 MCL 16 6DJG BZE 1 NOBL1 [J IF NOT CLEAN 7 6F46 LDN 0 1 8 6FHQ BRN NOBL2 5 6G3B NOBL1 7 6GH2 LDX 1 7 9 6H2L ANDN 1 ACOMMUNE 16 6HG= BZE 1 PLUS [J IF NOT COMMUNE 16 6H_W LDCT 0 #200 [SET COMMUNE BRT 9 6JFG ORS 0 CTOPEN(3) 8 6J_6 LDN 0 #4000 7 6KDQ SLL 0 1 5 6KYB NOBL2 10 6LD2 ADS 0 FCOMMCT(3) 4 6LXL PLUS 7 6MC= LDX 4 7 20 6MWW ANDN 4 #7777 [ISOLATE BOTTOM HALF OF MODE WORD 18 6NBG [X3 -> FCB , MODE IN X7 8 6NW6 LDN 0 #2777 20 6P*Q BXGE 0 4,READ [MAIN MODE 1 OR 2 FOR A READER 8 6PTB LDN 0 #7000 21 6Q*2 BXGE 4 0,SOLE [CLEAN IS SOLE BUT NOT UMCLEAN BIT 18 6QSL LDCT 1 #2 [BEING WRITTEN BIT GOES 15 6R#= ORS 1 COMM(3) [INTO FCB. 8 6RRW LDN 0 #3777 17 6S?G BXGE 0 4,RAPP [3 FOR AN APPENDER 21 6SR6 SOLE LDCT 0 #400 [SOLE OPENER, JUST ONE BIT TO STORE 9 6T=Q ORS 0 CTOPEN(3) 9 6TQB BRN OPENFCBED 7 6W=2 READ LDN 0 1 19 6WPL ADS 0 CTOPEN(3) [INCREASE COUNT OF READERS. 19 6X9= BRN OPENFCBED [[CHECK IT IS SMALL? 8 6XNW RAPP LDN 0 #4000 7 6Y8G ADX 0 0 21 6YN6 ADS 0 CTOPEN(3) [INCREASE COUNT OF APPENDERS. <1024 6 6_7Q OPENFCBED 8 6_MB SMO FX1 9 7272 LDX 0 SERAZADD 7 72LL ANDX 0 7 19 736= BZE 0 NERAD [J IF NO ERASE ADDITIVE MODE 7 73KW ... LDN 0 4 19 745G ORS 0 COMM(3) [SET BEING ERASED BIT IN COMM 5 74K6 NERAD 9 754Q SETMODE 0,THAW 21 75JB ANDX 0 7 [IF THAW MODE IS SET SUBTRACT 1 FROM 17 7642 BZE 0 ORE [FREEZECOUNT OF FCB 7 76HL LDN 0 1 11 773= SBS 0 FREEZECOUNT(3) 4 77GW ORE 9 782G ACROSS ORELEND,2 4 78G6 [ 20 78_Q [THIS IS THE ENTRY FROM GETDIRWORK MACRO. ITS PURPOSE IS TO SET UP A 21 79FB [FILE/ENT BLOCK FOR A WORKFILE,RESEMBLING A USUAL DIRENT AS FAR AS IS 6 79_2 [POSSIBLE. 6 7=DL ZGETDIRWORK 21 7=Y= LDN 7 0 [ZEROISE X7 TO INDICATE GDEWORK ENTRY 4 7?CW XSC 11 7?XG SETNCORE FRDE,1,FILE,ENT 21 7#C6 LDCH 0 ATYPE(2) [FI ACT AN ACTLF WORKFILE WILL NOT BE 18 7#WQ SBN 0 ACTLF/64 [IN CURRENT ACT'S WFRING 8 7*BB BNZ 0 NLF 18 7*W2 CALL 6 XJC [LOCATE CPAT & THEN FCB 8 7B*L BRN XLF 21 7BT= NLF CALL 6 NOTH [LOCATE CPAT IN THIS ACT'S WORKFILERI 4 7C#W XLF 7 7CSG LDX 2 3 10 7D#6 HUNT 3,FILE,FABSNB 10 7DRQ HUNT 1,FILE,ENT 17 7F?B STOZ A1(1) [ZEROIZE ENT BLOCK 8 7FR2 LDN 5 A1(1) 9 7G=L LDN 6 A1+1(1) 9 7GQ= MOVE 5 FRDE-1 16 7H9W LDN 5 FRDE [SET ENT HEADER 8 7HPG STO 5 A1(1) 19 7J96 LDN 5 FLOC1(2) [MOVE LOCAL NAME TO DIRENT 9 7JNQ LDN 6 ELOC1(1) 7 7K8B MOVE 5 5 8 7KN2 LDCT 4 #20 9 7L7L ANDX 4 FCOMM(2) 8 7LM= LDX 3 0(2) 9 7M6W XEF LDX 0 ATYPE(3) 8 7MLG SRL 0 12 19 7N66 SBN 0 FILE+FEXTRA [TEST IF NEXT BLOCK IS FEXTRA 8 7NKQ BZE 0 XFE 21 7P5B LDX 0 ATYPE(3) [IF NOT FEXTRA TEST IF NEXT FCB HAS 20 7PK2 SBX 0 FILEPLUSFCB [BEEN REACHED. ERROR IF IT HAS 8 7Q4L BZE 0 XGE 18 7QJ= LDX 3 0(3) [PICK PTR TO NEXT BLOCK 8 7R3W BRN XEF 10 7RHG XGE GEOERR 1,NOFEXTRA 4 7S36 XFE 21 7SGQ LDX 5 FWRITDAY(3) [TAKE DATE & TIME FILE LAST WRITTEN 21 7T2B STO 5 EWRITDAY(1) [TO FROM FEXTRA & PUT IN ENT BLOCK. 10 7TG2 LDX 5 FWRITTIME(3) 10 7T_L STO 5 EWRITTIME(1) 9 7WF= LDX 5 FTM(3) 9 7WYW STO 5 ETM(1) 15 7XDG BNZ 4 SER [J II SERIAL 10 7XY6 LDX 0 FENDBUCK(2) 10 7YCQ STO 0 EENDBUCK(1) 21 7YXB LDN 0 #20 [IF MT SET MT BIT & UPDATE AS SERIAL 20 7_C2 ANDX 0 FCOMM(2) [FILE FROM HERE,OTHERWISE FILE IS 14 7_WL BZE 0 XMT [RANDOM. 7 82B= LDCT 0 4 9 82TW ORS 0 EINF1(1) 8 83*G BRN YMT 4 83T6 XMT 18 84#Q LDX 0 FVERSION(2) [UPDATE D.A. INFORMATION 10 84SB STO 0 EVERSION(1) 21 85#2 LDX 4 FSIZE(2) [SET SIZE IN EINF3 & ECOPS AS FOUND 14 85RL STO 4 EINF3(1) [IN FSIZE 7 86?= SRC 4 9 7 86QW ADN 4 1 9 87=G STO 4 ECOPS(1) 9 87Q6 LDN 5 FFLOW(3) 9 889Q LDN 6 EFLOW(1) 7 88PB MOVE 5 3 8 8992 BRN SOR 4 89NL SER 17 8=8= LDCT 0 #400 [SET SERIAL FILE BIT 9 8=MW ORS 0 EINF1(1) 4 8?7G YMT 21 8?M6 LDN 0 FILESIZE [SET MAX SIZE IN ENT AS DEFINED BY 14 8#6Q STO 0 EINF3(1) [FILESIZE 20 8#LB LDX 0 FBLMOD(2) [SET SIZE IN ECOPS AS CALCULATED 15 8*62 SBN 0 FBLKS-A1 [FROM FBLMOD 7 8*KL SRC 0 9 17 8B5= ADN 0 1 [SET FILE ONLINE BIT 9 8BJW STO 0 ECOPS(1) 4 8C4G SOR 20 8CJ6 LDN 0 #1000 [IF THE 'WRITE ACCESS ALLOWED BY 20 8D3Q ANDX 0 FCOMM(2) [PROPER USER' BIT IS SET IN THE 20 8DHB BZE 0 NWA [FCB, SET IT IN THE DIRENT ALSO 8 8F32 LDN 0 #20 9 8FGL ORS 0 EINF2(1) 4 8G2= NWA 17 8HF6 LDCT 0 #200 [SET LAST REEL BIT 9 8HYQ ORS 0 EINF1(1) 8 8JDB LDCT 0 #40 9 8JY2 ANDX 0 FCOMM(2) 18 8KCL BZE 0 NLNK [J IF NOT LINK DEF FILE 18 8KX= LDCT 0 #100 [SET LINK DEF BIT IN ENT 9 8LBW ORS 0 EINF1(1) 7 8LWG NLNK LDN 0 1 9 8MB6 ANDX 0 FCOMM(2) 18 8MTQ BZE 0 NER [J IF NOT TO BE ERASED 18 8N*B LDCT 0 #40 [SET TO- BE-ERASED BIT 4 8NT2 NER 17 8P#L ADN 0 #40 [SET WORKFILE MARKER 17 8PS= ORS 0 EINF2(1) [SET TEMP FILE BIT 7 8Q?W LDCT 0 2 20 8QRG ANDX 0 COMM(2) [TRANSFER UNCLEAN WRITING BIT TO 16 8R?6 ORS 0 EINF1(1) [ENT IF IN FCB 18 8RQQ LDX 0 FREEZECOUNT(2) [PUT FREEZECOUNT IN ENT 10 8S=B STO 0 EAUTOCOUNT(1) 14 8SQ2 LDX 0 FLAN(2) [SET LANG 9 8T9L STO 0 ELAN(1) 9 8TP= #SKI K6OPENWORK>599-599 9 8W8W TRACE 2,FCBLEVEL 8 8WNG SETREP OK 5 8X86 UP 4 8XMQ [ 20 8Y7B [THIS IS THE ENTRY FROM THE GETDIRWORK MACRO, ITS PURPOSE IS TO SET 20 8YM2 [UP A FILE/ENT BLOCK FOR A WORKFILE EVEN IF IF IT IS TO-BE-ERSED, 15 8_6L [RESEMBLING A USUAL DIRENT AS FAR AS IS POSSIBLE 6 8_L= ZGETDIRWORA 9 925W SETMODE 7,ERASING 7 92KG BRN XSC 4 9356 [ 20 93JQ [THIS IS THE ENTRY FROM THE THAWWF MACRO. ITS PURPOSE IS TO THAW A 11 944B [WORKFILE WITHOUT OPENING IT. 5 94J2 THAWWF 18 953L LDN 7 1 [SET NOT-OPENWORK MARKER 18 95H= CALL 6 XJC [LOCATE FCB FOR WORKFILE 11 962W LDX 0 FREEZECOUNT(3) 19 96GG SBN 0 1 [DECREMENT FREEZECOUNT BY 1 20 9726 BNG 0 NFRZ [CHECK THAT IT DOES NOT GO -VE 11 97FQ STO 0 FREEZECOUNT(3) 9 97_B LDX 6 BACK2(3) 16 98F2 LONGON 6,6 [FREE ANY WAITERS 7 98YL UPPLUS 1 9 99D= NFRZ GEOERR 1,NOFROST 4 99XW [ 20 9=CG [THIS IS THE ENTRY FOM THE OPENTEST MACRO. IT IS USED BY LISTFILE TO 19 9=X6 [LOCATE THE FCB FOR A WORKFILE AND TEST IF ANYONE HAS IT OPEN IN 7 9?BQ [AN UNCLEAN MODE 5 9?WB OPENTEST 18 9#B2 LDN 7 1 [SET NOT-OPENWORK MARKER 17 9#TL CALL 6 XJC [LOCATE FCB IF THERE 18 9**= UNOPCH 3,OFW [J IF OPEN FOR WRITING 7 9*SW UPPLUS 2 7 9B#G OFW UPPLUS 1 21 9BS6 [THIS IS THE ENTRY FROM THE USERCRWF MACRO. IT IS USED BY USEROPEN TO 17 9C?Q [UPDATE A WORKFILE'S FCB & FEXTRA FROM THE FEXTRA BLOCK. 5 9CRB USERCRWF 10 9D?2 HUNT 3,FILE,CREATE 8 9DQL BNG 3 XCR 15 9F== CALL 6 XLW [LOCATE FCB 21 9FPW LDCT 0 #20 [FILE CAN ONLY BE CHANGED IF IT IS 14 9G9G ANDX 0 FCOMM(1) [SERIAL 8 9GP6 BZE 0 UNS 15 9GYY ... JBS XCR,3,CESERIAL [J IF SERIAL. 9 9H8Q LDX 0 CETM(3) 7 9HNB SLC 0 9 20 9J82 ANDN 0 #377 [FILE DOES NOT NEED CHANGING IF 17 9JML LDN 4 5 [CHANGE IS TO SERIAL. 8 9KLW LDCT 5 #20 16 9L6G ERS 5 FCOMM(1) [UNSET SERIAL BIT 15 9LL6 BXU 0 4,NMT [J IF NOT MT 8 9M5Q LDN 0 #20 15 9MKB ORS 0 FCOMM(1) [SET MT BIT 4 9N52 NMT 9 9NJL LDX 0 CETM(3) 9 9P4= STO 0 FETM(1) 20 9PHW LDX 0 CEENDBUCK(3) [UPDATE FENDBUCK & FVERSION IF 10 9Q3G STO 0 FENDBUCK(1) 10 9QH6 NC1 LDX 0 CEVERSION(3) 10 9R2Q STO 0 FVERSION(1) 16 9RGB LDX 2 FPTR(1) [LOCATE FEXTRA 9 9S22 LDX 0 ATYPE(2) 8 9SFL SRL 0 12 10 9S_= SBN 0 FILE+FEXTRA 8 9TDW BZE 0 NOST 9 9TYG LDX 2 FPTR(2) 18 9WD6 NOST LDX 0 CETM(3) [UPDATE PERI TYPE/MODE. 9 9WXQ STO 0 FTM(2) 9 9XCB LDN 4 CEFLOW(3) 9 9XX2 LDN 5 FFLOW(2) 7 9YBL MOVE 4 3 8 9YW= LDN 0 #20 20 9_*W ANDX 0 FCOMM(1) [IF MT SIZE OF FILE IS SET TO MAX 19 9_TG BNZ 0 XBLOK [THUS NO BLOCKS TO BE FREED 18 =2*6 LDX 4 CEINF3(3) [UPDATE FSIZE FOR DA FILE 9 =2SQ ANDX 4 BITS22LS 9 =3#B STO 4 FSIZE(1) 20 =3S2 SBX 4 FUSEBL(1) [IF FCB ALREADY HAS MORE BLOCKS 20 =4?L ADN 4 FBLKS-A1 [ALLOCATED TO IT THAN ARE ALLOWED 21 =4R= BPZ 4 XBLOK [IN NEW FILE SIZE THE EXCESS BLOCKS 16 =5=W NGX 4 4 [MUST BE FREED. 7 =5QG ADN 4 2 11 =6=6 SETUPCORE 4,3,BSTB,FULLB 8 =6PQ STO 4 A1(3) 8 =79B CALL 6 XLW 9 =7P2 LDX 0 BSPRE(1) 9 =88L STO 0 A1+1(3) 9 =8N= ADX 1 FUSEBL(1) 8 =97W ADN 1 A1+2 7 =9MG SBX 1 4 9 ==76 LDN 2 A1+2(3) 7 ==LQ SMO 4 8 =?6B MOVE 1 510 7 =?L2 FREEBAX 10 =#5L MFREE BSTB,EMPTYB 8 =#K= CALL 6 XLW 7 =*4W SBN 4 2 20 =*JG SBS 4 ALOGLEN(1) [RESET ALOGLEN & FBLMOD IF SOME 15 =B46 LDX 4 ALOGLEN(1) [BLOCKS FREED 9 =B?Y ... LDX 0 FBLMOD(1) 9 =BHQ STO 4 FBLMOD(1) 16 =BQ2 ... STO 4 FUSEBL(1) [UPDATE FUSEBL 19 =BY= ... SBX 0 FBLMOD(1) [X0= CHANGE IN SIZE OF FBLMOD 21 =C6G ... CALL 6 SUBCUBS [ADJUST JOB'S ONLINE BS COUNT (WILL A 21 =C#Q ... [ IF X0 IS -IVE !!!!, WHICH HELPS SI 9 =CH2 XBLOK VFREE FILE,ENT 7 =D2L GETDIRWORK 5 =DG= XCR UP 7 =D_W UNS UPPLUS 1 8 =FFG XLW FINDWFN ,1 9 =F_6 TESTREPN OK,XGEO 7 =GDQ EXIT 6 0 9 =GYB XGEO GEOERR 1,NOWORKF 4 =HD2 [ 12 =HXL MENDAREA GAPOPEN,K99OPENWORK 4 =JC= #END 8 ____ ...07770215000100000000