home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / burroughs / b79dir.alg < prev    next >
Text File  |  2020-01-01  |  98KB  |  1,206 lines

  1.  $ SET LIST                                                             10000000
  2. %#CP PPT                                                                10001000
  3.  $ SET USERTREE                                                         10001500
  4.  $ SHARING = PRIVATE                                                    10002000
  5.                                                                         10003000
  6.                                                                         10004000
  7. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10004200
  8. %                                                                      %10004250
  9. %                                                                      %10004300
  10. %                   L I B R A R Y / D I R S E A R C H                  %10004350
  11. %                   =================================                  %10004400
  12. %                                                                      %10004450
  13. %                     MAKES DIRECTORY SEARCHES EASY                    %10004500
  14. %                                                                      %10004550
  15. %         COPYRIGHT: EINDHOVEN UNIVERSITY OF TECHNOLOGY, 1982.         %10004600
  16. %                                                                      %10004650
  17. %                  AUTHOR: CAREL BRAAM, JANUARY 1982.                  %10004700
  18. %                                                                      %10004750
  19. %                                                                      %10004800
  20. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10005000
  21. $ PAGE                                                                  10006000
  22. BEGIN                                                                   10015000
  23.                                                                         10015250
  24. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10015260
  25. %                                                                      %10015270
  26. %                  DESCRIPTION OF EXPORTED PROCEDURES                  %10015280
  27. %                            AND THEIR USAGE                           %10015290
  28. %                                                                      %10015300
  29. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10015310
  30. %                                                                      %10015320
  31. %                                                                      %10015330
  32. %     EXPORT LIST:                                                     %10015340
  33. %                                                                      %10015350
  34. %       DIRREQUEST                                                     %10015360
  35. %       DIRSIZE                                                        %10015370
  36. %       DISPLAYFILEKIND                                                %10015380
  37. %       DISPLAYREQUEST                                                 %10015390
  38. %       GETDIRECTORY                                                   %10015395
  39. %       GETTITLE                                                       %10015400
  40. %       INITDIR                                                        %10015420
  41. %       TITLESTART                                                     %10015430
  42. %                                                                      %10015440
  43. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%10015450
  44. %                                                                       10015453
  45. %                                                                       10015454
  46.      BOOLEAN PROCEDURE DIRSIZE (FILES, SEGS);                           10015455
  47. %                      -------                                          10015456
  48.      INTEGER FILES, SEGS; FORWARD;                                      10015457
  49. %                                                                       10015460
  50. %                                                                       10015470
  51. %    DIRSIZE RESULT VALUES: SEE GETTITLE RESULT VALUES.                 10015472
  52. %    FILES: NUMBER OF FILES IN DIRECTORY                                10015474
  53. %    SEGS: NUMBER OF SEGMENTS IN USE BY THIS DIRECTORY                  10015476
  54. %                                                                       10015478
  55. %                                                                       10015480
  56.      BOOLEAN PROCEDURE DIRREQUEST (DIR, SPEC);                          10015490
  57. %                      ----------                                       10015500
  58.      VALUE DIR, SPEC; POINTER DIR; BOOLEAN SPEC; FORWARD;               10015510
  59.                                                                         10015520
  60.      DEFINE                                                             10015530
  61. %                                                                       10015540
  62. %                                                                       10015550
  63. % *** MEANING OF THE OPTION BITS IN SPEC (INPUT PARAMETER)              10015560
  64. %                                                                       10015570
  65. %                                                                       10015580
  66.        USERDIRF     = [0:1] #,                                          10015590
  67.        NOONPARTF    = [1:1] #,                                          10015600
  68.        RETAINUSF    = [2:1] #,                                          10015610
  69.        ALLOWSUBF    = [3:1] #,                                          10015620
  70.        ALLOWEMPTYF  = [4:1] #,                                          10015630
  71.        WAITONFILEF  = [5:1] #,                                          10015640
  72.        ONEPACKONLYF = [6:1] #,                                          10015650
  73. %                                                                       10015660
  74. % *** DIRREQUEST RESULT VALUES                                          10015670
  75. %                                                                       10015680
  76.      ERRORBIT    = [ 0: 1] #,                                           10015690
  77.      ERTYPEF     = [ 3: 3] #,                                           10015700
  78.        NVLDREQUEST  = 0 #,                                              10015710
  79.        NVLDONPART   = 1 #,                                              10015720
  80.        TOOMANYNAMES = 2 #,                                              10015730
  81.        USERCODESNTX = 3 #,                                              10015740
  82.        NAMESNTX     = 4 #,                                              10015750
  83.        STRINGSNTX   = 5 #,                                              10015760
  84.        NOSPONSOR    = 6 #,                                              10015770
  85.        ONPARTXPTD   = 7 #,                                              10015780
  86.      EQUALF      = [ 4: 1] #,                                           10015790
  87.      PERIODF     = [ 5: 1] #,                                           10015800
  88.      FILEORDIRF  = [ 6: 1] #,                                           10015810
  89.      VISIBLEF    = [ 7: 1] #,                                           10015820
  90.      NOPREFIXF   = [ 8: 1] #,                                           10015830
  91.      OTHERLIBF   = [ 9: 1] #,                                           10015840
  92.      STRUCTDIRF  = [10: 1] #,                                           10015850
  93.      NNAMESF     = [27: 4] #,                                           10015860
  94.      SCANLENF    = [37:10] #,                                           10015870
  95.      TITLESTARTF = [47:10] #,                                           10015880
  96.      LASTDIRDEF  = #;                                                   10015890
  97. %                                                                       10015900
  98. %                                                                       10015910
  99. %                                                                       10015920
  100.      BOOLEAN PROCEDURE GETTITLE (TITL); ARRAY TITL [0]; FORWARD;        10015950
  101. %                      --------                                         10015960
  102.                                                                         10015970
  103.      DEFINE                                                             10015980
  104. %                                                                       10015984
  105. %    GETTITLE RESULT VALUES                                             10015985
  106. %                                                                       10015986
  107. %    ERRORBIT    = [ 0:1] #,                                            10015987
  108. %    ERTYPEF     = [ 3:3] #,                                            10015988
  109.        ENDOFDIR  = 0 #, % NORMAL                                        10015989
  110.        NOFILES   = 1 #,                                                 10015990
  111.        NOFAMILY  = 2 #,                                                 10015991
  112.        SOFTERROR = 3 #,                                                 10015992
  113.        HARDERROR = 4 #,                                                 10015993
  114. %    HARDERRORF  = [11:8] #,                                            10015994
  115.      SOFTERRORF  = [46:8] #, % ERRORVALUEF                              10015995
  116. %                                                                       10015996
  117. %                                                                       10016000
  118. % TITL: THE FIRST TITLESTART WORDS CONTAIN FILE ATTRIBUTES              10016010
  119. %       AS SHOWN IN THE TABLE BELOW.                                    10016020
  120. %       IN TITLE [TITLESTART] STARTS THE FILE TITLE IN DISPLAY FORM,    10016022
  121. %       FOLLOWED BY A PERIOD AND A NULL CHARACTER.                      10016024
  122. %                                                                       10016026
  123. %                                                                       10016028
  124. %                                                                       10016030
  125.      FILEINFO        =  0 #,                                            10016050
  126.                                                                         10016052
  127.      % SUB FIELDS:                                                      10016055
  128.        FILEKINDF     = [46:8]   #,                                      10016060
  129.        OPENF         = [36:1]   #,                                      10016070
  130.        OWNERF        = [34:2]   #,                                      10016080
  131.        LENGTHF       = [32:10]  #, % PART OF LINK FIELD                 10016090
  132.                                                                         10016095
  133.      CREATIONDATE   =  1 #,                                             10016100
  134.      BLOCKING       =  2 #,                                             10016110
  135.      % SUB FIELDS:                                                      10016115
  136.        BLOCKSIZEF   = [47:16] #,                                        10016120
  137.        MINRECSIZEF  = [31:16] #,                                        10016130
  138.        MAXRESIZEF   = [15:16] #,                                        10016140
  139.                                                                         10016145
  140.      SAVEFACTOR     =  3 #,                                             10016150
  141.      HEADERSIZE     =  4 #,                                             10016160
  142.      ROWSIZE        =  5 #,                                             10016170
  143.      FILESTATUS     =  6 #,                                             10016180
  144.      % SUB FIELDS:                                                      10016185
  145.        IADF      = [0:1] #,                                             10016190
  146.        CRUNCHEDF = [1:1] #,                                             10016200
  147.        GUARDF    = [2:1] #,                                             10016210
  148.                                                                         10016215
  149.      ROWSINUSE      =  7 #,                                             10016220
  150.      COMPLETEHEADER =  8 #,                                             10016230
  151.      DIRINFO        =  9 #,                                             10016240
  152.      % SUB FIELDS:                                                      10016245
  153.        FILEF     = [1:2] #,                                             10016250
  154.        % VALUES:                                                        10016255
  155.          FILEV   = 1 #,                                                 10016260
  156.          DIRV    = 2 #,                                                 10016270
  157.          FILEDIRV= 3 #,                                                 10016280
  158.                                                                         10016285
  159.        AVAILF    = [2:1] #,                                             10016290
  160.                                                                         10016295
  161.      AREAS          = 10 #,                                             10016300
  162.      EOF            = 11 #,                                             10016310
  163.      EOFBITS        = 12 #,                                             10016320
  164.      SECURITY       = 13 #,                                             10016330
  165.      TANKDATA1      = 14 #,                                             10016340
  166.      % SUB FIELDS:                                                      10016345
  167.        BLOCKEDF   = [47:1] #,                                           10016350
  168.        EXTMODEF   = [46:3] #,                                           10016360
  169.        UNITSF     = [39:1] #,                                           10016370
  170.        FILETYPEF  = [38:4] #,                                           10016380
  171.        SIZEMODEF  = [34:3] #,                                           10016390
  172.        SIZEOFFSETF= [31:16] #,                                          10016400
  173.        SIZE2F     = [15:16] #,                                          10016410
  174.                                                                         10016415
  175.      LASTACCESSDATE = 15 #,                                             10016420
  176.      CATALOG        = 16 #,                                             10016430
  177.      GUARDFILE      = 17 #,                                             10016440
  178.      B7800          = 18 #,                                             10016450
  179.      VERSION        = 19 #,                                             10016460
  180.      CYCLE          = 20 #,                                             10016470
  181.      TIMESTAMP      = 21 #,                                             10016480
  182.      FILESIZE       = 22 #,                                             10016490
  183.      APL            = 23 #,                                             10016500
  184.      B7800ADDL      = 24 #,                                             10016510
  185.      USETIME        = 25 #,                                             10016513
  186.      USERINFO       = 26 #,                                             10016514
  187.      ALTERDATE      = 27 #,                                             10016515
  188.      ALTERTIME      = 28 #,                                             10016516
  189.      CREATIONTIME   = 29 #,                                             10016517
  190.      TITLESTARTV    = 30 #, % LAST ATTRIBUTE VALUE + 1                  10016520
  191. %                                                                       10016530
  192. %                                                                       10016540
  193. %                                                                       10016550
  194.      LASTTITLEDEF = #;                                                  10016690
  195. %                                                                       10016700
  196. %                                                                       10016710
  197. %                                                                       10016720
  198.                                                                         10017000
  199.      BOOLEAN PROCEDURE CALLGETSTATUS; FORWARD;                          10018000
  200. %                      -------------                                    10019000
  201.                                                                         10020000
  202.      PROCEDURE DIRECTORYERROR; FORWARD;                                 10021000
  203. %              --------------                                           10022000
  204.                                                                         10023000
  205.                                                                         10031000
  206.      INTEGER PROCEDURE DISPLAYFILEKIND (INFO, DEST); VALUE INFO, DEST;  10032000
  207. %                      ---------------                                  10033000
  208.      REAL INFO; POINTER DEST; FORWARD;                                  10034000
  209.                                                                         10035000
  210.      INTEGER PROCEDURE DISPLAYREQUEST (DEST); VALUE DEST; POINTER DEST; 10036000
  211. %                      --------------                                   10037000
  212.      FORWARD;                                                           10038000
  213.                                                                         10039000
  214.      BOOLEAN PROCEDURE GETDIRECTORY (DIR); ARRAY DIR [0]; FORWARD;      10043000
  215. %                      ------------                                     10044000
  216.                                                                         10045000
  217.      BOOLEAN PROCEDURE GETSTATUSERROR (RSLT); VALUE RSLT; BOOLEAN RSLT; 10046000
  218. %                      --------------                                   10047000
  219.      FORWARD;                                                           10048000
  220.                                                                         10049000
  221.      BOOLEAN PROCEDURE INITDIR (MSK); VALUE MSK; REAL MSK; FORWARD;     10050000
  222. %                      -------                                          10051000
  223.                                                                         10052000
  224.      PROCEDURE LEVEL1NAME (AI); VALUE AI; REAL AI; FORWARD;             10053000
  225. %              ----------                                               10054000
  226.                                                                         10055000
  227.      PROCEDURE PUTNAME (AI); VALUE AI; REAL AI; FORWARD;                10056000
  228. %              -------                                                  10057000
  229.                                                                         10058000
  230.      INTEGER PROCEDURE TITLESTART; FORWARD;                             10059000
  231. %                      ----------                                       10060000
  232.                                                                         10061000
  233.      ARRAY                                                              10062000
  234.        A [0:4095],                                                      10062100
  235.        LVLNDX [1:20],                                                   10062200
  236.        MYUSERCODE,                                                      10062300
  237.        ONPART,                                                          10062400
  238.        SPONSUSERCODE [0:3];                                             10062500
  239.      POINTER                                                            10062600
  240.        PFAM,                                                            10062700
  241.        PSUB;                                                            10062800
  242.      DEFINE                                                             10063000
  243.        EA (I) = POINTER (A [(I) DIV 6])      % AVOIDS P-BITS ON         10063600
  244.                          + ((I) MOD 6) #;    % COPY DESCRIPTOR          10063800
  245.      EBCDIC ARRAY                                                       10064000
  246.        FAMSPEC [0:83],                                                  10064200
  247.        FILENAME [0:300];                                                10064400
  248.      INTEGER                                                            10065000
  249.        FILEINDEX,                                                       10065200
  250.        MAXLEVEL,                                                        10065400
  251.        OWNER,                                                           10065600
  252.        ONLEN,                                                           10065800
  253.        SPONSUSERLEN,                                                    10066000
  254.        TFILES,                                                          10066200
  255.        TSEGS,                                                           10066400
  256.        USERLEN;                                                         10066600
  257.      REAL                                                               10067000
  258.        A0,                                                              10067300
  259.        MASK,                                                            10067400
  260.        STATE,                                                           10067500
  261.        SUBCLASS,                                                        10067600
  262.        TYPE;                                                            10067700
  263.      BOOLEAN                                                            10068000
  264.        APPENDONPART,                                                    10068300
  265.        FIRSTCALL,                                                       10068400
  266.        FULLDIR,                                                         10068500
  267.        INITRSLT,                                                        10068550
  268.        NOPREFIX,                                                        10068600
  269.        ONEPACK;                                                         10068700
  270.                                                                         10069000
  271. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  10070000
  272. %                                                                    %  10071000
  273. %                     D E F I N E S                                  %  10072000
  274. %                                                                    %  10073000
  275. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  10074000
  276.       DEFINE                                                            10075000
  277.         ADDNAME (PNAME, NAMELEN, ALPHALEN, LEN) =                       10076000
  278.         BEGIN                                                           10077000
  279.              LEN := LVLNDX [MAXLEVEL];                                  10078000
  280.              REPLACE FILENAME [LEN] BY                                  10079000
  281.                PNAME FOR ALPHALEN:NAMELEN WHILE IN ALPHA, "/";          10080000
  282.              IF ALPHALEN = 0 THEN                                       10081000
  283.                LVLNDX [MAXLEVEL+1] := LEN+NAMELEN+1                     10082000
  284.              ELSE                                                       10083000
  285.              BEGIN                                                      10084000
  286.                  REPLACE FILENAME[LEN] BY """,                          10085000
  287.                    PNAME FOR NAMELEN, ""/";                             10086000
  288.                  LVLNDX[MAXLEVEL+1] := LEN+NAMELEN+3;                   10087000
  289.              END;                                                       10088000
  290.         END ADDNAME #,                                                  10089000
  291.         NEXTENTRY =                                                     10090000
  292.         BEGIN                                                           10091000
  293.              IF FILEINDEX >= A0-1 THEN                                  10092000
  294.              BEGIN                                                      10093000
  295.                   STATE := MYSTATE;                                     10094000
  296.                   RESULT := CALLGETSTATUS;                              10095000
  297.                   IF RESULT THEN GO XIT;                                10096000
  298.              END IF;                                                    10097000
  299.              FILEINDEX := *+1;                                          10098000
  300.              AI := A [FILEINDEX];                                       10099000
  301.         END NEXTENTRY #,                                                10100000
  302.                                                                         10100200
  303.         CHECKDIRERROR =                                                 10100250
  304.         BEGIN                                                           10100300
  305.              IF STATE NEQ MYSTATE THEN                                  10100350
  306.              IF STATE = INITERR THEN                                    10100400
  307.              BEGIN                                                      10100450
  308.                   RESULT := INITRSLT;                                   10100500
  309.                   STATE := GSTERR;                                      10100550
  310.                   GO XIT;                                               10100600
  311.              END ELSE                                                   10100650
  312.                DIRECTORYERROR;                                          10100700
  313.         END CHECKDIRERROR #,                                            10100750
  314.                                                                         10101000
  315.      P = POINTER #,                                                     10102000
  316.      B = BOOLEAN #,                                                     10103000
  317.                                                                         10103020
  318. %  SECURITY BYTE LAYOUT                                                 10104000
  319.                                                                         10104500
  320.      DIRTYPE  = [1:2] #,                                                10105000
  321.        MINEORSYS  = 1 #,                                                10106000
  322.        SYSONLY    = 2 #,                                                10107000
  323.        USERCODE   = 3 #,                                                10108000
  324.      PACKBIT  = [2:1] #,                                                10109000
  325. %                                                                       10110000
  326. %                                                                       10111000
  327. %    LINKS AND OTHER FIELDS IN GETSTATUSARRAY                           10165000
  328. %                                                                       10165500
  329. % TYPE                                                                  10166000
  330. %                                                                       10167000
  331.      LINKINONPARTF    = [45: 1] #,                                      10168000
  332.      WAITFORFILEF     = [43: 1] #,                                      10169000
  333.      RETAINUSERCODEF  = [42: 1] #,                                      10170000
  334.      USERCODEONLYF    = [41: 1] #,                                      10171000
  335.      RETURNFULLNAMEF  = [40: 1] #,                                      10172000
  336.      DISPLAYFORMNAMEF = [39: 1] #,                                      10173000
  337.      ONLYSYSTEMFILESF = [38: 1] #,                                      10174000
  338.      RETURNRESIDENTF  = [37: 1] #,                                      10175000
  339.      SUBTYPEF         = [15: 8] #,                                      10176000
  340.      % SUBTYPE VALUES                                                   10177000
  341.        ONEFILEONLY   = 0 #,                                             10178000
  342.        FIRSTREQUEST  = 1 #,                                             10179000
  343.        CONTINUATION  = 2 #,                                             10180000
  344.        COPYDIRTOFILE = 3 #,                                             10181000
  345.        NEXTREQUEST   = 4 #,                                             10182000
  346.        VOLUME        = 5 #,                                             10183000
  347.      TYPEF            = [ 7: 8] #,                                      10184000
  348. % SUBCLASS                                                              10185000
  349.      MAXCATLEVELF     = [47: 8] #,                                      10186000
  350.      ORGLEVELF        = [39:20] #,                                      10187000
  351.      MAXLEVELELF      = [19:20] #,                                      10188000
  352. % ARY                                                                   10189000
  353.      ERRORF           = [47: 1] #,                                      10190000
  354.      ERRORVALUEF      = [46: 8] #,                                      10191000
  355.      ADDLINFOF        = [46: 8] #,                                      10192000
  356.      SUBVALUE2F       = [38: 2] #,                                      10194000
  357. %      RESERVED    = 0 #,                                               10195000
  358. %      FILEV      = 1 #,                                                10196000
  359. %      DIRV       = 2 #,                                                10197000
  360. %      FILEANDDIRV = 3 #,                                               10198000
  361.      SUBVALUE3F       = [36: 1] #,  % 1 INDICATES OPEN                  10199000
  362.      SUBVALUE1F       = [35: 3] #,                                      10200000
  363.        ONBIT = [35: 1] #,                                               10201000
  364. %      OWNERF = [34: 2] #,                                              10202000
  365. %        RESERVED = 0 #,                                                10203000
  366.          MYDIR    = 1 #,            % DIRECTORY OF TASKS USERCODE       10204000
  367.          SYSTEM   = 2 #,            % SYSTEM FILE                       10205000
  368.          USERCOD  = 3 #,            % OTHER USERCODE                    10206000
  369.      LINKF            = [32:17] #,                                      10207000
  370.      NEXTLEVELLINKF   = [15:11] #,                                      10208000
  371.      RESIDENTSTATEF   = [ 4: 1] #,                                      10209000
  372.      LEVELF           = [ 3: 4] #,                                      10210000
  373.      INFOF            = [15:16] #,  % LENGTH OF ENTRY IN ARY [XX.LINKF] 10211000
  374.       ONPARTLINKF      = [43:11] #,                                     10212000
  375.       NAMESTART       = 401 #,                                          10213000
  376. %                                                                       10214000
  377. %                                                                       10216000
  378. %                                                                       10223000
  379. %    GETSTATUS RESULT VALUES                                            10224000
  380. %                                                                       10225000
  381. %    ERRORBIT   = [ 0: 1] #,                                            10226000
  382.      HARDERRORF  = [11: 8] #,                                           10227000
  383. %                                                                       10263000
  384. %    STATE VALUES                                                       10264000
  385. %                                                                       10265000
  386.      TITLESIZES = 0 #,                                                  10266000
  387.      SUBUSERS   = 1 #,                                                  10267000
  388.      NOREQUEST  = 2 #,                                                  10268000
  389.      BADREQUEST = 3 #,                                                  10269000
  390.      DOUBLEINIT = 4 #,                                                  10270000
  391.      GSTERR     = 5 #,                                                  10271000
  392.      INITERR    = 6 #,                                                  10271500
  393.      COMPLETED  = 7 #,                                                  10272000
  394. %                                                                       10273000
  395.      INFOMASK =                                                         10274000
  396.        REAL (NOT FALSE).[TITLESTARTV:TITLESTARTV+1] % ALL, BUT:         10274500
  397.              & 0 [GUARDFILE:1]                                          10275000
  398.              & 0 [COMPLETEHEADER:1]                                     10276000
  399.              & 0 [CATALOG:1]                                            10277000
  400.              & 0 [B7800ADDL:1]                                          10278000
  401.              & 0 [B7800:1]                                              10279000
  402.              & 0 [HEADERSIZE:1]                                         10280000
  403.                #,                                                       10281000
  404.      FILESIZEMASK = 0 & 1 [FILEINFO:1] & 1 [FILESIZE:1] #,              10282000
  405.      TITLEMASK = 0 & 1 [FILEINFO:1] #,                                  10283000
  406.      LASTDEFINE = #;                                                    10284000
  407.                                                                         10285000
  408.      BOOLEAN PROCEDURE CALLGETSTATUS;                                   10286000
  409. %                      -------------                                    10287000
  410.      BEGIN                                                              10288000
  411.           BOOLEAN RSLT; POINTER PT; LABEL XIT;                          10289000
  412.           IF FIRSTCALL THEN                                             10290000
  413.           BEGIN                                                         10291000
  414.                A[1].LINKF := 6;                                         10292000
  415.                IF ONEPACK THEN REPLACE MYSELF.FAMILY BY ".";            10293000
  416.           END ELSE                                                      10294000
  417.           BEGIN                                                         10295000
  418.                TYPE := * & (NEXTREQUEST) SUBTYPEF;                      10296000
  419.                IF A0.ERRORF = 0 THEN                                    10297000
  420.                BEGIN                                                    10298000
  421.                     RSLT := TRUE;                                       10299000
  422.                     STATE := COMPLETED;                                 10300000
  423.                     GO XIT;                                             10301000
  424.                END;                                                     10302000
  425.           END;                                                          10303000
  426.           A [0] := NAMESTART-1;                                         10304000
  427.           RSLT := GETSTATUS (TYPE, SUBCLASS, MASK, A);                  10305000
  428.           IF RSLT THEN                                                  10306000
  429.           BEGIN                                                         10307000
  430.                RSLT := GETSTATUSERROR (RSLT);                           10308000
  431.                STATE := GSTERR;                                         10309000
  432.           END ELSE                                                      10310000
  433.           IF APPENDONPART THEN                                          10311000
  434.           BEGIN                                                         10312000
  435.                PT := EA [A[A[1].ONPARTLINKF].LINKF];                    10313000
  436.                ONLEN := REAL (PT, 1) + 4;                               10314000
  437.                REPLACE ONPART BY " ON ",                                10315000
  438.                  PT+1 FOR ONLEN-4;                                      10316000
  439.           END IF;                                                       10317000
  440.           FILEINDEX := 1;                                               10318000
  441.           A0 := A [0];                                                  10319000
  442. XIT:                                                                    10320000
  443.           IF FIRSTCALL THEN                                             10321000
  444.           BEGIN                                                         10322000
  445.                IF ONEPACK THEN REPLACE MYSELF.FAMILY BY FAMSPEC;        10323000
  446.                FIRSTCALL := FALSE;                                      10324000
  447.           END;                                                          10325000
  448.           CALLGETSTATUS := RSLT;                                        10326000
  449.      END CALLGETSTATUS;                                                 10327000
  450.                                                                         10328000
  451.      PROCEDURE DIRECTORYERROR;                                          10329000
  452. %              --------------                                           10330000
  453.      BEGIN                                                              10331000
  454.           CASE STATE OF                                                 10332000
  455.           BEGIN                                                         10333000
  456.           (TITLESIZES):                                                 10334000
  457.                DISPLAY ("ERROR: GETDIRECTORY CALL NOT ALLOWED");        10335000
  458.           (SUBUSERS):                                                   10336000
  459.                DISPLAY ("ERROR: GETDIRECTORY CALL EXPECTED");           10337000
  460.           (NOREQUEST):                                                  10338000
  461.                DISPLAY ("ERROR: DIRSEARCH NOT INITIALIZED");            10339000
  462.           (BADREQUEST):                                                 10340000
  463.                DISPLAY ("ERROR: ILLEGAL DIRECTORY REQUEST");            10341000
  464.           (DOUBLEINIT):                                                 10342000
  465.                DISPLAY ("ERROR: DIRECTORY ALREADY INITIALIZED");        10343000
  466.           (GSTERR):                                                     10344000
  467.                DISPLAY ("ERROR: PREVIOUS CALL WENT WRONG");             10345000
  468.           (COMPLETED):                                                  10346000
  469.                DISPLAY ("ERROR: DIRECTORY SEARCH WAS COMPLETED");       10347000
  470.           END CASE;                                                     10348000
  471.           MYSELF.STATUS :=-1;                                           10349000
  472.      END DIRECTORYERROR;                                                10350000
  473.                                                                         10351000
  474.      BOOLEAN PROCEDURE DIRREQUEST (DIR, SPEC);                          10352000
  475. %                      ----------                                       10353000
  476.      VALUE DIR, SPEC; POINTER DIR; BOOLEAN SPEC;                        10354000
  477.      BEGIN                                                              10355000
  478.           LABEL XIT;                                                    10356000
  479.           TRUTHSET FILENAMESTARTERS (ALPHA OR ""="),                    10357000
  480.                    STOPPER ("""48"00"); % IT'S SAVE TO END DIR WITH 0   10358000
  481.           REAL SECBYTE;  % SECURITY BYTE                                10359000
  482.           INTEGER I, J, K, L, TOTLEN, NAMES;                            10360000
  483.           BOOLEAN RESULT, LAST, SPONSOR, NOSTARTER, WANTONPART;         10361000
  484.           POINTER PA, PD, PT, PN, PFAM;                                 10362000
  485.           DEFINE                                                        10363000
  486.             INL = 5000 #,  % KEEP IT SAVE                               10364000
  487.           % SPEC FIELDS                                                 10365000
  488.             USERDIR     = SPEC.USERDIRF     #,                          10366000
  489.             NOONPART    = SPEC.NOONPARTF    #,                          10367000
  490.             RETAINUS    = SPEC.RETAINUSF    #,                          10368000
  491.             ALLOWSUB    = SPEC.ALLOWSUBF    #,                          10369000
  492.             ALLOWEMPTY  = SPEC.ALLOWEMPTYF  #,                          10370000
  493.             WAITFORFILE = SPEC.WAITONFILEF  #,                          10371000
  494.             ONEPACKONLY = SPEC.ONEPACKONLYF #,                          10372000
  495.                                                                         10373000
  496.             FATALERROR (T) =                                            10374000
  497.             BEGIN                                                       10375000
  498.                  RESULT := TRUE & B(T) ERTYPEF;                         10376000
  499.                  STATE := BADREQUEST;                                   10377000
  500.                  GO XIT;                                                10378000
  501.             END FATALERROR #,                                           10379000
  502.             SKIPBLANKS =                                                10380000
  503.               SCAN PD:PD FOR L:L WHILE = " " #,                         10381000
  504.             LASTDEFINE = #;                                             10382000
  505.                                                                         10383000
  506.           STATE := NOREQUEST;                                           10383500
  507.           FULLDIR := FALSE;                                             10383510
  508.           REPLACE P(MYUSERCODE) BY MYSELF.USERCODE;                     10384000
  509.           SCAN PT:P(MYUSERCODE) FOR I:20 UNTIL = ".";                   10385000
  510.           USERLEN := 20-I;                                              10387000
  511.           IF USERLEN > 0 THEN SPONSOR := REAL (PT-1, 1) < 48"F0";       10387500
  512.           IF SPONSOR AND USERLEN = 3 THEN   % (CAS)                     10388000
  513.             RESULT := FALSE & (TRUE) VISIBLEF; % ALMOST ALWAYS TRUE     10389000
  514.           PN := POINTER (A [NAMESTART]);                                10390000
  515.           PA := PN+3;                                                   10391000
  516.           PD := DIR;                                                    10392000
  517.           TOTLEN := 3;                                                  10393000
  518.           SECBYTE := 0 & 1 PACKBIT;                                     10394000
  519.           L := INL;                                                     10395000
  520.           SKIPBLANKS;                                                   10396000
  521.           CASE REAL (PD, 1) OF                                          10397000
  522.           BEGIN                                                         10398000
  523.           ELSE:                                                         10399000
  524.                NOSTARTER := TRUE;                                       10400000
  525.                RESULT := * & (TRUE) VISIBLEF;                           10401000
  526.                SECBYTE := * & (MINEORSYS) DIRTYPE;                      10402000
  527.           "=":                                                          10403000
  528.                PD := PD+1; L:=L-1;                                      10404000
  529.                SKIPBLANKS;                                              10405000
  530.                LAST := TRUE;                                            10406000
  531.                SECBYTE := * & (MINEORSYS) DIRTYPE;                      10407000
  532.                RESULT := * & (TRUE) EQUALF & (TRUE) VISIBLEF;           10408000
  533.           "*":                                                          10409000
  534.                SECBYTE := * & (SYSONLY) DIRTYPE;                        10410000
  535.                PD := PD+1; L := L-1;                                    10411000
  536.                SKIPBLANKS;                                              10412000
  537.                IF PD = "=" THEN                                         10413000
  538.                BEGIN                                                    10414000
  539.                     LAST := TRUE;                                       10415000
  540.                     PD := PD+1; L:=L-1;                                 10416000
  541.                     SKIPBLANKS;                                         10417000
  542.                     RESULT := * & (TRUE) EQUALF;                        10418000
  543.                END;                                                     10419000
  544.                FULLDIR := TRUE; % MAY BE                                10420000
  545.                RESULT := * & (TRUE) OTHERLIBF & (FALSE) VISIBLEF;       10421000
  546.          "(":                                                           10422000
  547.                PD := PD+1; L := L-1;                                    10423000
  548.                SKIPBLANKS;                                              10424000
  549.                REPLACE PA+1 BY PD:PD FOR K:L WHILE IN ALPHA, ".";       10425000
  550.                IF K=L THEN FATALERROR (USERCODESNTX);                   10426000
  551.                I := MIN (L-K, 17); L := K;                              10427000
  552.                REPLACE PA BY I.[7:48] FOR 1;                            10428000
  553.                SKIPBLANKS;                                              10429000
  554.                IF PD NEQ ")" THEN FATALERROR (USERCODESNTX);            10430000
  555.                PD := PD+1; L := L -1;                                   10431000
  556.                SKIPBLANKS;                                              10432000
  557.                IF PD = "=" THEN                                         10433000
  558.                BEGIN                                                    10434000
  559.                     LAST := TRUE;                                       10435000
  560.                     PD := PD+1; L:= L-1;                                10436000
  561.                     RESULT := * & (TRUE) EQUALF;                        10437000
  562.                     SKIPBLANKS;                                         10438000
  563.                END;                                                     10439000
  564.                SKIPBLANKS;                                              10440000
  565.                RESULT := * & (TRUE) OTHERLIBF;                          10441000
  566.                IF I = USERLEN THEN                                      10442000
  567.                BEGIN                                                    10443000
  568.                     IF MYUSERCODE = PA+1 FOR (I+1) THEN                 10444000
  569.                     BEGIN                                               10445000
  570.                          RESULT := * & (TRUE) VISIBLEF                  10446000
  571.                                      & (FALSE) OTHERLIBF;               10447000
  572.                          SECBYTE := * & (MINEORSYS) DIRTYPE;            10448000
  573.                          USERDIR := TRUE;  % LOOK ONLY IN MY LIBRARY    10449000
  574.                     END;                                                10450000
  575.                END;                                                     10451000
  576.                IF RESULT.OTHERLIBF THEN                                 10452000
  577.                BEGIN                                                    10453000
  578. $ SET OMIT = NOT USERTREE                                               10453500
  579.                     IF SPONSOR AND I > USERLEN THEN                     10454000
  580.                       IF MYUSERCODE = PA+1 FOR USERLEN THEN             10455000
  581.                         RESULT := * & (TRUE) VISIBLEF;                  10456000
  582. $ POP OMIT                                                              10456500
  583.                     SECBYTE := * & (USERCODE) DIRTYPE;                  10457000
  584.                     I := I+1; PA := PA+I; TOTLEN := TOTLEN+I;           10458000
  585.                     NAMES := 1;                                         10459000
  586.                END;                                                     10460000
  587. $ SET OMIT = NOT USERTREE                                               10460500
  588.           "<":                                                          10461000
  589.                IF ALLOWSUB THEN                                         10461400
  590.                BEGIN                                                    10461500
  591.                     WANTONPART := TRUE;                                 10462000
  592.                     SECBYTE := * & (SYSONLY) DIRTYPE;                   10464000
  593.                     STATE := SUBUSERS; LAST := TRUE;                    10465000
  594.                     J := L; % STORE OLD LENGTH.                         10465500
  595.                     PD := PD+1; L:= L-1;                                10466000
  596.                     SKIPBLANKS;                                         10467000
  597.                     IF PD = "=" THEN                                    10468000
  598.                     BEGIN PD := PD+1; L := L-1; END;                    10469000
  599.                     SKIPBLANKS;                                         10470000
  600.                     IF PD = "(" THEN                                    10471000
  601.                     BEGIN                                               10472000
  602.                          PD := PD+1; L := L-1;                          10473000
  603.                          SKIPBLANKS;                                    10474000
  604.                          REPLACE SPONSUSERCODE BY                       10475000
  605.                            PD:PD FOR K:L WHILE IN ALPHA, ".";           10476000
  606.                          I := MIN (17, L-K); L := K;                    10477000
  607.                          IF PD-1 >= 48"F0" THEN FATALERROR (NOSPONSOR); 10478000
  608.                          IF SPONSOR AND I > USERLEN THEN                10479000
  609.                            RESULT := * &                                10480000
  610.                                 (MYUSERCODE = SPONSUSERCODE FOR USERLEN)10481000
  611.                                 VISIBLEF                                10482000
  612.                          ELSE                                           10483000
  613.                          IF I = USERLEN THEN                            10484000
  614.                            RESULT := * &                                10484500
  615.                                 (MYUSERCODE = SPONSUSERCODE FOR (I+1))  10485000
  616.                                 VISIBLEF;                               10486000
  617.                          SPONSUSERLEN := I;                             10487000
  618.                          IF SPONSUSERLEN=0 THEN                         10488000
  619.                          FATALERROR (USERCODESNTX);                     10488500
  620.                          SKIPBLANKS;                                    10489000
  621.                          IF PD NEQ ")" THEN FATALERROR (USERCODESNTX);  10490000
  622.                          PD := PD+1;                                    10491000
  623.                          L := L-1;                                      10492000
  624.                          RESULT := * & (TRUE) OTHERLIBF;                10493000
  625.                          SKIPBLANKS;                                    10494000
  626.                     END ELSE                                            10495000
  627.                     BEGIN                                               10496000
  628.                          IF NOT SPONSOR THEN                            10497000
  629.                          BEGIN                                          10497300
  630.                               L := J;  % SET BACK SCAN LENGTH.          10497400
  631.                               FATALERROR (NOSPONSOR);                   10497500
  632.                          END;                                           10497600
  633.                          REPLACE SPONSUSERCODE BY                       10498000
  634.                            MYUSERCODE FOR USERLEN;                      10498500
  635.                          SPONSUSERLEN := USERLEN;                       10499000
  636.                          RESULT := * & (TRUE) VISIBLEF;                 10500000
  637.                     END IF;                                             10501000
  638.                     IF SPONSUSERLEN = 3 THEN SPONSUSERLEN := 0; % (CAS) 10502000
  639.                END ELSE                                                 10502200
  640.                BEGIN                                                    10502650
  641.                     NOSTARTER := TRUE;                                  10502700
  642.                     RESULT := * & (TRUE) VISIBLEF;                      10502750
  643.                     SECBYTE := * & (MINEORSYS) DIRTYPE;                 10502800
  644.                END;                                                     10502850
  645. $ POP OMIT                                                              10502900
  646.           END CASE;                                                     10503000
  647.                                                                         10504000
  648.           IF USERLEN = 0 THEN RESULT := * & (TRUE) VISIBLEF;            10504500
  649.           IF NOT LAST THEN LAST := NOT (PD IN FILENAMESTARTERS);        10505000
  650.           IF NOT LAST THEN                                              10506000
  651.             IF L > 3 THEN                                               10507000
  652.             BEGIN                                                       10508000
  653.                  IF PD = "ON " THEN                                     10509000
  654.                  BEGIN                                                  10510000
  655.                       SCAN PD+3 FOR I:L-3 WHILE = " ";                  10511000
  656.                       IF I > 0 THEN LAST := PD IN ALPHA; % ONPART       10512000
  657.                  END IF;                                                10513000
  658.             END IF;                                                     10514000
  659.           IF LAST THEN                                                  10515000
  660.           BEGIN                                                         10516000
  661.                IF NOSTARTER AND NOT ALLOWEMPTY THEN                     10517000
  662.                  FATALERROR (NVLDREQUEST);                              10518000
  663.           END ELSE                                                      10519000
  664.           BEGIN                                                         10520000
  665.                FULLDIR := FALSE;                                        10521000
  666.                RESULT := * & (TRUE) FILEORDIRF;                         10522000
  667.           END;                                                          10523000
  668.           WHILE NOT LAST DO                                             10524000
  669.           BEGIN                                                         10525000
  670.                IF NAMES = 14 THEN FATALERROR (TOOMANYNAMES);            10526000
  671.                CASE REAL (PD, 1) OF                                     10527000
  672.                BEGIN                                                    10528000
  673.                ELSE:                                                    10529000
  674.                     REPLACE PA+1 BY PD:PD FOR K:L WHILE IN ALPHA;       10530000
  675.                     IF L = K THEN FATALERROR (NAMESNTX);                10531000
  676.                     I := MIN (L-K, 17); L := K;                         10532000
  677.                     REPLACE PA BY I.[7:48] FOR 1;                       10533000
  678.                     I := I+1; TOTLEN := *+I;                            10534000
  679.                     PA := PA+I;                                         10535000
  680.                     NAMES := NAMES+1;                                   10536000
  681.                "=":                                                     10537000
  682.                     PD := PD+1; L := L-1;                               10538000
  683.                     LAST := TRUE;                                       10539000
  684.                     RESULT := * & (FALSE) FILEORDIRF & (TRUE) EQUALF;   10540000
  685.                """:                                                     10541000
  686.                     REPLACE PA+1 BY PD:PD+1 FOR K:L-1 UNTIL IN STOPPER; 10543000
  687.                     IF K = 0 THEN FATALERROR (STRINGSNTX);              10544000
  688.                     I := L-K-1; L := K-1;                               10545000
  689.                     PD := PD+1;                                         10546000
  690.                     I := MIN (I, 17);                                   10547000
  691.                     REPLACE PA BY I.[7:48] FOR 1;                       10548000
  692.                     I := I+1; TOTLEN := *+I;                            10549000
  693.                     PA := PA+I;                                         10550000
  694.                     NAMES := *+1;                                       10551000
  695.                END CASE;                                                10552000
  696.                SKIPBLANKS;                                              10553000
  697.                IF NOT LAST THEN                                         10554000
  698.                  IF PD = "/" THEN                                       10555000
  699.                  BEGIN                                                  10556000
  700.                       PD := PD+1; L := L-1;                             10557000
  701.                       SKIPBLANKS;                                       10558000
  702.                  END ELSE                                               10559000
  703.                    LAST := TRUE;                                        10560000
  704.           END WHILE;                                                    10561000
  705.                                                                         10562000
  706.           IF FULLDIR AND ALLOWSUB THEN STATE := SUBUSERS;               10563000
  707.           ONEPACK := ONEPACKONLY;                                       10564000
  708.           IF ONEPACK THEN                                               10565000
  709.           BEGIN                                                         10566000
  710.                REPLACE FAMSPEC BY MYSELF.FAMILY;                        10567000
  711.                IF FAMSPEC NEQ "." THEN                                  10568000
  712.                BEGIN                                                    10569000
  713.                     SCAN PFAM:FAMSPEC UNTIL = "=";                      10570000
  714.                     SCAN PFAM:PFAM+1 WHILE = " ";                       10571000
  715.                END;                                                     10572000
  716.           END ELSE                                                      10573000
  717.              REPLACE FAMSPEC BY ".";                                    10574000
  718.           IF L > 2 AND PD = "ON " THEN                                  10575000
  719.           BEGIN                                                         10576000
  720.                PD := PD+3; L := L-3;                                    10577000
  721.                SKIPBLANKS;                                              10578000
  722.                REPLACE PA+1 BY PD:PD FOR K:L WHILE IN ALPHA, " ";       10579000
  723.                IF L = K THEN FATALERROR (NVLDONPART);                   10580000
  724.                I := MIN (L-K, 17); L := K;                              10581000
  725.                IF ONEPACK THEN                                          10582000
  726.                BEGIN                                                    10583000
  727.                     IF PA+1 = FAMSPEC FOR I+1 THEN % INCLUDING " "      10584000
  728.                     BEGIN                                               10585000
  729.                          REPLACE PA+1 BY PFAM FOR I:17 WHILE IN ALPHA;  10586000
  730.                          I := 17-I;                                     10587000
  731.                     END;                                                10588000
  732.                END;                                                     10589000
  733.                REPLACE PA BY I.[7:48] FOR 1;                            10590000
  734.                I := I+1;                                                10591000
  735.                TOTLEN := *+I;                                           10592000
  736.                NAMES := *+1;                                            10593000
  737.                SKIPBLANKS;                                              10594000
  738.           END ELSE                                                      10595000
  739.           BEGIN                                                         10596000
  740.                IF WANTONPART THEN FATALERROR (ONPARTXPTD);              10597000
  741.                IF  ONEPACK AND FAMSPEC = "DISK " THEN                   10598000
  742.                BEGIN                                                    10599000
  743.                     REPLACE PA+1 BY PFAM FOR I:17 WHILE IN ALPHA;       10600000
  744.                     I := 17-I;                                          10601000
  745.                     REPLACE PA BY I.[7:48] FOR 1;                       10602000
  746.                     I := I+1;                                           10603000
  747.                     TOTLEN := *+I;                                      10604000
  748.                END ELSE                                                 10605000
  749.                BEGIN                                                    10606000
  750.                     REPLACE PA BY 48"04""DISK";                         10607000
  751.                     I := 5;                                             10608000
  752.                     TOTLEN := *+5;                                      10609000
  753.                END;                                                     10610000
  754.                NAMES := *+1;                                            10611000
  755.           END;                                                          10612000
  756.           IF PD = "." THEN                                              10613000
  757.           BEGIN                                                         10614000
  758.                 PD := PD+1; L := L-1;                                   10615000
  759.                 RESULT := * & (TRUE) PERIODF;                           10616000
  760.           END;                                                          10617000
  761.                                                                         10618000
  762.           REPLACE PN BY TOTLEN.[7:48] FOR 1,                            10619000
  763.                         SECBYTE.[7:48] FOR 1,                           10620000
  764.                         NAMES.[7:48] FOR 1;                             10621000
  765.           NOPREFIX := (STATE NEQ SUBUSERS) AND                          10622000
  766.                       (NOT RETAINUS) AND                                10623000
  767.                       (NOT RESULT.OTHERLIBF);                           10624000
  768.           TYPE := 0 & 3 TYPEF                                           10625000
  769.                     & (1)                        RETAINUSERCODEF        10626000
  770.                     & REAL (WAITFORFILE)         WAITFORFILEF           10627000
  771.                     & REAL (USERDIR)             USERCODEONLYF          10628000
  772.                     & (FIRSTREQUEST)             SUBTYPEF;              10629000
  773.                                                                         10630000
  774.           IF STATE = SUBUSERS THEN                                      10631000
  775.             SUBCLASS := 1    % MAX LEVEL                                10632000
  776.           ELSE                                                          10633000
  777.           BEGIN                                                         10634000
  778.                SUBCLASS := 0;                                           10635000
  779.                STATE := TITLESIZES;                                     10636000
  780.           END;                                                          10637000
  781.           APPENDONPART := (STATE = SUBUSERS) OR (NOT NOONPART);         10638000
  782.           A0 := FILEINDEX := 0; FIRSTCALL := TRUE;                      10639000
  783.           REPLACE FILENAME [0] BY 0 FOR 1 WORDS;                        10640000
  784.           IF STATE = SUBUSERS THEN MASK := TITLEMASK                    10641000
  785.                               ELSE MASK := INFOMASK;                    10642000
  786. XIT:                                                                    10643000
  787.           DIRREQUEST := RESULT & B (INL-L) SCANLENF                     10644000
  788.                                & B (TITLESTARTV) TITLESTARTF            10645000
  789.                                & B (NAMES-1) NNAMESF                    10646000
  790.                                & (STATE = SUBUSERS) STRUCTDIRF          10647000
  791.                                & (NOPREFIX) NOPREFIXF;                  10648000
  792.      END DIRREQUEST;                                                    10649000
  793.                                                                         10650000
  794.      BOOLEAN PROCEDURE DIRSIZE (FILES, SEGS);                           10651000
  795. %                      -------                                          10652000
  796.      INTEGER FILES, SEGS;                                               10653000
  797.      BEGIN                                                              10654000
  798.           INTEGER I, LEVEL; REAL AI; LABEL XIT;                         10655000
  799.           BOOLEAN RESULT;                                               10656000
  800.           DEFINE                                                        10657000
  801.             MYSTATE = TITLESIZES #;                                     10658000
  802.                                                                         10659000
  803.          FILES := 0;                                                    10659900
  804.          SEGS := 0;                                                     10660000
  805.          CHECKDIRERROR;                                                 10660100
  806.          MASK := FILESIZEMASK;                                          10661000
  807.          WHILE TRUE DO                                                  10663000
  808.          BEGIN                                                          10664000
  809.               NEXTENTRY;                                                10665000
  810.               LEVEL := AI.LEVELF;                                       10666000
  811.               WHILE LEVEL > 0 DO                                        10667000
  812.               BEGIN                                                     10668000
  813.                     NEXTENTRY;                                          10669000
  814.                     LEVEL := AI.LEVELF;                                 10670000
  815.               END WHILE;                                                10671000
  816.                                                                         10672000
  817.               I := AI.LINKF+1;                                          10673000
  818.               AI := A [I];                                              10674000
  819.               FILES := *+1;                                             10675000
  820.               SEGS := *+A [I+FILESIZE];                                 10676000
  821.          END;                                                           10677000
  822. XIT:                                                                    10678000
  823.          DIRSIZE := RESULT;                                             10679000
  824.      END DIRSIZE;                                                       10680000
  825.                                                                         10681000
  826.      INTEGER PROCEDURE DISPLAYFILEKIND (INFO, DEST); VALUE INFO, DEST;  10682000
  827. %                      ---------------                                  10683000
  828.      REAL INFO; POINTER DEST;                                           10684000
  829.      BEGIN                                                              10685000
  830.           DEFINE                                                        10686000
  831.             PUT (L,T) =                                                 10687000
  832.             BEGIN DISPLAYFILEKIND := L; REPLACE DEST BY T END #;        10688000
  833.           CASE INFO.FILEKINDF OF                                        10689000
  834.           BEGIN                                                         10690000
  835.           ELSE:  DISPLAYFILEKIND := 11;                                 10691000
  836.                  REPLACE DEST BY "FKIND (",                             10692000
  837.                    INFO.FILEKINDF FOR 3 DIGITS, ")";                    10693000
  838.           (  0): PUT ( 8, "NULLFILE");                                  10694000
  839.           (  1): PUT ( 9, "DIRECTORY");                                 10695000
  840.           (  2): PUT (15, "SYSTEMDIRECTORY");                           10696000
  841.           (  3): PUT ( 7, "CATALOG");                                   10697000
  842.           (  4): PUT (10, "BACKUPDISK");                                10698000
  843.           (  5): PUT (18, "RECONSTRUCTIONFILE");                        10699000
  844.           (  6): PUT (13, "SYSTEMDIRFILE");                             10700000
  845.           (  7): PUT (11, "JOBDESCFILE");                               10701000
  846.           (  8): PUT (10, "ARCHIVELOG");                                10702000
  847.           ( 15): PUT ( 9, "XDISKFILE");                                 10703000
  848.           ( 16): PUT (13, "BACKUPPRINTER");                             10704000
  849.           ( 17): PUT (11, "BACKUPPUNCH");                               10705000
  850.           ( 20): PUT (16, "COMPILERCODEFILE");                          10706000
  851.           ( 21): PUT (14, "CHECKPOINTFILE");                            10707000
  852.           ( 22): PUT ( 9, "CPJOBFILE");                                 10708000
  853.           ( 23): PUT ( 7, "DCPCODE");                                   10709000
  854.           ( 24): PUT ( 7, "NDLCODE");                                   10710000
  855.           ( 25): PUT ( 9, "NDLIICODE");                                 10710100
  856.           ( 26): PUT (12, "RECOVERYFILE");                              10711000
  857.           ( 27): PUT (12, "SCHEDULEFILE");                              10712000
  858.           ( 28): PUT ( 8, "INFOFILE");                                  10713000
  859.           ( 29): PUT (11, "LIBRARYCODE");                               10714000
  860.           ( 30): PUT (13, "INTRINSICFILE");                             10715000
  861.           ( 31): PUT (11, "MCPCODEFILE");                               10716000
  862.           ( 32): PUT ( 9, "ALGOLCODE");                                 10717000
  863.           ( 33): PUT ( 9, "COBOLCODE");                                 10718000
  864.           ( 34): PUT (11, "FORTRANCODE");                               10719000
  865.           ( 35): PUT (10, "XALGOLCODE");                                10720000
  866.           ( 36): PUT ( 7, "PL1CODE");                                   10721000
  867.           ( 37): PUT ( 9, "SATHECODE");                                 10722000
  868.           ( 39): PUT ( 9, "ESPOLCODE");                                 10723000
  869.           ( 40): PUT (11, "DCALGOLCODE");                               10724000
  870.           ( 41): PUT ( 9, "BASICCODE");                                 10725000
  871.           ( 42): PUT (12, "XFORTRANCODE");                              10726000
  872.           ( 43): PUT ( 7, "JOBCODE");                                   10727000
  873.           ( 44): PUT (11, "DMALGOLCODE");                               10728000
  874.           ( 45): PUT ( 8, "NEWPCODE");                                  10728100
  875.           ( 47): PUT (10, "PASCALCODE");                                10729000
  876.           ( 50): PUT (13, "FORTRAN77CODE");                             10730000
  877.           ( 62): PUT ( 9, "BOUNDCODE");                                 10731000
  878.           ( 63): PUT ( 8, "CODEFILE");                                  10732000
  879.           ( 64): PUT (11, "ALGOLSYMBOL");                               10733000
  880.           ( 65): PUT (11, "COBOLSYMBOL");                               10734000
  881.           ( 66): PUT (13, "FORTRANSYMBOL");                             10735000
  882.           ( 67): PUT (12, "XALGOLSYMBOL");                              10736000
  883.           ( 68): PUT ( 9, "PL1SYMBOL");                                 10737000
  884.           ( 69): PUT (12, "JOVIALSYMBOL");                              10738000
  885.           ( 71): PUT (11, "ESPOLSYMBOL");                               10739000
  886.           ( 72): PUT (13, "DCALGOLSYMBOL");                             10740000
  887.           ( 73): PUT (11, "BASICSYMBOL");                               10741000
  888.           ( 74): PUT (14, "XFORTRANSYMBOL");                            10742000
  889.           ( 75): PUT ( 9, "JOBSYMBOL");                                 10743000
  890.           ( 77): PUT (14, "VFORTRANSYMBOL");                            10744000
  891.           ( 79): PUT (10, "NEWPSYMBOL");                                10744100
  892.           ( 81): PUT (12, "PASCALSYMBOL");                              10745000
  893.           ( 83): PUT (11, "NDLIISYMBOL");                               10745100
  894.           ( 84): PUT (15, "FORTRAN77SYMBOL");                           10746000
  895.           ( 94): PUT (12, "BINDERSYMBOL");                              10747000
  896.           ( 95): PUT (11, "DASDLSYMBOL");                               10748000
  897.           ( 96): PUT (13, "DMALGOLSYMBOL");                             10749000
  898.           ( 97): PUT ( 9, "DCPSYMBOL");                                 10750000
  899.           ( 98): PUT ( 9, "NDLSYMBOL");                                 10751000
  900.           (100): PUT ( 9, "RSNETFILE");                                 10752000
  901.           (101): PUT ( 7, "UCRFILE");                                   10753000
  902.           (102): PUT (11, "RSSORTTABLE");                               10754000
  903.           (103): PUT ( 7, "RSPCODE");                                   10755000
  904.           (104): PUT ( 7, "MDLCODE");                                   10756000
  905.           (105): PUT ( 9, "MDLSYMBOL");                                 10757000
  906.           (106): PUT (12, "VFORTRANCODE");                              10758000
  907.           (107): PUT (12, "VMLINKEDCODE");                              10759000
  908.           (108): PUT ( 8, "VMCPCODE");                                  10760000
  909.           (115): PUT ( 8, "FIRMWARE");                                  10761000
  910.           (169): PUT (14, "CONFIDENCECODE");                            10762000
  911.           (192): PUT ( 4, "DATA");                                      10763000
  912.           (193): PUT ( 7, "SEQDATA");                                   10764000
  913.           (194): PUT ( 9, "GUARDFILE");                                 10765000
  914.           (195): PUT ( 7, "APLDATA");                                   10766000
  915.           (196): PUT (12, "APLWORKSPACE");                              10767000
  916.           (197): PUT ( 5, "CDATA");                                     10768000
  917.           (198): PUT ( 8, "CSEQDATA");                                  10769000
  918.           (199): PUT (12, "DBRESTARTSET");                              10770000
  919.           (200): PUT ( 6, "DBDATA");                                    10771000
  920.           END CASE;                                                     10772000
  921.      END DISPLAYFILEKIND;                                               10773000
  922.                                                                         10774000
  923.      INTEGER PROCEDURE DISPLAYREQUEST (DEST); VALUE DEST; POINTER DEST; 10775000
  924. %                      --------------                                   10776000
  925.      BEGIN                                                              10777000
  926.           REAL SECBYTE; INTEGER I, J, L, NAMES;                         10778000
  927.           POINTER PA, PD;                                               10779000
  928.           DEFINE APPEND = REPLACE PD:PD BY #;                           10780000
  929.           IF STATE > SUBUSERS THEN                                      10781000
  930.             DIRECTORYERROR;                                             10781500
  931.           IF NOT FIRSTCALL THEN                                         10782000
  932.           BEGIN                                                         10783000
  933.                DISPLAY ("ERROR: DISPLAYREQUEST MUST BE CALLED"          10784000
  934.                         " BEFORE DIRECTORY IS SEARCHED");               10785000
  935.                MYSELF.STATUS := -1;                                     10786000
  936.           END;                                                          10787000
  937.           PA := POINTER (A [NAMESTART])+1;                              10788000
  938.           SECBYTE := REAL (PA, 1);                                      10789000
  939.           NAMES   := REAL (PA+1, 1);                                    10790000
  940.           PA := PA+2;                                                   10791000
  941.           PD := DEST;                                                   10792000
  942.           CASE SECBYTE.DIRTYPE OF                                       10793000
  943.           BEGIN                                                         10794000
  944.           (MINEORSYS):                                                  10795000
  945.                IF BOOLEAN (TYPE.USERCODEONLYF) THEN                     10796000
  946.                BEGIN                                                    10797000
  947.                     APPEND "(", MYUSERCODE FOR USERLEN, ")";            10798000
  948.                     L := L+USERLEN+2;                                   10799000
  949.                END ELSE                                                 10800000
  950.                IF NAMES = 1 THEN                                        10801000
  951.                BEGIN                                                    10802000
  952.                     APPEND "=";                                         10803000
  953.                     L := L+1;                                           10804000
  954.                END;                                                     10805000
  955.           (SYSONLY):                                                    10806000
  956.              IF STATE = SUBUSERS AND NOT FULLDIR THEN                   10807000
  957.                BEGIN                                                    10808000
  958.                     IF SPONSUSERLEN = 0 THEN % USERCODE CAS             10809000
  959.                     BEGIN                                               10810000
  960.                          APPEND "<= (CAS)";                             10811000
  961.                          L := L+8;                                      10812000
  962.                     END ELSE                                            10813000
  963.                     BEGIN                                               10814000
  964.                          APPEND "<= (",                                 10815000
  965.                            P(SPONSUSERCODE) FOR SPONSUSERLEN, ")";      10816000
  966.                          L := L+SPONSUSERLEN+5;                         10817000
  967.                     END;                                                10818000
  968.                END ELSE                                                 10819000
  969.                BEGIN                                                    10820000
  970.                     APPEND "*";                                         10821000
  971.                     L := L+1;                                           10822000
  972.                END;                                                     10823000
  973.           (USERCODE):                                                   10824000
  974.                I := REAL (PA, 1);                                       10825000
  975.                APPEND "(", PA+1 FOR I, ")";                             10826000
  976.                PA := PA+(I+1);                                          10827000
  977.                L := L+I+2;                                              10828000
  978.                NAMES := *-1;                                            10829000
  979.           END;                                                          10830000
  980.           THRU (NAMES-1) DO                                             10831000
  981.           BEGIN                                                         10832000
  982.                I := REAL (PA, 1);                                       10833000
  983.                APPEND PA+1 FOR J:I WHILE IN ALPHA;                      10834000
  984.                IF J = 0 THEN   % NO STRING                              10835000
  985.                  J := I                                                 10836000
  986.                ELSE                                                     10837000
  987.                BEGIN                                                    10838000
  988.                     PD := PD-(I-J);                                     10839000
  989.                     APPEND """, PA+1 FOR I, """;                        10840000
  990.                     J := I+2;                                           10841000
  991.                END;                                                     10842000
  992.                APPEND "/";                                              10843000
  993.                L := L+J+1;                                              10844000
  994.                PA := PA+(I+1);                                          10845000
  995.            END;                                                         10846000
  996.           IF NAMES > 1 THEN                                             10847000
  997.           BEGIN                                                         10848000
  998.                REPLACE PD:PD-1 BY " ON ";                               10849000
  999.                L := L+3;                                                10850000
  1000.           END ELSE                                                      10851000
  1001.           BEGIN                                                         10852000
  1002.                APPEND " ON ";                                           10853000
  1003.                L := L+4;                                                10854000
  1004.           END;                                                          10855000
  1005.           I := REAL (PA, 1);                                            10856000
  1006.           APPEND PA+1 FOR I, ".";                                       10857000
  1007.           DISPLAYREQUEST := L+I+1;                                      10858000
  1008.      END DISPLAYREQUEST;                                                10859000
  1009.                                                                         10859180
  1010.      BOOLEAN PROCEDURE GETDIRECTORY (DIR); ARRAY DIR[0];                10859190
  1011. %                      ------------                                     10859200
  1012.      BEGIN                                                              10859210
  1013.           REAL AI;                                                      10859220
  1014.           INTEGER NAMELEN, ALPHALEN;                                    10859230
  1015.           POINTER PNAME;                                                10859240
  1016.           BOOLEAN RESULT, FOUND;                                        10859250
  1017.           LABEL XIT;                                                    10859260
  1018.           DEFINE                                                        10859270
  1019.             MYSTATE = SUBUSERS #;                                       10859280
  1020.                                                                         10859290
  1021.           CHECKDIRERROR;                                                10859300
  1022.           IF FULLDIR THEN                                               10859310
  1023.           BEGIN                                                         10859320
  1024.                NEXTENTRY;                                               10859330
  1025.                IF AI.LEVELF = 0 THEN AI := A [AI.LINKF+1];              10859340
  1026.                PNAME := EA [AI.LINKF+1];                                10859350
  1027.                NAMELEN := REAL (PNAME-1, 1);                            10859360
  1028.                IF AI.OWNERF = USERCOD THEN                              10859370
  1029.                BEGIN                                                    10859380
  1030.                     REPLACE DIR [1] BY "(",                             10859390
  1031.                       PNAME FOR NAMELEN, ")",                           10859400
  1032.                       ONPART FOR ONLEN, "."48"00";                      10859410
  1033.                END ELSE                                                 10859420
  1034.                BEGIN                                                    10859430
  1035.                     REPLACE DIR [1] BY "*",                             10859440
  1036.                       PNAME FOR ALPHALEN:NAMELEN WHILE IN ALPHA,        10859450
  1037.                       ONPART FOR ONLEN, "."48"00";                      10859460
  1038.                     IF ALPHALEN > 0 THEN % STUPID STRINGS               10859470
  1039.                     BEGIN                                               10859480
  1040.                          REPLACE DIR [1]+1 BY """,                      10859490
  1041.                            PNAME FOR NAMELEN, """,                      10859500
  1042.                            ONPART FOR ONLEN, "."48"00";                 10859510
  1043.                          NAMELEN := *+2;                                10859520
  1044.                     END;                                                10859530
  1045.                END;                                                     10859540
  1046.           END ELSE                                                      10859550
  1047.           WHILE NOT FOUND DO                                            10859560
  1048.           BEGIN                                                         10859570
  1049.                NEXTENTRY;                                               10859580
  1050.                WHILE AI.LEVELF > 0 AND NOT FOUND DO                     10859590
  1051.                BEGIN                                                    10859600
  1052.                     IF AI.OWNERF = USERCOD THEN                         10859610
  1053.                     BEGIN                                               10859620
  1054.                          PNAME := EA [AI.LINKF];                        10859630
  1055.                          NAMELEN := REAL (PNAME, 1);                    10859640
  1056.                          IF NAMELEN >= SPONSUSERLEN THEN                10859650
  1057.                            IF PNAME := PNAME+1 = P(SPONSUSERCODE)       10859660
  1058.                              FOR SPONSUSERLEN THEN                      10859670
  1059.                            BEGIN                                        10859680
  1060.                                 FOUND := TRUE;                          10859690
  1061.                                 REPLACE DIR [1] BY "(",                 10859700
  1062.                                   PNAME FOR NAMELEN,                    10859710
  1063.                                   ")", ONPART FOR ONLEN, "."48"00";     10859720
  1064.                            END IF NAMELEN;                              10859730
  1065.                     END IF AI;                                          10859740
  1066.                     IF NOT FOUND THEN NEXTENTRY;                        10859750
  1067.                END WHILE AI;                                            10859760
  1068.           END WHILE TRUE;                                               10859770
  1069.           DIR [0] := AI & NAMELEN LENGTHF;                              10859780
  1070. XIT:                                                                    10859790
  1071.           GETDIRECTORY := RESULT;                                       10859800
  1072.      END GETDIRECTORY;                                                  10859810
  1073.                                                                         10859820
  1074.                                                                         10860000
  1075.      BOOLEAN PROCEDURE GETSTATUSERROR (RSLT); VALUE RSLT; BOOLEAN RSLT; 10861000
  1076. %                      --------------                                   10862000
  1077.      BEGIN                                                              10863000
  1078.           REAL ER, T;                                                   10864000
  1079.           ER := REAL (RSLT.HARDERRORF);                                 10865000
  1080.           IF ER = 0 THEN                                                10866000
  1081.           BEGIN                                                         10867000
  1082.                ER := A[1].ERRORVALUEF;                                  10868000
  1083.                IF ER = 124 OR ER = 49 THEN T := NOFILES                 10869000
  1084.                ELSE IF ER = 120 THEN T := NOFAMILY                      10870000
  1085.                                 ELSE T := SOFTERROR;                    10871000
  1086.                GETSTATUSERROR :=TRUE & B(ER) SOFTERRORF & B(T) ERTYPEF; 10872000
  1087.           END ELSE                                                      10873000
  1088.           BEGIN                                                         10874000
  1089.                GETSTATUSERROR := RSLT & B (HARDERROR) ERTYPEF;          10875000
  1090.           END;                                                          10876000
  1091.      END GETSTATUSERROR;                                                10877000
  1092.                                                                         10878000
  1093.      BOOLEAN PROCEDURE GETTITLE (TITL); ARRAY TITL [0];                 10879000
  1094. %                      --------                                         10880000
  1095.      BEGIN                                                              10881000
  1096.           INTEGER I, T, LEVEL; REAL AI; LABEL XIT;                      10882000
  1097.           BOOLEAN RESULT; POINTER PT;                                   10883000
  1098.           DEFINE                                                        10884000
  1099.             MYSTATE = TITLESIZES #;                                     10885000
  1100.                                                                         10886000
  1101.           CHECKDIRERROR;                                                10887000
  1102.           NEXTENTRY;                                                    10888000
  1103.           LEVEL := AI.LEVELF;                                           10889000
  1104.           WHILE LEVEL > 0 DO                                            10890000
  1105.           BEGIN                                                         10891000
  1106.                MAXLEVEL := LEVEL;                                       10892000
  1107.                IF MAXLEVEL = 1 THEN LEVEL1NAME (AI)                     10893000
  1108.                                ELSE PUTNAME (AI);                       10894000
  1109.                NEXTENTRY;                                               10895000
  1110.                LEVEL := AI.LEVELF;                                      10896000
  1111.           END WHILE;                                                    10897000
  1112.                                                                         10898000
  1113.           I := AI.LINKF+1;                                              10899000
  1114.           AI := A [I];                                                  10900000
  1115.           MAXLEVEL := AI.LEVELF;                                        10901000
  1116.           IF MAXLEVEL = 1 THEN LEVEL1NAME (AI)                          10902000
  1117.                           ELSE PUTNAME (AI);                            10903000
  1118.           T := LVLNDX [MAXLEVEL+1];                                     10904000
  1119.           REPLACE PT:(TITL[TITLESTARTV]) BY FILENAME[0] FOR (T-1);      10905000
  1120.           IF APPENDONPART THEN                                          10906000
  1121.           BEGIN                                                         10907000
  1122.                REPLACE PT:PT BY ONPART FOR ONLEN;                       10908000
  1123.                T:=T+ONLEN;                                              10909000
  1124.           END;                                                          10910000
  1125.           REPLACE PT BY "."48"00";                                      10911000
  1126.           IF NOPREFIX THEN AI := * & (MAXLEVEL-1) LEVELF;               10912000
  1127.           TITL [FILEINFO] := AI & (OWNER) OWNERF & (T) LENGTHF;         10913000
  1128.           REPLACE P(TITL[1]) BY P(A[I+1]) FOR (TITLESTARTV-1) WORDS;    10914000
  1129.                                                                         10915000
  1130. XIT:                                                                    10916000
  1131.           GETTITLE := RESULT;                                           10917000
  1132.      END GETTITLE;                                                      10918000
  1133.                                                                         10951000
  1134.      BOOLEAN PROCEDURE INITDIR (MSK); VALUE MSK; REAL MSK;              10984000
  1135. %                      -------                                          10985000
  1136.      BEGIN                                                              10986000
  1137.           REAL                                                          10986400
  1138.             NEW;                                                        10986500
  1139.           IF STATE > SUBUSERS THEN DIRECTORYERROR;                      10987000
  1140.           IF MSK ISNT 0 THEN MASK := MSK & 1 [FILEINFO:1];              10988000
  1141.           IF FIRSTCALL THEN                                             10989000
  1142.           BEGIN                                                         10989500
  1143.                INITRSLT := CALLGETSTATUS;                               10990000
  1144.                IF INITRSLT THEN                                         10990400
  1145.                  STATE := INITERR;                                      10990500
  1146.           END ELSE                                                      10991000
  1147.           BEGIN                                                         10992000
  1148.                STATE := DOUBLEINIT;                                     10993000
  1149.                DIRECTORYERROR;                                          10994000
  1150.           END;                                                          10995000
  1151.           INITDIR := INITRSLT;                                          10995500
  1152.      END INITDIR;                                                       10996000
  1153.                                                                         10997000
  1154.      PROCEDURE LEVEL1NAME (AI); VALUE AI; REAL AI;                      10998000
  1155. %              ----------                                               10999000
  1156.      BEGIN                                                              11000000
  1157.          POINTER PNAME; INTEGER NAMELEN, ALPHALEN, T;                   11001000
  1158.          PNAME := EA [AI.LINKF];                                        11002000
  1159.          NAMELEN := REAL (PNAME, 1);                                    11003000
  1160.          PNAME := PNAME+1;                                              11003500
  1161.          OWNER := AI.OWNERF;                                            11004000
  1162.          CASE OWNER OF                                                  11005000
  1163.          BEGIN                                                          11006000
  1164.          (SYSTEM):                                                      11007000
  1165.               REPLACE FILENAME [0] BY "*";                              11008000
  1166.               LVLNDX [1] := 1;                                          11009000
  1167.               ADDNAME (PNAME, NAMELEN, ALPHALEN, T);                    11010000
  1168.               NOPREFIX := FALSE;                                        11011000
  1169.          (USERCOD):                                                     11012000
  1170.               REPLACE FILENAME [0] BY "(",                              11013000
  1171.                 PNAME FOR NAMELEN, ")";                                 11014000
  1172.               LVLNDX [1] := 0;                                          11015000
  1173.               IF NOPREFIX THEN                                          11016000
  1174.               BEGIN                                                     11017000
  1175.                    LVLNDX [2] := 0;                                     11018000
  1176.                    OWNER := MYDIR;                                      11019000
  1177.               END ELSE                                                  11020000
  1178.                 LVLNDX [2] := NAMELEN+2;                                11021000
  1179.          (MYDIR):                                                       11022000
  1180.               LVLNDX [1] := 0;                                          11023000
  1181.               ADDNAME (PNAME, NAMELEN, ALPHALEN, T);                    11024000
  1182.               NOPREFIX := FALSE;                                        11025000
  1183.          END CASE;                                                      11026000
  1184.      END LEVEL1NAME;                                                    11027000
  1185.                                                                         11028000
  1186.      PROCEDURE PUTNAME (AI); VALUE AI; REAL AI;                         11029000
  1187. %              -------                                                  11030000
  1188.      BEGIN                                                              11031000
  1189.           INTEGER NAMELEN, ALPHALEN, T;                                 11032000
  1190.           POINTER PNAME;                                                11033000
  1191.           PNAME := EA [AI.LINKF];                                       11034000
  1192.           NAMELEN := REAL (PNAME, 1);                                   11035000
  1193.           ADDNAME (PNAME+1, NAMELEN, ALPHALEN, T);                      11036000
  1194.      END PUTNAME;                                                       11037000
  1195.                                                                         11038000
  1196.      INTEGER PROCEDURE TITLESTART;                                      11039000
  1197. %                      ----------                                       11040000
  1198.      TITLESTART := TITLESTARTV;                                         11041000
  1199.                                                                         11042000
  1200.      EXPORT DIRREQUEST, DIRSIZE, DISPLAYFILEKIND, DISPLAYREQUEST,       11043000
  1201.             GETTITLE, GETDIRECTORY, INITDIR, TITLESTART;                11044000
  1202.      MYSELF.OPTION := * & 1 [12:1];                                     11045000
  1203.      STATE := NOREQUEST;                                                11046000
  1204.      FREEZE (TEMPORARY);                                                11047000
  1205. END.                                                                    11048000
  1206.