NORMALUS864

(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

NORMALUS864.txt
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