53 lines
1.6 KiB
Plaintext
53 lines
1.6 KiB
Plaintext
/* To process readings produced by automatic reading stations. */
|
|
|
|
check: procedure options (main);
|
|
declare 1 date, 2 (yy, mm, dd) character (2),
|
|
(j1, j2) character (1);
|
|
declare old_date character (6);
|
|
declare line character (330) varying;
|
|
declare R(24) fixed decimal, Machine(24) fixed binary;
|
|
declare (i, k, n, faulty static initial (0)) fixed binary;
|
|
declare input file;
|
|
|
|
open file (input) title ('/READINGS.TXT,TYPE(CRLF),RECSIZE(300)');
|
|
|
|
on endfile (input) go to done;
|
|
|
|
old_date = '';
|
|
k = 0;
|
|
do forever;
|
|
k = k + 1;
|
|
|
|
get file (input) edit (line) (L);
|
|
get string(line) edit (yy, j1, mm, j2, dd) (a(4), a(1), a(2), a(1), a(2));
|
|
|
|
line = substr(line, 11);
|
|
|
|
do i = 1 to length(line);
|
|
if substr(line, i, 1) = '09'x then substr(line, i, 1) = ' ';
|
|
end;
|
|
line = trim(line);
|
|
n = tally(line, ' ') - tally (line, ' ') + 1;
|
|
|
|
if n ^= 48 then
|
|
do;
|
|
put skip list ('There are ' || n || ' readings in line ' || k);
|
|
end;
|
|
|
|
n = n/2;
|
|
line = line || ' ';
|
|
|
|
get string(line) list ((R(i), Machine(i) do i = 1 to n));
|
|
|
|
if any(Machine < 1) ^= '0'B then
|
|
faulty = faulty + 1;
|
|
if old_date ^= ' ' then if old_date = string(date) then
|
|
put skip list ('Dates are the same at line' || k);
|
|
old_date = string(date);
|
|
end;
|
|
done:
|
|
put skip list ('There were ' || k || ' sets of readings');
|
|
put skip list ('There were ' || faulty || ' faulty readings' );
|
|
put skip list ('There were ' || k-faulty || ' good readings' );
|
|
end check;
|