!***********************************************************************
!*
!* Utility program to remove OFFER status from all on-line files
!*
!* R.D. Eager University of Kent MCMLXXX
!*
!***********************************************************************
!
!
!***********************************************************************
!*
!* Constants
!*
!***********************************************************************
!
CONSTSTRING (1) SNL = "
"
!
!
!***********************************************************************
!*
!* Record formats
!*
!***********************************************************************
!
RECORDFORMAT INFF(INTEGER NKB,RUP,EEP,APF,USE,ARCH,FSYS,CONSEG,C
CCT,CODES,CODES2,SSBYTE,STRING (6) OFFER)
RECORDFORMAT OINFF(STRING (11) NAME,INTEGER SP12,NKB,C
BYTEINTEGER ARCH,CODES,CCT,OWNP,EEP,USE,CODES2,C
SSBYTE,FLAGS,SP29,SP30,SP31)
!
!
!***********************************************************************
!*
!* Subsystem references
!*
!***********************************************************************
!
SYSTEMSTRINGFNSPEC ITOS(INTEGER N)
EXTERNALINTEGERFNSPEC OUTPOS
EXTERNALROUTINESPEC PROMPT(STRING (255) S)
EXTERNALSTRINGFNSPEC UINFS(INTEGER ENTRY)
!
!
!***********************************************************************
!*
!* Director references
!*
!***********************************************************************
!
EXTERNALSTRINGFNSPEC DERRS(INTEGER N)
EXTERNALINTEGERFNSPEC DFILENAMES(STRING (6) USER,C
RECORDARRAYNAME INF,C
INTEGERNAME FILENO,MAXREC,NFILES,C
INTEGER FSYS,TYPE)
EXTERNALINTEGERFNSPEC DFINFO(STRING (6) USER,STRING (11) FILE,C
INTEGER FSYS,ADR)
EXTERNALINTEGERFNSPEC DOFFER(STRING (6) USER,OFFERTO,C
STRING (11) FILE,INTEGER FSYS)
EXTERNALROUTINESPEC GETAVFSYS(INTEGERNAME N,INTEGERARRAYNAME A)
EXTERNALINTEGERFNSPEC GETUSNAMES(INTEGERNAME N,INTEGER ADR,FSYS)
!
!
!***********************************************************************
!*
!* U N O F F E R
!*
!***********************************************************************
!
EXTERNALROUTINE UNOFFER(STRING (255) PARMS)
INTEGER FSX,NGIVEN,FROMREC,AD,FLAG
INTEGER FSYS,J,N,UX,NFILES,FX,USERS
STRING (31) FILE,USER,SELF
RECORD INF(INFF)
INTEGERARRAY A(0:99)
STRING (6)ARRAY U(0:511)
RECORDARRAY FLIS(0:255)(OINFF)
!
PROMPT("Fsys (or -1): ")
READ(FSYS)
GET AV FSYS(N,A)
IF FSYS >=0 THEN START
CYCLE J = 0,1,N-1
IF A(J) = FSYS THEN START
A(0) = FSYS
N = 1
-> OK
FINISH
REPEAT
PRINTSTRING("File system not online".SNL)
RETURN
FINISH
!
OK:
SELF = UINFS(1)
AD = ADDR(INF)
CYCLE FSX = 0,1,N-1
FSYS = A(FSX)
PRINTSTRING("+++ Fsys ".ITOS(FSYS)." +++".SNL)
FLAG = GET USNAMES(USERS,ADDR(U(0)),FSYS)
IF FLAG # 0 THEN MONITOR AND STOP
UX = 0
WHILE UX < USERS CYCLE
USER = U(UX)
FROMREC = 0; NGIVEN = 256; ! Set to max prepared to receive
FLAG = DFILENAMES(USER,FLIS,FROMREC,NGIVEN,NFILES,FSYS,0)
IF FLAG # 0 THEN MONITOR AND STOP
FX = 0
WHILE FX < NFILES CYCLE
IF FLIS(FX)_CODES & X'02' # 0 THEN START ; ! File on OFFER
FILE = FLIS(FX)_NAME
PRINTSTRING("+++ ".USER.".".FILE)
SPACES(30-OUTPOS)
PRINTSTRING(" on OFFER to ")
FLAG = DFINFO(USER,FILE,FSYS,AD)
IF FLAG # 0 THEN PRINTSTRING("??????") ELSE START
PRINTSTRING(INF_OFFER)
FLAG = DOFFER(USER,"",FILE,FSYS)
PRINTSTRING(" OFFER revoke flag =".DERRS(FLAG))
FINISH
NEWLINE
FINISH
FX = FX + 1
REPEAT
UX = UX + 1
REPEAT
REPEAT
END ; ! of UNOFFER
ENDOFFILE