|
|
DataMuseum.dkPresents historical artifacts from the history of: RC3500 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC3500 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 6912 (0x1b00)
Types: TextFileVerbose
Names: »printlogtx«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system
└─⟦72244f0ef⟧
└─⟦this⟧ »printlogtx«
begin
integer segm_pr_block,max_block;
segm_pr_block := l{s_fp_tal(<:segm:>);
max_block := l{s_fp_tal(<:maxblock:>);
begin
zone z_in(128 * segm_pr_block,1,tapeerror),
_ z_out(128,1,stderror),
_ block_descr(max_block,1,tape_error);
real array doc_name(1:2);
real array field mess;
long field time;
long from_time,to_time,sender,receiver;
integer array field data;
integer op_code,i,block_count,line_no,old_left,new_left,mess_lgh;
boolean tape_mode,block_change;
procedure header(z);
zone z;
begin
own integer page_no;
own long print_date;
own boolean called_before;
if -, called_before then
begin
print_date := convtime(getclock);
called_before := true;
end;
page_no := page_no + 1;
write(z,"ff",1,<:UDSKRIFT AF LOG:>,"sp",10,<:19:>,<<dd dd dd>,
print_date shift (-24),<:-:>,print_date extract 24,"sp",17,<:Side :>,
<<ddd>,page_no,"nl",1,"-",69,"nl",2,
<:DATO:>,"sp",7,<:KLOKKEN:>,"sp",3,<:MODTAGER:>,"sp",6,
<:AFSENDER:>,"sp",6,<:KODE:>,"sp",3,<:DATA:>,"nl",1);
end header;
procedure tape_error(z,s,b);
zone z;
integer s,b;
begin
if -, tape_mode then stderror(z,s,b);
if s shift (-22) extract 1 = 1 then error(1) else
if s shift (-7) extract 1 = 1 then error(2) else stderror(z,s,b);
close(z,true);
goto after_tape_error;
end tape_error;
procedure error(no);
integer no;
begin
write(out,"nl",1,case no of (
<:paritetsfejl p} b}nd:>,
<:"worddefect" p} b}nd:>),
"sp",4,<:print ikke udf|rt:>,"nl",1);
end error;
readstring(in,doc_name,1);
read(in,from_time,to_time,sender,receiver,op_code);
if to_time = 0 then to_time := extend (-1) shift (-1);
line_no := 80;
mess := time := 8;
data := 0;
tape_mode := doc_name(1) <> real <:discl:> add 'o';
i := 1;
open(block_descr,if tape_mode then 18 else 4,
string doc_name(increase(i)),0);
setposition(block_descr,1,0);
inrec6(block_descr,max_block * 4);
open(z_out,4,<:logprintfil:>,0);
i := 1;
open(z_in,if tape_mode then 18 else 4,
string doc_name(increase(i)),0);
replacechar(1 <* space in number *>, '.');
for block_count := 1 step 1 until max_block do
begin
if block_descr(block_count) <> real (extend (-1)) then
begin
if to_time >= long block_descr(block_count) then
begin
setposition(z_in,1,block_count * (if tape_mode then
1 else segm_pr_block));
old_left := segm_pr_block * 4;
repeat
new_left := invar(z_in);
block_change := new_left > old_left;
if -, block_change then
begin
old_left := new_left;
if z_in.time >= from_time and z_in.time <= to_time then
begin
unpack_mess(z_in.mess);
mess_lgh := (z_in.mess.data(1) + 2) // 2;
if sender = 0 or sender = extend
z_in.mess.data(4) shift 24 add z_in.mess.data(5) then
begin
if receiver = 0 or receiver = extend
z_in.mess.data(2) shift 24 add
z_in.mess.data(3) then
begin
if op_code = 0 or op_code =
z_in.mess.data(6) shift (-8) then
begin
line_no := line_no + 1;
if line_no > 39 then
begin
header(z_out);
line_no := 0;
end;
write(z_out,"nl",1,<: 19:>,<<zd dd dd>,
convtime(z_in.time) shift (-24),"sp",1,
convtime(z_in.time) extract 24,"sp",2,<<z>,
z_in.mess.data(2) shift (-12),"-",1,<<zd>,
z_in.mess.data(2) shift (-6) extract 6,"-",1,
z_in.mess.data(2) extract 6,"-",1,<<zddd>,
z_in.mess.data(3),"sp",2,<<z>,
z_in.mess.data(4) shift (-12),"-",1,<<zd>,
z_in.mess.data(4) shift (-6) extract 6,"-",1,
z_in.mess.data(4) extract 6,"-",1,<<zddd>,
z_in.mess.data(5),"sp",2,<<zd>,
z_in.mess.data(6) shift (-12),".",1,
z_in.mess.data(6) shift (-8) extract 4,"sp",2);
i := 9;
for i := i + 1 while i <= mess_lgh do
begin
write(zout,<<ddddd>,z_in.mess.data(i),
"sp",2,<<dd>,z_in.mess.data(i) shift (-8)
extract 8,"sp",1,z_in.mess.data(i) extract 8);
if i < mess_lgh then
begin
line_no := line_no + 1;
if line_no > 39 then
begin
header(zout);
line_no := 0;
end;
write(z_out,"nl",1,"sp"57);
end;
end;
end;
end;
end;
end;
end
until block_change;
end;
end;
end;
setposition(z_in,-1,0);
after_tape_error:
close(z_in,true);
close(block_descr,true);
write(z_out,"ff",1,"em",3);
close(z_out,true);
<* convert(<:logprintfil:>); *>
end;
end
«eof»