8 22FL #SEG WLAA 9 22_= #OPT K0WLAA=0 14 23DW #LIS K0WLAA>K0ALLGEO>K0GREATGEO 6 23YG 8HWLAA 19 24D6 SEGENTRY K1WLAA,WLAAK1 [ROUTING AND LEVEL ANALYSIS 4 24XQ [ 4 25CB [ 16 25X2 [ CODING CONVENTIONS: ONLY X1 PTS TO APERI/APROPS 16 26BL [ ONLY X2 PTS TO APERI/APRNUM 16 26W= [ APERI/CONSOLE 15 27*W [ CPB/CUNI 14 27TG [ CPAT 18 28*6 [ ONLY X3 PTS TO ADATA/AWHATLIST HEAD 19 28SQ [ (X1 MAY PT TO INNER WDS) 15 29#B [ THESE MAY NOT BE ADHERED TO IN THE SUBROUTINES 4 29S2 [ 4 2=?L [ 18 2=R= [ THE FOLLOWING BIT IDENTIFIERS ARE RELEVANT TO A CPAT BLOCK 4 2?=W [ 15 2?QG BITDEFS CONTEXT,19,WBUOPCON,,,WBNUCON,WBUCON 4 2#=6 [ 16 2#PQ [ THEY ARE THE OPS' CONSOLE, NOUSER AND USER CONTEXT 8 2*9B [ BITS RESPECTIVELY 4 2*P2 [ 4 2B8L [ 7 2BN= [ PRESET DATA 7 2C7W [ =========== 4 2CMG [ 18 2D76 SEGENTRY K90WLAA [AMENDED BY 'USERCHURGE' 19 2DLQ PUSERSTOP +1 [STOP USER 'TOUR' 1 => TRUE 4 2F6B [ 18 2FL2 SEGENTRY K91WLAA [AMENDED BY 'WLNARROW' 21 2G5L PNARROW +2 [ 2 => NARROW IF CENTRAL OPERATOR'S 20 2GK= [ CONSOLE UNDER EMULATION 21 2H4W [ 1 => NARROW IF CENTRAL OPERATOR'S 16 2HJG [ CONSOLE 18 2J46 [ 0 => OFF - NEVER NARROW 19 2JHQ [ -VE => ALL - ALWAYS NARROW 8 2K3B PVAL1 +1 8 2KH2 PVAL2 +2 8 2L2L PVAL3 +3 8 2LG= PVAL4 +4 8 2L_W MAGIC 7036875 8 2MFG PSTRCOLON 4H: 8 2M_6 PSTRSTAR 4H* 9 2NDQ PSTRUSER 8HUSER : 9 2NYB PSTRFULL 8HFULL 9 2PD2 PSTRLIST 8HLIST 9 2PXL PSTRHERE 8HHERE 9 2QC= PSTRFILE 8HFILE 9 2QWW PSTRDOCU 8HDOCU 8 2RBG PSTRDM 8HDM 10 2RW6 PSTRDOCUMEN 8HDOCUMENT 9 2S*Q PSTRTOPR 8HTOPR 9 2STB PSTRTOUR 8HTOUR 8 2T*2 PSTRJOB 4HJOB 8 2TSL PERITYPE 4HCP 8 2W#= 4HLP 8 2WRW 4HTP 10 2X?G PROPERTY 8HPROPERTY 8 2XR6 PSTRPR 4HPR 7 2Y=Q PCT 0 10 2YQB #FID CBCT,CBCT,1 4 2_=2 [ 4 2_PL [ 10 329= [ SUBROUTINE 'SUBAREPROPS' 10 32NW [ ======================== 4 338G [ 21 33N6 [ THIS SUBROUTINE CHECKS WHETHER A GIVEN PROPERTY STRING IS DRASTICALLY 21 347Q [ WRONG. IF IT IS, A REPLY IS SET, ELSE AN APERI/APRNUM BLOCK IS SET UP 19 34MB [ CONTAINING THE PROPERTY NUMBERS(B0=>CONSOLE, B1=>PERMANENT) 4 3572 [ 9 35LL [ ENVIRONMENT REQUIRED:- 11 366= [ APERI/APROPS BLOCK EXISTS 13 36KW [ ADATA/CREADL DETAILS BLOCK EXISTS 14 375G [ X1=GSIGN (MUST FIND DEFAULT PROPERTY) 17 37K6 [ 0 (DEFAULT IS CONSPROP OF PREVIOUS APROPS) 4 384Q [ 9 38JB [ ENVIRONMENT CHANGES:- 13 3942 [ X0 LINK - KEPT IN AWORK1 THROUGHOUT 6 39HL [ X2:=FX2 13 3=3= [ X1,X3->X7,AWORK1->AWORK4 DESTROYED 14 3=GW [ REPLY XPROP,CPROPS,MAXATT OR OK GIVEN 9 3?2G [ APERI/APRNUM SET UP 16 3?G6 [ DETAILS BLOCK UPDATED TO INCLUDE 'PR' DETAILS 17 3?_Q [ AWORK2 SET NON-ZERO IF BREAKIN BEFORE SYSPER OPENED 4 3#FB [ 21 3#_2 PRCENTRAL 4H 001 [PROPNO WD FOR 'CENTRAL' IN SYSPROP 6 3*DL SUBAREPROPS 7 3*Y= SBX 0 FX1 7 3BCW ADX 0 1 7 3BXG LDX 2 FX2 14 3CC6 STO 0 AWORK1(2) [STORE LINK 10 3CWQ MHUNT 1,APERI,APROPS 17 3DBB LDX 7 A1+1(1) [X7 := CT OF PROPNAMES 19 3DW2 STO 7 AWORK3(2) [AWORK3 := EXPECTED PROP COUNT 8 3F*L LDN 6 ATTMAX 7 3FT= SBX 6 7 19 3G#W BNG 6 TOOMANYPRS [IF TOO MANY PROPNAMES, ERR FI 19 3GSG ADN 7 2 [X7 := LOGLEN OF APERI/APRNUM 11 3H#6 SETUPCORE 7,2,APERI,APRNUM 7 3HRQ SBN 7 2 17 3J?B STOZ A1(2) [COUNT OF PROPNOS := 0 21 3JR2 STOZ A1+1(2) [CLEAR CONSPROP WD (ASSUME NO CONSPROP) 14 3K=L OPENSYS UBROKEIN,PROPERTY,READ,CAREFUL 20 3KQ= IF 7,NZ [IF PR PARAM (I.E. NOT JUST REMOTE) 5 3L9W THEN 8 3LPG WHILE TRUE 20 3M96 STEP [FOR EACH :SYSTEM.PROPERTY RECORD 11 3MNQ MHUNT 1,APERI,APROPS 11 3N8B MHUNTW 2,APERI,APRNUM 8 3NN2 AND 3,NZ 20 3P7L AND +A1(2),U,A1+1(1) [UNTIL ALL REQUIRED NAMES FOUND 13 3PM= DO [DO 9 3Q6W SMO FX2 17 3QLG STOZ AWORK2 [ZERO => 1ST PARAM 11 3R66 LDX 5 APROPNAME(3) 11 3RKQ LDX 6 APROPNAME+1(3) 18 3S5B LDX 7 APROPNAME+2(3) [X5->7:=THAT PROPNAME 20 3SK2 LDX 4 A1+1(1) [USING X4 AS LOOP CONTROLLER, 20 3T4L ADN 1 A1+2 [FOR EACH NAME IN /APROPS DO 6 3TJ= DO 10 3W3W TXU 5 1(1) 10 3WHG TXU 6 2(1) 10 3X36 TXU 7 3(1) 21 3XGQ IF CC [IF THAT NAME=NAME IN SYSPROP 7 3Y2B THEN 21 3YG2 NGNC 5 1 [THEN DESTROY NAME IN X5->X7 21 3Y_L ANDX 5 APROPNO(3) [SET UP NON-CONSOLE PROPNO 10 3_F= SMO FX1 17 3_YW IF 5,E,PRCENTRAL [IF CENTRAL 8 42DG THEN 21 42Y6 LDX 5 GSIGN [THEN PROPNO:=JUST SIGN B 18 43CQ ELSF +APROPGROUP(3),NG [ELSF CONSPROP 8 43XB THEN 20 44C2 ORX 5 GSIGN [THEN SET CONSOLE BIT 15 44WL FI [FI 21 45B= IF 5,NG [IF CENTRAL OR CONSPROP THEN 8 45TW THEN 12 46*G LDX 7 A1+1(2) 21 46T6 BNZ 7 TWOCONSOLE [IF 2ND CONSPROP THEN ERR 21 47#Q STO 5 A1+1(2) [PUT CONSPROP ON /APRNUM 11 47SB SMO FX2 21 48#2 IF +AWORK2,NZ [IF NOT 1ST NAME IN PARAM 9 48RL THEN 19 49?= LDX 7 1 [X7 KEEPS PTR 12 49QW SMO FX2 13 4==G LDN 1 ACOMMUNE1 11 4=Q6 LDN 0 2 21 4?9Q MOVE 0 6 [PRESERVE TOP 6 X'S 14 4?PB MHUNT 1,APERI,APROPS 13 4#92 LDX 0 A1+1(1) 12 4#NL SMO FX2 21 4*8= STO 0 ACOMMUNE3 [STORED X4 => 1ST PARA 21 4*MW LDN 6 A1+2(1) [X6 -> START OF 1ST CE 11 4B7G LDX 1 7 21 4BM6 SBN 1 1 [X1 -> END OF PREV CEL 21 4C6Q LDX 0 1(1) [X0 := CHARCT FOR CONS 21 4CLB DO [MOVE OTHER NAMES DOWN 13 4D62 LDX 5 0(1) 13 4DKL STO 5 4(1) 12 4F5= SBN 1 1 14 4FJW REPEAT UNTIL,1,L,6 21 4G4G STO 0 1(1) [PUT CONSPROP CT IN 1S 14 4GJ6 LDN 5 APROPNAME(3) 12 4H3Q LDN 6 2(1) 21 4HHB MOVE 5 3 [PUT CONSPROP NAME IN 21 4J32 LDN 6 A1+2(2) [X6 -> 1ST PROPNO WD 12 4JGL SMO FX2 12 4K2= LDX 1 AWORK3 11 4KFW ADX 1 6 21 4K_G SBX 1 4 [X1 -> CURRENT PROPNO 21 4LF6 WHILE 6,L,1 [FOR PROPNOS ABOVE CUR 9 4LYQ DO 12 4MDB SBN 1 1 21 4MY2 LDX 0 0(1) [SHIFT PROPNOS DOWN 13 4NCL STO 0 1(1) 18 4NX= REPEAT [REPEAT 12 4PBW SMO FX2 13 4PWG LDN 0 ACOMMUNE1 11 4QB6 LDN 1 2 20 4QTQ MOVE 0 6 [RESTORE TOP 6 X'S 19 4R*B LDX 1 7 [RESTORE PTR 19 4RT2 FI [FI FIRST NAME 20 4S#L FI [FI CENTRAL OR CONSPROP 21 4SS= LDN 6 A1+2(2) [PUT PROPNO INTO PRNUM IN ST 10 4T?W SMO FX2 11 4TRG ADX 6 AWORK3 10 4W?6 SBX 6 4 10 4WQQ SMO 6 10 4X=B STO 5 0 21 4XQ2 LDN 4 1 [ENSURE APROPS LOOP TERMINAT 21 4Y9L ADS 4 A1(2) [AND USE X4 TO UPDATE APRNUM 12 4YP= LDX 5 APROPNAME(3) 13 4_8W LDX 6 APROPNAME+1(3) 19 4_NG LDX 7 APROPNAME+2(3) [RESET NAME IN X5->7 14 5286 FI [FI 9 52MQ ADN 1 4 9 537B SMO FX2 10 53M2 STO 1 AWORK2 20 546L REPEAT CT 4 [REPEAT OVER NAMES IN BLOCK 19 54L= REPEAT [REPEAT OVER SYSPROP RECORDS 8 555W LDX 5 A1(2) 11 55KG MHUNT 1,APERI,APROPS 20 5656 BXU 5 A1+1(1),PROPUNK [IF NOT ALL NAMES FOUND,ERR FI 9 56JQ LDN 1 A1+2(2) 9 574B LDN 3 A1+2(2) 17 57J2 LDX 5 A1(2) [FOR ALL PROPNOS DO 8 583L IF 5,NZ 6 58H= THEN 5 592W DO 9 59GG LDX 0 0(1) 18 5=26 IF 0,PZ [IF NON-CONSOLE THEN 7 5=FQ THEN 18 5=_B STO 0 0(3) [PUT BACK IN BLOCK 9 5?F2 ADN 3 1 14 5?YL ELSE [ELSE 9 5#D= LDN 0 1 20 5#XW SBS 0 A1(2) [CORRECT NON-CONSOLE COUNT 14 5*CG FI [FI 8 5*X6 ADN 1 1 8 5BBQ REPEAT CT 5 14 5BWB FI [REPEAT 12 5CB2 FI [FI 10 5CTL MHUNTW 1,APERI,APRNUM 11 5D*= MHUNTW 3,ADATA,AWHATLIST 17 5DSW IF +A1+1(1),ZE [IF NO CONSPROP IN PARAM 10 5F#G LDX 4 AWLCONS(3) 19 5FS6 AND 4,NZ [BUT ONE TO FIND (I.E. REMOTE) 5 5G?Q THEN 8 5GRB ANDX 4 BSP16 8 5H?2 LDCT 2 #600 20 5HQL ORX 2 4 [ENSURE CONSOLE, PERMANENT SET 15 5J== STO 2 A1+1(1) [UPDATE PRNUM 8 5JPW LDX 2 FX2 9 5K9G LDX 0 AWORK1(2) 18 5KP6 IF 0,NG [IF LOOKING FOR DEFAULT 6 5L8Q THEN 7 5LNB REWIND 6 5M82 DO 7 5MML STEP 10 5N7= LDX 0 BSP16 11 5NLW ANDX 0 APROPNO(3) 16 5P6G REPEAT UNTIL,0,E,4 [X3 -> ENTRY 9 5PL6 LDCT 1 #600 19 5Q5Q ADN 1 APROPNAME+2(3) [X1 -> LAST CHAR OF NAME 9 5QKB WHILE TRUE 10 5R52 LDCH 0 0(1) 9 5RJL SBN 0 #20 9 5S4= AND 0,ZE 6 5SHW DO 9 5T3G SLC 1 2 9 5TH6 SBN 1 1 9 5W2Q SRC 1 2 19 5WGB REPEAT [X1 -> LAST NON-SPACE CHAR 11 5X22 SBN 1 APROPNAME(3) 8 5XFL SLC 1 2 11 5X_= LDN 4 APROPNAME(3) 16 5YDW LDN 6 1(1) [X6 := CHARCT 11 5YYG MHUNT 3,APERI,APROPS 6 5_D6 ELSE 11 5_XQ MHUNT 3,APERI,APROPS 14 62CB HUNT2J 1,APERI,APROPS,3,(GEOERR) 10 62X2 LDN 4 A1+3(1) 10 63BL LDX 6 A1+2(1) 5 63W= FI 8 64*W SMO FX2 9 64TG LDN 5 AWORK2 7 65*6 MOVE 4 3 8 65SQ LDX 7 A1(3) 7 66#B ADN 7 4 7 66S2 PHOTO 5 10 67?L ALTLENG 3,7,REFIND 10 67R= IF 5,U,BCOUNT 6 68=W THEN 11 68QG MHUNT 2,APERI,APROPS 6 69=6 ELSE 8 69PQ LDX 2 3 5 6=9B FI 16 6=P2 STO 7 A1(2) [UPDATE HDDR WD 9 6?8L LDX 0 A1+1(2) 19 6?N= SLL 0 2 [X0 := CT OF WDS TO MOVE DOWN 7 6#7W LDN 1 1 16 6#MG ADS 1 A1+1(2) [UPDATE PROPCT WD 9 6*76 LDN 1 A1+1(2) 19 6*LQ ADX 1 0 [X1 -> LAST WD TO BE MOVED 8 6B6B IF 0,NZ 6 6BL2 THEN 6 6C5L DO 10 6CK= LDX 7 0(1) 10 6D4W STO 7 4(1) 9 6DJG SBN 1 1 17 6F46 REPEAT CT 0 [BLOCK MOVED DOWN 5 6FHQ FI 9 6G3B STO 6 A1+2(2) 8 6GH2 SMO FX2 9 6H2L LDN 4 AWORK2 9 6HG= LDN 5 A1+3(2) 17 6H_W MOVE 4 3 [FIRST CELL INSERTED 18 6JFG ELSF +A1+1(1),E,GSIGN [ELSF 'CENTRAL' 1ST ELT THEN 5 6J_6 THEN 11 6KDQ MHUNT 2,APERI,APROPS 16 6KYB STOZ A1+2(2) [ZERO THE CT WD 16 6LD2 FI [FI FIND CONSPROP 5 6LXL CLOSE 7 6MC= SETREP2 OK 14 6MWW BRN XITISPROP [NORMAL EXIT 5 6NBG UBROKEIN 7 6NW6 LDX 2 FX2 15 6P*Q STO 2 AWORK2(2) [BREAKIN EXIT 9 6PTB BRN XITBROKEN 17 6Q*2 TOOMANYPRS [ERROR EXITS FOLLOW 7 6QSL LDX 2 FX2 8 6R#= SETREP2 MAXATT 9 6RRW BRN XITISPROP 6 6S?G TWOCONSOLE 5 6SR6 CLOSE 8 6T=Q SETREP2 CPROPS 9 6TQB BRN XITISPROP 5 6W=2 PROPUNK 5 6WPL CLOSE 8 6X9= SETREP2 XPROP 6 6XNW XITISPROP 9 6Y8G STOZ AWORK2(2) 6 6YN6 XITBROKEN 9 6_7Q LDX 0 AWORK1(2) 7 6_MB ADX 0 FX1 8 7272 ANDX 0 BITS22LS 7 72LL EXIT 0 0 4 736= [ 4 73KW [ 17 745G [ THE MAXIMUM SIZE OF DETAILS THAT MAY BE GIVEN IS :- 21 74K6 [ (:<12 CHAR USER>, <12 CHAR JOB>, *, PR , FILE <37 12 754Q [ I.E. (ATTMAX*13) - 1 + 83 CHARS 15 75JB [ HENCE NUMBER OF WORDS NEEDED TO HOLD INFO :- 13 7642 #DEF MAXMESSWDS=ATTMAX*13+85/4 14 76HL [ THIS #DEF MUST ALSO BE MADE IN WLA & WLB 4 773= [ 4 77GW [ 9 782G [ SUBROUTINE 'SEPARATE' 9 78G6 [ ===================== 4 78_Q [ 18 79FB [ THIS SUBROUTINE FINDS THE SELECTION DETAILS (ADATA/CREADL) 19 79_2 [ BLOCK, ADDS A SEPARATOR CHARACTER AND LEAVES PTRS TO ADD THE 8 7=DL [ PARAMETER ITSELF 4 7=Y= [ 9 7?CW [ ENVIRONMENT REQUIRED:- 18 7?XG [ ADATA/CREADL EXISTS WITH PTR TO NEXT FREE CHAR IN A1+1 4 7#C6 [ 9 7#WQ [ ENVIRONMENT CHANGES:- 8 7*BB [ X0 DESTROYED 10 7*W2 [ X1 -> NEXT FREE CHAR 9 7B*L [ X3 -> HEAD OF BLOCK 6 7BT= [ X7 LINK 4 7C#W [ 5 7CSG SEPARATE 10 7D#6 MHUNT 3,ADATA,CREADL 8 7DRQ LDX 1 A1+1(3) 7 7F?B SBN 1 A1+2 16 7FR2 IF 1,ZE [IF FIRST PARAM THEN 5 7G=L THEN 16 7GQ= LDN 0 #30 [SEPARATOR := '(' 9 7H9W ADN 1 A1+2(3) 13 7HPG ELSE [ELSE 9 7J96 ADN 1 A1+2(3) 8 7JNQ LDN 0 #34 15 7K8B DCH 0 0(1) [PUT IN ',' 7 7KN2 BCHX 1 / 16 7L7L LDN 0 #20 [FOLLOWED BY ' ' 5 7LM= FI 16 7M6W DCH 0 0(1) [INSERT SEPARATOR 7 7MLG BCHX 1 / 7 7N66 EXIT 7 0 4 7NKQ [ 4 7P5B [ 9 7PK2 [ SUBROUTINE 'SUBADDPAR' 9 7Q4L [ ====================== 4 7QJ= [ 20 7R3W [ THIS SUBROUTINE ADDS THE CONTENTS OF A CPB/CUNI TO THE END OF THE 10 7RHG [ SELECTION DETAILS BLOCK 4 7S36 [ 9 7SGQ [ ENVIRONMENT REQUIRED:- 11 7T2B [ X1,X3 AS LEFT BY 'SEPARATE' 14 7TG2 [ X2 -> CPB/CUNI WITH NON-ZERO CHAR CT 4 7T_L [ 9 7WF= [ ENVIRONMENT CHANGES:- 8 7WYW [ X0,X1 DESTROYED 6 7XDG [ X7 LINK 10 7XY6 [ PTR WD OF BLOCK UPDATED 4 7YCQ [ 6 7YXB SUBADDPAR 8 7_C2 LDN 0 APARA(2) 8 7_WL SMO ANUM(2) 7 82B= MVCH 0 0 7 82TW SBX 1 3 8 83*G STO 1 A1+1(3) 7 83T6 EXIT 7 0 4 84#Q [ 4 84SB [ 10 85#2 [ SUBROUTINE 'SUBENDETAIL' 10 85RL [ ======================== 4 86?= [ 17 86QW [ THIS SUBROUTINE CLOSES THE ADATA-CREADL DETAILS BLOCK 4 87=G [ 9 87Q6 [ ENVIRONMENT REQUIRED:- 8 889Q [ X3 -> CREADL 4 88PB [ 9 8992 [ ENVIRONMENT CHANGES:- 8 89NL [ X0 DESTROYED 10 8=8= [ X1 := CHARCT OF MESSAGE 10 8=MW [ X2 := LOGLEN OF BLOCK 6 8?7G [ X7 LINK 4 8?M6 [ 6 8#6Q SUBENDETAIL 9 8#LB LDX 1 A1+1(3) 8 8*62 LDN 0 #31 7 8*KL SMO 3 15 8B5= DCH 0 0(1) [PUT ON ')' 7 8BJW BCHX 1 / 7 8C4G SLC 1 2 9 8CJ6 SBN 1 A1+2*4 16 8D3Q STO 1 A1(3) [STORE CHAR CT 18 8DHB LDN 2 11(1) [ADD 2 WDS AND ROUND UP 7 8F32 SRL 2 2 7 8FGL EXIT 7 0 4 8G2= [ 4 8GFW [ 5 8G_G REFIND 10 8H5C ... MHUNT 2,APERI,APROPS 7 8H9# ... EXIT 1 0 5 8H*9 ...REFINDC 10 8HF6 MHUNT 2,ADATA,CREADL 7 8HYQ EXIT 1 0 4 8JDB [ 4 8JY2 [ 4 8KCL [ 9 8KX= [ SUBROUTINE 'SUBPARAM' 9 8LBW [ ===================== 4 8LWG [ 15 8MB6 [ DOES A SPARABEG, HUNTS THE CUNI IN X2 AND THE 8 8MTQ [ AWHATLIST IN X3 4 8N*B [ 11 8NT2 [ REQUIRED:- X3 = LENGTH OF KEY 9 8P#L [ X1 -> KEY 8 8PS= [ X7 LINK 4 8Q?W [ 13 8QRG [ CHANGES:- X2 -> CPB/CUNI JUST SET UP 12 8R?6 [ X3 -> ADATA/AWHATLIST 4 8RQQ [ 5 8S=B SUBPARAM 7 8SQ2 SBX 7 FX1 9 8T9L SPARABEG 1,3,0(1),,0 9 8TP= MHUNT 2,CPB,CUNI 11 8W8W MHUNTW 3,ADATA,AWHATLIST 7 8WNG ADX 7 FX1 7 8X86 EXIT 7 0 4 8XMQ [ 9 8Y7B [ SUBROUTINE 'SUBFNORM' 9 8YM2 [ ===================== 4 8_6L [ 16 8_L= [ RENAMES CUNI TO FNAME AND PERFORMS THE NECESSARY 16 925W [ RITUALS AND TIDYING REQUIRED TO DO A FNORM 5 4 92KG [ 9 9356 [ REQUIRES:- CUNI EXISTS 8 93JQ [ X7 LINK 4 944B [ 5 94J2 SUBFNORM 7 953L SBX 7 FX1 15 95H= NAMETOP 2,FILE,FNAME [RENAME /CUNI 8 962W LDN 0 #7777 17 96GG ANDS 0 ANUM(2) [CLEARED FOR PARFNAME 6 9726 PARFNAME 16 97FQ FNORM 5 [SET UP A /FABSNB 9 97_B VFREE CPB,CMULTI 7 98F2 ADX 7 FX1 7 98YL EXIT 7 0 4 99D= [ 4 99XW [ 9 9=CG [ SUBROUTINE 'SETWKFILE' 9 9=X6 [ ====================== 4 9?BQ [ 17 9?WB [ FREES ANY ADJUNCTS BLOCK, HUNTS AWHATLIST AND FNAME, 18 9#B2 [ AND SETS WKFILE BIT (DOCUMENT IS A BETTER NAME FOR IT) 4 9#TL [ 12 9**= [ REQUIRES:- AWHATLIST, FNAME EXIST 8 9*SW [ X7 LINK 4 9B#G [ 10 9BS6 [ CHANGES:- X3 -> AWHATLIST 9 9C?Q [ X2 -> FNAME 4 9CRB [ 6 9D?2 SETWKFILE 7 9DQL SBX 7 FX1 10 9F== VFREE FILE,ADJUNCTS 11 9FPW MHUNTW 3,ADATA,AWHATLIST 16 9G9G BS 3,AWLBWKFILE [SET WORKFILE BIT 9 9GP6 MHUNT 2,FILE,FNAME 7 9H8Q ADX 7 FX1 7 9HNB EXIT 7 0 4 9J82 [ 4 9JML [ 10 9K7= [ SUBROUTINE 'SUBGETSPACE' 10 9KLW [ ======================== 4 9L6G [ 19 9LL6 [ ENSURES SUFFICIENT SPACE IN DETAILS BLOCK FOR DOCUMENT NAME 4 9M5Q [ 18 9MKB [ REQUIRES:- X2 -> FNAME BLOCK (THIS IS RESTORED ON EXIT) 8 9N52 [ X7 LINK 4 9NJL [ 6 9P4= SUBGETSPACE 7 9PHW SBX 7 FX1 10 9Q3G MHUNT 3,ADATA,CREADL 8 9QH6 LDX 1 A1+1(3) 7 9R2Q SBN 1 A1+2 19 9RGB SLC 1 2 [X1 := CHARCT OF DETAILS SO FAR 9 9S22 LDN 4 MAXMESSWDS*4 19 9SFL SBN 4 8(1) [X4 := CHARS LEFT FOR FILENAME 20 9S_= [(LEAVES SPACE FOR ', FILE )' 20 9TDW [ ASSUMES 'FILE' TO BE LAST 21 9TYG [ SELECTION PARAM TO BE LOOKED FOR 18 9WD6 IF 4,L,ANUM(2) [IF NOT ENOUGH SPACE THEN 5 9WXQ THEN 9 9XCB SBX 4 ANUM(2) 18 9XX2 NGX 4 4 [X4 := EXTRA CHARS NEEDED 11 9YBL ADN 4 MAXMESSWDS*4+11 18 9YW= SRL 4 2 [X4 := TOTAL WDS NEEDED 10 9_*W ... ALTLENG 3,4,REFINDC 10 9_TG MHUNT 2,FILE,FNAME 12 =2*6 FI [FI 7 =2SQ ADX 7 FX1 7 =3#B EXIT 7 0 4 =3S2 [ 4 =4?L [ 10 =4R= [ SUBROUTINE 'SUBLOSETRAP' 10 =5=W [ ======================== 4 =5QG [ 11 =6=6 [ FREES ALL FILE-FTRAP BLOCKS 6 =6PQ [ LINK X7 4 =79B [ 6 =7P2 SUBLOSETRAP 7 =88L SBX 7 FX1 17 =8N= WHILE TRUE [FREE ALL /FTRAPS BLOCKS 10 =97W HUNT 1,FILE,FTRAP 7 =9MG AND 1,PZ 5 ==76 DO 7 ==LQ FREECORE 1 6 =?6B REPEAT 7 =?L2 ADX 7 FX1 7 =#5L EXIT 7 0 4 =#K= [ 4 =*4W [ 9 =*JG [ WW WW W 9 =B46 [ WW WW WW 9 =BHQ [ WW WW WWW 9 =C3B [ WWWW WW 9 =CH2 [ WWWWW WW 9 =D2L [ WW WW WW 9 =DG= [ WW WW WW 9 =D_W [ WW WW WW 4 =FFG [ 4 =F_6 [ 5 =GDQ WLAAK1 8 =GYB [ LOOK FOR 'DOCU' 4 =HD2 [ 7 =HXL LDX 1 FX1 7 =JC= LDN 6 8 7 =JWW WHILE TRUE 7 =KBG LDX 3 6 10 =KW6 ADN 1 PSTRDOCUMEN 9 =L*Q CALL 7 SUBPARAM 9 =LTB AND +ANUM(2),NG 5 =M*2 DO 7 =MSL FREECORE 2 7 =N#= SRL 6 1 7 =NRW SBX 1 6 20 =P?G REPEAT UNTIL,6,ZE [TRY FOR 'DOCUMENT', 'DOCU' OR 'DM' 16 =PR6 IF 6,NZ [IF ANY FOUND THEN 5 =Q=Q THEN 9 =QQB BZE 0 ZNULLPAR 11 =R=2 JBS Z2MANY,3,AWLBFILE 16 =RPL JMBAC ZNOUSERNAM,3,AWLBUSERNAM,AWLBJOBNO 17 =S9= CALL 7 SUBFNORM [CHECK NAME FORMAT 11 =SNW TESTREP2 NAMEFORM,ZENDCOM 18 =T8G IF REP2,OK [IF FABSNB SET UP THEN 6 =TN6 THEN 15 =W7Q MFREE FILE,FABSNB [FREE IT 13 =WMB FI [FI 16 =X72 CALL 7 SETWKFILE [SET WORKFILE BIT 19 =XLL CALL 7 SUBGETSPACE [PUT DOCUMENT NAME IN DETAILS 9 =Y6= CALL 7 SEPARATE 8 =YKW LDX 0 FX1 9 =_5G ADN 0 PSTRDM 7 =_K6 MVCH 0 3 9 ?24Q CALL 7 SUBADDPAR 10 ?2JB CALL 7 SUBLOSETRAP 12 ?342 FI [FI 4 ?3HL [ 9 ?43= [ CLOSE DETAILS BLOCK 4 ?4GW [ 10 ?52G MHUNT 3,ADATA,CREADL 8 ?5G6 LDX 1 A1+1(3) 7 ?5_Q SBN 1 A1+2 16 ?6FB IF 1,ZE [IF NO PARAMS THEN 5 ?6_2 THEN 15 ?7DL FREECORE 3 [LOSE BLOCK 13 ?7Y= ELSE [ELSE 10 ?8CW CALL 7 SUBENDETAIL 8 ?8XG ALTLENG 3,2 12 ?9C6 FI [FI 4 ?9WQ [ 6 ?=BB [ ASSERTION: 18 ?=W2 [ ADDITIONAL DATA WHICH MAY NOW BE IN ADATA/AWHATLIST:- 14 ??*L [ FILE BIT (WHEN FILE/FABSNB CHAINED), OR 14 ??T= [ WKFILE BIT (WHEN FILE/FNAME CHAINED) 11 ?##W MHUNTW 3,ADATA,AWHATLIST 13 ?#SG IF MBAC,3,AWLBWL,AWLBUSERCON 19 ?*#6 THEN [IF SL OR CH IN OP FORMAT THEN 21 ?*RQ JMBAC ZNOSELN,3,AWLBUSERNAM,AWLBJOBNO,AWLBPERI,AWLBPRPARAM,AWL- 19 ?B?B BFILE,AWLBWKFILE [ERRIF NO SELECTION PARAMS 12 ?BR2 FI [FI 4 ?C=L [ 8 ?CQ= [ LOOK FOR 'HERE' 13 ?D9W PARABEG 1,PVAL4(1),PSTRHERE(1),,0 9 ?DPG MHUNT 2,CPB,CUNI 16 ?F96 IF +ANUM(2),PZ [IF 'HERE' PRESENT 5 ?FNQ THEN 9 ?G8B BNZ 0 ZDUFFPAR 11 ?GN2 MHUNTW 3,ADATA,AWHATLIST 17 ?H7L BS 3,AWLBHERE [THEN SET HERE BIT 12 ?HM= FI [FI 7 ?J6W FREECORE 2 4 ?JLG [ 10 ?K66 [ LOOK FOR 'LIST' PARAMETER 15 ?KKQ [ LEAVE %(PR) IN ONLY CUNI WHEN GO ACROSS 18 ?L5B [ TO WHATLISA, OR NO CUNI IF NO QUALIFIER TO 'LIST' 4 ?LK2 [ 13 ?M4L SPARABEG 1,PVAL4(1),PSTRLIST(1),,0 9 ?MJ= MHUNT 2,CPB,CUNI 8 ?N3W LDX 7 ANUM(2) 16 ?NHG IF 7,PZ [IF 'LIST' PRESENT 5 ?P36 THEN 11 ?PGQ MHUNTW 3,ADATA,AWHATLIST 19 ?Q2B JBS ZHL,3,AWLBHERE [THEN IF LIST + HERE, ERR FI 17 ?QG2 MBS 3,AWLBFULL,AWLBLIST [SET FULL & LIST BITS 17 ?Q_L IF 7,NZ [IF PROPERTY STRING 6 ?RF= THEN 10 ?RYW LDX 3 JPARNUM(2) 21 ?SDG PARALYSE ,,3 [THEN SPLIT INTO ^LIST^ AND (PR PA 7 ?SY6 #UNS ANSTOOMANY 4 ?TCQ ( 15 ?TXB TESTREP2 UNPAIR,ZLISTWR,TOOMANY,ZMAXPAR 4 ?WC2 ) 7 ?WWL #UNS ANSTOOMANY 4 ?XB= #SKI 19 ?XTW TESTREP2 UNPAIR,ZLISTWR [IF UNPAIRED DELIM, ERR FI 8 ?Y*G PARANUMB 4 19 ?YT6 BXU 4 PVAL2(1),ZLISTWR [IF NOT TWO PARAMS, ERR FI 8 ?_#Q LDN 1 2 20 ?_SB PARALYSE ,,1 [STRIP BRACKETS OFF PARAM 2 7 #2#2 #UNS ANSTOOMANY 11 #2RL TESTREP2 TOOMANY,ZMAXPAR 8 #3?= LDN 7 8 6 #3QW DO 19 #4=G SPARABEG 1,7,PROPERTY(1) [LOOK FOR 'PR' PARAM 11 #4Q6 MHUNT 2,CPB,CUNI 10 #59Q LDX 6 ANUM(2) 18 #5PB IF 6,PZ [IF PR PARAM FOUND 7 #692 THEN 17 #6NL BNZ 6 NXTLISFND [EXIT IF OK 18 #78= BRN ZWRQUAL [ERROR IF NULL 7 #7MW FI 15 #87G FREECORE 2 [ELSE 17 #8M6 SRL 7 2 [TRY AGAIN FI 21 #96Q BZE 7 ZWRQUAL [IF NO 'PR...' FOUND , ERROR FI 7 #9LB REPEAT 6 #=62 NXTLISFND 17 #=KL HUNT2J 2,CPB,CUNI,,(GEOERR) [FIND 'LIST' CUNI 21 #?5= FREECORE 2 [FREE IT (KEPT IN CASE OF ERR MESS 12 #?JW MHUNTW 3,ADATA,AWHATLIST 17 ##4G BS 3,AWLBLISTPR [SET PROPERTY BIT 18 ##J6 PARAFREE [FREE CMULTI ANYWAY 10 #*3Q BRN NOTLIST 13 #*HB FI [FI 12 #B32 FI [FI 7 #BGL FREECORE 2 5 #C2= NOTLIST 4 #CFW [ 8 #C_G [ LOOK FOR 'FULL' 4 #DF6 [ 13 #DYQ PARABEG 1,PVAL4(1),PSTRFULL(1),,0 9 #FDB MHUNT 2,CPB,CUNI 11 #FY2 MHUNTW 3,ADATA,AWHATLIST 17 #GCL IF +ANUM(2),PZ [IF 'FULL' PRESENT THEN 5 #GX= THEN 9 #HBW BNZ 0 ZDUFFPAR 15 #HWG BS 3,AWLBFULL [SET 'FULL' 18 #JB6 IF MBAC,3,AWLBLIST,AWLBHERE [IF NO ROUTING GIVEN 6 #JTQ THEN 19 #K*B IF BC,3,AWLBUSERCON [IF OPERATOR OR OP COMMAND 7 #KT2 THEN 16 #L#L BS 3,AWLBLIST [SET 'LIST' 16 #LS= ELSE [ ELSE (USER) 16 #M?W BS 3,AWLBHERE [SET 'HERE' 14 #MRG FI [FI 13 #N?6 FI [FI 13 #NQQ ELSE [ELSE 21 #P=B BC 3,AWLBHERE [ENSURE 'HERE' NOT SET WITHOUT 'FULL' 12 #PQ2 FI [FI 7 #Q9L FREECORE 2 4 #QP= [ 6 #R8W [ ASSERTION: 18 #RNG [ ADDITIONAL DATA WHICH MAY NOW BE IN ADATA/AWHATLIST- 8 #S86 [ A) FULL FLAG 15 #SMQ [ B) ONE OF LIST AND HERE FLAGS - MANDATORY 15 #T7B [ C) QUALIFIER FLAG (IN WHICH CASE A CPB/CUNI 15 #TM2 [ CONTAINING THE QUALIFIER STRING EXISTS). 4 #W6L [ 11 #WL= MHUNTW 3,ADATA,AWHATLIST 16 #X5W IF BS,3,AWLBCH [IF CHANGELIST THEN 5 #XKG THEN 4 #Y56 [ 11 #YJQ [ LOOK FOR 'TOUR' IF CHANGELIST 4 #_4B [ 13 #_J2 SPARABEG 1,PVAL4(1),PSTRTOUR(1),,0 10 *23L MHUNT 2,CPB,CUNI 9 *2H= LDX 7 ANUM(2) 8 *32W IF 7,PZ 6 *3GG THEN 12 *426 MHUNTW 3,ADATA,AWHATLIST 20 *4FQ IF +PUSERSTOP(1),NZ [IF USER 'TOUR' STOPPED THEN 7 *4_B THEN 21 *5F2 JBS ZURINUSER,3,AWLBUSERCON [ERRIF URGE IN USER CONTEXT 14 *5YL FI [FI 16 *6D= BZE 7 ZNULLPAR [ERRIF NULL 8 *6XW SBN 7 1 19 *7CG BNZ 7 ZFORMERR [ERRIF MORE THAN ONE CHAR 10 *7X6 LDCH 7 APARA(2) 9 *8BQ SBN 7 #73 16 *8WB BPZ 7 ZFORMERR [ERRIF > 'Z' 10 *9B2 ADN 7 #73-#41 16 *9TL BNG 7 ZFORMERR [ERRIF < 'A' 9 *=*= ADN 7 #41 10 *=SW STO 7 AWLURGE(3) 10 *?#G BS 3,AWLBURGE 5 *?S6 FI 7 *#?Q FREECORE 2 4 *#RB [ 11 **?2 [ LOOK FOR 'TOPR' IF CHANGELIST 4 **QL [ 17 *B== PROPUNAC NOPRPARAM,ZPRNULL,PVAL4(1),PSTRTOPR(1) 7 *BPW LDN 1 0 10 *C9G CALL 0 SUBAREPROPS 9 *CP6 LDX 0 AWORK2(2) 19 *D8Q BNZ 0 ZBRKIN [IF BREAKIN, ABANDON COMMAND 19 *DNB TESTREP2 XPROP,ZNOSCHPROP [ELSF UNKNOWN PROPERTY, ERR 20 *F82 TESTREP2 MAXATT,Z2MANYPRPS [ELSF TOO MANY PROPERTIES, ERR 20 *FML TESTREP2 CPROPS,Z2CONSOLE [ELSF TWO CONSOLE PROPERTIES, ERR 13 *G7= MHUNTW 3,ADATA,AWHATLIST [FI 18 *GLW JBS ZTOURTOPR,3,AWLBURGE [ERRIF URGE GIVEN TOO 9 *H6G MFREE CPB,CUNI 9 *HL6 BRN TOPRDONE 6 *J5Q NOPRPARAM 11 *JKB MHUNTW 3,ADATA,AWHATLIST 12 *K52 JBC ZNOACTION,3,AWLBURGE 5 *KJL TOPRDONE 12 *L4= FI [FI 4 *LHW [ 13 *M3G [ ERROR IF ANY UNACCESSED PARAMETERS 4 *MH6 [ 6 *N2Q PARUNACC 9 *NGB MHUNT 2,CPB,CUNI 8 *P22 LDX 7 ANUM(2) 7 *PFL IF 7,PZ 5 *P_= THEN 19 *QDW BZE 7 ZNULLPAR [IF PARAM NULL THEN ERR FI 19 *QYG LDX 7 APARA(2) [(ELSE REPEATED OR UNKNOWN) 11 *RD6 MHUNTW 3,ADATA,AWHATLIST 19 *RXQ LDN 6 PSTRTOPR-PSTRUSER/2 [TEST 4-CHAR KEY REPETITION 10 *SCB IF BS,3,AWLBCH 6 *SX2 THEN 12 *TBL LDN 6 PSTRJOB-PSTRUSER/2 5 *TW= FI 5 *W*W DO 13 *WTG BXE 7 PSTRUSER(1),ZKEYRPT 8 *X*6 ADN 1 2 8 *XSQ REPEAT CT 6 8 *Y#B LDX 1 FX1 7 *YS2 NGN 6 1 7 *_?L SLL 6 6 7 *_R= ANDX 7 6 8 B2=W ADN 7 #20 18 B2QG BXE 7 PSTRJOB(1),ZKEYRPT [ONLY 3-CHAR KEY IS 'JOB' 7 B3=6 SLL 6 6 7 B3PQ ANDX 7 6 8 B49B ADN 7 #2020 19 B4P2 BXE 7 PSTRPR(1),ZKEYRPT [ONLY 2-CHAR KEYS ARE 'PR' 14 B58L BXE 7 PSTRDM(1),ZKEYRPT [AND 'DM' 7 B5N= SLL 6 6 7 B67W ANDX 7 6 8 B6MG LDX 5 ACES 7 B776 SRL 5 6 7 B7LQ ADX 7 5 17 B86B BXE 7 PSTRCOLON(1),ZKEYRPT [TEST ONE-CHAR KEYS 12 B8L2 BXE 7 PSTRSTAR(1),ZKEYRPT 21 B95L BRN ZUNRECOG [UNKNOWN PARAM SINCE NOT REPEATED KEY 5 B9K= FI 20 B=4W FREECORE 2 [KEEP 'LIST(PR)' STR AS ONLY CUNI 4 B=JG [ 14 B?46 [ CHECK WHETHER NARROW FORMAT TO BE USED 4 B?HQ [ 17 B#3B MHUNTW 3,ADATA,AWHATLIST [X3 -> ADATA/AWHATLIST 21 B#H2 LDX 4 PNARROW(1) [X4 = CODE VALUE FOR WHEN TO USE NARROW 20 B*2L LDN 5 0 [X5 SET NZ IF TO USE NARROW FORMAT 20 B*G= IF 4,NZ [IF NARROW NOT TOTALLY SUPPRESSED 20 B*_W AND BS,3,AWLBFULL [AND FULL OUTPUT LEVEL IS TO BE USED 21 BBFG THEN [THEN (CODE IS 1,2 OR -VE AT THIS POINT) 17 BB_6 IF 4,NG [IF CODE = ALL (-VE) 13 BCDQ THEN [THEN 19 BCYB LDN 5 1 [WILL USE NARROW FORMAT 18 BDD2 ELSE [ELSE (CODE IS 1 OR 2) 21 BDXL [THESE CODES ONLY LEAD TO NARROW 20 BFC= [FORMAT FOR CENTRAL OPERATOR 20 BFWW [COMMANDS WITH ^FULL,HERE^ 21 BGBG [IF CENTRAL OPERATOR FULL,HERE 14 BGW6 IF MBAS,3,AWLBOPER,AWLBHERE 21 BH*Q AND +JSOURCE3(2),ZE [(AWLBREM CLEARED BETWEEN K4-K5) 14 BHTB THEN [THEN 9 BJ*2 SBN 4 1 18 BJSL IFR 4,ZE [IF CODE=1 (OPERATOR) 19 BK#= OR ENVNOT,1900 [OR EMUL'N (AND CODE=2) 14 BKRW THEN [THEN 20 BL?G LDN 5 1 [WILL USE NARROW FORMAT 14 BLR6 FI [FI 20 BM=Q FI [FI CENTRAL OPERATOR FULL,HERE 15 BMQB FI [FI CODE = ALL 19 BN=2 FI [FI FULL LEVEL AND NARROW POSSIBLE 4 BNPL [ 7 BP9= IF 5,NZ 5 BPNW THEN 10 BQ8G BS 3,AWLBNARROW 5 BQN6 FI 4 BR7Q [ 4 BRMB [ 4 BS72 [ 8 BSLL ACROSS WLC,1 4 BT6= [ 7 BTKW [ ERROR LABELS 7 BW5G [ ============ 4 BWK6 [ 6 BX4Q ZNOUSERNAM 16 BXJB ... COMERR JPARMIS,JUSNA [USER NAME MISSING 5 BY42 ZNOSELN 11 BYHL ... COMERR JPARMIS,JSELECTION 5 B_3= ZENDCOM 6 B_GW ENDCOM 6 C22G ZTRACEREP 8 C2G6 COMERR JMTRACE 6 C2_Q ZNOACTION 10 C3FB COMERR JPARMIS,ACTION 5 C3_2 ZWRQUAL 18 C4DL COMERR BADQUAL [ERROR IN 'LIST' QUALIFIER 5 C4Y= ZDUFFPAR 7 C5CW LDX 3 2 9 C5XG SPARANOX JPARNUM(3) 5 C6C6 ZFORMERR 5 C6WQ ZUNRECOG 5 C7BB ZLISTWR 16 C7W2 COMERR APFERR [PARAM FORMAT ERROR 6 C8*L ZTOURTOPR 5 C8T= Z2MANY 4 C9#W ZHL 5 C9SG ZKEYRPT 19 C=#6 COMERR ASCOMBER [ILLEGAL PARAMETER COMBINATION 5 C=RQ ZBRKIN 18 C??B ABANDCOM [ABANDONED DUE TO BREAKIN 6 C?R2 ZNOSCHPROP 16 C#=L COMERR JPROPUNK [UNKNOWN PROPERTY 6 C#Q= Z2MANYPRPS 15 C*9W COMERR JPERR2 [TOO MANY PROPS 6 C*PG Z2CONSOLE 16 CB96 COMERR JPERR3 [TWO CONSOLE PROPS 6 CBNQ ZNOTOWNED 20 CC8B COMERR CONSNOTOWN [REMOTE OP ASKS ABT OTHER CONSPROP 6 CCN2 ZURINUSER 10 CD7L COMERR JFORMCNTXT,JCOM 5 CDM= ZNULLPAR 5 CF6W ZPRNULL 8 CFLG COMERR JNULLPAR 5 CG66 ZWRCNTXT 17 CGKQ COMERR JCONTINC,JNUNOP [NO-USER, NOT-OPERATOR 7 CH5B #UNS ANSTOOMANY 4 CHK2 ( 5 CJ4L ZMAXPAR 9 CJJ= COMERR JMAXPAR 4 CK3W ) 4 CKHG #END 6 ____ ...014140770002