|
|
@@ -0,0 +1,66 @@
|
|
|
+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.
|