{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: NORMALUS864)}}
====== NORMALUS864 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:ALTLEN|ALTLEN]], [[george:macro:BXE|BXE]], [[george:macro:BXU|BXU]], [[george:macro:CHNUMCON|CHNUMCON]], [[george:macro:DOWN|DOWN]], [[george:macro:FINDCORE|FINDCORE]], [[george:macro:FREECORE|FREECORE]], [[george:macro:FSHCODE|FSHCODE]], [[george:macro:FSHENTRY|FSHENTRY]], [[george:macro:GETCORE|GETCORE]], [[george:macro:GETCOREN|GETCOREN]], [[george:macro:HUNT|HUNT]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREE|MFREE]], [[george:macro:MHUNT|MHUNT]], [[george:macro:NAME|NAME]], [[george:macro:NOTALIEN|NOTALIEN]], [[george:macro:PARAFREE|PARAFREE]], [[george:macro:PARALYSE|PARALYSE]], [[george:macro:PARANEXT|PARANEXT]], [[george:macro:PARANUMB|PARANUMB]], [[george:macro:PARAPASS|PARAPASS]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SETREP|SETREP]], [[george:macro:SPARABEG|SPARABEG]], [[george:macro:SPARABEX|SPARABEX]], [[george:macro:SPARANOT|SPARANOT]], [[george:macro:SPARAPAS|SPARAPAS]], [[george:macro:TEMPQ|TEMPQ]], [[george:macro:TESTNAMX|TESTNAMX]], [[george:macro:TESTPAIR|TESTPAIR]], [[george:macro:TESTREP|TESTREP]], [[george:macro:TESTREP2|TESTREP2]], [[george:macro:TRACE|TRACE]], [[george:macro:TRANCHKN|TRANCHKN]], [[george:macro:TRANSBEG|TRANSBEG]], [[george:macro:TRANSFIN|TRANSFIN]], [[george:macro:UP|UP]], [[george:macro:USERNORM|USERNORM]], [[george:macro:WORKNAME|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