CONSTSTRING (13) VSN="23 FEB 79 3"
EXTERNALINTEGERFNSPEC DFINFO(STRING (6) USER, STRING (15) FILE, C
INTEGER FSYS,ADR)
EXTERNALSTRINGFNSPEC DERRS(INTEGER N)
EXTERNALINTEGERFNSPEC DPERMISSION(STRING (6) OWNER,USER, C
STRING (8) DATE,STRING (15) FILE, INTEGER FSYS,TYPE,ADRPRM)
EXTERNALINTEGERFNSPEC DCONNECT(STRING (6) USER, C
STRING (15) FILE,INTEGER FSYS,MODE,APF,INTEGERNAME SEG,GAP)
EXTERNALINTEGERFNSPEC DDISCONNECT(STRING (6) USER, C
STRING (15) FILE,INTEGER FSYS,DSTRY)
EXTERNALROUTINESPEC RDINT(INTEGERNAME I)
EXTERNALINTEGERFNSPEC DGETDA(STRING (6) USER,STRING (15) FILE, C
INTEGER FSYS,ADR)
EXTERNALINTEGERFNSPEC DFILENAMES(STRING (6) USER,RECORDARRAYNAME C
INF,INTEGERNAME FILENO,MAXREC,NFILES,INTEGER FSYS,TYPE)
EXTERNALROUTINESPEC GET AV FSYS(INTEGERNAME N,INTEGERARRAYNAME A)
EXTERNALINTEGERFNSPEC GET USNAMES(INTEGERNAME N, C
INTEGER ADR,FSYS)
EXTERNALROUTINESPEC PROMPT(STRING (15) S)
EXTERNALROUTINESPEC RSTRG(STRINGNAME S)
RECORDFORMAT OINFF(STRING (11) NAME,INTEGER SP12,NKB, C
BYTEINTEGER ARCH,CODES, C
CCT,OWNP,EEP,USE,CODES2,SSBYTE,FLAGS,SP29,SP30,SP31)
ROUTINE UDERRS(INTEGER N)
PRINTSTRING("FLAG =")
PRINTSTRING(DERRS(N))
NEWLINE
END ; ! UDERRS
EXTERNALROUTINE WHAT FILE(STRING (255) S)
INTEGER FROMREC,NGIVEN
INTEGER FSYS,J,I,N,UX,SX,DA,PGNO,LEN,NFILES,FX,USERS
STRING (31) FILE,USER
INTEGERARRAY A(0:99)
STRING (6)ARRAY U(0:399)
RECORDARRAY FLIS(0:255)(OINFF)
!
RECORDFORMAT DAF(INTEGER SECTSI,NSECTS,LASTSECT,SP, C
INTEGERARRAY DA(0:255))
RECORD DAAREA(DAF)
!
PROMPT("FSYS (OR -1): ")
RDINT(FSYS)
PROMPT("PGNO: ")
RDINT(PGNO)
GET AV FSYS(N,A)
IF FSYS>=0 START
CYCLE J=0,1,N-1
IF A(J)=FSYS START
A(0)=FSYS
N=1
-> OK
FINISH
REPEAT
PRINTSTRING("FSYS N/A
")
RETURN
FINISH
OK:
CYCLE J=0,1,N-1
FSYS=A(J)
PRINTSTRING("FSYS")
WRITE(FSYS,1)
NEWLINE
PGNO=PGNO<<8>>8 ! FSYS<<24
I=GET USNAMES(USERS,ADDR(U(0)),FSYS)
MONITOR IF I#0
UX=0
WHILE UX<USERS CYCLE
USER=U(UX)
FROMREC=0; NGIVEN=256; ! SET TO MAX PREPARED TO RECIEVE
I=DFILENAMES(USER,FLIS,FROMREC,NGIVEN,NFILES,FSYS,0)
MONITOR IF I#0
FX=0
WHILE FX<NFILES CYCLE
FILE=FLIS(FX)_NAME
I=DGETDA(USER,FILE,FSYS,ADDR(DA AREA))
MONITOR IF I#0
SX=0
WHILE SX<DA AREA_NSECTS CYCLE
DA=DA AREA_DA(SX)
SX=SX+1
LEN=DA AREA_SECTSI
IF SX=DA AREA_NSECTS THEN LEN=DA AREA_LASTSECT
IF DA<=PGNO<DA + LEN START
SPACES(4)
PRINTSTRING(USER.".".FILE)
NEWLINE
FINISH
REPEAT ; ! UP THE SECTIONS OF THE FILE
FX=FX + 1
REPEAT ; ! UP THE FILES OF THE USER
UX=UX + 1
REPEAT ; ! UP THE USERS OF THE FSYS
REPEAT ; ! UP THE FSYS'S
END ; ! WHAT FILE
CONSTINTEGER ZERO=0
INTEGERFN PHYSICAL SIZE KB(STRING (11) USER,FILE,INTEGER FSYS)
INTEGER J
RECORDFORMAT DFINFRECF(INTEGER NKB,RUP,EEP,APF,USE,ARCH,FSYS, C
CONSEG,CCT,CODES,CODES2,SSBYTE, STRING (6) OFFER)
RECORD X(DFINFRECF)
J=DFINFO(USER,FILE,FSYS,ADDR(X))
IF J#0 START
PRINTSTRING("DFINFO ")
UDERRS(J)
RESULT =0
FINISH
RESULT =X_NKB
END ; ! PHYSICAL SIZE KB
INTEGERFN PAGE(INTEGER AD)
! RESULT IS ZERO IF PAGE IS ZERO
INTEGER I
CYCLE I=AD,4,AD+4092
IF INTEGER(I)#0 THEN RESULT =1
REPEAT
RESULT =ZERO
END ; ! PAGE
EXTERNALROUTINE DO ALL FILES(STRING (255) S)
INTEGER FSX,SEG,GAP,DATA LEN,AD,NGIVEN,FROMREC
INTEGER FSYS,J,I,N,UX,SX,DA,LEN,NFILES,FX,USERS
STRING (31) FILE,USER,REST
INTEGERARRAY A(0:99)
STRING (6)ARRAY U(0:399)
RECORDARRAY FLIS(0:255)(OINFF)
!
RECORDFORMAT DAF(INTEGER SECTSI,NSECTS,LASTSECT,SP, C
INTEGERARRAY DA(0:255))
RECORD DAAREA(DAF)
!
PROMPT("FSYS (OR -1): ")
RDINT(FSYS)
GET AV FSYS(N,A)
IF FSYS>=0 START
CYCLE J=0,1,N-1
IF A(J)=FSYS START
A(0)=FSYS
N=1
-> OK
FINISH
REPEAT
PRINTSTRING("FSYS N/A
")
RETURN
FINISH
OK:
CYCLE FSX=0,1,N-1
FSYS=A(FSX)
PRINTSTRING("FSYS")
WRITE(FSYS,1)
NEWLINE
I=GET USNAMES(USERS,ADDR(U(0)),FSYS)
MONITOR IF I#0
UX=0
WHILE UX<USERS CYCLE
USER=U(UX)
PRINTSTRING(USER); NEWLINE
!********:
J=DPERMISSION(USER,"ERCCXX","","",FSYS,6,1)
IF J#0 THEN PRINTSTRING("DPRM1 ") AND UDERRS(J)
!***********:
FROMREC=0; NGIVEN=256; ! SET TO MAX PREPARED TO RECIEVE
I=DFILENAMES(USER,FLIS,FROMREC,NGIVEN,NFILES,FSYS,0)
MONITOR IF I#0
FX=0
WHILE FX<NFILES CYCLE
FILE=FLIS(FX)_NAME
SEG=0; GAP=0
J=DCONNECT(USER,FILE,FSYS,1,0,SEG,GAP)
IF J#0 AND J#33 AND J#34 THEN PRINTSTRING("DCONN ") C
AND UDERRS(J)
IF FILE->("#DGLA").REST OR C
FILE->("#LC").REST C
START ; FINISH ELSE START
IF J=0 START
AD=SEG<<18
DATA LEN=PHYSICAL SIZE KB(USER,FILE,FSYS)<<10
I=AD
WHILE I<AD + DATA LEN CYCLE
IF PAGE(I)=ZERO START
PRINTSTRING(USER.".".FILE." HAS ZEROES")
NEWLINE
FINISH
I=I+X'10000'; ! SECTION SIZE
REPEAT
J=DDISCONNECT(USER,FILE,FSYS,0)
IF J#0 THEN PRINTSTRING("DDISCO ") AND UDERRS(J)
FINISH ; ! SUCCESSFUL CONNECT
FINISH ; ! NOT DGLA
!***********************************************************:
FX=FX + 1
REPEAT ; ! UP THE FILES OF THE USER
J=DPERMISSION(USER,"ERCCXX","","",FSYS,7,0)
IF J#0 THEN PRINTSTRING("DPRM2 ") AND UDERRS(J)
UX=UX + 1
REPEAT ; ! UP THE USERS OF THE FSYS
REPEAT ; ! UP THE FSYS'S
END ; ! DO ALL FILES
ENDOFFILE