|
|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 3840 (0xf00)
Types: TextFile
Names: »tdiscusstat«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦393858ad9⟧ »tsysprog«
└─⟦this⟧
lookup discusstat
if ok.yes
(scope temp discusstat
clear temp discusstat)
discusstat=set 1
discusstat=algol
1980-08-07
begin
boolean minlist,list,found,docname,tlb,tub;
integer lb,ub,segm,i,j,k,char,res,minsiz,maxsiz,elb,eub,key;
integer array field rec,tail;
long array field doc,name;
integer array bases(1:8),t(1:10),ds,dsl,entries,segments,slices(0:6),
totentries(0:6);
long array names(0:6);
array field d;
long array tname,disc,ename,fname,odoc(1:3);
rec:=0;
d:=0;
name:=6;
tail:=14;
doc:=16;
ds(0):=0; dsl(0):=0; names(0):=long <:total:>;
ds(1):=1004; dsl(1):=1; names(1):=long <:drum:>;
ds(2):=1004; dsl(2):=1; names(2):=long <:drum1:>;
ds(3):=14*1845; dsl(3):=14; names(3):=long <:disc:>;
ds(4):=14*1845; dsl(4):=14; names(4):=long <:disc1:>;
ds(5):=14*1845; dsl(5):=14; names(5):=long <:disc2:>;
ds(6):=63*1656; dsl(6):=63; names(6):=long <:disc3:>;
for i:=0 step 1 until 6 do entries(i):=segments(i):=slices(i):=
totentries(i):=0;
lookup_tail(<:catalog:>,t);
segm:=t(1);
readbfp(<:list:>,list,false);
readifp(<:min:>,minsiz,0);
minlist:=readifp(<:list:>,minsiz,0);
readifp(<:max:>,maxsiz,maxinteger-1);
docname:=readsfp(<:doc:>,disc.d,<::>);
readifp(<:key:>,key,3);
connectcuri(<:catalog:>);
setposition(in,0,0);
ub:=maxinteger-1;
if readifp(<:base:>,lb,-maxinteger) then
readifpnext(fpnr,ub);
for segm:=segm step -1 until 1 do
begin
inrec6(in,512);
for rec:=0 step 34 until 512-34 do
begin
if in.rec(1)<>-1 then
begin
elb:=in.rec(2); eub:=in.rec(3);
if elb>=0 and lb<=0 then tlb:=true else
if elb<0 and lb>=0 then tlb:=false else
tlb:=lb<=elb;
if eub<=0 and ub>=0 then tub:=true else
if eub>0 and ub<0 then tub:=false else
tub:=eub<=ub;
if tlb and tub then
begin
if in.rec(1) extract 3=key and
(-,docname or disc(1)=in.rec.doc(1)) then
begin
totentries(0):=totentries(0)+1;
if list then write(out,"nl",1,"*",1,true,12,in.rec.name,
<:=set :>,<<dddd >,in.rec.tail(1),true,8,in.rec.doc);
found:=false;
i:=0;
repeat i:=i+1;
found:=in.rec.doc(1)=names(i);
until found or i=6;
if found then
begin
totentries(i):=totentries(i)+1;
if in.rec.tail(1)>minsiz and in.rec.tail(1)<=maxsiz then
begin
entries(0):=entries(0)+1;
entries(i):=entries(i)+1;
j:=in.rec.tail(1);
segments(0):=segments(0)+j;
segments(i):=segments(i)+j;
k:=if dsl(i)=1 then j else (j-1)//dsl(i)+1;
if minlist then write(out,"nl",1,"*",1,true,12,
in.rec.name,<:=set:>,<< dddd>,in.rec.tail(1),
true,7,in.rec.doc);
slices(i):=slices(i)+k;
end found;
end size>0;
end key>=3;
end base;
end entry;
end record;
end segments;
write(out,"nl",4,<:usage of drums and discs for permanent storage:>);
write(out,"nl",1,<:catalog size :>,t(1),<: segments :>,t(1)*15,<: entries:>);
write(out,"nl",1,<:base interval :>,<<-dddddddd>,lb,<:::>,ub);
write(out,"nl",1,<:segmentsize interval :>,<<dddddddd>,minsiz+1,<:::>,maxsiz);
write(out,"nl",1,<:document:>,"sp",4,"sp",5,<:entries:>,
"sp",7,<:areas:>,"sp",4,<:segments:>,
"sp",6,<:slices:>,"sp",4,<:occupied:>);
for i:=if docname then 1 else 0 step 1 until 6 do
begin
if totentries(i)>0 then
write(out,"nl",1,true,12,string names(i),
<< dddddd>,totentries(i),entries(i),
segments(i));
if slices(i)>0 then write(out,<< dddddd>,slices(i),
slices(i)*dsl(i));
end;
write(out,"nl",2);
end;
scope user discusstat
discusstat doc.disc3
mode list.no 15.no
o c
▶EOF◀