<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>