(George Source)
Macros used: ACROSS, ALTLEN, BXE, BXU, CHNUMCON, DOWN, FINDCORE, FREECORE, FSHCODE, FSHENTRY, GETCORE, GETCOREN, HUNT, MENDAREA, MFREE, MHUNT, NAME, NOTALIEN, PARAFREE, PARALYSE, PARANEXT, PARANUMB, PARAPASS, SEGENTRY, SETNCORE, SETREP, SPARABEG, SPARABEX, SPARANOT, SPARAPAS, TEMPQ, TESTNAMX, TESTPAIR, TESTREP, TESTREP2, TRACE, TRANCHKN, TRANSBEG, TRANSFIN, UP, USERNORM, WORKNAME
22FL #LIS K0NORMALUS>K0ALLGEO>K0GREATGEO>K0FILESTORE 22^= #SEG NORMALUS5 [ TONY HAMILTON 23DW 8HNORMALUS 23YG [THIS CHAPTER PICKS UP A FILENAME PARAMETER IN A CPB/CUNI BLOCK. 24D6 [IT USES THE CORRESPONDING MULTI-PARAMETER TO CONSTRUCT A FILE/ABSNB. 24XQ [THUS THE PARAMETER NUMBER IN ATYPE MUST BE CORRECT AND THE MULTI- 25CB [PARAMETER BLOCK MUST BE INTACT. 25X2 [ 26BL SEGENTRY K1NORMALUS,XFNORM [ENT FROM DECODE (FNORM) 26W= SEGENTRY K2NORMALUS,QUALSANAL [TO HANDLE QUALIFIERS ONLY 27*W SEGENTRY K3NORMALUS,TEMPQUALS [ENT FROM TEMPNAME TO HANDLE GUALS 27TG SEGENTRY K4NORMALUS,USERNORM 28*6 SEGENTRY K5NORMALUS,TEMPQUALS2 [AS K3 BUT ?? 28SQ SEGENTRY K7NORMALUS,USERNORME [USERNORM SUPPRESSING ERROR MESSAGES 28^Y ...[ 2976 ... FSHENTRY K8NORMALUS,WORKNAME,,WORKNAME 29#B [ 29B5 ...STARS 4H**** 29CS ...SAVEHASHES 4H#### 29FJ ...MASTER 29LQ ... +4,12HMASTER 29S2 XUDAS 4096 2=?L PRESETS 2=R= +1 2?=W +1 2?QG 4HC1 2#=6 ONE +1,4H: 2#PQ NEXTONE 2*9B FREECORE 1 2*P2 ADN 4 1 2B8L BRN QQQ 2BN= [ 2C7W USERNORME 2CMG [ 2D76 NGS 1 AWORK4(2) [SWITCH <0 2DLQ BRN RRR 2F6B [ 2FL2 USERNORM 2G5L [ 2GK= STOZ AWORK4(2) [SWITCH, =0 2H4W STOZ AWORK3(2) [NO FABSNB 2HJG RRR 2J46 LDX 3 ACOMMUNE6(2) [PICK UP POSN.NO IN MULTI-BLOCK 2JHQ LDN 4 1 [FOR PARABEG 2K3B QQQ 2KH2 SPARABEX 4,ONE(1) [PASS [X4]TH PARAM BEGINNING WITH ":" 2L2L HUNT 1,CPB,CUNI 2LG= LDX 0 ANUM(1) 2L^W BNG 0 NUSERR [J IF NO PARAM MEETING REQUIREMENTS 2MFG LDEX 0 ATYPE(1) [POSN.NO. OF PASSED PARAM 2M^6 BXU 0 3,NEXTONE [J. IF NOT ONE WE WANT 2NDQ NGN 4 1 [MARKER FOR ERRORS 2NYB CALL 2 NAMECHEC [CHECK FOR FORMAT 2PD2 NGN 7 1 2PXL CALL 4 MASTCHEQ [CHECK NOT MASTER 2QC= +6 2QWW 8HMASTER 2RBG +0 2RW6 SETNCORE 4,3,FILE,ADICT [ADICT BLOCK 2S*Q LDX 0 ACES 2STB ADN 3 A1 2T*2 STO 0 0(3) 2TSL STO 0 1(3) 2W#= STO 0 2(3) [SPACEFILL BLOCK 2WRW HUNT 2,CPB,CUNI 2X?G LDEX 1 ANUM(2) [NO OF CHARS 2XR6 ADN 2 APARA 2Y=Q MVCH 2 0(1) [MOVE 'EM IN 2YQB MFREE CPB,CUNI 2^=2 SETREP OK 2^PL UP 329= NUSERR 32NW FREECORE 1 338G ... SETREP USERMIS 33N6 UP 347Q NAMECHEC 34MB # THIS SUBROUTINE CHECKS A) THAT PARAM.PASSED WAS SIMPLE(I.E LOCAL- 3572 # NAME FORMAT, B) THAT IT IS 12 CHARS.LONG 35LL # C) THAT IT BEGINS WITH A LETTER 366= NGX 0 ANUM(1) 36KW BPZ 0 MESS5 375G NGX 0 0 37K6 SRL 0 12 384Q BNZ 0 MESS5 [ILLEGAL CHARACTER 38JB LDEX 0 ANUM(1) 3942 SBN 0 13 39HL BPZ 0 MESS1 [TOO LONG 3=3= LDCH 0 APARA(1) 3=GW SBN 0 #41 3?2G BNG 0 MLET [1ST/2ND CHAR WRONG 3?G6 SBN 0 #73-#41 3?^Q BPZ 0 MLET 3#FB EXIT 2 0 3#^2 # 3*DL # THIS SUBROUTINE EXPECTS A CHAR COUNT IN (LINK)+1,AND A CHAR STRING 3*Y= # ENDING IN A,ZERO WORD IN THE NEXT 3 WORDS AFTER THAT IT COMPARES 3BCW # THE COUNT & THE CHAR STRING AND REPORTS AN ERROR "SPECIAL CASE:- 3BXG # :MASTER NOT ALLOWED" IF THEY ARE EQUAL 3CC6 MASTCHEC 3CWQ HUNT 1,CPB,CUNI 3DBB MASTCHEQ 3DW2 LDX 2 4 [LINK 3F*L LDEX 0 ANUM(1) 3FT= BXU 0 0(2),MEXICO [J IF COUNTS NOT IDENTICAL 3G#W ZALP1 3GSG ADN 2 1 [STEP ON "PRESET" MODIFIER 3H#6 ADN 1 1 [STEP ON "STRING" MODIFIER 3HRQ LDX 0 0(2) 3J?B BZE 0 MESS10 [REPORT ERROR IF AT END 3JR2 BXE 0 ANUM(1),ZALP1 [J BACK IF SAME 3K=L MEXICO 3KQ= EXIT 4 4 3L9W # 3LPG # ENTRY FOR FNORM. X7 = MODE OF FNORM & MUST BE PRESERVED FOR 3M96 # TEMPNAME 3MNQ # 3N8B XFNORM 3NN2 [ 3P7L STOZ AWORK3(2) [NO FABSNB 3PM= STO 1 AWORK4(2) [SWITCH >0 3Q6W SENT HUNT 1,CPB,CUNI 3QLG LDCH 6 APARA(1) [PICK UP 1ST CHARACTER 3R66 SBN 6 #21 [TEST FOR ! (TEMPORARY-FILE NAME) 3RKQ LDX 3 ANUM(1) [SET UP TEST FOR SIMPLE PARAM 3S5B SRL 3 2 3SK2 ANDN 3 #4000 3T4L LDEX 4 ATYPE(1) [NO. OF TIS PARAM IE MULTI BLOCK 3TJ= BZE 6 TEMPF [J IF ! 3W3W ADN 6 #7 [SET UP TEST FOR COLON 3WHG LDN 5 1 [INDICATE NO QUALIFIERS 3X36 BZE 3 SIMPL 3XGQ PARALYSE , ,4 [SPLIT THE NAME AT BRACKETS 3XQJ ... TESTREP2 TOOMANY,MESS9 3Y2B CALL 1 TESTPAIR 3YG2 LDN 5 0 [INDICATES QUALIFIERS 3Y^L PARALYSE #36 [SPLIT NAME AT FWLL-STOPS 3^9D ... TESTREP2 TOOMANY,MESS9 3^F= BRN QUALD 3^YW SIMPL 42DG PARALYSE #36,,4 42N# ... TESTREP2 TOOMANY,MESS9 42Y6 QUALD 43CQ PARANUMB 3 43XB BZE 3 N1 [IGNORE FIRST CHAR IF NO PARAMETER 44C2 BNZ 6 N1 [IF COLON, ONE LESS LOCAL NAME 44WL SBN 3 1 [X3 IS NUMBER OF LOCAL NAMES 45B= BNZ 3 N1 [BRANCH UNLESS JUST USERNAME 46*G CALL 4 MASTCHEC [CHECK NOT :MASTER 46T6 +7 47#Q 8H:MASTER 47SB +0 47W^ ... MHUNT 2,FI,FNORM 47^J ... LDX 2 A1(2) 4847 ... ANDN 2 #200 486Q ... BZE 2 N1 489* ... ACROSS NORMERR,35 48#2 N1 48RL #SKI K6NORMALUS>599-599 49?= TRACE 3,NO.NAMES 49QW LDN 2 6 [MULTIPLY BY 6 TO GET BLOCK SIZE -4 4==G MPY 2 3 4=Q6 ADN 3 4 [ADD 3 FOR THE USERNAME & 1 FOR R.H. 4?9Q GETCORE 3,1 4?PB NGS 3 AWORK3(2) [INDICATE FABSNB 4#92 FINDCORE 2 4#NL NAME 2,FILE,FABSNB [SET UP THE ABSOLUTE NAME BLOCK. 4*8= LDX 0 ACES [SPACE FILL IT. 4*MW STO 0 A1+1(2) 4B7G LDN 0 A1+1(2) 4BM6 LDN 1 A1+2(2) 4C6Q MOVE 0 510(3) 4CLB STO 3 A1(2) [SET THE RECORD HEADER 4D62 LDN 4 0 4DKL [ X4 CONTAINS ZERO UNTIL THE USERNAME IS STORED, THEN ONE. 4F5= N3 4FJW BZE 6 USERGIVEN [J IF USERNAME GIVEN 4G4G SBN 3 4 [PTR,OMIT USERNAME & REC HDR 4GJ6 #SKI K6NORMALUS>599-599 4H3Q TRACE 3,NO COLON 4HHB LDN 4 1 4J32 LDX 0 A1(2) 4JGL SBN 0 10 [IF R.H. IS TEN THEN A LOCALNAME ONLY 4K2= BNZ 0 NOTLO [BEING PROCESSED 4KFW LDN 0 #1000 [SETB14 IN ATYPE 4K^G ORS 0 ATYPE(2) [TO SHOW LOCAL NAME 4LF6 NOTLO 4LYQ [ NOT COLON THIS WAY SO GET THE CURRENT USERNAME AND SHOVE IT IN 4MDB LDX 1 FX2 4MY2 ADN 1 CPREFIX [X1 -> CURRENT DIRECTORY. 4NCL ADN 2 A1+1 [X2 -> PLACE FOR USERNAME. 4NX= MOVE 1 3 [COPY NAME ACROSS. 4PBW BRN USEREND [ENTER THE MAIN LOOP 4PWG USERGIVEN 4QB6 # WE NOW PASS THE USERNAME 4QTQ SBN 3 1 [PTR,IGNORE R.H. 4R*B LDX 1 FX1 4RT2 SPARABEG 1,ONE(1) 4S#L SPARAPASS 4SS= MFREE CPB,CUNI [DUMMY 4T?W BRN NOTUSEREND 4TRG USERENDO 4W?6 LDX 1 FX1 4WQQ BXE 4 ONE(1),USEREND 4X=B HUNT 2,FILE,FABSNB [MVCH MUCKED UP TTRS 4XQ2 ADX 2 A1(2) 4Y9L ADN 2 A1-3 4YP= SBX 2 3 [PTR.TO 4TH WD OF NAME FOR DIR. DETAI 4^8W ADN 1 PRESETS 4^NG MOVE 1 3 5286 USEREND 52MQ SPARAPAS [PASS NEXT LOCAL NAME 537B NOTUSEREND 53M2 HUNT 1,CPB,CUNI 546L #SKI K6NORMALUS>99-99 54L= TRACE APARA(1),PASS1 555W CALL 2 NAMECHEC [CHECK FORMAT 55KG HUNT 2,FILE,FABSNB 5656 ADX 2 ALOGLEN(2) [THIS SETS UP A PTR 56JQ ADN 2 A1 574B SBX 2 3 [HOME OF THE NEXT NAME 57J2 LDEX 0 ANUM(1) [CHAR.COUNT 583L ADN 1 APARA 58H= SMO 0 592W MVCH 1 0 [MOVE NAME ACROSS 59GG BZE 4 USERIS 5=26 SBN 3 3 [ADJUST PTR. 5=FQ USERIS SBN 3 3 [IN X3 (COUNT OF UNUSED WDS IN FABSNB 5=^B MFREE CPB,CUNI [FREE LUNI 5?F2 ADN 4 1 [CT. OF NAMES PROCESSED SO FAR 5?YL BNZ 3 USERENDO [IF PTR NONZERO,GO BACK FOR ANOTHER 5#D= # WE'VE NOW REACHED THE END OF THE LOCAL NAME,SO WE STOZ THE 5#XW # DETAILS WORDS AND BRANCH OUT &UP IF WE'VE FINISHED 5*CG NDLOCALS 5*X6 HUNT 2,FILE,FABSNB 5BBQ LDX 0 ALOGLEN(2) 5BWB SBN 0 4 5CB2 ... BZE 0 NOMORQ [J IF JUST USERNAME 5CTL ADX 2 ALOGLEN(2) 5D*= STOZ A1-3(2) [REEL NUMBER IN DEFAULT =0 5DSW STOZ A1-2(2) [LAST GENERATION IN DEFAULT =0 5F#G STOZ A1-1(2) [ANY LANGUAGE IN DEFAULT =0 5FS6 BZE 5 TRYYY 5G?Q NOMOR 5GRB SETREP OK [O/W UP 5H?2 UP 5HBX ...NOMORQ 5HCB ...# CHECK TO PREVENT :MASTER(OWNE),FOR EXAMPLE 5HCT ... LDX 1 FX1 5HD# ... MHUNT 2,FILE,FABSNB 5HDR ... TESTNAMX 4,MASTER(1),A1(2),NOTMASTER,6 5HF= ... BRN MESS10 5HFP ...NOTMASTER 5HG8 ...# JUMP IF FABSNB CONTAINS ONLY :MASTER 5HGS ... BZE 5 TRYYY [J. IF USER + QUALS 5HLP ... BRN NOMOR 5HQL NDNAME 5J== FREECORE 7 5JPW BRN NOMOR 5K9G NOMOR1 5KP6 HUNT 2,FILE,FABSNB 5L8Q LDN 0 #400 5LNB ANDX 0 ATYPE(2) 5M82 BZE 0 NOMOR 5MML ADX 2 A1(2) 5N7= LDX 0 A1-1(2) 5NLW BZE 0 NOMOR 5P6G SBX 0 ACES 5PL6 BZE 0 NOMOR 5Q5Q BRN RILLDET 5QKB TRYYY 5R52 HUNT 1,CPB,CMULTI 5RJL LDX 6 ANALEV(1) [SET X6 = ANALYSIS LEVEL AT WHICH 5S4= SBN 6 1 [ QUALIFIERS ARE FOUND 5SHW SMO FX2 5T3G STOZ EXPEDIENT 5TH6 [ 5W2Q QUALSANAL 5WGB [ 5X22 LDX 5 GSIGN 5XFL OMMA 5X^= PARANEXT #34,6 5Y94 ... TESTREP2 TOOMANY,MESS9 5YDW CALL 1 TESTPAIR 5YYG HUNT 1,CPB,CUNI 5^D6 LDX 7 1 [PRESERVE POINTER TO CUNI BLOCK 5^XQ #SKI K6NORMALUS>99-99 62CB TRACE ANUM+1(1),PASS2 62X2 LDX 0 ANUM(1) 63BL LDN 3 0 [SET TO EXIT AFTER THIS 63W= BNG 0 NDNAME [ JUMP WHEN NO MORE QUALS 64*W BZE 0 NULL 64TG LDCH 0 APARA(1) 65*6 CALL 4 MODESQ 65SQ BRN MODES 66#B NULL 66S2 BZE 5 RNODET 67?L LDX 2 FX2 67R= LDX 0 EXPEDIENT(2) [B0 => DETAILS ALREADY SET 68=W BNG 0 XPEDI 68QG BNZ 0 XB [B23 -> QUALS ALREADY SEL 69=6 LDX 0 GSIGN 69PQ ORS 0 EXPEDIENT(2) [SET "DETAILS" BIT 6=9B PARANUMB 3 6=P2 SBN 3 1 [A RET. PERIOD IS SPECIFIED 6?8L BNZ 3 RETP [J IF RET. PERIOD SPECIFIED 6?N= HUNT 1,CPB,CUNI 6#7W FREECORE 1 [FREE LAST CUNI BLOCK 6#MG NGN 4 1 6*76 SLASH PARANEXT #37 [SPLIT AT / & PASS 1ST COMPONENT 6*BY ... TESTREP2 TOOMANY,MESS9 6*LQ CALL 1 TESTPAIR 6B6B PARANUMB 3 [ONLY 0,1 OR 2 PARAMS 6BL2 SBN 3 3 [ALLOWED 6C5L BPZ 3 RILLDET 6CK= HUNT 1,CPB,CUNI 6D4W LDX 7 1 6DJG LDEX 0 ANUM(1) 6F46 BZE 0 MORE [IF 1ST PARAM NULL, LEAVE FGN = 0 6FHQ #SKI K6NORMALUS>99-99 6G3B TRACE APARA(1),PASS3 6GH2 LDCH 5 APARA(1) 6H2L SBN 5 #33 6HG= BZE 5 PLUS [J IF 1ST CHAR IS + 6H^W SBN 5 2 6JFG BZE 5 MINUS [J IF FIRST CHAR IS - 6J^6 VERT CALL 5 SCDB [DO CONVERSION TO BINARY 6KDQ LDX 0 A1-2(2) 6KYB BZE 0 OKALLX 6LD2 BNG 0 OKPLUS 6LXL BNG 3 MESS6 6MC= BRN OKALL 6MWW OKALLX 6NBG SMO FX1 6NW6 BXU 3 XUDAS,OKALL 6P*Q STO 3 A1-2(2) 6PTB BRN MORE 6Q*2 OKPLUS 6QSL BZE 3 OKALL [ALUOW -0 6R#= BPZ 3 MESS6 6RRW NGS 3 3 6S?G OKALL 6SR6 ORS 3 A1-2(2) 6T=Q LDX 1 A1-2(2) [TEST FOR ZERO 6TQB BNZ 1 MAXGN 6W=2 LDCT 0 #100 [IF NO PRECEDING 6WPL ORS 0 A1-2(2) [SIGN SET B2 OF FGN WORD 6X9= MAXGN 6XNW SMO FX1 6Y8G TXL 3 XUDAS 6YN6 BCC MESS6 6^7Q MORE MFREE CPB,CUNI 6^MB PARAPASS 7272 HUNT 1,CPB,CUNI [ISOLATE NEXT 'DETAIL' 72LL LDX 0 ANUM(1) 736= BZE 0 STOSPAC 73KW BNG 0 QUALS [J IF NO MORE DETAILS 745G #SKI K6NORMALUS>99-99 74K6 TRACE APARA(1),PASS4 754Q LDX 7 1 [PRESERVE POINTER TO CUNI BLOCK 756N ...# 758L ...# ALLOW SPECIAL LANGUAGE CODES **** AND #### 75=J ... LDX 0 ANUM+1(1) [ LANG CODE 75#G ... LDX 2 FX1 75BD ... BXE 0 STARS(2),QLEND [ JUMP IF **** 75DB ... BXE 0 SAVEHASHES(2),QLEND [ JUMP IF #### 75G# ...# 75JB LDCH 0 ANUM+1(1) [TEST FIRST CHARACTER 7642 SBN 0 #41 [J TO "QLANE 76HL BNG 0 YREEL [IF 1ST CHAR 773= SBN 0 #32 [ALPHABETICAL 77GW BNG 0 QLANG 782G YREEL 78G6 HUNT 2,FILE,FABSNB 78^Q LDN 0 #400 [SET B15 IN ATYPE FOR REEL 79FB ORS 0 ATYPE(2) 79^2 CALL 5 SCDB [TO CONVERT IT TO BINARY 7=DL BNZ 3 SGEN [TEST IF REEL NO IS ZERO 7=Y= LDCT 0 #100 [AND SET B2 OF REEL NO WORD 7?CW ORS 0 A1-3(2) [IF IT IS 7?XG SGEN 7#C6 ORS 3 A1-3(2) 7#WQ SRL 3 9 7*BB BZE 3 MORE 7*W2 BRN MESS8 [ERROR IF NOT <512 7B*L QLANG ADN 0 #12 [RESET 1ST CHAR TO ITS VALUE 7BT= LDEX 2 ANUM(1) [KEEP COUNT OF CHARS OF LANGUADE CODE 7C#W LDN 1 0 7CSG CALL 5 XITA 7D#6 SBN 2 1 7DRQ BZE 2 QLEND [BRANCH IF ONLY ONE CHAR 7F?B CALL 5 NUM [CHECK 2ND CHAR IS ALPHA NUMERIC 7FR2 SBN 2 1 7G=L BZE 2 QLEND [BRANCH IF TWO CHARS 7GQ= CALL 5 NUM [CHECK 3-D CHAR IS ALPHA NUMERIC 7H9W SBN 2 1 7HPG BZE 2 QLEND [BRANCH IF THREE CHARS 7J96 CALL 5 NUM [CHECK 4TH CHAR IS ALPHA NUMERIC 7JNQ SBN 2 1 7K8B BNZ 2 MESS3 [ERROR IF LANGUAGE CODE>4CHARS 7KN2 QLEND LDX 1 7 7L7L QLANGIN 7LM= HUNT 2,FILE,FABSNB 7M6W LDN 0 #100 [SET B17 IN ATYPE 7MLG ORS 0 ATYPE(2) [TO SHOW LANGUAGE 7N66 ADX 2 HDREC(2) [X2 -> END OF FABSNB 7NKQ LDX 0 ANUM(1) [DON'T STORE RUBBISH IF (1) GIVEN 7P5B BNZ 0 NOSP [FOR LANG 7PK2 LDX 0 ACES 7Q4L STO 0 A1-1(2) [STORE SPACES 7QJ= BRN MORE 7R3W NOSP 7RHG LDX 0 ANUM+1(1) 7S36 ORS 0 A1-1(2) [STORE LANGUAGE WORD 7SGQ BRN MORE [J TO NEXT DETAIL 7T2B STOSPAC 7TG2 LDX 0 ACES 7T^L STO 0 APARA(1) 7WF= BRN QLANGIN 7WYW QUALS FREECORE 1 [FREE EMPTY CUNI BLOCK 7XDG BPZ 4 RP [J IF RET PER. NOT PROCESSED 7XY6 QUALT PARANUMB 3,6 [GET NO. OF PARAMS AT QUALIFIER LEVEL 7YCQ SBN 3 2 7YXB BZE 3 NOMOR1 [IF ONLY 2 THATS ALL 7^C2 LDX 5 GSIGN 7^WL SPARANOT 3,6 82B= HUNT 1,CPB,CUNI [IN BRACKETS ? 82TW #SKI K6NORMALUS>99-99 83*G TRACE APARA(1),PASS5 83T6 LDX 0 ANUM(1) [IF NOT,ERROR 84#Q SRL 0 12 84SB SBN 0 2 85#2 BZE 0 NONONO [J IF NOT COMPOSITE 85RL LDCH 0 APARA(1) 86?= SBN 0 #36 86QW BNZ 0 NILBRAK 87=G BRN NODIRDET 87Q6 NONONO 889Q FREECORE 1 88PB BRN K2NORMALUS [BACK FOR ADJUNCTS 8992 RETP 89NL SBN 3 1 8=8= BNZ 3 RILLDET 8=MW HUNT 2,CPB,CMULTI 8?7G LDX 4 ANALEV(2) [PRESERVE LEVEL AFTER COMMA SPLIT 8?M6 HUNT 3,FILE,FABSNB 8#6Q LDX 5 ALOGLEN(3) [LENGTHEN FABSNB BY 1 8#LB ADN 5 1 8*62 ALTLEN 3,5,FILE,FABSNB 8*KL HUNT 1,CPB,CUNI 8B5= LDEX 3 ANUM(1) 8BJW FREECORE 1 [FREE CUNI BLOCK 8C4G BNZ 3 SLASH [J IF SOMETHING BEFORE COMMA 8CJ6 NXSLA LDN 3 2 8D3Q PARANEXT #37,,3 8D?J ... TESTREP2 TOOMANY,MESS9 8DHB PARANUMB 3 8F32 SBN 3 3 8FGL BPZ 3 RILLDET 8G2= CALL 1 TESTPAIR 8GFW HUNT 1,CPB,CUNI 8G^G LDX 7 1 8HF6 LDX 0 ANUM(1) 8HYQ BZE 0 MESS4 8JDB #SKI K6NORMALUS>99-99 8JY2 TRACE APARA(1),PASS6 8KCL LDCH 4 APARA(1) [TEST 1ST CHAR FOR 'S' 8KX= SBN 4 #63 8LBW BNZ 4 NSEC [J FI NOT 'S' 8LWG LDEX 0 ANUM(1) ["S" IS NOT A VALID NUMBER FORMAT,BUT 8MB6 SBN 0 1 [LET CHNUMCON DO ALL THE HARD WORK 8MTQ BZE 0 NSEC 8N*B LDN 0 #33 8NT2 DCH 0 APARA(1) [REPLACE 'S' WITH '+' 8P#L NSEC CALL 5 SCDB [CONVERT TO BINARY 8PS= LDX 0 3 8Q?W BNG 0 MESS4 [ERROR IF NEGATIVE RETENTION PERIOD 8QRG SRL 0 12 [TEST LESS THAN 4096 8R?6 BNZ 0 MESS4 [OR ERROR 8RQQ STOZ A1(2) 8S=B BNG 4 SECB [J IF 'S' NOT SPECIFIED 8SQ2 LDCT 0 #400 8T9L STO 0 A1(2) [SET SECURITY BIT 8TP= SECB DSA 3 A1(2) [PUT RET PERIFD AT END OF FABSNB 8W8W HUNT 2,FILE,FABSNB 8WNG LDN 0 #400 8X86 ORS 0 ATYPE(2) [SET B15 ATYPE TO SHOW RETKPERIOD 8XMQ ADX 2 HDREC(2) [RESET POINTER 8Y7B NGN 4 1 [RESET SWITCH TO EXIT 8YM2 BRN MORE 8^6L RP ADN 4 1 8^L= PARAFREE 4 925W BRN NXSLA 92KG MODESQ 9356 SBN 0 #32 93JQ BZE 0 PARA2Q 944B SBN 0 #41-#32 94J2 BNG 0 PARA1Q 953L SBN 0 #73-#41 95H= BNG 0 PARA2Q 962W PARA1Q 96GG EXIT 4 1 9726 PARA2Q 97FQ EXIT 4 0 97^B MODES 98F2 LDX 2 FX2 98YL LDEX 0 EXPEDIENT(2) 99XW LDN 0 1 9=CG ORS 0 EXPEDIENT(2) 9=X6 DOWN ADJUNCTS,1 [SET QUALIFIERS IN ADJUNCTS BLOCK 9?BQ TESTREPN OK,XFRE [ERROR IN QUALIFIERS 9?WB BRN QUALT 9#B2 PLUS LDCT 3 #200 [B1 SHOWS LAST-PLUS-THIS 9#TL BRN MIN 9**= MINUS 9*SW BCHX 1 £ [TEST SECOND CHARACTER 9B#G LDCH 5 APARA(1) [FOR A MINUS 9BS6 SBN 5 #35 [NEGATIVE N IS 9C?Q BZE 5 MESS6 [AN ERROR 9CRB HUNT 1,CPB,CUNI [CORRECT POINTER 9D?2 LDCT 3 #400 [B0 SHOWS LAST-MINUS-THIS 9DQL MIN HUNT 2,FILE,FABSNB 9F== ADX 2 HDREC(2) [X2 -> END OF FABSNB 9FPW STO 3 A1-2(2) [SET BIT IN FGN 9G9G BRN VERT 9GP6 NUM SBN 0 #12 [SUBROUTINE CHECKS CHAR IN X0 FOR NUM 9H8Q BNG 0 XITA [J IF NUMERIC 9HNB ADN 0 #12 9J82 PHA SBN 0 #41 [SUBROUTINE CHECKS IN X0 FOR ALPHA 9JML BNG 0 MESS3 [J IF NOT ALPHA 9K7= SBN 0 #32 9KLW BPZ 0 MESS3 [J IF NOT ALPHA 9L6G XITA BCHX 1 £ 9LL6 SMO 7 9M5Q LDCH 0 ANUM+1(1) [ & LOAD NEXT CHAR TO X0 9MKB EXIT 5 0 9N52 SCDB SBX 5 FX1 9NJL CHNUMCON [CONVERT NO. TO BINARY 9P4= TESTREP CHNUMERR,XFRE 9PHW HUNT 1,CPAR,GNUMCON 9Q3G LDX 3 A1+1(1) [LOAD CONVERTED NO. 9QH6 FREECORE 1 [FREE GNUMCON 9R2Q HUNT 2,FILE,FABSNB 9RGB ADX 2 HDREC(2) [X2 -> END OF FABSNB 9S22 ADX 5 FX1 9SFL EXIT 5 0 9S^= TEMPF 9TDW BNZ 3 TEMPQ [J IF QUALIFIED 9TGS ...WORKNAME 9TJQ ... FSHCODE B,SKIPINA1 9TLN ...( 9TNL ... TRANSBEG FSHWORKID,NORMALUS,8,CLB,,ACOMMUNE1 9TQJ ... BRN TEMPB 9TSG ...SKIPINA1 9TWD ...) 9TYG WORKNAME 9W2D ... FSHCODE A,SKIPINB1 9W4B ...( 9W6# ... NOTALIEN SKIPINB1 9W8= ... TRANCHKN FSHWORKID,EQUAL,SKIPINB1 9W=8 ... TRANSFIN 9W#6 ...SKIPINB1 9WB4 ...) 9WD6 BRN TEMPB 9WXQ TEMPQ 9XCB PARANEXT , ,4 [SPLIT AT BRACKETS 9XM8 ... TESTREP2 TOOMANY,MESS9 9XX2 CALL 1 TESTPAIR 9X^9 ... FSHCODE B,SKIPA2 9Y3D ...( 9Y5M ... TRANSBEG FSHWORKID,NORMALUS,8,CLB,,ACOMMUNE1 9Y7W ... BRN TOTREP 9Y=5 ...SKIPA2 9Y## ...) 9YBL WORKNAME 9YLD ...TOTREP 9YW= TESTREPN OK,NOCUNI 9^*W MHUNT 2,CPB,CUNI 9^TG FREECORE 2 =2*6 NOCUNI =2SQ TEMPB =3#B LDX 0 7 =3S2 ANDN 0 #20 =4?L BZE 0 YESMESS =4R= TESTREP NOFILE,XOUT =5=W YESMESS =5QG TESTREP NAME,NAMEW =6=6 TESTREP NOMESS,XFRE =6PQ TESTREPN OK,NAMEW [J IF ERROR =79B HUNT 2,FILE,ADJUNCTS [ & SET UP AN ADJUNCTS BLOCK =7P2 BPZ 2 STUNC [ IF THERE ISN'T ONE =88L GETCOREN ADPAIR-A1,1 =8N= FINDCORE 2 [SET UP AN ADJUNCTS BLOCK =97W NAME 2,FILE,ADJUNCTS =9MG LDN 0 ADPAIR-A1 ==76 STO 0 A1(2) [REC HEADER ==LQ STOZ A1+1(2) [ZEROIZE MUDES WORD =?6B STOZ A1+2(2) =?L2 STOZ A1+3(2) =#5L STOZ A1+4(2) =#K= STUNC =*4W LDCT 0 #200 [SET B1 OF MODES TO SHOW TEMP FILE =*JG ORS 0 A1+1(2) [ TO SHOW TEMP FILE =B46 LDN 0 5 [IF STOPLIST NO FABSNB =BHQ SBX 0 7 =C3B BZE 0 NOMOR =CH2 HUNT 2,FILE,FABSNB =D2L LDN 0 #200 [SET B16 OF ATYPE TO SHOW ![DEC INT] =DG= ORS 0 ATYPE(2) =D^W BRN NOMOR [GO TO EXIT =FFG [ =F^6 TEMPQUALS =GDQ [ =GYB HUNT 1,CPB,CMULTI [SET X6 = LEVEL AT WHICH =HD2 LDX 6 ANALEV(1) [ QUALIFIERS ARE FOUND =HXL [ =JC= TEMPQUALS2 =JWW [ =KBG PARALYSE ,6 [DUMMY TO UPDATE POINTERS =KL# ... TESTREP2 TOOMANY,MESS9 =KW6 CALL 1 TESTPAIR =L*Q STOZ 5 =LTB BRN OMMA [GO TO PROCESS QU1&LIFIERS =M*2 NILBRAK =MSL ACROSS NORMERR,69 =N#= NODIRDET =NRW ACROSS NORMERR,68 =P?G RILLDET =PR6 ACROSS NORMERR,60 =Q=Q RNODET =QQB ACROSS NORMERR,61 =R=2 MESS1 =RPL ACROSS NORMERR,1 =S9= MLET BNG 4 MESS7 =SNW BZE 4 MESS7 =T8G MESS2 =TN6 ACROSS NORMERR,2 =W7Q MESS3 =WMB ACROSS NORMERR,3 =X72 MESS4 =XLL ACROSS NORMERR,4 =Y6= MESS5 =YKW ACROSS NORMERR,5 =^5G MESS6 =^K6 ACROSS NORMERR,96 ?24Q MESS7 ?2JB ACROSS NORMERR,7 ?342 MESS8 ?3HL ACROSS NORMERR,62 ?3NS ...MESS9 ?3W2 ... ACROSS NORMERR,34 ?43= NAMEW ?4GW ACROSS NORMERR,13 ?52G MESS10 ?5G6 ACROSS NORMERR,16 ?5^Q XFRE ?6FB SETREP NAMEFORM ?6^2 XOUT ?7DL UP ?7Y= XPEDI ?8CW ACROSS NORMERR,8 ?8XG XB ?9C6 ACROSS NORMERR,9 ?9WQ XQ ?=BB ACROSS NORMERR,10 ?=W2 TESTPAIR ??*L TESTREP UNPAIR,XUNPAIR ??T= EXIT 1 0 ?##W XUNPAIR ?#SG ACROSS NORMERR,11 ?*#6 [ ?*RQ MENDAREA 30,K99NORMALUS ?B?B #END ^^^^ ...33706354000200000000