[Oberon] How to write this program in Oberon-07?

Pablo Cayuela pablo.cayuela at gmail.com
Mon Jan 24 20:19:02 CET 2022


On Mon, Jan 24, 2022 at 11:14 AM Joe Turner <medianjoe at mailfence.com> wrote:
>
> 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):
>
> MODULE case;
> IMPORT In,Out;
>
> VAR countVowels: INTEGER; ch: CHAR;
>
> BEGIN
>   In.Open;
>   countVowels:=0;
>   LOOP
>     In.Char(ch);
>     IF ~In.Done THEN EXIT END;
>     CASE ch OF
>       "a", "e", "i", "o", "u",
>       "A", "E","I","O","U": INC(countVowels)
>     ELSE
>     END;
>   END;
>   Out.Int(countVowels,0);
>   Out.String(" vowels read.");Out.Ln;
> END case.
>
> Oberon-07 doesn't allow LOOP, EXIT, or ELSE in CASE.
> Thanks in advance for any help.
>

Hi Joe,
One way for you to use Oberon-2 syntax is to employ BlackBox Component
Pascal Environment:
https://blackboxframework.org/index.php?cID=home,en-us
One public domain good book for practicing with BB CP is this:
https://cslab.pepperdine.edu/warford/ComputingFundamentals/
And its resources:
http://www.zinnamturm.eu/downloadsOS.htm#Pbox

Another way to use Oberon-2 syntax is to employ Oberon System 3 with
Gadgets under Windows or Linux:
https://github.com/pcayuela/oldftpETHZOberon/tree/master/System3/Win95NT
https://github.com/pcayuela/oldftpETHZOberon/tree/master/System3/Unix

In BlackBox your program counts the vowels on the viewer from where it is
called.
In Oberon System 3, it counts the vowels after the command line in any
viewer.
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:

MODULE Case;
IMPORT In,Out;

VAR countVowels: INTEGER; ch: CHAR;

PROCEDURE Vowcount *;
BEGIN
  In.Open;
  countVowels:=0;
  LOOP
    In.Char(ch);
    IF ~In.Done THEN EXIT END;
    CASE ch OF
      "a", "e", "i", "o", "u",
      "A", "E","I","O","U": INC(countVowels)
    ELSE
    END;
  END;
  Out.Int(countVowels,0);
  Out.String(" vowels read.");Out.Ln;
END Vowcount;
END Case.

Best regards,
Prof Pablo Cayuela
Argentina
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.inf.ethz.ch/pipermail/oberon/attachments/20220124/85eea35e/attachment.html>


More information about the Oberon mailing list