RECORDFORMAT OINFF(STRING (11) NAME,INTEGER SP12,NKB,C
BYTEINTEGER ARCH,CODES,CCT,OWNP,EEP,USE,CODES2,C
SSBYTE,FLAGS,POOL,DAYNO,SP31)
EXTERNALINTEGERFUNCTIONSPEC DFILENAMES(STRING (6) USER,C
RECORD (OINFF)ARRAYNAME INF,C
INTEGERNAME FILENO,MAXREC,C
NFILES,INTEGER FSYS,TYPE)
EXTERNALINTEGERFNSPEC DFSTATUS(STRING (6) USER,STRING (11) FILE,C
INTEGER FSYS,ACT,VALUE)
EXTERNALINTEGERFUNCTIONSPEC GET USNAMES(INTEGERNAME N,INTEGER ADR,C
FSYS)
EXTERNALROUTINESPEC GET AV FSYS(INTEGERNAME N,INTEGERARRAYNAME A)
SYSTEMSTRINGFUNCTIONSPEC ITOS(INTEGER N)
!
!
ROUTINE TREAT USER(STRINGNAME USER,INTEGER FSYS)
INTEGER FLAG,FILENO,MAXREC,NFILES,DIRFOUND,OPTFOUND,I
INTEGERARRAY A(0:20)
STRINGNAME NAME
RECORD (OINFF)NAME F
RECORD (OINFF)ARRAY INF(0:1024)
!
PRINTSTRING(USER); NEWLINE
FILENO = 0; MAXREC = 1024
FLAG = DFILENAMES(USER,INF,FILENO,MAXREC,NFILES,FSYS,0)
IF FLAG # 0 THEN MONITOR AND RETURN
RETURN IF MAXREC = 0
CYCLE I = 0,1,MAXREC-1
F == INF(I)
NAME == F_NAME
IF LENGTH(NAME) > 2 AND SUBSTRING(NAME,1,2) = "T#" C
THEN CONTINUE
FLAG = DFSTATUS(USER,NAME,FSYS,1,1)
IF FLAG # 0 THEN MONITOR
REPEAT
END
!
INTEGERFUNCTION STOI(STRING (255) S)
IF S = "-1" THEN RESULT = -1
IF LENGTH(S) = 1 THEN S = "0".S
IF LENGTH(S) # 2 THEN RESULT = -2
UNLESS '0' <= CHARNO(S,1) <= '9' THEN RESULT = -2
UNLESS '0' <= CHARNO(S,2) <= '9' THEN RESULT = -2
RESULT = (CHARNO(S,1) - '0')*10 + CHARNO(S,2) - '0'
END ; ! of STOI
!
!
EXTERNALROUTINE DOCH(STRING (255) S)
STRING (6)ARRAY U(0:1023)
INTEGER NU,NUSERS
INTEGER J,N,FX,FSYS
INTEGERARRAY A(0:99)
STRING (63) USER
!
FSYS = -1
IF S # "" THEN START
FSYS = STOI(S)
UNLESS -1 <= FSYS <= 99 THEN -> BP
FINISH
IF FSYS<0 THEN GET AV FSYS(N,A) ELSE A(0) = FSYS AND N = 1
FX = 0
WHILE FX<N CYCLE
FSYS = A(FX)
PRINTSTRING("+++ FSYS ".ITOS(FSYS)." +++"); NEWLINE; NEWLINE
J = GET USNAMES(NUSERS,ADDR(U(0)),FSYS)
PRINTSTRING("GET USNAMES flag ="); WRITE(J,1)
PRINTSTRING(" No of users ="); WRITE(NUSERS,1); NEWLINES(2)
NU = 0
WHILE NU<NUSERS CYCLE
USER<-U(NU)
IF LENGTH(USER) = 6 THEN START
TREAT USER(USER,FSYS)
FINISH
NU = NU+1
REPEAT
FX = FX + 1
REPEAT
RETURN
BP:
PRINTSTRING("Illegal fsys specification"); NEWLINE
END ; ! of DOCH
ENDOFFILE