DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦1135988c3⟧ TextFile

    Length: 3840 (0xf00)
    Types: TextFile
    Names: »tdiscusstat«

Derivation

└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ.
    └─⟦4334b4c0b⟧ 
        └─⟦this⟧ »tdiscusstat« 

TextFile

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);
if list then connectlso;
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 and in.rec.tail(1)>=minsiz and in.rec.tail(1)<=maxsiz 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);
if fpout then closeout;
end;
scope project discusstat
discusstat doc.disc3
mode list.no 15.no
o c
▶EOF◀