DEADSOFTWARE

Реализовано несколько процедур записи в Files, исправление проблем в SYSTEM и Oberon
[dsw-obn.git] / rtl / Oberon.obn
1 MODULE Oberon;
3 IMPORT Args, Texts, Out;
5 TYPE
6 ParList* = POINTER TO ParRec;
7 ParRec* = RECORD
8 text*: Texts.Text;
9 pos*: LONGINT
10 END;
12 VAR
13 Log*: Texts.Text;
14 Par*: ParList;
16 R: Texts.Reader;
17 W: Texts.Writer;
19 (*
20 PROCEDURE GetClock* (VAR t, d: LONGINT);
22 PROCEDURE Time* (): LONGINT;
23 *)
25 PROCEDURE PopulateParams;
26 VAR W: Texts.Writer; i: INTEGER; str: ARRAY 256 OF CHAR;
27 BEGIN
28 Texts.OpenWriter(W);
29 i := 1;
30 WHILE i < Args.count DO
31 Args.GetArg(i, str); Texts.WriteString(W, str); Texts.Write(W, " ");
32 Out.String("Param "); Out.Int(i, 0); Out.Char(" "); Out.String(str); Out.Ln;
33 INC(i)
34 END;
35 Texts.Append(Par.text, W.buf);
36 END PopulateParams;
38 PROCEDURE GetSelection*(VAR text: Texts.Text; VAR beg, end, time: LONGINT);
39 BEGIN text := NIL; beg := 0; end := 0; time := 0
40 END GetSelection;
42 (* --- Notifier for echoing to the comsole all text appended to the log. --- *)
43 PROCEDURE LogNotifier(Log: Texts.Text; op: INTEGER; beg, end: LONGINT);
44 VAR ch: CHAR;
45 BEGIN
46 Texts.OpenReader(R, Log, beg);
47 WHILE ~R.eot & (beg < end) DO
48 Texts.Read(R, ch);
49 IF ch = 0DX THEN Out.Ln ELSE Out.Char(ch) END;
50 INC(beg)
51 END
52 END LogNotifier;
54 BEGIN
55 NEW(Par);
56 NEW(Par.text);
57 Par.pos := 0;
58 Texts.Open(Par.text, "");
59 PopulateParams;
60 NEW(Log);
61 Texts.Open(Log, "");
62 Log.notify := LogNotifier;
63 END Oberon.