ðÇSyntax10.Scn.FntSyntax10b.Scn.FntSyntax10i.Scn.Fnt õÿÿÿ€‹ðIStampElemsAlloc20 Dec 96+&¸MODULE Split; (* CS, 13.09.96- *) IMPORT Files, Strings, In; PROCEDURE Do*; (** filename size (in kilobytes) *) VAR name, newName: ARRAY 256 OF CHAR; i, run, size: LONGINT; suffix: ARRAY 3 OF CHAR; buf: ARRAY 1024 OF CHAR; f, f2: Files.File; r, w: Files.Rider; BEGIN In.Open; In.Name(name); IF ~In.Done THEN In.Open; In.String(name) END ; In.LongInt(size); IF In.Done THEN f := Files.Old(name); Files.Set(r, f, 0); run := 0; WHILE ~r.eof DO COPY(name, newName); suffix[0] := CHR(run DIV 10 + ORD("0")); suffix[1] := CHR(run MOD 10 + ORD("0")); suffix[2] := 0X; Strings.Append(suffix, newName); f2 := Files.New(newName); Files.Set(w, f2, 0); i := 0; WHILE ~r.eof & (i < size) DO Files.ReadBytes(r, buf, LEN(buf)); Files.WriteBytes(w, buf, LEN(buf) - r.res); INC(i) END ; INC(run); Files.Register(f2); END ; END END Do; PROCEDURE Undo*; (** filename (without the added 00, 01,..) *) VAR name, newName: ARRAY 256 OF CHAR; run: INTEGER; suffix: ARRAY 3 OF CHAR; f, f2: Files.File; buf: ARRAY 1024 OF CHAR; r, w: Files.Rider; BEGIN In.Open; In.Name(name); IF ~In.Done THEN In.Open; In.String(name) END ; IF In.Done THEN f2 := Files.New(name); Files.Set(w, f2, 0); run := 0; REPEAT COPY(name, newName); suffix[0] := CHR(run DIV 10 + ORD("0")); suffix[1] := CHR(run MOD 10 + ORD("0")); suffix[2] := 0X; Strings.Append(suffix, newName); f := Files.Old(newName); IF f # NIL THEN Files.Set(r, f, 0); WHILE ~r.eof DO Files.ReadBytes(r, buf, LEN(buf)); Files.WriteBytes(w, buf, LEN(buf) - r.res); END ; INC(run) END ; UNTIL f = NIL ; Files.Register(f2) END END Undo; END Split.Do ^ Oberon.Exe 1423 Split.Undo ^