[Oberon] How to use SYSTEM.VAL safely?

Jeff Maggio jmaggio14 at gmail.com
Wed Mar 31 17:16:34 CEST 2021

Hi All!

I'm new to the world of RISC5 and Oberon

I'm curious about the dangers of using SYSTEM.VAL for casting or type
conversion. I need to do bitwise operations on Integers and was planning on
converting them to SETs using SYSTEM.VAL. However, this webpage
<https://en.wikibooks.org/wiki/Oberon/ETH_Oberon/faqlang#bitwise> warns me
to avoid using SYSTEM.VAL because it can break garbage collection, but I
wasn't able to find any of Wirth's own documentation about it. I'm assuming
that means that there is a potential for a memory leak if not used properly?

How can I make sure I'm using SYSTEM.VAL safely? Is the following example

    PROCEDURE SetVal*(val : INTEGER);
>     (* only values between 0 and 99 are valid*)
>         VAR digit1, digit2 : SET;
>     BEGIN
>         (* Convert the integer into 2 binary-coded decimal digits*)
>         digit1 := SYSTEM.VAL(SET, val DIV 10);
>         digit2 := SYSTEM.VAL(SET, val MOD 10);
>         digit1 := LSL(digit1, 4);
>         SYSTEM.PUT(SEVENSEGADR, digit1 + digit2);
>     END SetVal;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.inf.ethz.ch/pipermail/oberon/attachments/20210331/f83612e3/attachment.html>

More information about the Oberon mailing list