RosettaCodeData/Task/Pointers-and-references/Modula-3/pointers-and-references-3.mod3

14 lines
323 B
Plaintext

PROCEDURE Sum(READONLY a: ARRAY OF REFANY): REAL =
VAR sum := 0.0;
BEGIN
FOR i := FIRST(a) TO LAST(a) DO
TYPECASE a[i] OF
| NULL => (* skip *)
| REF INTEGER (e) => sum := sum + FLOAT(e^);
| REF REAL(e) => sum := sum + e^;
ELSE (* skip *)
END;
END;
RETURN sum;
END Sum;