iochanfile_prog.mod 836 B

12345678910111213141516171819202122232425262728293031
  1. MODULE IOChanFileProg;
  2. (* IOChan over files: write a channel to a file, close, reopen for
  3. reading, read the line and integer back. Exit 3. *)
  4. IMPORT IOChan, Strings;
  5. VAR ExitCode : INTEGER;
  6. VAR f : IOChan.ChanId;
  7. VAR name, line : ARRAY [0 .. 63] OF CHAR;
  8. BEGIN
  9. Strings.Assign("gen_ssa/_iochan_tmp.txt", name);
  10. f := IOChan.OpenWrite(name);
  11. IF IOChan.IsOpen(f) THEN
  12. IOChan.WriteString(f, "line one");
  13. IOChan.WriteLn(f);
  14. IOChan.WriteInt(f, -7);
  15. IOChan.WriteLn(f);
  16. IOChan.Close(f)
  17. END;
  18. f := IOChan.OpenRead(name);
  19. IF IOChan.IsOpen(f) THEN
  20. IOChan.ReadString(f, line);
  21. IF line = "line one" THEN
  22. ExitCode := ExitCode + 1
  23. ELSE ExitCode := 90 END;
  24. IF IOChan.ReadInt(f) = -7 THEN
  25. ExitCode := ExitCode + 2
  26. ELSE ExitCode := 91 END;
  27. IOChan.Close(f)
  28. END
  29. END IOChanFileProg.