|
|
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: »tproccat«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦this⟧ »tproccat«
begin
comment this program makes a list of all
the procedure heading from a program text.
;
integer array table(0:127);
integer searchindex1,
searchindex2,
index,
lastitem;
boolean endoffile,
typolwanted,
onlydec,
found;
long array line(1:132);
integer array kind(1:132);
algol copy.tcgproclib;
procedure writeall(z,line,kind,index);
value index;
integer index;
zone z;
long array line;
integer array kind;
begin
long array field laf;
repeat
if kind(index) = 6 then
begin
laf := index*4-4;
write(out,line.laf);
for index := index+1 while kind(index) = 6 do;
end
else
if kind(index) = 7 then
begin
outchar(out,line(index) extract 24);
index := index+1;
end
else
if kind(index) <> 8 then
begin
write(out,<:<10>*** kind error :>,line(index),kind(index),index);
index := index+1;
end;
until kind(index) = 8;
outchar(out,line(index) extract 24);
end writeall;
procedure nextline;
begin
lastitem := readall(in,line,kind,1);
for searchindex1 :=0,searchindex1+1 while
line(searchindex1) = 'sp' and searchindex1 < lastitem do;
if kind(searchindex1) <> 6 then
searchindex1 := 0
else
begin
for searchindex2 := searchindex1,searchindex2+1 while
kind(searchindex2) <> 6 and searchindex2 < lastitem do;
if kind(searchindex2) <> 6 then searchindex2 := searchindex1;
end;
if line(lastitem) = 'em' then endoffile := true;
end nextline;
comment init of char table.
makes all non letter char to delimiter char;
isotable(table);
for index := 32 step 1 until 57 do
table(index) := 7 shift 12 + index;
intable(table);
endoffile := false;
comment init of arguments to program;
if getboolstring(<:typol:>,typolwanted) = 0 then typolwanted:= false;
if getboolstring(<:onlydec:>,onlydec) = 0 then onlydec := false;
if typolwanted then
write(out,"nl",1,<:*se #*:>,"nl",1);
repeat <* end of file *>
nextline;
if searchindex1 <> 0 then
begin
if ((line(searchindex1) = long <:proce:> add 'd') and
line(searchindex1+1) = long <:ure:>) or
(((line(searchindex2) = long <:proce:> add 'd') and
line(searchindex2+1) = long <:ure:>) and
((line(searchindex1) = long <:integ:> add 'e' and
line(searchindex1+1) = long <:r:>) or
(line(searchindex1) = long <:long:>) or
(line(searchindex1) = long <:real:>) or
(line(searchindex1) = long <:boole:> add 'a' and
line(searchindex1+1) = long <:n:>))) then
begin
if typolwanted then
write(out,<:#np#:>,"nl",1);
found := false;
repeat <* until begin or end of file is met *>
writeall(out,line,kind,1);
if onlydec then
begin
found := true;
end
else
begin
if typolwanted then
write(out,<:#nl#:>,"nl",1);
nextline;
if searchindex1 <> 0 then
begin
if kind(searchindex1) = 6 and
line(searchindex1) = long <:begin:> then
found := true;
end;
end;
until endoffile or found;
end;
end seaarchindex <> 0;
until endoffile;
if typolwanted then
write(out,<:#ef#:>,"nl",1);
end program procedure catalog;
▶EOF◀