| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- IMPLEMENTATION MODULE LongIO;
- (* Builds the text with LongStr and writes it through IOChan. *)
- IMPORT IOChan, LongStr, ConvTypes;
- PROCEDURE WritePadded (cid : IOChan.ChanId; VAR s : ARRAY OF CHAR;
- width : CARDINAL);
- VAR n, i : CARDINAL;
- pad : ARRAY [0 .. 127] OF CHAR;
- BEGIN
- n := 0;
- WHILE (n <= HIGH(s)) AND (s[n] # CHR(0)) DO INC(n) END;
- IF width > n THEN
- i := 0;
- WHILE (i < width - n) AND (i <= HIGH(pad)) DO
- pad[i] := " "; INC(i)
- END;
- pad[i] := CHR(0);
- IOChan.WriteString(cid, pad)
- END;
- IOChan.WriteString(cid, s)
- END WritePadded;
- PROCEDURE WriteFloat (cid : IOChan.ChanId; real : LONGREAL;
- sigFigs : CARDINAL; width : CARDINAL);
- VAR s : ARRAY [0 .. 127] OF CHAR;
- BEGIN
- LongStr.RealToFloat(real, sigFigs, s);
- WritePadded(cid, s, width)
- END WriteFloat;
- PROCEDURE WriteEng (cid : IOChan.ChanId; real : LONGREAL;
- sigFigs : CARDINAL; width : CARDINAL);
- VAR s : ARRAY [0 .. 127] OF CHAR;
- BEGIN
- LongStr.RealToEng(real, sigFigs, s);
- WritePadded(cid, s, width)
- END WriteEng;
- PROCEDURE WriteFixed (cid : IOChan.ChanId; real : LONGREAL;
- place : INTEGER; width : CARDINAL);
- VAR s : ARRAY [0 .. 127] OF CHAR;
- BEGIN
- LongStr.RealToFixed(real, place, s);
- WritePadded(cid, s, width)
- END WriteFixed;
- PROCEDURE WriteReal (cid : IOChan.ChanId; real : LONGREAL;
- width : CARDINAL);
- BEGIN
- IF width <= 16 THEN
- WriteFixed(cid, real, 6, width)
- ELSE
- WriteFloat(cid, real, 6, width)
- END
- END WriteReal;
- PROCEDURE ReadReal (cid : IOChan.ChanId; VAR real : LONGREAL);
- VAR s : ARRAY [0 .. 255] OF CHAR;
- res : ConvTypes.ConvResults;
- BEGIN
- IOChan.ReadString(cid, s);
- LongStr.StrToReal(s, real, res)
- END ReadReal;
- END LongIO.
|