t_record.mod 560 B

123456789101112131415161718192021
  1. MODULE TRecord;
  2. // Nested records, array fields, whole-record deep copy,
  3. // field-designator WITH. Exit 160.
  4. TYPE Point = RECORD x, y : INTEGER END;
  5. TYPE Rect = RECORD org, ext : Point; tags : ARRAY [0..1] OF INTEGER END;
  6. VAR ExitCode : INTEGER;
  7. VAR r1, r2 : Rect;
  8. BEGIN
  9. r1.org.x := 3;
  10. r1.org.y := 4;
  11. r1.ext.x := 10;
  12. r1.ext.y := 20;
  13. r1.tags[0] := 7;
  14. r1.tags[1] := 8;
  15. r2 := r1;
  16. r1.tags[0] := 99;
  17. WITH r2.org DO
  18. x := x + 100
  19. END;
  20. ExitCode := r2.org.x + r2.org.y + r2.ext.x + r2.ext.y + r2.tags[0] + r2.tags[1] + r2.tags[1]
  21. END TRecord.