semerr6.pl5 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. (*
  2. * Das Programm enthaelt fehlerhafte Typdefinitionen
  3. * mit vielen Folgefehlern.
  4. * Gut ist es, wenn nur fuer die gekennzeichneten Zeilen
  5. * Fehlermeldungen ausgegeben werden.
  6. *)
  7. VAR m : array1;
  8. TYPE t0 = ARRAY 3 OF ARRAY 2 OF t2; (* Fehler im Elementtyp *)
  9. PROCEDURE read(VAR k: array0);
  10. VAR i : INTEGER;
  11. VAR x : array0;
  12. BEGIN
  13. i := 1;
  14. WHILE i <= 7 DO
  15. input(x[i]);
  16. i := i + 1
  17. END DO;
  18. k := x;
  19. writeReverse(m);
  20. END;
  21. TYPE array1 = ARRAY 3 OF array0; (* zykl. Typdefinition *)
  22. TYPE t2 = ARRAY 2 OF input; (* unzul. Elementtyp *)
  23. PROCEDURE writeReverse(m: array1);
  24. VAR x : array0;
  25. VAR i : INTEGER;
  26. BEGIN
  27. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  28. ;; x := m[2]; ;;
  29. IF m[1][1] > 0 THEN ;;
  30. ;; i := 7; ;;
  31. ;; WHILE i >= 1 DO ;;
  32. ;; !x[i]; ;;
  33. ;; m[2][i] := 0 ;;
  34. ;; i := i - 1 ;;
  35. ;; END DO ;;
  36. ;; m[1][1] := m[1][1] - 1 ;;
  37. ;; writeReverse(m) ;;
  38. END IF;;;;;;;;;;;;;;;;;;;;;;;;;
  39. END;
  40. TYPE array0 = ARRAY 7 OF array; (* zykl. Typdefinition *)
  41. PROCEDURE input(VAR i: INTEGER);
  42. BEGIN
  43. ?i
  44. END;
  45. TYPE array = ARRAY 7 OF array0; (* zykl. Typdefinition *)
  46. BEGIN
  47. m[1][1] := 2;
  48. read(m[2]);
  49. m[1][1] := 1;
  50. writeReverse(m)
  51. END.