(* David Kotz, from Peter Su 1991 *) SYSTEM scan; CONST n = 16; CONFIGURATION list[1..n]; CONNECTION left: list[i] <-> list[i-1].right; SCALAR k: integer; a: ARRAY[1..n] OF integer; VECTOR val: integer; PROCEDURE plus_scan (VECTOR VAR x: integer); SCALAR i,m : integer; VECTOR temp1 : integer; res : integer; BEGIN m := 1; PARALLEL res := x; temp1 := x; ENDPARALLEL; WHILE m < n DO PARALLEL PROPAGATE.right^m(res,temp1); IF id_no > m THEN res := res + temp1; END; ENDPARALLEL; m := m * 2; END (* while *); PARALLEL x := res; ENDPARALLEL; END plus_scan; BEGIN WriteString("Enter "); WriteInt(n,3); WriteString(" numbers"); WriteLn; FOR k:=1 TO n DO readint(a[k]) END; load(val,a); plus_scan(val); WriteInt(val,4); writeln; END scan.