| 12345678910111213141516171819202122232425262728293031323334 |
- MODULE IOChanSeekProg;
- (* IOChan positioning: Position / Seek / Rewind on a file channel.
- Write 6 bytes, reopen, seek and read back. Exit 15. *)
- IMPORT IOChan, Strings;
- VAR ExitCode : INTEGER;
- VAR f : IOChan.ChanId;
- VAR name, line : ARRAY [0 .. 63] OF CHAR;
- BEGIN
- Strings.Assign("gen_ssa/_iochanseek.txt", name);
- f := IOChan.OpenWrite(name);
- IOChan.WriteString(f, "abc");
- IOChan.WriteString(f, "def");
- IF IOChan.Position(f) = 6 THEN
- ExitCode := ExitCode + 1
- ELSE ExitCode := 100 END;
- IOChan.Close(f);
- f := IOChan.OpenRead(name);
- IF IOChan.ReadChar(f) = "a" THEN ExitCode := ExitCode + 0 END;
- IF IOChan.ReadChar(f) = "b" THEN ExitCode := ExitCode + 0 END;
- IF IOChan.Position(f) = 2 THEN
- ExitCode := ExitCode + 2
- ELSE ExitCode := 101 END;
- IF IOChan.Rewind(f) THEN
- IF IOChan.ReadChar(f) = "a" THEN ExitCode := ExitCode + 0 END;
- IF IOChan.Position(f) = 1 THEN ExitCode := ExitCode + 4 END;
- IF IOChan.Seek(f, 3) THEN
- IOChan.ReadString(f, line);
- IF line = "def" THEN ExitCode := ExitCode + 8 ELSE ExitCode := 102 END
- END
- END;
- IOChan.Close(f)
- END IOChanSeekProg.
|