ALP Systems LLC
      * Program: 
      * Tool Box
      * Copyright ALP Systems LLC
      *
      PROGRAM='TOOLBOX' ; TITLE='Administrator Tool Box'
      *-----
      PROMPT ''
      CLR=@(-1)
      EOP=@(-3)
      EOL=@(-4)
      BON=@(-7)
      BOF=@(-8)
      BELL=CHAR(7)
      AM=CHAR(254)
      VM=CHAR(253)
      SVM=CHAR(252)
      PR=@(0,22):EOL:@(0,22)
      ER=@(0,23):EOL:@(0,23)
      ABORT=0
      TODAY=OCONV(DATE(),'D2-')
      BADS=''
      FOR M=0 TO 31
         BADS:=CHAR(M)
      NEXT M
      **************
      * Open Files *
      **************
      SCR=CLR:'<':PROGRAM:'>':@(40-INT(LEN(TITLE)/2)):TITLE:@(70):TODAY
      OPEN '','ACTIONS,TOOLBOX' TO ACTIONS ELSE ABORT=1
      IF ABORT THEN
         CRT SCR:PR:'Program Abort Code=':ABORT:'  (enter) ':
         INPUT QAZ: ; STOP
      END
      *********************
      * Screen Definition *
      *********************
      Y=99 ; X=(-40) ; LIST='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
      FOR M=1 TO LEN(LIST)
         Y+=1
         IF Y>19 THEN Y=2 ; X+=40
         READV DESC FROM ACTIONS, LIST[M,1], 2 ELSE DESC=''
         IF DESC='open' THEN DESC=''
         SCR:=@(X,Y):LIST[M,1]:' - ':DESC[1,35]
      NEXT M
      ************
      * Top Loop *
      ************
10    CRT SCR:
      RELEASE
      LIST='X0123456789ABCDEFGHIJKLMNOPQRSTUVWYZ' ; VALIDACTS=''
      FOR M=1 TO LEN(LIST)
         VALIDACTS<-1>=LIST[M,1]
      NEXT M
      PARAMETER=''
      PARAMETER<1>=2 ; * Spacing of action words
      PARAMETER<2>=22 ; * y coordinate
      CALL USER.ACTION(ACTIONS,VALIDACTS,OPT,PROGRAM,PARAMETER)
      BEGIN CASE
         CASE OPT='0'
            EXECUTE 'RUN SYS.BP MS050'
            GO 10
         CASE OPT='1'
            COMD='SORT USERS BY LNAME BY FNAME LNAME FNAME 8 12 16'
            COMD:=' HEADING "User List     ':"'DL'":'"'
            EXECUTE COMD
         CASE OPT='2'
            COMD='SORT ACC ID-SUPP HDR-SUPP WITH NAME.'
            COMD:=' LINE UNAME. ACCOUNT. TIME. DATE. WHERE.'
            COMD:=' HEADING "Users Logged on     ':"'TL'":'"'
            EXECUTE COMD
         CASE OPT='3'
         CASE OPT='4'
         CASE OPT='5'
         CASE OPT='6'
         CASE OPT='7'
         CASE OPT='8'
         CASE OPT='9'
         CASE OPT='A'
            READ REC FROM ACTIONS, 'ASCII' ELSE REC=''
            FOR M=1 TO 4
               GG=@(0,1):EOP
               FOR X=1 TO 22
                  GG:=@(5,X):REC<(M*22-22)+X>
               NEXT X
               CRT GG:ER:@(70):'(enter) ':
               INPUT QAZ:
            NEXT M
            GO 10
         CASE OPT='B'
         CASE OPT='C'
            EXECUTE 'LLC'
         CASE OPT='D'
            CRT @(0,2):EOP:'Sort Dictionary'
            CRT @(0,4):'Enter File Name ':
            INPUT FILENAME:
            COMD='SD ':FILENAME
            EXECUTE COMD
         CASE OPT='E'
            EXECUTE 'RUN SYS.BP EMESSAGE'
            GO 10
         CASE OPT='F'
         CASE OPT='G'
         CASE OPT='H'
            CRT @(0,2):EOP:'HASH-TEST':
            CRT @(0,4):'Enter File Name ':
            INPUT FILENAME:
            TFILE1=FIELD(FILENAME,',',1)
            TITEM=FIELD(FILENAME,',',2)
            FLAG=1 ; CMOD=0
            IF TITEM='' THEN TITEM=TFILE1
            OPEN 'DICT',TFILE1 TO TEMP ELSE FLAG=0
            IF FLAG THEN
               READV CMOD FROM TEMP, TITEM, 3 ELSE CMOD=0
               IF NUM(CMOD)=0 THEN CMOD=0
            END
            COMD='HASH-TEST ':FILENAME:' DET-SUPP'
            EXECUTE COMD
            IF CMOD THEN CRT @(0,12):'Current Data Modulo = ':CMOD:
         CASE OPT='I'
            CRT @(0,2):EOP:'List Item Locks':@(0,4):
            EXECUTE 'LIST-ITEM-LOCKS'
         CASE OPT='J'
            EXECUTE 'LISTLINES'
         CASE OPT='K'
         CASE OPT='L'
            CRT @(0,2):EOP:'List Defined Printers':@(0,4):
            EXECUTE 'LISTPTR'
         CASE OPT='M'
            EXECUTE 'RUN SYS.BP MENU.CREATE'
            GO 10
         CASE OPT='N'
         CASE OPT='O'
         CASE OPT='P'
         CASE OPT='Q'
            CRT @(0,2):EOP:'List Items in Spooler':@(0,4):
            EXECUTE 'LISTPEQS'
         CASE OPT='R'
         CASE OPT='S'
            CRT @(0,2):EOP:'SP-EDIT':@(0,4):
            EXECUTE 'SP-EDIT (U'
         CASE OPT='T'
            CRT @(0,2):EOP:'Terminal Settings':@(0,4):
            EXECUTE 'TERM'
         CASE OPT='U'
            EXECUTE 'LISTU'
         CASE OPT='V'
         CASE OPT='W'
            EXECUTE 'WED'
            GO 10
         CASE OPT='X'
            STOP
         CASE OPT='Y'
         CASE OPT='Z'
            EXECUTE 'RUN SYS.BP PRIME.NUMBER'
            GO 10
         CASE 1
            GO 10
      END CASE
      CRT PR:'(enter) to continue ':
      INPUT QAZ:
      GO 10