|
|
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: 2304 (0x900)
Types: TextFile
Names: »tsearchcon«
└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ.
└─⟦4334b4c0b⟧
└─⟦162d2eb5b⟧ »talgprog«
└─⟦this⟧
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦this⟧ »tsearchcon«
(mode list.yes
searchcon=algol connect.no
searchcon
mode list.no)
1980-10-24
begin
boolean list,search;
integer lb,ub,segm,i,j,char,content;
integer array field rec;
long array field doc,name;
integer array bases(1:8),t(1:10);
array sname(1:3);
procedure listcon(lib,list,search,name);
boolean list,search;
long array lib;
array name;
if content=10 then
begin
integer field segm,w;
array field sn;
long array field n,doc;
integer array field t;
integer i,j,entry,entries;
zone cat(128,1,stderror);
open(cat,4,lib,0);
w:=512;
inrec6(cat,512);
entries:=cat.w;
sn:=n:=6; doc:=16; segm:=16;
t:=14;
setposition(cat,0,0);
for entry:=1 step 1 until entries do
begin
inrec6(cat,34);
i:=1;
if list then
begin
write(out,"nl",1,"sp",4,true,12,cat.n,
<<ddddd>,cat.segm);
outshortcl(out,cat.t(6));
end else
if search then
begin
if cat.sn(1)=name(1) then
begin
if cat.sn(2)=name(2) then
begin
write(out,"nl",1,true,12,cat.n,
<<ddddd>,cat.segm);
outshortcl(out,cat.t(6));
write(out,<: on :>,true,12,lib);
end name part 2;
end name part 1;
end search;
end entry;
close(cat,true);
end listcon;
rec:=0;
name:=6;
doc:=16;
lookup_tail(<:catalog:>,t);
segm:=t(1);
readifp(<:content:>,content,10);
readbfp(<:list:>,list,false);
readsfp(<:search:>,sname,<::>);
readinfp(sname,1);
search:=sname(1)<>real <::> or fpinareas>0;
connectcuri(<:catalog:>);
setposition(in,0,0);
system(11,0,bases);
lb:=bases(5); ub:=bases(6);
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
if lb=in.rec(2) and ub=in.rec(3) then
begin
if in.rec(16)shift (-12) extract 12=content and
in.rec(1) extract 3>2 then
begin
if -,search then
begin
write(out,"nl",1,true,13,in.rec.name,true,6,in.rec(8),
true,12,in.rec.doc);
outshortcl(out,in.rec(6+7));
end;
if list or search then listcon(in.rec.name,list,search,sname);
end content;
end user base;
end entry;
end record;
end segments;
if fpout then closeout;
end;
▶EOF◀