RosettaCodeData/Task/Iterated-digits-squaring/PL-I/iterated-digits-squaring.pli
2015-11-18 06:14:39 +00:00

29 lines
788 B
Text

test: procedure options (main, reorder); /* 6 August 2015 */
declare (m, n) fixed decimal (10);
declare (i, j, p, s, tally initial (0) ) fixed binary (31);
declare d fixed binary (7);
declare (start_time, finish_time, elapsed_time) float (15);
start_time = secs();
do m = 1 to 1000000;
n = m;
do until ((n = 1) | (n = 89));
p = n; s = 0;
do while (p > 0);
d = mod(p, 10);
p = p/10;
s = s + d*d;
end;
n = s;
end;
if n = 89 then tally = tally + 1;
end;
finish_time = secs();
put skip edit (Tally, ' numbers iterated to 89') (f(10), A);
elapsed_time = finish_time - start_time;
put skip edit ('Elapsed time=', elapsed_time, ' secs') (A, F(10,3));
end test;