RosettaCodeData/Task/Pointers-and-references/Modula-3/pointers-and-references-3.mod3
2023-07-01 13:44:08 -04:00

13 lines
323 B
Text

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;