[Oberon] Oberon Digest, Vol 237, Issue 4 , In.Char(ch);
Daniel Schmid
daniel.schmid at bluemail.ch
Wed Feb 14 09:49:14 CET 2024
Dear Hans, thanks a lot for your reply.
> Which development environment do you use?
=> The current AOS (A2) environnement/IDE/compiler from ETH.
https://gitlab.inf.ethz.ch/felixf/oberon
> Which Oberon operating system do you use?
=> Debian Linux 12 "Bookworm"
https://debian.ethz.ch/
> Use In.Done() in Print.Me
=> there is no Open() Procedure in In.Mod
Kind regards
Daniel
On Sun, 2024-02-11 at 12:00 +0100, oberon-request at lists.inf.ethz.ch
wrote:
> Send Oberon mailing list submissions to
> oberon at lists.inf.ethz.ch
>
> To subscribe or unsubscribe via the World Wide Web, visit
> https://lists.inf.ethz.ch/mailman/listinfo/oberon
> or, via email, send a message with subject or body 'help' to
> oberon-request at lists.inf.ethz.ch
>
> You can reach the person managing the list at
> oberon-owner at lists.inf.ethz.ch
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of Oberon digest..."
>
>
> Today's Topics:
>
> 1. Re: Oberon Digest, Vol 237, Issue 2 (Hans Klaver)
>
>
> ---------------------------------------------------------------------
> -
>
> Message: 1
> Date: Sat, 10 Feb 2024 17:21:40 +0100
> From: Hans Klaver <hklaver at dds.nl>
> To: ETH Oberon and related systems <oberon at lists.inf.ethz.ch>
> Subject: Re: [Oberon] Oberon Digest, Vol 237, Issue 2
> Message-ID: <1A4F0199-77A5-432D-BF59-D08B06B35536 at dds.nl>
> Content-Type: text/plain; charset=us-ascii
>
> Hi Daniel,/ developm/ development environment ent environment
>
> You wrote:
>
> > Have no idea how to In.Char(ch);
> >
> > About 1000 lines of code seem to work fine (a server to poll remote
> > devices via tcp) but now i would like to get a user keyboard input
> > but i get stuck:
> >
> > PROCEDURE Test2;
> > VAR b: BOOLEAN; ch: CHAR;
> > BEGIN(*PROCEDURE*)
> > Out.String("input: ");
> > b:= In.Char(cWhich Oberon compiler / operating system /
> > development environment do
> you use?
>
> Unfortunately different implementations of Module In may vary
> somewhat inWhich Oberon compiler / operating system / development
environment do
> you use? their use:
> > > h);
> > Out.Char(ch);
> > END(*PROCEDURE*) T/ development environment est2;
> >
> > compiles fine but doesn't even stop for an input? any idea/hint?
> / develop/ development environment ment environment
> Which Oberon compiler / operating system / development environment do
> you use?
>
> Unfortunately different implementations of Module In may vary
> somewhat in their use:
>
> - Sometimes In.Open has to be called first to initialize the input
> stream.
> - It is unusual that In.Char(ch) returns a boolean; all
> implementations of
> module In that I know use procedures with VAR parameters for input
> and
> do not return any value like your implementation appears to do.
> - Most implementations of In use a boolean variable In.Done that is
> declared outside any of the procedures of In (so it is a global
> variable
> of module In), which can be tested to see if all the input up to
> the test
> was suc/ development environment cessful.
>
> For example using the OBNC command line compiler for
> Windows/Linux/macOS
> the following should work:
>
> MODULE TestIn;
> IMPORT In, Out;
>
> PROCEDURE Test2;
> VAR ch: CHAR;
> BEGIN
> Out.String("Input a character and then press <enter>: ");
> In.Open; (* in OBNC this has no effect, but you could try it
> *)
> In.Char(ch);
> IF In.Done THEN
> Out.Char(ch)
> ELSE (* not useful for this
> character input, *)
> Out.String("Parameter error") (* but is useful for other
> input types *)
> END;
> Out.Ln
> END Test2;
>
> BEGIN
> Test2
> END TestIn.
>
>
> Another example is the use of In in the Oberon System, which has no
> command line.
> There its use is more like described in the book by Reiser & Wirth
> "Programming
> in Oberon". After compilation the following module prints itself to
> the System.Log
> text, even before the text is saved to a file:
>
> MODULE Print; (* Hans Klaver, 09-May-1999 *)
> (** To execute mark this viewer with * and middle-click Print.Me
> **)
> IMPORT In, Out;
>
> PROCEDURE Me*;
> VAR ch: CHAR;
> BEGIN
> In.Open; (* is obligatory in the Oberon System! *)
> In.Char(ch);
> WHILE In.Done DO
> Out.Char(ch);
> In.Char(ch)
> END
> END Me;
>
> END Print.Me*
>
>
> In Wirth's latest version of the Oberon System:
> https://people.inf.ethz.ch/wirth/ProjectOberon/index.html
> modules In.Mod and Out.Mod are lacking. In that case you
> could use my In.Mod and Out.Mod:
> https://github.com/hansklav/Oberon-07
>
> Some other versions of the Oberon System include In.Mod and Out.Mod,
> e.g. https://github.com/andreaspirklbauer/Oberon-extended
>
>
> Regards,
>
> Hans Klaver
>
>
>
> ------------------------------
>
> Subject: Digest Footer
>
> --
> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related
> systems
> https://lists.inf.ethz.ch/mailman/listinfo/oberon
>
>
> ------------------------------
>
> End of Oberon Digest, Vol 237, Issue 4
> **************************************
More information about the Oberon
mailing list