FileIO.mod 980 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. IMPLEMENTATION MODULE FileIO ;
  2. FROM SYSTEM IMPORT ADR ;
  3. FROM StreamFile IMPORT Open, Close ;
  4. FROM IOChan IMPORT ChanId, RawRead, RawWrite ;
  5. FROM ChanConsts IMPORT FlagSet, OpenResults, readFlag, writeFlag,
  6. oldFlag, rawFlag, opened ;
  7. VAR
  8. fs : FlagSet ;
  9. cid : ChanId ;
  10. res : OpenResults ;
  11. PROCEDURE ReadFile (name: ARRAY OF CHAR; VAR data: ARRAY OF CHAR;
  12. VAR got: CARDINAL) : BOOLEAN ;
  13. BEGIN
  14. fs := FlagSet {readFlag, oldFlag, rawFlag} ;
  15. Open (cid, name, fs, res) ;
  16. IF res # opened THEN
  17. RETURN FALSE ;
  18. END ;
  19. RawRead (cid, ADR (data), HIGH (data) + 1, got) ;
  20. Close (cid) ;
  21. RETURN TRUE ;
  22. END ReadFile ;
  23. PROCEDURE WriteFile (name: ARRAY OF CHAR; VAR data: ARRAY OF CHAR;
  24. n: CARDINAL) : BOOLEAN ;
  25. BEGIN
  26. fs := FlagSet {writeFlag, rawFlag} ;
  27. Open (cid, name, fs, res) ;
  28. IF res # opened THEN
  29. RETURN FALSE ;
  30. END ;
  31. RawWrite (cid, ADR (data), n) ;
  32. Close (cid) ;
  33. RETURN TRUE ;
  34. END WriteFile ;
  35. END FileIO.