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;