16 22FL ...#SEG LOCATE84 [JUDY BIDGOOD 14 22_= #OPT K0LOCATE=K0OPEN>K0FILESTORE>K0ALLGEO 7 23DW #LIS K0LOCATE 14 23YG #OPT K6LOCATE=K6OPEN>K6FILESTORE>K6ALLGEO 7 24D6 8HLOCATE 11 24XQ SEGENTRY K2LOCATE,READDICU 11 25CB SEGENTRY K3LOCATE,SYSER 11 25X2 SEGENTRY K4LOCATE,SYSOUT 11 26BL SEGENTRY K5LOCATE,READDICT 11 26N2 ... SEGENTRY K7LOCATE,ZUSEJOB 11 26_B ... SEGENTRY K8LOCATE,ZSYSJOB 11 27=Q ... SEGENTRY K9LOCATE,USEJOB 11 27J6 ... SEGENTRY K10LOCATE,SYSJOB 4 27TG # 21 28*6 [ THIS SEGMENT IMPLEMENTS THE MACROS READDICT AND READDICU FOR INDEXED 21 28SQ [ DICTIONARY,SSEARCH FOR INDEXED SYSTEM.SERIAL AND GETSOUT FOR INDEXED 7 29#B [ SYSTEM.OUTPUT. 11 29S2 # ENTRY PTS ARE AS FOLLOWS :- 10 2=?L # K5LOCATE - READDICT 10 2=R= # K4LOCATE - GETSOUT 10 2?=W # K3LOCATE - SSEARCH 10 2?QG # K2LOCATE - READDICU 4 2#=6 # 4 2#PQ # 16 2*9B # READDICT FINDS A USERNAME ENTRY IN DICTIONARY. 16 2*P2 # READDICU FINDS THE DICTIONARY UPDATE RECORD. 16 2B8L # SSEARCH FINDS A TSN ENTRY IN SYSTEM SERIAL. 4 2BN= # 10 2C7W # USES OF AWORK WORDS :- 18 2CMG # AWORK1 - CONTAINS THE KEY OF THE ENTRY TO BE FOUND. 20 2D76 # AWORK2 - BITS 15-23 HOLD INDEX NUMBER OF FILE TO BE SEARCHED. 20 2DLQ # B0 SET, LEAVE ADICTENT IN CORE WHEN DICTIONARY FOUND 12 2F6B # NEGATIVE IF SSEARCH. 12 2FL2 # AWORK3 - CONTAINS FILE DEPTH. 19 2G5L # AWORK4 - FOR GETSOUT MACRO, HOLDS SUBKEY OF ENTRY REQD. 21 2GK= # FOR USER JOBLIST, PRESERVES X6 DURING TNEXTENT SUBROUTINE 4 2H4W # 5 2HJG ZGEOER2 9 2J46 GEOERR 1,INDEXNO 5 2JHQ ZGEOER3 9 2K3B GEOERR 1,NOKEY! 5 2KH2 ZBENT 10 2L2L GEOERR 1,FILEBENT 4 2LG= # 19 2L_W # THIS SUBROUTINE POSITIONS THE FILE ON THE FIRST RECORD OF THE 18 2MFG # BLOCK WITH HIGH ENOUGH KEY TO CONTAIN THE REQUIRED ENTRY. 4 2M_6 # 5 2NDQ XBLOCK 16 2NYB SBX 7 FX1 [DECROMENT LINK 17 2PD2 FINDEXB AWORK3(2),3 [X3->FI/FINDEXF BLOCK 8 2PXL LDX 2 A1(3) 17 2QC= SBN 2 3 [X2 IS NO OF BLOCKS. 18 2QWW BZE 2 TEXIT [J IF NO BLOCKS IN FILE. 7 2RBG STOZ 0 5 2RW6 XLOOP 21 2S*Q ADN 0 1 [X0 INDICATES CURRENT BLOCK OF FILE. 10 2STB LDX 1 INDEXREC(3) 8 2T*2 SMO FX2 20 2TSL BXGE 1 AWORK1,YEXIT [J IF FOUND A BLOCK WITH LARGE 15 2W#= ADN 3 1 [ENOUGH KEY. 20 2WRW BCT 2 XLOOP [BRANCH IF MORE BLOCKS IN FILE. 5 2X?G TEXIT 16 2XR6 ADX 7 FX1 [INCREMENT LINK. 8 2Y=Q LDX 2 FX2 16 2YQB EXIT 7 0 [EXIT NOT FOUND. 5 2_=2 YEXIT 9 2_PL #SKI K6LOCATE>599-599 9 329= TRACE 1,YBLOCK 8 32NW LDX 2 FX2 7 338G LDX 1 0 8 33N6 STO 7 GEN6 14 347Q CALL 7 SFSTACK1 [X3->FCA 8 34MB LDX 7 GEN6 19 3572 ADN 1 FBLKS-1 [F'BLK PTS TO REQUIRED BLOCK. 20 35LL STO 1 FREADBLOCK(3) [F'WORD -VE IMPLIES ABOUT TO READ 19 366= NGS 1 FREADWORD(3) [1ST. RECORD OF THIS BLOCK. 14 36KW LDX 2 AWORK3(2) [DEPTH 18 375G STEP 0(2) [X3->FIRST REC. IN FURB. 16 37K6 ADX 7 FX1 [INCREMENT LINK. 15 384Q EXIT 7 1 [EXIT OKAY 4 38JB # 4 3942 # 18 39HL # THIS SUBROUTINE STORES DEPTH AND GIVES X3->FCA,X1->FCB. 4 3=3= # 5 3=GW POINTERS 15 3?2G STO 0 GEN6 [STORE LINK. 14 3?G6 LDX 0 ACOMMUNE9(2) [DEPTH. 9 3?_Q CALL 7 SFSTACK 8 3#FB PSTAC 1,3 8 3#_2 BFCBX 1,1 9 3*DL BRN (GEN6) 4 3*Y= # 21 3BCW # GIVEN FILE DEPTH IN X6,THIS SUBROUTINE GIVES A PTR. TO THE FCA IN X3 4 3BXG # 5 3CC6 SFSTACK 15 3CWQ STO 0 AWORK3(2) [STORE DEPTH. 5 3DBB SFSTACK1 10 3DW2 SFSTACK AWORK3(2),3 7 3F*L EXIT 7 0 4 3FT= # 19 3G#W # THIS ROUTINE SAME AS SENT BUT FOR :SYSTEM AND :USER.JOBLIST 4 3GSG # 4 3H#6 TENT 8 3HRQ SBX 7 FX1 5 3J?B TENT1 17 3JR2 LDX 0 FRH+1(3) [IS RECORD INDEXED 13 3K=L BPZ 0 REXIT [YES 13 3KQ= LDX 2 AWORK3(2) [NO 16 3L9W STEP 0(2) [GET NEXT RECORD 8 3LPG BZE 3 ZBENT 8 3M96 BRN TENT1 5 3MNQ REXIT 8 3N8B ADX 7 FX1 7 3NN2 EXIT 7 0 4 3P7L # 18 3PM= # THIS SUBROUTINE GETS THE NEXT ENTRY IN JOBLIST BY SKIPPING 13 3Q6W # OVER THE RECORDS OF THE CURRENT ENTRY 4 3QLG # 5 3R66 TNEXTENT 8 3RKQ SBX 7 FX1 9 3S5B STO 6 AWORK4(2) 21 3SK2 LDN 6 4 [X6 CONTAINS NO OF RECORDS TO SKIP 6 3T4L TNEXTENT1 9 3TJ= LDX 1 AWORK3(2) 8 3W3W STEP 0(1) 7 3WHG SBN 6 1 8 3X36 BNZ 3 TOK 8 3XGQ BZE 6 PEXIT 8 3Y2B BRN ZBENT 4 3YG2 TOK 9 3Y_L LDX 0 FRH+1(3) 9 3_F= BNG 0 TNEXTENT1 8 3_YW BNZ 6 ZBENT 5 42DG PEXIT 9 42Y6 LDX 6 AWORK4(2) 8 43CQ ADX 7 FX1 7 43XB EXIT 7 0 4 44C2 # 21 44WL # THIS SUBROUTINE IS ENTERED WITH X3->1ST. REC. IN 1ST. BLOCK OF SYSTEM 21 45B= # OUTPUT WITH HIGH ENOUGH KEY TO CONTAIN THE SOUGHT ENTRY. IT POSITIONS 14 45TW # THE FILE ON THE FIRST ENTRY IN THIS BLOCK. 4 46*G # 4 46T6 SENT 8 47#Q SBX 7 FX1 5 47SB SENT1 8 48#2 LDX 0 GSIGN 12 48RL BXE 0 GOUTYPE-A1(3),XEXIT 9 49?= LDX 2 AWORK3(2) 8 49QW STEP 0(2) 8 4==G BZE 3 ZBENT 8 4=Q6 BRN SENT1 20 4?9Q # THIS SUBROUTINE GETS THE NEXT ENTRY IN SYSTEM.OUTPUT,BY SKIPPING 13 4?PB # OVER THE RECORDS IN THE CURRENT ENTRY. 5 4#92 SNEXTENT 8 4#NL SBX 7 FX1 21 4*8= LFRECNUM 6,GMODE-A1(3) [X6 CONTAINS NO. OF RECS. TO SKIP. 6 4*MW SNEXTENT1 9 4B7G LDX 1 AWORK3(2) 8 4BM6 STEP 0(1) 7 4C6Q SBN 6 1 8 4CLB BNZ 3 SOK 8 4D62 BZE 6 XEXIT 8 4DKL BRN ZBENT 4 4F5= SOK 8 4FJW LDX 0 GSIGN 13 4G4G BXU 0 GOUTYPE-A1(3),SNEXTENT1 8 4GJ6 BNZ 6 ZBENT 5 4H3Q XEXIT 8 4HHB ADX 7 FX1 7 4J32 EXIT 7 0 4 4JGL # 19 4JMS ...ZSYSJOB [SYSTEM JOBLIST - ZERO DEPTH 10 4JT2 ... STOZ ACOMMUNE9(2) 18 4K2= SYSJOB [ENTRY FOR SYSTEM JOBLIST 15 4KFW LDX 0 ACOMMUNE7(2) [STORE KEY 9 4K_G STO 0 AWORK1(2) 16 4LYQ CALL 0 POINTERS [X1,X3, FCB,FCA 8 4MDB LDN 0 #77 9 4MY2 ANDX 0 FINFC(1) 16 4NCL SBN 0 INDEXJOB [CHECK INDEX NO. 9 4NX= BNZ 0 ZGEOER2 9 4PBW LDN 0 INDEXJOB 16 4PWG STO 0 AWORK2(2) [STORE INDEX NO 8 4QB6 BRN NUMOK 19 4QH# ...ZUSEJOB [USER JOBLIST - ZERO DEPTH 10 4QNG ... STOZ ACOMMUNE9(2) 18 4QTQ USEJOB [ENTRY FOR USER.JOBLIST 10 4R*B LDX 4 ACOMMUNE1(2) 10 4RT2 LDX 5 ACOMMUNE2(2) 16 4S#L LDX 6 ACOMMUNE3(2) [PICK UP USERNAME 7 4SS= LDN 0 4 16 4T?W SUM 7 3 [CALCULATE KEY 15 4TRG STO 7 AWORK1(2) [ & STORE IT 9 4WQQ CALL 0 POINTERS 8 4X=B LDN 0 #77 9 4XQ2 ANDX 0 FINFC(1) 16 4Y9L SBN 0 INDEXUSERJ [CHECK INDEXNO. 9 4YP= BNZ 0 ZGEOER2 10 4_8W LDN 0 INDEXUSERJ 16 4_NG STO 0 AWORK2(2) [STORE INDEX NO. 8 5286 BRN NUMOK 4 52MQ [ 18 537B READDICT [READDICT MACRO ENTRY. 4 53M2 [ 10 546L LDX 0 ACOMMUNE1(2) 8 54L= BNZ 0 XDICT 17 555W MHUNT 3,FILE,ADICT [X3 -> ADICT BLOCK. 8 55KG LDX 4 A1(3) 9 5656 LDX 5 A1+1(3) 21 56JQ LDX 6 A1+2(3) [X4,X5,X6 CONTAIN THE USERNAME REQD. 19 574B FREECORE 3 [FREE THE FILE/ADICT BLOCK. 9 57J2 BRN XDICTENT 5 583L XDICT 10 58H= LDX 4 ACOMMUNE1(2) 10 592W LDX 5 ACOMMUNE2(2) 10 59GG LDX 6 ACOMMUNE3(2) 5 5=26 XDICTENT 20 5=FQ LDX 0 ACOMMUNE7(2) [INDICATES WHETHER ADICTENT REQD. 9 5=_B BRN TINDEXNUM 5 5?F2 UPDATE1 7 5?YL #32656044 5 5#D= UPDATE2 7 5#XW #41644520 4 5*CG [ 17 5*X6 READDICU [READDICU MACRO ENTRY 4 5BBQ [ 17 5BWB LDX 6 ACOMMUNE7(2) [STORE PARAM IN X6. 18 5CB2 LDX 4 UPDATE1(1) [STORE *UPDATE IN X4,X5 10 5CTL LDX 5 UPDATE2(1) 18 5D*= LDN 0 0 [INDICATES ADICTENT REQD. 6 5DSW TINDEXNUM 17 5F#G ADN 0 INDEXDICT [INDICATES DICTIONARY 9 5FS6 STO 0 AWORK2(2) 7 5G?Q LDN 0 4 7 5GRB SUM 7 3 21 5H?2 STO 7 AWORK1(2) [AWORK1 CONTAINS KEY FOR ENTRY REQD. 20 5HQL CALL 0 POINTERS [STORE DEPTH AND GET POINTERS. 8 5J== LDN 0 #77 17 5JPW ANDX 0 FINFC(1) [PICK UP INDEX NO. 9 5K9G SBN 0 INDEXDICT 8 5KP6 BZE 0 NUMOK 18 5L8Q BRN ZGEOER2 [ERROR IF NOT DICTIONARY 4 5LNB [ 17 5M82 SYSER [SSEARCH MACRO ENTRY 4 5MML [ 20 5N7= CALL 0 POINTERS [STORE DEPTH AND GET POINTERS. 8 5NLW LDN 0 #77 9 5P6G ANDX 0 FINFC(1) 9 5PL6 SBN 0 INDEXSER 19 5Q5Q BNZ 0 ZGEOER2 [ERROR IF NOT SYSTEM.SERIAL 9 5QKB LDN 7 INDEXSER 18 5R52 STO 7 AWORK2(2) [INDICATES SSEARCH ENTRY 20 5RJL LDX 6 ACOMMUNE7(2) [PICK UP KEY AND STORE IN AWORK1 9 5S4= STO 6 AWORK1(2) 8 5SHW BRN NUMOK 4 5T3G [ 17 5TH6 SYSOUT [GETSOUT MACRO ENTRY 4 5W2Q [ 20 5WGB CALL 0 POINTERS [STORE DEPTH AND GET POINTERS. 16 5X22 LDN 0 #77 [X1->FCB,X3->FCA 9 5XFL ANDX 0 FINFC(1) 9 5X_= SBN 0 INDEXOUT 19 5YDW BNZ 0 ZGEOER2 [ERROR IF NOT SYSTEM.OUTPUT 9 5YYG LDN 0 INDEXOUT 17 5_D6 STO 0 AWORK2(2) [INDICATES GETSOUT 15 5_XQ LDX 0 ACOMMUNE7(2) [INDEX KEY 9 62CB STO 0 AWORK1(2) 14 62X2 LDX 0 ACOMMUNE1(2) [SUB KEY 18 63BL STO 0 AWORK4(2) [STORE SUBKEY OF ENTRY 5 63W= NUMOK 21 64*W JMBS XMODE,3,BAMREAD,BAMGEN [J IF OPEN IN READ OR GENERAL MOD 9 64TG GEOERR 1,LOCATE? 5 65*6 XMODE 21 65SQ CALL 7 XBLOCK [X3 -> 1ST REC IN BLOCK WITH RT. KEY. 17 66#B BRN NOFILEW [J IF NO SUCH BLOCK. 9 66S2 LDEX 0 AWORK2(2) 9 67?L SBN 0 INDEXOUT 17 67R= BZE 0 SYSOUT1 [J IF SYSTEM OUTPUT 12 68=W SBN 0 INDEXUSERJ-INDEXOUT 18 68QG BNZ 0 XCALCKEY [J IF NOT USER JOBLIST 18 69=6 CALL 7 TENT [GET NEXT INDEXED RECORD 9 69PQ BRN XCALCKEY 5 6=9B SYSOUT1 18 6=P2 CALL 7 SENT [X3->1ST ENTRY IN BLOCK. 16 6?8L BRN XCALCKEY [CALCULATE KEY. 5 6?N= NEXTENT1 9 6#7W LDEX 0 AWORK2(2) 9 6#MG SBN 0 INDEXOUT 17 6*76 BZE 0 SYSOUT3 [J IF SYSTEM OUTPUT 12 6*LQ SBN 0 INDEXUSERJ-INDEXOUT 18 6B6B BNZ 0 NEXTENT [J IF NOT USER JOBLIST 9 6BL2 CALL 7 TNEXTENT 9 6C5L BZE 3 NOTUSER1 9 6CK= BRN XCALCKEY 5 6D4W SYSOUT3 9 6DJG CALL 7 SNEXTENT 9 6F46 BZE 3 NOTUSER1 9 6FHQ BRN XCALCKEY 5 6G3B NEXTENT 18 6GH2 LDX 1 AWORK3(2) [X1 CONTAINS FILE DEPTH. 16 6H2L STEP 0(1) [GET NEXT ENTRY. 15 6HG= BZE 3 NOFILEK [J IF NONE. 5 6H_W XCALCKEY 9 6JFG LDEX 0 AWORK2(2) 10 6J_6 KEYRECI 0,,3,ZGEOER3,0 21 6KDQ BXL 0 AWORK1(2),NEXTENT1 [GET NEXT ENT IF NOT UP TO REQD KEY. 11 6KYB BXE 0 AWORK1(2),XEQUAL 20 6LD2 BRN NOFILEK [ERROR IF NO REC. WITH RT. KEY. 5 6LXL XEQUAL 9 6MC= LDEX 0 AWORK2(2) 9 6MWW SBN 0 INDEXDICT 19 6NBG BZE 0 RDICT [J IF READDICT OR READDICU 12 6NW6 SBN 0 INDEXOUT-INDEXDICT 9 6P*Q BZE 0 SYSOUT2 12 6PTB SBN 0 INDEXUSERJ-INDEXOUT 9 6Q*2 BNZ 0 SETREP 10 6QSL TXU 4 JLJOBNAME(3) 11 6R#= TXU 5 JLJOBNAME+1(3) 11 6RRW TXU 6 JLJOBNAME+2(3) 9 6S?G BCS NEXTENT1 9 6SR6 BRN SETREP 5 6T=Q SYSOUT2 9 6TQB LDX 0 AWORK4(2) 20 6W=2 BZE 0 NOTUSER1 [J IF ZERO SUBKEY IN NOW ENTRY. 18 6WFS ... BXL 0 GOUTKEY2-A1(3),NOTUSER1 [ J-IF LARGER SUBKEY 19 6WPL BXU 0 GOUTKEY2-A1(3),NEXTENT1 [J IF SUBKEYS UNEQUAL 9 6X9= BRN SETREP 5 6XNW RDICT 20 6Y8G TXU 4 CUSER-A1(3) [TEST IF NAME IN DICTIONARY ENTRY 18 6YN6 TXU 5 CUSER+1-A1(3) [IS EQUAL TO NAME REQD. 10 6_7Q TXU 6 CUSER+2-A1(3) 15 6_MB BCS NEXTENT1 [J IF NOT. 9 7272 LDX 0 AWORK2(2) 18 72LL BNG 0 SETREP [J IF NO ADICTENT REQD. 9 72_3 ... LDX 1 AWORK3(2) 9 73?D ... READAGAIN 0(1) 10 73KW MHUNT 1,FILE,FRB 11 745G NAME 1,FILE,ADICTENT 5 74K6 SETREP 6 754Q ANSOK2 4 75JB UPP 5 7642 UP 21 76HL # END OF SEARCH. UNSUCCESSFUL. THE FILE IS LEFT POSITIONED AT THE RIGHT 12 773= # PLACE FOR AN ENTRY TO BE INSERTED. 5 77GW NOFILEW 18 782G LDX 1 AWORK3(2) [X1 CONTAINS FILE DEPTH 8 78G6 WIND 0(1) 9 78_Q LDX 1 AWORK3(2) 8 79FB STEP 0(1) 5 79_2 NOFILEK 9 7=DL LDEX 0 AWORK2(2) 9 7=Y= SBN 0 INDEXDICT 20 7?CW BNZ 0 NOTUSER1 [J IF NOT READDICT OR READDICU 9 7?XG SETREP2 NOUSER 8 7#C6 BRN UPP 5 7#WQ NOTUSER1 9 7*BB SETREP2 NOFILE 8 7*W2 BRN UPP 10 7B*L MENDAREA 30,K99LOCATE 4 7BT= #END 8 ____ ...16660624000300000000