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;