<div dir="ltr"><div><br></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Aug 7, 2022 at 6:59 AM Hans Klaver <<a href="mailto:hklaver@dds.nl">hklaver@dds.nl</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">Hi all,<br>
<br>
While trying to make an Oberon-07 version of the classic predeclared function CAP I noticed some differences in the behaviour of the two compilers I use regularly.<br></blockquote><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><snip><br><br>
My questions are: <br>
- the behaviour of which of the two above mentioned existing compilers do you like best?<br>
- do you know an Oberon-07 compiler that can compile CAP0, and what do you think of it?<br><br></blockquote><div><br></div><div>I don't like any of the proposed solutions but if you are looking for efficiency over readability try this on both of your compilers:</div><div><br></div><div>  PROCEDURE CAP (ch: CHAR): CHAR;<br>      RETURN SYSTEM.VAL(CHAR, SYSTEM.VAL(SET, ORD(ch)) - {5}) <br>  END CAP;<br><br></div><div>otherwise my preference would be:</div><div><br></div><div>  PROCEDURE CAP(ch: CHAR): CHAR;<br>   (*</div>    Capitalizes ASCII lower-case letters while leaving all other characters unchanged.<br>   *)<br><div> VAR<br>    cap: CHAR;<br>  BEGIN<br>    IF (ch >= "a") & (ch <= "z") THEN cap := CHR(ORD(ch) - 32) END;<br>    RETURN cap<br>  END CAP;<br></div><div><br></div>Regards,<div>Chris Burrows</div><div>CFB Software</div><div><a href="https://www.astrobe.com/RISC5">https://www.astrobe.com/RISC5</a> </div></div></div></div>