<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    If by volatile you mean<br>
    "In <a href="https://en.wikipedia.org/wiki/Computer_programming"
      title="Computer programming">computer programming</a>,
    particularly in the <a
      href="https://en.wikipedia.org/wiki/C_%28programming_language%29"
      title="C (programming language)">C</a>, <a
      href="https://en.wikipedia.org/wiki/C%2B%2B" title="C++">C++</a>,
    <a
      href="https://en.wikipedia.org/wiki/C_Sharp_%28programming_language%29"
      title="C Sharp (programming language)">C#</a>, and <a
      href="https://en.wikipedia.org/wiki/Java_%28programming_language%29"
      title="Java (programming language)">Java</a> <a
      href="https://en.wikipedia.org/wiki/Programming_language"
      title="Programming language">programming languages</a>, the <b>volatile</b>
    <a
      href="https://en.wikipedia.org/wiki/Keyword_%28computer_programming%29"
      class="mw-redirect" title="Keyword (computer programming)">keyword</a>
    indicates that a <a
      href="https://en.wikipedia.org/wiki/Value_%28computer_science%29"
      title="Value (computer science)">value</a> may change between
    different accesses, even if it does not appear to be modified. This
    keyword prevents an <a
      href="https://en.wikipedia.org/wiki/Optimizing_compiler"
      title="Optimizing compiler">optimizing compiler</a> from
    optimizing away subsequent reads or writes and thus incorrectly
    reusing a stale value or omitting writes. Volatile values primarily
    arise in hardware access (<a
      href="https://en.wikipedia.org/wiki/Memory-mapped_I/O"
      title="Memory-mapped I/O">memory-mapped I/O</a>), where reading
    from or writing to memory is used to communicate with <a
      href="https://en.wikipedia.org/wiki/Peripheral_device"
      class="mw-redirect" title="Peripheral device">peripheral devices</a>,
    and in <a
      href="https://en.wikipedia.org/wiki/Thread_%28computing%29"
      title="Thread (computing)">threading</a>, where a different thread
    may have modified a value."<br>
    <br>
    Then I would say any variable, x, exported from a module m as read
    only, m.x-, would be nonvolatile to modules external to m.  A call
    to any procedure m.p could, of course, change the value of m.x.  The
    Oberon language (at least to my knowledge) does not support the
    concept volatile.<br>
    What is the need driving your question?<br>
    <br>
    -Doug Danforth<br>
    <br>
    <div class="moz-cite-prefix">On 7/28/2016 9:27 AM, Srinivas Nayak
      wrote:<br>
    </div>
    <blockquote cite="mid:579A326E.6080704@gmail.com" type="cite">Dear
      All,
      <br>
      <br>
      In Oberon, do we have a way to specify, if a variable is volatile?
      <br>
      If not, how do we work around for such a need?
      <br>
      <br>
    </blockquote>
    <br>
  </body>
</html>