EXTERNALROUTINE  SETS(STRING (255)S)
!
!
EXTERNALROUTINESPEC  PROMPT(STRING (255)S)
EXTERNALROUTINESPEC  RDINT(INTEGERNAME  I)
EXTERNALROUTINESPEC  RSTRG(STRINGNAME  S)
EXTERNALROUTINESPEC  GETAVFSYS(INTEGERNAME  N,INTEGERARRAYNAME  A)
EXTERNALINTEGERFNSPEC  GETUSNAMES(INTEGERNAME  N,INTEGER  ADR,FSYS)
EXTERNALINTEGERFNSPEC  DSFI(STRING (6)U,INTEGER  F,T,S,A)
!
!
INTEGER  M, I, W
INTEGER  TYPE, NSYS, F, ADR, NU, J, K, C0, C1, N
STRING (15)WHAT, MODE, U0
INTEGERARRAY  A(0:99)
INTEGERARRAY  P(1:100)
INTEGERARRAY  ITYPE(1:100)
INTEGERARRAY  FLD(0:15)
STRINGNAME  U1
STRING (6)ARRAY  GU(1:100)
STRING (31)ARRAY  STYPE(1:100)
BYTEINTEGERARRAY  UNAMES(0:2400)
!
INTEGERFN  LOOK UP(STRING (31)WHAT,STRINGNAME  MODE)
CONSTSTRING (15)ARRAY  TYPES(0:38) = C 
      "SBASEFILE",
      "SDELIVERY",
      "",
      "SADDRTELE",
      "",
      "",
      "ILASTLOGON",
      "IACR",
      "IDIRVSN",
      "",
      "ISTKKB",
      "IMAXKB",
      "IMAXFILE",
      "",
      "",
      "",
      "IDIRMON",
      "ISIGMON",
      "SSURNAME",
      "SLOGFILE",
      "","","","","","","","","","","","",
      "IISESSM","IINUTS","",
      "SSPECIALSS",
      "SBATCHSS",
      "SGPHOLDR",
      "ITRYING"
INTEGER  I
!
      CYCLE  I = 0, 1, 38
         IF  TYPES(I) -> MODE.(WHAT) THEN  RESULT  = I
      REPEAT 
      RESULT  = -1
END ; ! OF LOOK UP
!
      PROMPT("WHAT: ")
      RSTRG(WHAT)
      TYPE = LOOK UP(WHAT, MODE)
!
      IF  TYPE < 0 C 
      THEN  PRINTSTRING("NOT KNOWN
") C 
      ELSE  START 
         PROMPT("NEW VALUE: ")
         IF  MODE = "I" C 
         THEN  RDINT(FLD(0)) C 
         ELSE  RSTRG(STRING(ADDR(FLD(0))))
         PROMPT("USERS: ")
         RSTRG(U0)
!
         N = 0; ! GOOD NAMES
         ADR = ADDR(UNAMES(0))
         GET AV FSYS(NSYS, A)
!
         CYCLE  F = 0, 1, NSYS-1
            J = GETUSNAMES(NU, ADR, A(F))
            IF  NU > 0 START 
               CYCLE  J = 0, 7, (NU-1)*7
                  U1 == STRING(ADR+J)
                  CYCLE  K = 1, 1, 6
                     C0 = BYTEINTEGER(ADDR(U0)+K)
                     C1 = BYTEINTEGER(ADDR(U1)+K)
                     UNLESS  C0=M'?' OR  C0=C1 C 
                     THEN  -> NO GO
                  REPEAT 
!
                  K = DSFI(U1, A(F), TYPE, 1, ADDR(FLD(0)))
NO GO:
               REPEAT 
            FINISH 
         REPEAT 
      FINISH 
END ; ! OF SETS
ENDOFFILE