<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">I am sorry. There was a lot of binary
formatting information in the beginning of the source files. This
is a feature of "ETHOberon Plugin for Windows".<br>
Now it has been removed, and these are normal *.txt files.<br>
<br>
Regards<br>
Dieter<br>
<br>
Am 26.07.2017 um 11:28 schrieb Jan de Kruyf:<br>
</div>
<blockquote
cite="mid:CAA85NChv3QJCvnBgyHWTBy+D94KaJoqgB2rDg4EgBeAZjsfkqQ@mail.gmail.com"
type="cite">
<div dir="ltr">THen perhaps the character coding is something
totally foreign. Only the tool file reads in emacs.
<div><br>
</div>
<div>Jan.</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Tue, Jul 25, 2017 at 3:07 PM, Dieter
<span dir="ltr"><<a moz-do-not-send="true"
href="mailto:d.gloetzel@web.de" target="_blank">d.gloetzel@web.de</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div class="m_3966822859819969747moz-cite-prefix">The
source code and docu is in the attachment of my last
mail.<br>
<br>
Regards, Dieter
<div>
<div class="h5"><br>
<br>
Am 25.07.2017 um 14:18 schrieb Jan de Kruyf:<br>
</div>
</div>
</div>
<div>
<div class="h5">
<blockquote type="cite">
<div dir="ltr">Would you have the source code for
the *.Mod files Dieter?
<div><br>
</div>
<div>Jan.</div>
<div><br>
</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Tue, Jul 25, 2017 at
10:00 AM, Dieter <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:d.gloetzel@web.de"
target="_blank">d.gloetzel@web.de</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0
0 0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div
class="m_3966822859819969747m_9183498231220295030moz-cite-prefix">Just
to remind you, that there exists a nice
prettyprinter written by G. Feldmann,
running on ETHOberon Windows plugin.<br>
Regards,<br>
Dieter
<div>
<div class="m_3966822859819969747h5"><br>
<br>
Am 25.07.2017 um 01:44 schrieb Hans
Klaver:<br>
</div>
</div>
</div>
<blockquote type="cite">
<div>
<div class="m_3966822859819969747h5">
Jörg wrote:
<div><br>
<div>
<blockquote type="cite">
<div><span
style="font-family:Menlo-Regular;font-size:13px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">Indentation
is indeed a totally personal
thing.</span><br
style="font-family:Menlo-Regular;font-size:13px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
</div>
</blockquote>
<br>
</div>
<div>It is interesting to catalogue
the different indentation styles
used by some well known (and less
well known) programmers of Oberon
and Component Pascal source code.
With one of the exercises of the
Reiser & Wirth book as
material I wrote out various
indentation styles.
<div><br>
</div>
<div>Crudely four styles of
indentation can be discerned:</div>
<div>- No indentation (Daniel)</div>
<div>- Minimal indentation (Reiser
/ Mössenböck); the difference
between the two is in the
indentation of declarations
(e.g. VAR) at the procedure
level</div>
<div>- Classical indentation
(Wirth & Gutknecht); has the
most consistent indentation of
scope levels.</div>
<div>- Knuth indentation (Knuth /
Campbell); also quite
consistent, but rather
convoluted.<br>
<div><br>
</div>
<div><br>
</div>
<div>
<div>MODULE M; (* After
Exercise 6.4 (p. 85) from
Reiser & Wirth,
Programming in Oberon *)</div>
<div>IMPORT Out;</div>
<div>VAR i, j: INTEGER;</div>
<div>PROCEDURE A*;</div>
<div>VAR i: INTEGER;</div>
<div>PROCEDURE B(VAR i, j:
INTEGER);</div>
<div>VAR k: INTEGER;</div>
<div>BEGIN k := i; i := j; j
:= k END B;</div>
<div>BEGIN i := 2; B(i, j)</div>
<div>END A;</div>
<div>PROCEDURE C*;</div>
<div>BEGIN A; i := 2*j; </div>
<div>Out.Int(i, 5); Out.Int(j,
5); Out.Ln</div>
<div>END C;</div>
<div>BEGIN</div>
<div>END M.C</div>
<div><br>
</div>
<div>(*****************************<wbr>*********)</div>
<div><br>
</div>
<div>MODULE M; (* Daniel, <a
moz-do-not-send="true"
href="http://www.waltzballs.org/other/prog.html#track"
target="_blank">http://www.waltzballs.org/othe<wbr>r/prog.html#track</a> *)</div>
<div>IMPORT Out;</div>
<div>VAR i,j:INTEGER;</div>
<div><br>
</div>
<div>PROCEDURE A*;</div>
<div>VAR i:INTEGER;</div>
<div><br>
</div>
<div>PROCEDURE B(VAR
i,j:INTEGER);</div>
<div>VAR k:INTEGER;</div>
<div>BEGIN k:=i;i:=j;j:=kEND
B;</div>
<div><br>
</div>
<div>BEGIN i:=2;B(i,j)</div>
<div>END A;</div>
<div><br>
</div>
<div>PROCEDURE C*;</div>
<div>BEGIN A;i:=2*j; </div>
<div>Out.Int(i,5);Out.Int(j,5);Out.<wbr>Ln</div>
<div>END C;</div>
<div><br>
</div>
<div>BEGIN</div>
<div>END M.C</div>
<div><br>
</div>
<div>(*****************************<wbr>*********)</div>
<div><br>
</div>
<div>MODULE M; (* M. Reiser,
The Oberon System </div>
<div> and M. Reiser &
N. Wirth, Programming in
Oberon *)</div>
<div>IMPORT Out;</div>
<div>VAR i, j: INTEGER; </div>
<div><br>
</div>
<div>PROCEDURE A*;</div>
<div>VAR i: INTEGER;</div>
<div><br>
</div>
<div> PROCEDURE B(VAR i, j:
INTEGER);</div>
<div> VAR k: INTEGER;</div>
<div> BEGIN </div>
<div> k := i; i := j; j
:= k </div>
<div> END B;</div>
<div><br>
</div>
<div>BEGIN </div>
<div> i := 2; B(i, j)</div>
<div>END A;</div>
<div><br>
</div>
<div>PROCEDURE C*;</div>
<div>BEGIN </div>
<div> A; i := 2*j; </div>
<div> Out.Int(i, 5);
Out.Int(j, 5); Out.Ln</div>
<div>END C;</div>
<div><br>
</div>
<div>BEGIN</div>
<div>END M.C</div>
<div><br>
</div>
<div>(*****************************<wbr>********)</div>
<div><br>
</div>
<div>MODULE M; (* H.
Mössenböck, Object Oriented
Programming in Oberon-2 *)</div>
<div>IMPORT Out;</div>
<div>VAR i, j: INTEGER;</div>
<div><br>
</div>
<div>PROCEDURE A*;</div>
<div> VAR i: INTEGER;</div>
<div><br>
</div>
<div> PROCEDURE B(VAR i, j:
INTEGER);</div>
<div> VAR k: INTEGER;</div>
<div> BEGIN </div>
<div> k := i; i := j; j
:= k </div>
<div> END B;</div>
<div><br>
</div>
<div>BEGIN </div>
<div> i := 2; B(i, j)</div>
<div>END A;</div>
<div><br>
</div>
<div>PROCEDURE C*;</div>
<div>BEGIN </div>
<div> A; i := 2*j; </div>
<div> Out.Int(i, 5);
Out.Int(j, 5); Out.Ln</div>
<div>END C;</div>
<div><br>
</div>
<div>BEGIN</div>
<div>END M.C</div>
<div><br>
</div>
<div>(*****************************<wbr>*********)</div>
<div><br>
</div>
<div>MODULE M; (* Wirth &
Gutknecht, Project Oberon *)</div>
<div> IMPORT Out;</div>
<div> VAR i, j: INTEGER;</div>
<div><br>
</div>
<div> PROCEDURE A*;</div>
<div> VAR i: INTEGER;</div>
<div><br>
</div>
<div> PROCEDURE B(VAR
i, j: INTEGER);</div>
<div> VAR k:
INTEGER;</div>
<div> BEGIN </div>
<div> k := i; i :=
j; j := k </div>
<div> END B;</div>
<div><br>
</div>
<div> BEGIN </div>
<div> i := 2; B(i, j)</div>
<div> END A;</div>
<div><br>
</div>
<div> PROCEDURE C*;</div>
<div> BEGIN </div>
<div> A; i := 2*j; </div>
<div> Out.Int(i, 5);
Out.Int(j, 5); Out.Ln</div>
<div> END C;</div>
<div><br>
</div>
<div>BEGIN</div>
<div>END M.C</div>
<div><br>
</div>
<div>(*****************************<wbr>*********)</div>
<div><br>
</div>
<div>MODULE M; (* Knuth. E.g.
see: <a
moz-do-not-send="true"
href="http://brokestream.com/tex.pdf"
target="_blank">http://brokestream.com/tex.pdf</a><wbr> *)</div>
<div> IMPORT Out;</div>
<div> VAR i, j: INTEGER;</div>
<div><br>
</div>
<div> PROCEDURE A*;</div>
<div> VAR i: INTEGER;</div>
<div><br>
</div>
<div> PROCEDURE B(VAR
i, j: INTEGER);</div>
<div> VAR k:
INTEGER;</div>
<div> BEGIN k := i;
i := j; j := k </div>
<div> END B;</div>
<div><br>
</div>
<div> BEGIN i := 2;
B(i, j)</div>
<div> END A;</div>
<div><br>
</div>
<div> PROCEDURE C*;</div>
<div> BEGIN A; i :=
2*j; </div>
<div> Out.Int(i, 5);
Out.Int(j, 5); Out.Ln</div>
<div> END C;</div>
<div><br>
</div>
<div> BEGIN</div>
<div> END M.C</div>
<div><br>
</div>
<div>(*****************************<wbr>*********)</div>
<div><br>
</div>
<div>
<div>MODULE M; (* R.
Campbell, Subsystem Lib
for BlackBox Component
Framework, </div>
<div> see the Component
Pascal Collection, <a
moz-do-not-send="true"
href="http://www.zinnamturm.eu/"
target="_blank">http://www.zinnamturm.eu/</a> *)</div>
<div>IMPORT Out;</div>
<div>VAR </div>
<div> i, j : INTEGER;</div>
<div><br>
</div>
<div>PROCEDURE A*;</div>
<div> VAR </div>
<div> i : INTEGER;</div>
<div><br>
</div>
<div> PROCEDURE B(VAR i,
j : INTEGER);</div>
<div> VAR </div>
<div> k :
INTEGER;</div>
<div> BEGIN </div>
<div> k := i; i
:= j; j := k </div>
<div> END B;</div>
<div><br>
</div>
<div> BEGIN </div>
<div> i := 2; </div>
<div> B(i, j)</div>
<div> END A;</div>
<div><br>
</div>
<div>PROCEDURE C*;</div>
<div> BEGIN </div>
<div> A; </div>
<div> i := 2*j; </div>
<div> Out.Int(i, 5);
Out.Int(j, 5); Out.Ln</div>
<div> END C;</div>
<div><br>
</div>
<div>BEGIN</div>
<div>END M.C</div>
<div><br>
</div>
<div><br>
</div>
<div>Anyone can choose his
or her favourite
indentation style.</div>
<div><br>
</div>
<div>I personally don't like
the two extremes (Daniel
and Knuth / Campbell).
Imho they don't follow
Einstein's criterium "Make
it as simple as ...":
Daniel's is too simplistic
and Knuth's / Campbell's
are too convoluted.</div>
<div><br>
</div>
<div>The classic Wirth /
Gutknecht style is the
only style that is
completely consistent:
every scope has its own
indentation.</div>
<div>BlackBox uses this
style as standard. See: <a
moz-do-not-send="true"
href="https://hansklav.home.xs4all.nl/ProgrammingConventionsBB.pdf"
target="_blank">https://hansklav.home.xs4<wbr>all.nl/ProgrammingConventionsB<wbr>B.pdf</a></div>
<div><br>
</div>
<div>Some might find the
Reiser / Mössenböck styles
more aesthetically
pleasing because of their
simplicity. Although these
styles are not as
consistent as the Wirth /
Gutknecht style, in
practice this doesn't
matter much because there
is only one module scope
per compilation unit, and
nested procedures are
rarely used in Oberon
programs.</div>
<div><br>
</div>
<div>The latter styles are
used in two excellent
books: <i>The Oberon
System</i> by Martin
Reiser and <i>Object-Oriented
Programming in Oberon-2</i> by
Hanspeter Mössenböck.
These books are the two
best typeset Oberon books
there are (imho).
Unfortunately both have
long been out of print. A
scanned copy of <i>The
Oberon System</i> can be
found on the internet
here: <a
moz-do-not-send="true"
href="http://oberoncore.ru/library/reiser_the_oberon_system_user_guide_and_programmers_manual"
target="_blank">http://oberoncore.ru/lib<wbr>rary/reiser_the_oberon_system_<wbr>user_guide_and_programmers_<wbr>manual</a> ,
and there's a pdf-version
of <i>OOP in Oberon-2</i> here: <a
moz-do-not-send="true"
href="http://ssw.jku.at/Research/Books/Oberon2.pdf"
target="_blank">http://ssw.jku.<wbr>at/Research/Books/Oberon2.pdf</a> <wbr>.
In this pdf the source
code indentation is not
rendered entirely
accurately, so also have
look at a scanned version
of this book: <a
moz-do-not-send="true"
href="https://books.google.nl/books?id=BseoCAAAQBAJ&printsec=frontcover&dq=object+oriented+programming+in+oberon-2&hl=nl&sa=X&redir_esc=y#v=onepage&q=object%20oriented%20programming%20in%20oberon-2&f=false"
target="_blank">https://books.google.nl/<wbr>books?id=BseoCAAAQBAJ&printsec<wbr>=frontcover&dq=object+oriented<wbr>+programming+in+oberon-2&hl=<wbr>nl&sa=X&redir_esc=y#v=onepage&<wbr>q=object%20oriented%<wbr>20programming%20in%20oberon-2&<wbr>f=false</a></div>
<div><br>
</div>
<div>--</div>
<div>Hans Klaver</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
</div>
<div><br>
</div>
</div>
</div>
</div>
<br>
</div>
<br>
<fieldset
class="m_3966822859819969747m_9183498231220295030mimeAttachmentHeader"></fieldset>
<br>
</div>
</div>
<span>
<pre>--
<a moz-do-not-send="true" class="m_3966822859819969747m_9183498231220295030moz-txt-link-abbreviated" href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems
<a moz-do-not-send="true" class="m_3966822859819969747m_9183498231220295030moz-txt-link-freetext" href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" target="_blank">https://lists.inf.ethz.ch/mail<wbr>man/listinfo/oberon</a>
</pre>
</span></blockquote><span class="m_3966822859819969747HOEnZb"><font color="#888888">
<p>
</p>
<pre class="m_3966822859819969747m_9183498231220295030moz-signature" cols="72">--
______________________________<wbr>______
Dr. Dieter Glötzel
Im Rosengarten 27
64367 Mühltal
Tel.: 06151 / 360 82 72</pre>
</font></span></div>
--
<a moz-do-not-send="true" href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems
<a moz-do-not-send="true" href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer" target="_blank">https://lists.inf.ethz.ch/mail<wbr>man/listinfo/oberon</a>
</blockquote></div>
</div>
<fieldset class="m_3966822859819969747mimeAttachmentHeader"></fieldset>
<pre>--
<a moz-do-not-send="true" class="m_3966822859819969747moz-txt-link-abbreviated" href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems
<a moz-do-not-send="true" class="m_3966822859819969747moz-txt-link-freetext" href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" target="_blank">https://lists.inf.ethz.ch/<wbr>mailman/listinfo/oberon</a>
</pre>
</blockquote>
<p>
</p><pre class="m_3966822859819969747moz-signature" cols="72">--
______________________________<wbr>______
Dr. Dieter Glötzel
Im Rosengarten 27
64367 Mühltal
Tel.: 06151 / 360 82 72</pre></div></div></div>
--
<a moz-do-not-send="true" href="mailto:Oberon@lists.inf.ethz.ch">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems
<a moz-do-not-send="true" href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer" target="_blank">https://lists.inf.ethz.ch/<wbr>mailman/listinfo/oberon</a>
</blockquote></div>
</div>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre wrap="">--
<a class="moz-txt-link-abbreviated" href="mailto:Oberon@lists.inf.ethz.ch">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems
<a class="moz-txt-link-freetext" href="https://lists.inf.ethz.ch/mailman/listinfo/oberon">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a>
</pre>
</blockquote>
<p>
</p><pre class="moz-signature" cols="72">--
____________________________________
Dr. Dieter Glötzel
Im Rosengarten 27
64367 Mühltal
Tel.: 06151 / 360 82 72</pre></body></html>