17 22FL #SEG WLB [DEVT - STIG TOWNSEND 9 22_= #OPT K0WLB=0 13 23DW #LIS K0WLB>K0ALLGEO>K0GREATGEO 6 23YG 8HWLB 20 24D6 SEGENTRY K1WLB,WLBK1 [ENTRY FROM WLA AFTER INITIALISING 18 24XQ SEGENTRY K2WLB,WLBK2 [RETURN FROM 'PR' ANALYSIS 4 25CB [ 4 25X2 [ 16 26BL [ CODING CONVENTIONS: ONLY X1 PTS TO APERI/APROPS 16 26W= [ ONLY X2 PTS TO APERI/APRNUM 16 27*W [ APERI/CONSOLE 15 27TG [ CPB/CUNI 14 28*6 [ CPAT 18 28SQ [ ONLY X3 PTS TO ADATA/AWHATLIST HEAD 19 29#B [ (X1 MAY PT TO INNER WDS) 4 29S2 [ 4 2=?L [ 7 2=R= [ PRESET DATA 7 2?=W [ =========== 4 2?QG [ 11 2#2# ...PSTRCURR 12HCURRENT JOB 9 2#=6 MAGIC 7036875 9 2#PQ PJWLSTOP +JWLSTOP 10 2*9B PJWLCHANGE +JWLCHANGE 10 2*P2 PJLISTSUM1 +JLISTSUM1 10 2B8L PJLISTSUM2 +JLISTSUM2 8 2BN= PSTRCOLON 4H: 8 2C7W PSTRSTAR 4H* 9 2CMG PSTRUSER 8HUSER : 9 2D76 PSTRFULL 8HFULL 9 2DLQ PSTRLIST 8HLIST 9 2F6B PSTRHERE 8HHERE 18 2FL2 PSTRDOCU 8HDOCU [ ) THESE THREE LINES 18 2G5L PSTRDM 8HDM [ ) MUST STAY TOGETHER 16 2GK= PSTRDOCUMEN 8HDOCUMENT [ ) AS A BLOCK 9 2H4W PSTRFILE 8HFILE 9 2HJG PSTRTOPR 8HTOPR 9 2J46 PSTRTOUR 8HTOUR 8 2JHQ PSTRJOB 4HJOB 8 2K3B PERITYPE 4HCP 6 2KH2 4HLP 6 2L2L 4HTP 10 2LG= PROPERTY 8HPROPERTY 8 2L_W PSTRPR 4HPR 9 2MFG PSTRJOBNO 8HJOBNO 4 2M_6 [ 17 2NDQ [ THE MAXIMUM SIZE OF DETAILS THAT MAY BE GIVEN IS :- 21 2NYB [ (:<12 CHAR USER>, <12 CHAR JOB>, *, PR , FILE <37 12 2PD2 [ I.E. (ATTMAX*13) - 1 + 83 CHARS 15 2PXL [ HENCE NUMBER OF WORDS NEEDED TO HOLD INFO :- 13 2QC= #DEF MAXMESSWDS=ATTMAX*13+85/4 12 2QWW [ THIS #DEF MUST ALSO BE MADE IN WLA 4 2RBG [ 4 2RW6 [ 9 2S*Q [ SUBROUTINE 'TRANSFER' 9 2STB [ ===================== 4 2T*2 [ 19 2TSL [ THIS SUBROUTINE MOVES A FILE LOCAL NAME FROM A CPB/CUNI TO THE 9 2W#= [ ADATA/AWHATLIST BLOCK. 4 2WRW [ 9 2X?G [ ENVIRONMENT REQUIRED:- 8 2XR6 [ X2 PTS TO /CUNI 10 2Y=Q [ X3 PTS TO /AWHATLIST 4 2YQB [ 9 2_=2 [ ENVIRONMENT CHANGES:- 6 2_PL [ X1 LINK 8 329= [ X4,X5 DESTROYED 4 32NW [ 9 338G [ PARAMETER REQUIRED:- 20 33N6 [ DISPLACEMENT WITHIN THE /AWHATLIST AT WHICH THE TRANSFER SHOULD 7 347Q [ COMMENCE 4 34MB [ 5 3572 TRANSFER 18 35LL LDN 4 APARA(2) [X4 POINTS DIRECT TO DATA 7 366= LDX 5 3 18 36KW ADX 5 0(1) [X5 POINTS TO RECEPTION AREA 8 375G SMO ANUM(2) 7 37K6 MVCH 4 0 7 384Q EXIT 1 1 4 38JB [ 4 3942 [ 9 39HL [ SUBROUTINE 'SEPARATE' 9 3=3= [ ===================== 4 3=GW [ 18 3?2G [ THIS SUBROUTINE FINDS THE SELECTION DETAILS (ADATA/CREADL) 19 3?G6 [ BLOCK, ADDS A SEPARATOR CHARACTER AND LEAVES PTRS TO ADD THE 8 3?_Q [ PARAMETER ITSELF 4 3#FB [ 9 3#_2 [ ENVIRONMENT REQUIRED:- 18 3*DL [ ADATA/CREADL EXISTS WITH PTR TO NEXT FREE CHAR IN A1+1 4 3*Y= [ 9 3BCW [ ENVIRONMENT CHANGES:- 8 3BXG [ X0 DESTROYED 10 3CC6 [ X1 -> NEXT FREE CHAR 9 3CWQ [ X3 -> HEAD OF BLOCK 6 3DBB [ X7 LINK 4 3DW2 [ 5 3F*L SEPARATE 10 3FT= MHUNT 3,ADATA,CREADL 8 3G#W LDX 1 A1+1(3) 7 3GSG SBN 1 A1+2 16 3H#6 IF 1,ZE [IF FIRST PARAM THEN 5 3HRQ THEN 16 3J?B LDN 0 #30 [SEPARATOR := '(' 9 3JR2 ADN 1 A1+2(3) 13 3K=L ELSE [ELSE 9 3KQ= ADN 1 A1+2(3) 8 3L9W LDN 0 #34 15 3LPG DCH 0 0(1) [PUT IN ',' 7 3M96 BCHX 1 / 16 3MNQ LDN 0 #20 [FOLLOWED BY ' ' 5 3N8B FI 16 3NN2 DCH 0 0(1) [INSERT SEPARATOR 7 3P7L BCHX 1 / 7 3PM= EXIT 7 0 4 3Q6W [ 4 3QLG [ 9 3R66 [ SUBROUTINE 'SUBADDNUM' 9 3RKQ [ ====================== 4 3S5B [ 19 3SK2 [ THIS SUBROUTINE CONVERTS A BINARY NUMBER TO DECIMAL, ADDING IT 19 3T4L [ TO THE END OF THE SELECTION DETAILS BLOCK, STARTING WITH THE 12 3TJ= [ FIRST SIGNIFICANT DECIMAL DIGIT 4 3W3W [ 9 3WHG [ ENVIRONMENT REQUIRED:- 11 3X36 [ X1,X3 AS LEFT BY 'SEPARATE' 10 3XGQ [ X5 CONTAINS THE NUMBER 4 3Y2B [ 9 3YG2 [ ENVIRONMENT CHANGES:- 10 3Y_L [ X0,1,2,4,5,6 DESTROYED 6 3_F= [ X7 LINK 10 3_YW [ PTR WD OF BLOCK UPDATED 4 42DG [ 6 42Y6 SUBADDNUM 7 43CQ SMO FX1 19 43XB MPY 5 MAGIC [X56 := FRACTION FOR CONVERSION 7 44C2 LDN 0 7 17 44WL MODE 1 [SUPPRESS LEADING ZEROS 7 45B= LDN 2 #20 7 45TW LDN 4 0 17 46*G DO [FOR ALL NON-SPACES DO 7 46T6 CBD 5 4 8 47#Q IF 4,U,2 6 47SB THEN 16 48#2 DCH 4 0(1) [PUT IN BLOCK 8 48RL BCHX 1 / 5 49?= FI 13 49QW REPEAT CT 0 [REPEAT 7 4==G SBX 1 3 8 4=Q6 STO 1 A1+1(3) 7 4?9Q EXIT 7 0 4 4?PB [ 4 4#92 [ 9 4#NL [ SUBROUTINE 'SUBADDPAR' 9 4*8= [ ====================== 4 4*MW [ 20 4B7G [ THIS SUBROUTINE ADDS THE CONTENTS OF A CPB/CUNI TO THE END OF THE 10 4BM6 [ SELECTION DETAILS BLOCK 4 4C6Q [ 9 4CLB [ ENVIRONMENT REQUIRED:- 11 4D62 [ X1,X3 AS LEFT BY 'SEPARATE' 14 4DKL [ X2 -> CPB/CUNI WITH NON-ZERO CHAR CT 4 4F5= [ 9 4FJW [ ENVIRONMENT CHANGES:- 8 4G4G [ X0,X1 DESTROYED 6 4GJ6 [ X7 LINK 10 4H3Q [ PTR WD OF BLOCK UPDATED 4 4HHB [ 6 4J32 SUBADDPAR 8 4JGL LDN 0 APARA(2) 8 4K2= SMO ANUM(2) 7 4KFW MVCH 0 0 7 4K_G SBX 1 3 8 4LF6 STO 1 A1+1(3) 7 4LYQ EXIT 7 0 4 4MDB [ 4 4MY2 [ 10 4NCL [ SUBROUTINE 'SUBADDPROPS' 10 4NX= [ ======================== 4 4PBW [ 17 4PWG [ ADDS PROPERTY STRING TO THE ADATA-CREADL DETAILS BLOCK 4 4QB6 [ 9 4QTQ [ ENVIRONMENT REQUIRED:- 12 4R*B [ X1, X3 AS LEFT BY 'SEPARATE' 9 4RT2 [ APERI/APROPS EXISTS 4 4S#L [ 9 4SS= [ ENVIRONMENT CHANGES:- 11 4T?W [ ALL ACCUMULATORS DESTROYED 6 4TRG [ X7 LINK 4 4W?6 [ 6 4WQQ SUBADDPROPS 7 4X=B SBX 7 FX1 10 4XQ2 MHUNT 2,APERI,APROPS 8 4Y9L LDN 0 A1+3(2) 8 4YP= LDX 6 A1+2(2) 18 4_8W IF 6,ZE [IF CENTRAL 1ST PROP THEN 5 4_NG THEN 19 5286 LDN 6 7 [TRUE CHARCT IS 7, NOT ZERO 12 52MQ FI [FI 7 537B SMO 6 16 53M2 MVCH 0 0 [PUT 1ST PROPNAME ON 8 546L LDX 4 A1+1(2) 7 54L= SBN 4 1 17 555W IF 4,NZ [FOR REMAINING NAMES DO 5 55KG THEN 16 5656 LDN 2 A1+6(2) [X2 -> 2ND CELL 8 56JQ LDN 5 #26 5 574B DO 15 57J2 DCH 5 0(1) [ADD '&' 8 583L BCHX 1 / 9 58H= LDN 0 1(2) 9 592W SMO 0(2) 16 59GG MVCH 0 0 [ADD PROPNAME 8 5=26 ADN 2 4 8 5=FQ REPEAT CT 4 13 5=_B FI [REPEAT 7 5?F2 SBX 1 3 16 5?YL STO 1 A1+1(3) [CLOSE DETAILS BLOCK 10 5#D= MHUNT 2,APERI,APROPS 9 5#XW IF +A1+2(2),ZE 9 5*CG LDX 0 A1+1(2) 7 5*X6 SBN 0 1 20 5BBQ AND 0,ZE [IF ONLY 'CENTRAL' IN APROPS THEN 5 5BWB THEN 14 5CB2 FREECORE 2 [FREE IT 12 5CTL FI [FI 7 5D*= ADX 7 FX1 7 5DSW EXIT 7 0 4 5F#G [ 4 5FS6 [ 10 5G?Q [ SUBROUTINE 'SUBENDETAIL' 10 5GRB [ ======================== 4 5H?2 [ 17 5HQL [ THIS SUBROUTINE CLOSES THE ADATA-CREADL DETAILS BLOCK 4 5J== [ 9 5JPW [ ENVIRONMENT REQUIRED:- 8 5K9G [ X3 -> CREADL 4 5KP6 [ 9 5L8Q [ ENVIRONMENT CHANGES:- 8 5LNB [ X0 DESTROYED 10 5M82 [ X1 := CHARCT OF MESSAGE 10 5MML [ X2 := LOGLEN OF BLOCK 6 5N7= [ X7 LINK 4 5NLW [ 6 5P6G SUBENDETAIL 9 5PL6 LDX 1 A1+1(3) 8 5Q5Q LDN 0 #31 7 5QKB SMO 3 15 5R52 DCH 0 0(1) [PUT ON ')' 7 5RJL BCHX 1 / 7 5S4= SLC 1 2 9 5SHW SBN 1 A1+2*4 16 5T3G STO 1 A1(3) [STORE CHAR CT 18 5TH6 LDN 2 11(1) [ADD 2 WDS AND ROUND UP 7 5W2Q SRL 2 2 7 5WGB EXIT 7 0 4 5X22 [ 4 5XFL [ 5 5X_= REFIND 10 5YDW MHUNT 2,ADATA,CREADL 7 5YYG EXIT 1 0 4 5_D6 [ 4 5_XQ [ 4 62CB [ 9 62X2 [ SUBROUTINE 'SUBPARAM' 9 63BL [ ===================== 4 63W= [ 15 64*W [ DOES A SPARABEG, HUNTS THE CUNI IN X2 AND THE 8 64TG [ AWHATLIST IN X3 4 65*6 [ 11 65SQ [ REQUIRED:- X3 = LENGTH OF KEY 9 66#B [ X1 -> KEY 8 66S2 [ X7 LINK 4 67?L [ 13 67R= [ CHANGES:- X2 -> CPB/CUNI JUST SET UP 12 68=W [ X3 -> ADATA/AWHATLIST 4 68QG [ 5 69=6 SUBPARAM 7 69PQ SBX 7 FX1 9 6=9B SPARABEG 1,3,0(1),,0 9 6=P2 MHUNT 2,CPB,CUNI 11 6?8L MHUNTW 3,ADATA,AWHATLIST 7 6?N= ADX 7 FX1 7 6#7W EXIT 7 0 4 6#MG [ 4 6*76 [ 10 6*LQ [ SUBROUTINE 'SUBPROPUSER' 10 6B6B [ ======================== 4 6BL2 [ 16 6C5L [ APPENDS THE USERNAME FROM THE ADATA-AWHATLIST TO 16 6CK= [ THE DETAILS BLOCK AND ADDS A COMMA AND SPACE 4 6D4W [ 10 6DJG [ REQUIRES:- X2 -> AWHATLIST 14 6F46 [ X1, X3 AS LEFT BY 'SEPARATE' 8 6FHQ [ X7 LINK 6 6G3B SUBPROPUSER 7 6GH2 LDN 0 #12 7 6H2L DCH 0 0(1) 7 6HG= BCHX 1 / 10 6H_W LDN 0 AWLUSERNAM(2) 9 6JFG SMO AWLCOUNT(2) 7 6J_6 MVCH 0 0 7 6KDQ LDN 0 #34 7 6KYB DCH 0 0(1) 7 6LD2 BCHX 1 / 7 6LXL LDN 0 #20 7 6MC= DCH 0 0(1) 7 6MWW BCHX 1 / 7 6NBG EXIT 7 0 4 6NW6 [ 4 6P*Q [ 9 6PTB [ SUBROUTINE 'SUBFNORM' 9 6Q*2 [ ===================== 4 6QSL [ 16 6R#= [ RENAMES CUNI TO FNAME AND PERFORMS THE NECESSARY 16 6RRW [ RITUALS AND TIDYING REQUIRED TO DO A FNORM 5 4 6S?G [ 9 6SR6 [ REQUIRES:- CUNI EXISTS 8 6T=Q [ X7 LINK 4 6TQB [ 5 6W=2 SUBFNORM 7 6WPL SBX 7 FX1 15 6X9= NAMETOP 2,FILE,FNAME [RENAME /CUNI 8 6XNW LDN 0 #7777 17 6Y8G ANDS 0 ANUM(2) [CLEARED FOR PARFNAME 6 6YN6 PARFNAME 16 6_7Q FNORM 5 [SET UP A /FABSNB 9 6_MB ... VFREE CPB,CMULTI 7 72LL ADX 7 FX1 7 736= EXIT 7 0 4 73KW [ 4 745G [ 9 74K6 [ SUBROUTINE 'SETWKFILE' 9 754Q [ ====================== 4 75JB [ 17 7642 [ FREES ANY ADJUNCTS BLOCK, HUNTS AWHATLIST AND FNAME, 18 76HL [ AND SETS WKFILE BIT (DOCUMENT IS A BETTER NAME FOR IT) 4 773= [ 12 77GW [ REQUIRES:- AWHATLIST, FNAME EXIST 8 782G [ X7 LINK 4 78G6 [ 10 78_Q [ CHANGES:- X3 -> AWHATLIST 9 79FB [ X2 -> FNAME 4 79_2 [ 6 7=DL SETWKFILE 7 7=Y= SBX 7 FX1 10 7?CW VFREE FILE,ADJUNCTS 11 7?XG MHUNTW 3,ADATA,AWHATLIST 16 7#C6 BS 3,AWLBWKFILE [SET WORKFILE BIT 9 7#WQ MHUNT 2,FILE,FNAME 7 7*BB ADX 7 FX1 7 7*W2 EXIT 7 0 4 7B*L [ 4 7BT= [ 10 7C#W [ SUBROUTINE 'SUBGETSPACE' 10 7CSG [ ======================== 4 7D#6 [ 19 7DRQ [ ENSURES SUFFICIENT SPACE IN DETAILS BLOCK FOR DOCUMENT NAME 4 7F?B [ 18 7FR2 [ REQUIRES:- X2 -> FNAME BLOCK (THIS IS RESTORED ON EXIT) 8 7G=L [ X7 LINK 4 7GQ= [ 6 7H9W SUBGETSPACE 7 7HPG SBX 7 FX1 10 7J96 MHUNT 3,ADATA,CREADL 8 7JNQ LDX 1 A1+1(3) 7 7K8B SBN 1 A1+2 19 7KN2 SLC 1 2 [X1 := CHARCT OF DETAILS SO FAR 9 7L7L LDN 4 MAXMESSWDS*4 19 7LM= SBN 4 8(1) [X4 := CHARS LEFT FOR FILENAME 20 7M6W [(LEAVES SPACE FOR ', FILE )' 20 7MLG [ ASSUMES 'FILE' TO BE LAST 21 7N66 [ SELECTION PARAM TO BE LOOKED FOR 18 7NKQ IF 4,L,ANUM(2) [IF NOT ENOUGH SPACE THEN 5 7P5B THEN 9 7PK2 SBX 4 ANUM(2) 18 7Q4L NGX 4 4 [X4 := EXTRA CHARS NEEDED 11 7QJ= ADN 4 MAXMESSWDS*4+11 18 7R3W SRL 4 2 [X4 := TOTAL WDS NEEDED 10 7RHG ALTLENG 3,4,REFIND 10 7S36 MHUNT 2,FILE,FNAME 12 7SGQ FI [FI 7 7T2B ADX 7 FX1 7 7TG2 EXIT 7 0 4 7T_L [ 4 7WF= [ 10 7WYW [ SUBROUTINE 'SUBLOSETRAP' 10 7XDG [ ======================== 4 7XY6 [ 11 7YCQ [ FREES ALL FILE-FTRAP BLOCKS 6 7YXB [ LINK X7 4 7_C2 [ 6 7_WL SUBLOSETRAP 7 82B= SBX 7 FX1 17 82TW WHILE TRUE [FREE ALL /FTRAPS BLOCKS 10 83*G HUNT 1,FILE,FTRAP 7 83T6 AND 1,PZ 5 84#Q DO 7 84SB FREECORE 1 6 85#2 REPEAT 7 85RL ADX 7 FX1 7 86?= EXIT 7 0 4 86QW [ 4 87=G [ 9 87Q6 [ WW WW W 9 889Q [ WW WW WW 9 88PB [ WW WW WWW 9 8992 [ WWWW WW 9 89NL [ WWWWW WW 9 8=8= [ WW WW WW 9 8=MW [ WW WW WW 9 8?7G [ WW WW WW 4 8?M6 [ 4 8#6Q [ 5 8#LB WLBK1 4 8*62 [ 9 8*KL [ LOOK FOR JOBNO AS %A 4 8B5= [ 9 8BJW MHUNT 2,CPB,CALAS 9 8C4G LDX 6 APARANUM(2) 7 8CJ6 IF 6,NZ 5 8D3Q THEN 10 8DHB LDX 6 APARAFIR(2) 17 8F32 ANDN 6 #7777 [X6 := CHARCT OF %A 8 8FGL IF 6,NZ 6 8G2= THEN 11 8GFW LDCH 0 APARAFIR+1(2) 9 8G_G SBN 0 #73 18 8HF6 IF EITHER,0,PZ [IF (CHAR > 'Z' ... 10 8HYQ ADN 0 #73-#41 18 8JDB OR 0,NG [... OR CHAR < 'A' ) 10 8JY2 ADN 0 #41-#32 17 8KCL AND 0,NZ [AND CHAR .NE. '*' 10 8KX= ADN 0 #32-#12 21 8LBW AND 0,NZ [AND CHAR .NE. ':' THEN (JOBNO) 7 8LWG THEN 9 8MB6 SPARANOT 1 8 8MTQ CHNUMCOX 19 8N*B TESTRPN2 OK,ZENDCOM [ERRIF CONVERSION ERROR 12 8NT2 LDX 5 ACOMMUNE1(2) 19 8P#L BNG 5 ZJOBNOERR [ERRIF JOBNO NEGATIVE 18 8PS= BZE 5 ZJOBNOERR [ERRIF JOBNO ZERO 21 8Q?W MFREE CPB,CUNI [CAN FREE IT AS LAST ERRORCHECK 13 8QRG MHUNTW 3,ADATA,AWHATLIST 17 8R?6 STO 5 AWLJOBNAM(3) [REMEMBER JOBNO 17 8RQQ BS 3,AWLBJOBNO [SET JOBNO BIT 11 8S=B CALL 7 SEPARATE 9 8SQ2 LDX 0 FX1 11 8T9L ADN 0 PSTRJOBNO 9 8TP= MVCH 0 6 11 8W8W CALL 7 SUBADDNUM 14 8WNG FI [FI 6 8X86 ELSE 8 8XMQ PARAPASS 10 8Y7B BRN ZNULLPAR 13 8YM2 FI [FI 12 8_6L FI [FI 4 8_L= [ 15 925W [ LOOK FOR ':USER,JOB' OR 'JOB,:USER' (MAY BE 13 92KG [ SEPARATED BY OTHER PARAMETERS) 4 9356 [ 7 93JQ LDX 1 FX1 7 944B LDN 3 1 9 94J2 LDN 1 PSTRCOLON(1) 8 953L CALL 7 SUBPARAM 8 95H= LDX 7 ANUM(2) 16 962W IF 7,PZ [IF COLON PRESENT 5 96GG THEN 19 9726 JBS ZUINUCON,3,AWLBUSERCON [IF USER CONTEXT, ERR FI 18 97FQ JBS ZPREVJOBNO,3,AWLBJOBNO [ERRIF PREVIOUS JOBNO 9 97_B BZE 7 ZNULLUSER 21 98F2 STO 3 7 [PRESERVE PTR (X3 USED BY CHEKLNF2) 18 98YL CHEKLFN2 ZNVALNAM,ZNVALNAM,2 [CHECK USERNAME FORMAT 7 99D= LDX 3 7 19 99XW CALL 1 TRANSFER [COPY USERNAME TO PARAM BLOCK 8 9=CG +AWLUSERNAM 15 9=X6 BS 3,AWLBUSERNAM [SET USER BIT 9 9?BQ CALL 7 SEPARATE 8 9?WB LDN 0 #12 8 9#B2 DCH 0 0(1) 7 9#TL BCHX 1 / 9 9**= CALL 7 SUBADDPAR 7 9*SW FREECORE 2 20 9B#G PARUNACC [GET JOBNAME (FIRST UNACC PARAM) 10 9BS6 MHUNT 2,CPB,CUNI 18 9C?Q CHEKLFN2 ZNOJOBNAM,ZNVALNAM,2 [CHECK JOBNAME FORMAT 11 9CRB MHUNTW 3,ADATA,AWHATLIST 19 9D?2 CALL 1 TRANSFER [COPY JOBNAME TO PARAM BLOCK 7 9DQL +AWLJOBNAM 16 9F== BS 3,AWLBJOBNAM [SET JOBNAME BIT 9 9FPW CALL 7 SEPARATE 9 9G9G CALL 7 SUBADDPAR 12 9GP6 FI [FI 7 9H8Q FREECORE 2 4 9HNB [ 12 9J82 [ LOOK FOR USERNAME GIVEN BY 'USER' 4 9JML [ 7 9K7= LDN 3 4 9 9KLW LDN 1 PSTRUSER(1) 8 9L6G CALL 7 SUBPARAM 8 9LL6 LDX 1 ANUM(2) 17 9M5Q IF 1,PZ [IF 'USER' PRESENT THEN 5 9MKB THEN 17 9N52 JBSS Z2USERS,3,AWLBUSERNAM [IF PREVIOUS ':' 19 9NJL JBS Z2USERS,3,AWLBJOBNO [OR PREVIOUS JOBNO THEN ERROR 18 9P4= [ELSE SET USERNAME BIT 13 9PHW [FI 17 9Q3G IF 1,ZE [IF PARAM NULL THEN 6 9QH6 THEN 18 9R2Q JBC ZNULLUSER,3,AWLBUSERCON [ERRIF OPERATOR 8 9RGB STO 2 6 8 9S22 STO 3 2 10 9SFL CALL 7 SEPARATE 9 9S_= LDX 0 FX1 10 9TDW ADN 0 PSTRUSER 8 9TYG MVCH 0 6 11 9WD6 LDN 0 AWLUSERNAM(2) 11 9WXQ LDX 2 AWLCOUNT(2) 19 9XCB MVCH 0 0(2) [PUT USERNAME IN DETAILS 8 9XX2 SBX 1 3 10 9YBL STO 1 A1+1(3) 8 9YW= LDX 2 6 13 9_*W ELSE [ELSE 10 9_TG LDCH 7 APARA(2) 9 =2*6 SBN 7 #12 16 =2SQ IF 7,ZE [IF 'USER :' 7 =3#B THEN 11 =3S2 LDX 1 JPARNUM(2) 19 =4?L PARALYSE #12,,1 [THEN SPLIT AT COLON 7 =4BQ ...#UNS ANSTOOMANY 15 =4FW ... TESTREP2 UNPAIR,ZNVALNAM,TOOMANY,ZMAXPAR 7 =4K2 ...#UNS ANSTOOMANY 4 =4N6 ...#SKI 12 =4R= TESTREP2 UNPAIR,ZNVALNAM 20 =5=W SPARANOT 2 [GET USERNAME (2ND PARAM) 17 =5QG PARAFREE [FREE CMULTI 14 =6=6 MHUNT 2,CPB,CUNI [FI 6 =6PQ FI 19 =79B CHEKLFN2 ZNULLUSER,ZNVALNAM,2 [CHECK USERNAME FORMAT 12 =7P2 MHUNTW 3,ADATA,AWHATLIST 18 =88L IF BS,3,AWLBUSERCON [IF USER CONTEXT THEN 7 =8N= THEN 11 =97W LDX 0 AWLCOUNT(3) 20 =9MG BXU 0 ANUM(2),ZUINUCON [ERRIF NAME LENGTH NE %Z'S 9 ==76 STO 2 6 9 ==LQ STO 3 7 7 =?6B DO 13 =?L2 LDCH 4 AWLUSERNAM(3) 11 =#5L ... LDCH 5 APARA(2) 19 =#K= BXU 4 5,ZUINUCON [OR ANY CHARS DIFFER 10 =*4W BCHX 2 / 10 =*JG BCHX 3 / 10 =B46 REPEAT CT 0 9 =BHQ LDX 2 6 9 =C3B LDX 3 7 14 =CH2 FI [FI 18 =D2L CALL 1 TRANSFER [COPY TO PARAM BLOCK 14 =DG= +AWLUSERNAM [FI 10 =D_W CALL 7 SEPARATE 9 =FFG LDX 0 FX1 10 =F_6 ADN 0 PSTRUSER 8 =GDQ MVCH 0 6 10 =GYB CALL 7 SUBADDPAR 13 =HD2 FI [FI 5 =HXL FI 7 =JC= FREECORE 2 4 =JWW [ 12 =KBG [ LOOK FOR JOBNAME GIVEN BY 'JOB' 4 =KW6 [ 7 =L*Q LDN 3 3 9 =LTB LDN 1 PSTRJOB(1) 8 =M*2 CALL 7 SUBPARAM 8 =MSL LDX 7 ANUM(2) 16 =N#= IF 7,PZ [IF 'JOB' PRESENT 5 =NRW THEN 16 =P?G JBC ZJOBNUCON,3,AWLBUSERCON [IF NO-USER 21 =PR6 JBS ZPREVJOBNO,3,AWLBJOBNO [OR PREVIOUS JOBNO THEN ERROR FI 7 =Q=Q STO 3 7 17 =QQB CHEKLFN2 ZNULLJOB,ZNVALNAM,2 [CHECK JOBNAME FORMAT 7 =R=2 LDX 3 7 17 =RPL CALL 1 TRANSFER [PUT IN PARAM BLOCK 7 =S9= +AWLJOBNAM 16 =SNW MBS 3,AWLBJOBNAM,AWLBUSERNAM [SET BITS 18 =T8G STO 2 6 [PRESERVE CUNI PTR IN X6 7 =TN6 STO 3 2 9 =W7Q CALL 7 SEPARATE 10 =WMB CALL 7 SUBPROPUSER 20 =X72 LDX 2 6 [RESTORE CUNI PTR TO ADD PARAM 18 =XLL CALL 7 SUBADDPAR [ADD :USER,JOB TO DETAILS 16 =Y6= ELSF BS,3,AWLBUSERCON [ELSF USER CONTEXT 21 =YKW AND MBAC,3,AWLBJOBNO,AWLBUSERNAM [AND NO JOB DETAILS IN PARAMS 5 =_5G THEN 16 =_*# ... BS 3,AWLBJOBNO [SELECT ON JOBNO 10 =_K6 ... LDX 0 AWLPERI(3) 10 =_SY ... STO 0 AWLJOBNAM(3) 17 ?24Q STO 2 6 [STORE CUNI PTR IN X6 7 ?2JB STO 3 2 9 ?342 CALL 7 SEPARATE 8 ?3HL ... LDX 0 FX1 9 ?43= ... ADN 0 PSTRCURR 18 ?4GW ... MVCH 0 11 [BUT OUTPUT 'CURRENT JOB' 7 ?5G6 SBX 1 3 17 ?5_Q STO 1 A1+1(3) [CLOSE DETAILS BLOCK 20 ?6FB LDX 2 6 [RESTORE CUNI PTR FOR FREECORE 12 ?6_2 FI [FI 7 ?7DL FREECORE 2 4 ?7Y= [ 6 ?8CW [ ASSERTION: 18 ?8XG [ ADDITIONAL DATA WHICH MAY NOW BE IN ADATA/AWHATLIST- 9 ?9C6 [ A) USERNAME & FLAG 9 ?9WQ [ B) JOBNAME & FLAG 18 ?=BB [ N.B. A) MAY OCCUR WITHOUT B), BUT NOT IN USER CONTEXT. 14 ?=W2 [ B) WILL NEVER OCCUR WITHOUT A). 4 ??*L [ 4 ??T= [ 13 ?##W [ LOOK FOR '*' PARAMETER 4 ?#SG [ 7 ?*#6 LDN 3 1 9 ?*RQ LDN 1 PSTRSTAR(1) 8 ?B?B CALL 7 SUBPARAM 16 ?BH8 ... STOZ AWLPERI(3) [CLEAR OF ANY JOBNO 8 ?BR2 LDX 7 ANUM(2) 18 ?C=L IF 7,PZ [IF PERIPHERAL TYPE PARAM 5 ?CQ= THEN 9 ?D9W BZE 7 ZNULLPERI 7 ?DC4 ... SBN 7 2 17 ?DJ= ... BNZ 7 ZNOTPERI [MORE THAN TWO CHARS 20 ?DPG LDX 7 APARA(2) [THEN X7 := PERIPHERAL MNEMONIC 16 ?F96 LDN 6 4 [FOR X6:=4,2,1 DO 5 ?FNQ DO 21 ?G8B BXE 7 PERITYPE(1),SETPERI [IF DEVICE TYPE=X6, GOTO SETPERI 8 ?GN2 BUX 1 / 8 ?H7L SRL 6 1 14 ?HM= REPEAT UNTIL,6,ZE [REPEAT 19 ?J6W BRN ZNOTPERI [ERROR (MNEMONIC NOT FOUND) 5 ?JLG SETPERI 16 ?K66 BS 3,AWLBPERI [SET APPROP. BIT 16 ?KKQ DCH 6 AWLPERI(3) [SET PERIPH. TYPE 9 ?L5B CALL 7 SEPARATE 8 ?LK2 LDN 0 #32 8 ?M4L DCH 0 0(1) 7 ?MJ= BCHX 1 / 9 ?N3W CALL 7 SUBADDPAR 12 ?NHG FI [FI 7 ?P36 FREECORE 2 4 ?PGQ [ 6 ?Q2B [ ASSERTION: 18 ?QG2 [ ADDITIONAL DATA WHICH MAY NOW BE IN ADATA/AWHATLIST- 15 ?Q_L [ PERIPHERAL TYPE IN B0-B5 OF AWLPERI & FLAG 4 ?RF= [ 4 ?RYW [ 10 ?SDG [ LOOK FOR 'PR' PARAMETER 4 ?SY6 [ 19 ?TCQ PROPUNAC NOPRPARAM,ZPRNULL [IF UNACCESSED 'PR' PARAM THEN 11 ?TXB MHUNTW 3,ADATA,AWHATLIST 10 ?WC2 BS 3,AWLBPRPARAM 19 ?WWL ACROSS WLA,4 [DEAL WITH IT (RETURNS TO WLBK2) 6 ?XB= NOPRPARAM 11 ?XTW MHUNTW 3,ADATA,AWHATLIST 16 ?Y*G IF BS,3,AWLBREM [ELSF REMOTE THEN 5 ?YT6 THEN 11 ?_#Q SETNCORE 6,1,APERI,APROPS 7 ?_SB LDN 0 2 8 #2#2 STO 0 A1(1) 18 #2RL STOZ A1+1(1) [SET UP DUMMY PARAM BLOCK 17 #3?= ACROSS WLA,4 [TO COPE WITH DEFAULT 4 #3QW [ 5 #4=G WLBK2 4 #4Q6 [ 17 #59Q CALL 7 SEPARATE [FIND DETAILS BLOCK 9 #5PB LDN 0 PSTRPR 8 #692 ADX 0 FX1 15 #6NL MVCH 0 3 [PUT ON 'PR ' 10 #78= CALL 7 SUBADDPROPS 12 #7MW FI [FI 4 #87G [ 6 #8M6 [ ASSERTION: 18 #96Q [ ADDITIONAL DATA WHICH MAY NOW BE IN ADATA/AWHATLIST- 11 #9LB [ A) MANDATORY PROPERTY FLAG 11 #=62 [ B) CENTRAL PROPERTY FLAG 18 #=KL [ N.B. IF CENTRAL SET, REMOTE IS CLEAR AND NO OPTIONAL 19 #?5= [ PROPERTIES EXIST (I.E. TOTAL PROP COUNT = MANDATORY 9 #?JW [ PROP COUNT). 4 ##4G [ 4 ##J6 [ 8 #*3Q [ LOOK FOR 'FILE' 20 #*HB [ LEAVE NAME IN FNAME (WORKFILE) OR 10 WD FABSNB (OTHERWISE) 4 #B32 [ 20 #BGL [ FNORM 5 IS SPECIAL IN THAT NO FILE/FABSNB IS SET UP IF A WORKFILE 19 #C2= [ DESCRIPTION IS GIVEN IN THE FILE/FNAME BLOCK. IN THAT CASE, 17 #CFW [ ONLY A FILE/ADJUNCTS AND REPLY 'ADJUNCTS' ARE GIVEN 18 #C_G [ N.B. EXTRA INFO IN FGN AND LANG WDS CAN EXIST,BUT ARE NOT 19 #DF6 [ GIVEN IN /FABSNB SPEC, ONLY IN GETDIR MACRO SPEC (JUL 76). 18 #DYQ [ THERE IS ALSO A SUSPICION THAT THE TOP BITS OF HDREC ARE 14 #FDB [ UNRELIABLE - HENCE LDEX RATHER THAN LDX 4 #FY2 [ 7 #GCL LDX 1 FX1 7 #GX= LDN 3 4 9 #HBW LDN 1 PSTRFILE(1) 8 #HWG CALL 7 SUBPARAM 15 #JB6 IF +ANUM(2),PZ [IF 'FILE' THEN 5 #JTQ THEN 16 #K*B BZE 0 ZNULLFILE [ERRIF NULL PARAM 9 #KT2 LDN 0 CPREFIX 8 #L#L ADX 0 FX2 17 #LS= LDN 1 AWORK1 [PRESERVE CURR USER 8 #M?W ADX 1 FX2 7 #MRG MOVE 0 3 17 #N?6 IF BC,3,AWLBUSERCON [IF NOT USER CONTEXT 10 #NQQ LDCH 0 APARA(2) 9 #P=B SBN 0 #12 17 #PQ2 AND 0,NZ [AND NOT : FILE THEN 6 #Q9L THEN 20 #QP= JBC ZNOUSERNAM,3,AWLBUSERNAM [ERRIF NO DEFAULT USER 11 #R8W LDN 0 AWLUSERNAM(3) 9 #RNG SMO FX2 10 #S86 LDN 1 CPREFIX 16 #SMQ MOVE 0 3 [USE DEFAULT 13 #T7B FI [FI 9 #TM2 CALL 7 SUBFNORM 9 #W6L LDN 0 AWORK1(2) 10 #WL= LDN 1 CPREFIX(2) 17 #X5W MOVE 0 3 [RESTORE CURRENT USER 11 #X*N ... TESTREP2 NAMEFORM,ZENDCOM 15 #XKG IF REP2,ADJUNCTS [IF WORKFILE 6 #Y56 THEN 10 #YJQ CALL 7 SETWKFILE 11 #_4B CALL 7 SUBGETSPACE 10 #_J2 CALL 7 SEPARATE 9 *23L LDX 0 FX1 10 *2H= ADN 0 PSTRFILE 8 *32W MVCH 0 5 10 *3GG CALL 7 SUBADDPAR 15 *426 ELSE [ELSE (ELSE) 11 *4FQ MHUNT 2,FILE,FNAME 10 *4_B NAMETOP 2,CPB,CUNI 11 *5F2 MHUNT 3,FILE,FABSNB 21 *5YL JMBS ZWRFILE,3,BFABREEL,BFABTSN [ERRIF TSN, CSN OR RETENTIO 10 *6D= LDEX 2 HDREC(3) 8 *6XW SBN 2 4 19 *7CG BZE 2 ZWRFILE [ERRIF ONLY :USER GIVEN 16 *7X6 ADN 2 HDREC+2(3) [X2 -> FGN WD 9 *8BQ LDX 6 0(2) 20 *8WB LDX 7 1(2) [X67 := FGN-LANG (KEEP THEM) 9 *9B2 LDCT 0 #700 9 *9TL ANDX 0 0(2) 20 *=*= BNZ 0 ZFGNERR [ERRIF RELATIVE OR ZERO FGN 10 *=SW LDEX 0 HDREC(3) 8 *?#G SBN 0 10 18 *?S6 IF 0,NZ [IF NOT 10 WD /FABSNB 9 *#?Q SBN 2 10 20 *#RB LDX 0 0(2) [X0 := WD 0 OF PENULT NAME 9 **?2 ADN 0 6 18 **QL AND 0,U,ACES [AND ISN'T ^ :^ THEN 7 *B== THEN 15 *BPW OPENDIR (GEOERR),READ,QUERY,ERASING 11 *C9G TESTRPN2 OK,ZOPENERR 11 *CP6 MFREE FILE,ENT 9 *D8Q TOPFCB2 1 19 *DNB ADN 1 FME1 [X1 -> USERNAME IN FCB 12 *F82 MHUNT 3,FILE,FABSNB 11 *FML LDEX 2 HDREC(3) 11 *G7= ADN 2 HDREC(3) 21 *GLW SBN 2 11 [X2 -> USERNAME AREA IN FABSNB 20 *H6G MOVE 1 3 [COPY USERNAME TO FABSNB 17 *HL6 CLOSETOP [UPDATE /FABSNB 12 *J5Q MHUNT 3,FILE,FABSNB 14 *JKB FI [FI 10 *K52 LDEX 0 HDREC(3) 8 *KJL SBN 0 10 18 *L4= IF 0,NZ [IF NOT 10 WDS THEN 7 *LHW THEN 11 *M3G LDEX 2 HDREC(3) 11 *MH6 ADN 2 HDREC(3) 19 *N2Q SBN 2 12 [X2 -> USERNAME CELL 10 *NGB LDN 4 1(2) 10 *P22 LDN 5 A1+1(3) 9 *PFL MOVE 4 3 10 *P_= LDN 4 6(2) 10 *QDW LDN 5 A1+4(3) 9 *QYG MOVE 4 4 14 *RD6 FI [FI 18 *RXQ STO 6 A1+8(3) [RESET SPECIFIED FGN 18 *SCB STO 7 A1+9(3) [AND LANG (X67 FREE) 8 *SX2 LDN 0 10 17 *TBL STO 0 HDREC(3) [COMPRESS CONTENTS 17 *TW= ALTLENGD 3,10 [FREE EXCESS CORE 10 *W*W MFREE CPB,CUNI 8 *WTG LDX 2 3 10 *X*6 CALL 7 SEPARATE 9 *XSQ LDX 0 FX1 10 *Y#B ADN 0 PSTRFILE 8 *YS2 MVCH 0 5 17 *_?L LDX 5 A1+8(2) [X5 ZERO IF NO FGN 18 *_R= LDX 6 A1+9(2) [X6 ZERO IF NO LANG 10 B2=W SBN 1 A1+2(3) 8 B2QG SLC 1 2 21 B3=6 STO 1 A1(3) [SET BLOCK INTO TRUE CREADL FORMAT 9 B3PQ UNNORM FULL 11 B49B MHUNT 3,ADATA,CREADL 9 B4P2 LDX 2 A1(3) 18 B58L IF 6,NZ [IF LANG GIVEN THEN 7 B5N= THEN 11 B67W ADN 2 (A1+2)*4 21 B6MG SRC 2 2 [SET PTR TO PT PAST WHOLE LOT 20 B776 ELSF 5,ZE [ELSF NO FGN GIVEN EITHER THEN 7 B7LQ THEN 11 B86B ADN 2 (A1+2)*4-3 21 B8L2 SRC 2 2 [SET PTR TO '(' [I.E. LOSE '(/) 19 B95L ELSE [ELSE (FGN BUT NO LANG) 17 B9K= ADN 2 (A1+2)*4-2 [PT X2 AT '/' 9 B=4W SRC 2 2 9 B=JG LDN 0 #31 9 B?46 SMO 3 18 B?HQ DCH 0 0(2) [OVERWRITE BY ')' 17 B#3B BCHX 2 / [PT BEYOND IT 14 B#H2 FI [FI 10 B*2L STO 2 A1+1(3) 12 B*G= MHUNTW 3,ADATA,AWHATLIST 18 B*_W BS 3,AWLBFILE [SET FILENAME MARKER 17 BBFG FI [FI FILESTORE FILE 10 BB_6 CALL 7 SUBLOSETRAP 5 BCDQ ELSE 7 BCYB FREECORE 2 14 BDD2 FI [FI 'FILE' 9 BDMS ... ACROSS WLAA,1 4 BDXL [ 4 C*PG [ 7 CB96 [ ERROR LABELS 7 CBNQ [ ============ 4 CC8B [ 6 CCN2 ZNOUSERNAM 16 CD7L COMERR JPARMIS,JUSNA [USERNAME MISSING 6 CDM= ZNOJOBNAM 15 CF6W COMERR JPARMIS,JJOBNA [JOBNAME MISSING 5 CFLG ZNOSELN 11 CG66 COMERR JPARMIS,JSELECTION 5 CGKQ ZNVALNAM 16 CH5B COMERR JNLFNF [INVALID NAME FORMAT 5 CHK2 ZNULLJOB 6 CJ4L ZNULLUSER 5 CJJ= ZNULLPR 5 CK3W ZPRNULL 5 CKHG ZNULLPAR 6 CL36 ZNULLFILE 6 CLGQ ZNULLPERI 17 CM2B COMERR JNULLPAR [NULL PARAMETER GIVEN 5 CMG2 ZUINUCON 19 CM_L COMERR JFORMCNTXT,JCOM [FORMAT ILLEGAL IN USER CONTEXT 6 CNF= ZJOBNUCON 20 CNYW COMERR JFORMCNTXT,JDIR [FORMAT ILLEGAL IN NO-USER CONTEXT 5 CPDG ZNOTPERI 16 CPY6 COMERR JNOTAL [INVALID PERIPH TYPE 5 CQCQ Z2USERS 5 CQXB Z2JOBS 5 CRC2 Z2MANY 6 CRWL ZPREVJOBNO 19 CSB= COMERR ASCOMBER [ILLEGAL PARAMETER COMBINATION 5 CSTW ZBRKIN 18 CT*G ABANDCOM [ABANDONED DUE TO BREAKIN 5 CTT6 ZOPENERR 18 CW#Q MHUNT 2,CPB,CUNI [FILE DOESN'T EXIST - OUTPUT 17 CWSB NAMETOP 2,FILE,FNAME ['NO LISTFILES' MESSAGE 8 CX#2 CALL 7 SEPARATE 7 CXRL LDX 0 FX1 8 CY?= ADN 0 PSTRFILE 7 CYQW MVCH 0 5 9 C_=G CALL 7 SUBADDPAR 9 C_Q6 CALL 7 SUBENDETAIL 7 D29Q LDX 7 1 7 D2PB OUTBLOCN 20 8 D392 OUTMESS EBPNO 10 D3NL LDX 6 PJLISTSUM1(1) 11 D48= MHUNTW 3,ADATA,AWHATLIST 9 D4MW IF BC,3,AWLBWL 5 D57G THEN 10 D5M6 LDX 6 PJLISTSUM2(1) 10 D66Q LDX 5 PJWLSTOP(1) 10 D6LB IF BS,3,AWLBCH 6 D762 THEN 11 D7KL LDX 5 PJWLCHANGE(1) 5 D85= FI 7 D8JW OUTMESSX 5 5 D94G FI 11 D9J6 OUTPARAM 7,A1+2,ADATA,CREADL 7 D=3Q MONOUTX 6 5 D=HB ZENDCOM 6 D?32 ENDCOM 6 D?GL ZJOBNOERR 8 D#2= COMERR FWHSTAT 5 D#FW ZFGNERR 9 D#_G COMERR ERELZERFGN 5 D*F6 ZWRFILE 9 D*YQ COMERR ERENTTYPE 7 DB3* ...#UNS ANSTOOMANY 4 DB5Y ...( 5 DB8H ...ZMAXPAR 8 DB?6 ... COMERR JMAXPAR 4 DB*P ...) 4 DBDB #END 6 ____ ...327662140001