<div dir="ltr">I was just wishing for streams in Project Oberon so this is timely for me. <div><br></div><div>I observe that the AOS/A2/Bluebottle Oberon code appears self contained (relying only on SYSTEM) and well-factored but it does use A2 OBJECT definitions to implement the stream functionality. <div><br></div><div>I wonder how much trouble it would be to convert those OBJECTS with PROCEDURES into RECORDS containing PROCEDURE variables.  </div></div><div><br></div><div>Best Regards,</div><div>Chuck</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Apr 22, 2021 at 8:36 AM <<a href="mailto:peter@easthope.ca">peter@easthope.ca</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi, <br>
<br>
Background<br>
Studying Oberon.Mail.Mod in ETH Oberon and use of Streams therein.<br>
<br>
I wondered about the purpose and necessity of the Streams module.  <br>
Didn't find an explanation in Oberon.  The comment in A2 is helpful.<br>
<br>
MODULE Streams;   (** AUTHOR "pjm/be"; PURPOSE "I/O buffering and formatted writing and reading"; *)<br>
<br>
In Oberon.Mail.Mod<br>
  ... <br>
  PROCEDURE AddMsgHead(pos: SIGNED32);<br>
  ...  <br>
  S := Streams.OpenFileReader(msgsF, pos);<br>
<br>
That opens the messages file, msgsF. Appears that the file is not <br>
closed before "END AddMsgHead".<br>
<br>
Is that good practice?  Shouldn't msgsF be closed by the end of the <br>
procedure?<br>
<br>
Opening the msgsF at each reading of the head of a message seems <br>
inefficient. Why not open the file when the module is loaded?  Then <br>
set the rider when necessary.<br>
<br>
Ref. <a href="https://svn.inf.ethz.ch/svn/lecturers/a2/trunk/source/" rel="noreferrer" target="_blank">https://svn.inf.ethz.ch/svn/lecturers/a2/trunk/source/</a><br>
userid  infsvnh.anonymous<br>
password  anonymous<br>
<br>
TIA,                          ... P.<br>
<br>
<br>
<br>
-- <br>
VoIP: +1 604 670 0140            Bcc: peter at easthope. ca<br>
<br>
--<br>
<a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems<br>
<a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
</blockquote></div>