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.