!*********************************************************************** !* !* 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