|
|
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: 5376 (0x1500)
Types: TextFile
Names: »tmicform«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦this⟧ »tmicform«
begin
integer kommentar_fundet,label_fundet,prim_kommentar_fundet;
integer kommentar_margin,prim_kommentar_margin,højre_margin;
integer index,tegn,tegn_klasse,read_index,print_index;
integer printed,sidste_før_kommentar,instr_margin;
integer prim_kommentar_limit;
integer array line(1:133);
integer procedure se_fremad(index);
value index; integer index;
begin
integer se_fremad_index;
se_fremad_index := index;
for se_frem_ad_index := se_frem_ad_index + 1
while line(se_fremad_index) <> 32 and
line(se_fremad_index) <> 10 do;
se_fremad:= se_fremad_index - index -1;
end se_fremad;
procedure print_kommentar_line;
<******************************>
begin
if prim_kommentar_fundet <> 0
and printed < prim_kommentar_margin then
print_blanke(prim_kommentar_margin - printed)
else
if kommentar_fundet <> 0 and printed < kommentar_margin then
print_blanke(kommentar_margin - printed);
print_index := skip_blanke(print_index);
print_index := print_index - 1 ;
for print_index := print_index + 1
while line(print_index) <> 10 do
begin
tryk_tegn(line(print_index));
if printed >= højre_margin or
printed + se_fremad(print_index) > højre_margin then
begin
index := skip_blanke(print_index +1);
if line(index) <> 10 then
begin
outchar(out,10);
if prim_kommentar_fundet <> 0 then
print_blanke(prim_kommentar_margin)
else print_blanke(kommentar_margin);
outchar(out,59);
printed := if prim_kommentar_fundet <> 0 then
prim_kommentar_margin +1
else kommentar_margin +1;
end;
end ;
end;
outchar(out,10);
end print_kommentar_line;
integer procedure reset_line;
begin
kommentar_fundet := 0;
label_fundet := 0;
prim_kommentar_fundet := 0;
sidste_før_kommentar := 0;
for index :=1 step 1 until 133 do line(index):=0;
read_index := 0;
print_index :=0;
printed := 0;
end reset_line;
procedure pak_tegn;
begin
read_index := read_index + 1;
if kommentar_fundet = 0 then
begin
if tegn = 59 then
begin
kommentar_fundet := read_index;
if read_index < prim_kommentar_limit then
prim_kommentar_fundet := read_index;
end
else
begin
if tegn <> 32 and tegn <> 10 then
sidste_før_kommentar := read_index;
if tegn = 58 then label_fundet := read_index;
end;
end
else
if tegn = 59 then tegn := 46;
line(read_index) := tegn;
end pak_tegn;
procedure tryk_tegn(tegn);
value tegn; integer tegn;
begin
outchar(out,tegn);
if tegn = 10 then printed := 0 else printed := printed + 1;
end tryk_tegn;
procedure print_blanke(index);
value index; integer index;
begin
integer index1;
for index1:= 1 step 1 until index do
tryk_tegn(32);
end print_blanke;
integer procedure skip_blanke(index);
value index; integer index;
begin
for index := index while line(index) = 32 do index := index + 1;
skip_blanke := index;
end skip_blank;
procedure tryk;
begin
print_index := skip_blanke(1);
if label_fundet <> 0 then
begin
print_index := print_index -1;
for print_index := print_index + 1
while line(print_index) <> 58 do
begin
tryk_tegn(line(print_index));
end;
tryk_tegn(line(print_index));
print_index:=print_index + 1;
end;
print_index := skip_blanke(print_index);
if sidste_før_kommentar <> 0 then
print_blanke(instr_margin-printed);
print_index := print_index - 1;
for print_index := print_index + 1 while
print_index <= sidste_før_kommentar do tryk_tegn(line(print_index));
print_kommentar_line;
end tryk;
procedure tryk_linie;
begin
tryk;
reset_line;
end;
algol copy.tcgproclib;
long array doc_name(1:2);
boolean connected;
integer result,create_mask;
create_mask := 1 shift 1 <* create area of length 1 *>
+ 1 <* pref. on disc *>;
if get_left_side(doc_name) = 0 then
begin
result := stack_and_connect_out(doc_name,create_mask);
if result = 0 then
connected := true
else
begin
write(out,"nl",1,"*",4,<: connect out error :>);
fp_proc(7,0,0,result);
end
end else connected := false ;
if get_int_string(<:comment:>,kommentar_margin) <> 0 then
kommentar_margin := 30;
if get_int_string(<:margin:>,instr_margin) <> 0 then
instr_margin := 8;
if get_int_string(<:right:>,højre_margin) <> 0 then
højre_margin := 132;
if get_int_string(<:section:>,prim_kommentar_margin) <> 0 then
prim_kommentar_margin := 8;
if get_int_string(<:seclimit:>,prim_kommentar_limit) <> 0 then
prim_kommentar_limit := 17;
reset_line;
for tegn_klasse := readchar(in,tegn) while tegn <> 25 do
begin
if read_index = 132 then
begin
tegn := 10;
repeatchar(in);
end;
pak_tegn;
if tegn = 10 then tryk_linie;
end;
outchar(out,tegn);
fp_proc(34) close up:(0,out,25);
fp_proc(79) terminate zone :(0,out,0);
doc_name(1) := 0;
if connected then stack_and_connect_out(doc_name,create_mask);
<* fp_proc(7) terminate program:(0,0,0); *>
end;
▶EOF◀