Syntax10.Scn.Fnt Syntax10b.Scn.Fnt MODULE Out; (* Stream-oriented text output, MR 1992, NW 26.11.92 *) (* Procedures Fx from Out from Loinz added, Ralf Degner 25.12.95 *) IMPORT Texts, Oberon; VAR W: Texts.Writer; PROCEDURE Char*(ch: CHAR); BEGIN Texts.Write(W, ch); Texts.Append(Oberon.Log, W.buf) END Char; PROCEDURE String*(str: ARRAY OF CHAR); BEGIN Texts.WriteString(W, str); Texts.Append(Oberon.Log, W.buf) END String; PROCEDURE Int*(i, n: LONGINT); BEGIN Texts.WriteInt(W, i, n); Texts.Append(Oberon.Log, W.buf) END Int; PROCEDURE Real*(x: REAL; n: INTEGER); BEGIN Texts.WriteReal(W, x, n); Texts.Append(Oberon.Log, W.buf) END Real; PROCEDURE LongReal*(x: LONGREAL; n: INTEGER); BEGIN Texts.WriteLongReal(W, x, n); Texts.Append(Oberon.Log, W.buf) END LongReal; PROCEDURE Ln*; BEGIN Texts.WriteLn(W); Texts.Append(Oberon.Log, W.buf) END Ln; PROCEDURE Open*; VAR r: Texts.Reader; ch: CHAR; BEGIN Texts.OpenReader(r, Oberon.Log, Oberon.Log.len-1); Texts.Read(r, ch); IF ch # 0DX THEN Ln END END Open; (* Fx from Linz *) PROCEDURE F0 (s: ARRAY OF CHAR; x: ARRAY OF LONGINT); VAR i, j: INTEGER; BEGIN (*CheckOpen*); i := 0; j := 0; WHILE s[i] # 0X DO IF s[i] = "$" THEN Ln ELSIF s[i] = "#" THEN Int(x[j], 0); INC(j) ELSE Texts.Write(W, s[i]) END; INC(i) END; Texts.Append(Oberon.Log, W.buf) END F0; PROCEDURE F* (s: ARRAY OF CHAR; x: LONGINT); VAR a: ARRAY 4 OF LONGINT; BEGIN a[0] := x; F0(s, a) END F; PROCEDURE F2* (s: ARRAY OF CHAR; x, y: LONGINT); VAR a: ARRAY 4 OF LONGINT; BEGIN a[0] := x; a[1] := y; F0(s, a) END F2; PROCEDURE F3* (s: ARRAY OF CHAR; x, y, z: LONGINT); VAR a: ARRAY 4 OF LONGINT; BEGIN a[0] := x; a[1] := y; a[2] := z; F0(s, a) END F3; PROCEDURE F4* (s: ARRAY OF CHAR; x, y, z, u: LONGINT); VAR a: ARRAY 4 OF LONGINT; BEGIN a[0] := x; a[1] := y; a[2] := z; a[3] := u; F0(s, a) END F4; BEGIN Texts.OpenWriter(W); Open END Out.