<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Dieter,<br>
    (1)Forward declarations can be used but are not necessary.<br>
    A procedure must be defined before it can be used.<br>
    (2) Arrays can be assigned.<br>
     <br>
    Assignment compatible<br>
    An expression e of type Te is assignment compatible with a variable
    v of type Tv if one of the following conditions hold:<br>
    1.  Te and Tv are equal and neither abstract, extensible, or limited
    record nor open array types;<br>
    2.  Te and Tv are numeric or character types and Tv includes Te;<br>
    3.  Te and Tv are pointer types and Te is an extension of Tv;<br>
    4.  Tv is a pointer or a procedure type and e is NIL;<br>
    5.  Tv is a numeric type and e is a constant expression whose value
    is contained in Tv;<br>
    6.  Tv is an array of CHAR, Te is String or Shortstring, and LEN(e)
    < LEN(v);<br>
    7.  Tv is an array of SHORTCHAR, Te is Shortstring, and LEN(e) <
    LEN(v);<br>
    8.  Tv is a procedure type and e is the name of a procedure whose
    formal parameters match those of Tv.<br>
    <br>
    Array compatible<br>
    An actual parameter a of type Ta is array compatible with a formal
    parameter f of type Tf if<br>
    1.  Tf and Ta are equal types, or<br>
    2.  Tf is an open array, Ta is any array, and their element types
    are array compatible, or<br>
    3.  Tf is an open array of CHAR and Ta is String, or<br>
    4.  Tf is an open array of SHORTCHAR and Ta is Shortstring.<br>
    <br>
    (3) Yes, there is a module Strings which exports<br>
    <br>
    DEFINITION Strings;<br>
    <br>
        CONST<br>
            charCode = -1;<br>
            decimal = 10;<br>
            digitspace = 8FX;<br>
            hexadecimal = -2;<br>
            hideBase = FALSE;<br>
            roman = -3;<br>
            showBase = TRUE;<br>
    <br>
        PROCEDURE Extract (s: ARRAY OF CHAR; pos, len: INTEGER; OUT res:
    ARRAY OF CHAR);<br>
        PROCEDURE Find (IN s: ARRAY OF CHAR; IN pat: ARRAY OF CHAR;
    start: INTEGER; OUT pos: INTEGER);<br>
        PROCEDURE IntToString (x: LONGINT; OUT s: ARRAY OF CHAR);<br>
        PROCEDURE IntToStringForm (x: LONGINT; form, minWidth: INTEGER;
    fillCh: CHAR; showBase: BOOLEAN; OUT s: ARRAY OF CHAR);<br>
        PROCEDURE IsAlpha (ch: CHAR): BOOLEAN;<br>
        PROCEDURE IsAlphaNumeric (ch: CHAR): BOOLEAN;<br>
        PROCEDURE IsIdent (ch: CHAR): BOOLEAN;<br>
        PROCEDURE IsIdentStart (ch: CHAR): BOOLEAN;<br>
        PROCEDURE IsLower (ch: CHAR): BOOLEAN;<br>
        PROCEDURE IsNumeric (ch: CHAR): BOOLEAN;<br>
        PROCEDURE IsUpper (ch: CHAR): BOOLEAN;<br>
        PROCEDURE Lower (ch: CHAR): CHAR;<br>
        PROCEDURE RealToString (x: REAL; OUT s: ARRAY OF CHAR);<br>
        PROCEDURE RealToStringForm (x: REAL; precision, minW, expW:
    INTEGER; fillCh: CHAR; OUT s: ARRAY OF CHAR);<br>
        PROCEDURE Replace (VAR s: ARRAY OF CHAR; pos, len: INTEGER; IN
    rep: ARRAY OF CHAR);<br>
        PROCEDURE SetToString (x: SET; OUT str: ARRAY OF CHAR);<br>
        PROCEDURE StringToInt (IN s: ARRAY OF CHAR; OUT x, res:
    INTEGER);<br>
        PROCEDURE StringToLInt (IN s: ARRAY OF CHAR; OUT x: LONGINT; OUT
    res: INTEGER);<br>
        PROCEDURE StringToReal (IN s: ARRAY OF CHAR; OUT x: REAL; OUT
    res: INTEGER);<br>
        PROCEDURE StringToSet (IN s: ARRAY OF CHAR; OUT x: SET; OUT res:
    INTEGER);<br>
        PROCEDURE StringToUtf8 (IN in: ARRAY OF CHAR; OUT out: ARRAY OF
    SHORTCHAR; OUT res: INTEGER);<br>
        PROCEDURE ToLower (IN in: ARRAY OF CHAR; OUT out: ARRAY OF
    CHAR);<br>
        PROCEDURE ToUpper (IN in: ARRAY OF CHAR; OUT out: ARRAY OF
    CHAR);<br>
        PROCEDURE Upper (ch: CHAR): CHAR;<br>
        PROCEDURE Utf8ToString (IN in: ARRAY OF SHORTCHAR; OUT out:
    ARRAY OF CHAR; OUT res: INTEGER);<br>
        PROCEDURE Valid (IN s: ARRAY OF CHAR): BOOLEAN;<br>
    <br>
    END Strings.<br>
    <br>
    -Doug Danforth<br>
    <br>
    <div class="moz-cite-prefix">On 12/5/2017 5:33 AM, Dieter wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:05f0413c-d2a2-6f7e-2829-02e1f53a9c64@web.de">Has anyone
      got experience with this topic.
      <br>
      <br>
      I uncovered a few things already:
      <br>
      <br>
      (1) Blackbox seems to want forward declarations of Procedures
      <br>
      (2) The COPY command is deprecated.
      <br>
      (3) Is there anything around like MODULE "Strings"?
      <br>
      <br>
      IF anybody has a more complete comparison, I would be grateful.
      <br>
      <br>
      Regards,
      <br>
      Dieter
      <br>
      --
      <br>
      <a class="moz-txt-link-abbreviated" href="mailto:Oberon@lists.inf.ethz.ch">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related
      systems
      <br>
      <a class="moz-txt-link-freetext" href="https://lists.inf.ethz.ch/mailman/listinfo/oberon">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a>
      <br>
      <br>
    </blockquote>
    <br>
  </body>
</html>