29 lines
1.9 KiB
Text
29 lines
1.9 KiB
Text
BEGIN
|
|
# translation of task PL/1 code, with minimal changes, semicolons required by #
|
|
# PL/1 but not allowed in Algol 68 removed, unecessary rounding removed #
|
|
# Note that in Algol 68, the loop counter is a local variable to the loop and #
|
|
# the value of j is not available outside the loops #
|
|
PROC loop body = ( INT j )VOID: #(below) ** is exponentiation: 4**3=64 #
|
|
BEGIN sum +:= ABS j; #add absolute value of J.#
|
|
IF ABS prod<2**27 AND j /= 0 THEN prod *:= j FI #PROD is small enough & J#
|
|
# ABS(n) = absolute value#
|
|
END; #not 0, then multiply it.#
|
|
#SUM and PROD are used for verification of J incrementation.#
|
|
INT prod := 1; #start with a product of unity. #
|
|
INT sum := 0; # " " " sum " zero. #
|
|
INT x := +5;
|
|
INT y := -5;
|
|
INT z := -2;
|
|
INT one := 1;
|
|
INT three := 3;
|
|
INT seven := 7;
|
|
FOR j FROM -three BY three TO ( 3**3 ) DO loop body( j ) OD;
|
|
FOR j FROM -seven BY x TO +seven DO loop body( j ) OD;
|
|
FOR j FROM 555 TO 550 - y DO loop body( j ) OD;
|
|
FOR j FROM 22 BY -three TO -28 DO loop body( j ) OD;
|
|
FOR j FROM 1927 TO 1939 DO loop body( j ) OD;
|
|
FOR j FROM x BY z TO y DO loop body( j ) OD;
|
|
FOR j FROM ( 11**x ) TO ( 11**x ) + one DO loop body( j ) OD;
|
|
print((" sum= ", whole( sum,0), newline)); #display strings to term.#
|
|
print(("prod= ", whole(prod,0), newline)) # " " " " #
|
|
END
|