<div dir="ltr">Hi,<div><br></div><div>I do not want to start multiple rabbit holes. But here I go. There is another version of BlackBox which is based on the 'Base' from the link given. Its url is <a href="https://blackbox.oberon.org/">https://blackbox.oberon.org/</a>. I did not dig deeper, since I already have invested time in other one, but it is on my 'explore' list.</div><div>One clear distinction is the multiple documents as multiple windows (in contrast to the BlackBox at <a href="https://blackboxframework.org/">https://blackboxframework.org/</a> , which has the multiple documents inside one Window).</div><div><br></div><div>HiH and Have fun.</div><div><br></div><div>Regards,</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jan 25, 2022 at 12:14 PM Joe Turner <<a href="mailto:medianjoe@mailfence.com">medianjoe@mailfence.com</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"><div style="font-family:arial;font-size:13px"><div>Hi Pablo,</div><div>Many thanks for the links. I wasn't aware of Blackbox or component Pascal. I use Linux but it seems to work flawlessly with Wine. The book looks really good too. <br></div><div>Joe<br></div><br><div>January 24, 2022 8:19:02 PM CET Pablo Cayuela <<a href="mailto:pablo.cayuela@gmail.com" target="_blank">pablo.cayuela@gmail.com</a>> wrote:<blockquote type="cite"><div dir="ltr"><br><br>On Mon, Jan 24, 2022 at 11:14 AM Joe Turner <<a href="mailto:medianjoe@mailfence.com" target="_blank">medianjoe@mailfence.com</a>> wrote:<br>><br>> I'm working through the book "Into the Realm of Oberon" which is written for Oberon-2. I can't figure out how to translate the following program into Oberon-07 (I'm using the OBNC compiler):<br>><br>> MODULE case;<br>> IMPORT In,Out;<br>><br>> VAR countVowels: INTEGER; ch: CHAR;<br>><br>> BEGIN<br>>   In.Open;<br>>   countVowels:=0;<br>>   LOOP<br>>     In.Char(ch);<br>>     IF ~In.Done THEN EXIT END;<br>>     CASE ch OF<br>>       "a", "e", "i", "o", "u",<br>>       "A", "E","I","O","U": INC(countVowels)<br>>     ELSE<br>>     END;<br>>   END;<br>>   Out.Int(countVowels,0);<br>>   Out.String(" vowels read.");Out.Ln;<br>> END case.<br>><br>> Oberon-07 doesn't allow LOOP, EXIT, or ELSE in CASE.<br>> Thanks in advance for any help.<br><div>></div><div><br></div><div>
<div>Hi Joe,<br></div><div>One way for you to use Oberon-2 syntax is to employ BlackBox Component Pascal Environment:</div><div><a href="https://blackboxframework.org/index.php?cID=home,en-us" target="_blank">https://blackboxframework.org/index.php?cID=home,en-us</a></div><div>One public domain good book for practicing with BB CP is this:</div><div><a href="https://cslab.pepperdine.edu/warford/ComputingFundamentals/" target="_blank">https://cslab.pepperdine.edu/warford/ComputingFundamentals/</a></div><div>And its resources:</div><div><a href="http://www.zinnamturm.eu/downloadsOS.htm#Pbox" target="_blank">http://www.zinnamturm.eu/downloadsOS.htm#Pbox</a></div><div><br></div><div>Another way to use Oberon-2 syntax is to employ Oberon System 3 with Gadgets under Windows or Linux:</div><div><a href="https://github.com/pcayuela/oldftpETHZOberon/tree/master/System3/Win95NT" target="_blank">https://github.com/pcayuela/oldftpETHZOberon/tree/master/System3/Win95NT</a></div><div><a href="https://github.com/pcayuela/oldftpETHZOberon/tree/master/System3/Unix" target="_blank">https://github.com/pcayuela/oldftpETHZOberon/tree/master/System3/Unix</a></div><div><br></div><div>In BlackBox your program counts the vowels on the viewer from where it is called. <br></div><div>In Oberon System 3, it counts the vowels after the command line in any viewer.</div><div></div><div>I've only modified your program puting the executable part inside a procedure to call it from any viewer inside of Oberon System 3 or BlackBox CP:</div><div><br></div><div>MODULE Case;<br>IMPORT In,Out;<br><br>VAR countVowels: INTEGER; ch: CHAR;<br><br>PROCEDURE Vowcount *;<br>BEGIN<br>  In.Open;<br>  countVowels:=0;<br>  LOOP<br>    In.Char(ch);<br>    IF ~In.Done THEN EXIT END;<br>    CASE ch OF<br>      "a", "e", "i", "o", "u",<br>      "A", "E","I","O","U": INC(countVowels)<br>    ELSE<br>    END;<br>  END;<br>  Out.Int(countVowels,0);<br>  Out.String(" vowels read.");Out.Ln;<br>  END Vowcount;<br>END Case.</div>

</div><div><br></div><div>Best regards,</div><div>Prof Pablo Cayuela</div><div>Argentina</div><div><br></div></div>
<pre style="font-size:13px">--<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" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br></pre></blockquote></div></div>

-- 
Sent with <a href="https://mailfence.com" target="_blank">https://mailfence.com</a>  
Secure and private email
--<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>