MODULE pos_array EXPORTS Main; IMPORT IO, Fmt; TYPE koordinaten = RECORD x,y : INTEGER := 0; END; array_koord = ARRAY [1..4] OF koordinaten; PROCEDURE print_koord(VAR koord : koordinaten) = BEGIN IO.Put("X = " & Fmt.Int(koord.x) & " Y = " & Fmt.Int(koord.y) & "\n"); END print_koord; PROCEDURE print_array(VAR feld : ARRAY OF koordinaten) = BEGIN FOR i := FIRST(feld) TO LAST(feld) DO IO.Put("Eintrag : " & Fmt.Int(i) & " "); print_koord(feld[i]); END; END print_array; VAR feld1 : array_koord; (* warum man bei feld2 noch explizit koordinaten als typ mit angeben muss, weiss ich auch nicht - modula 3 halt ;) *) feld2 := array_koord { koordinaten{1,1}, koordinaten{2,4},koordinaten{3,9}, koordinaten{4,16} }; BEGIN IO.Put("Feld 1 :\n"); print_array(feld1); IO.Put("Feld 2 :\n"); print_array(feld2); IO.Put("Feld 1 gefuellt :\n"); FOR i := FIRST(feld1) TO LAST(feld1) DO feld1[i].x := i; feld1[i].y := 2*i END; print_array(feld1); END pos_array.