A resource for the Oberon-07 language

Oberon-07 is a series of revisions to the Oberon language by Niklaus Wirth after his retirement from ETH Zürich, and is a derivative of two generations of languages. The first generation is that of Algol-60 and Pascal. The second generation is that of Modula-2 and Oberon. Oberon-07 is also influenced by Oberon-2 (1991-1995 by Hanspeter Mössenböck) and Component Pascal (2001, Oberon microsystems, Inc.). See www.inf.ethz.ch/person/wirth/projects.html for a brief history of N. E. Wirth's work.

MODULE gcd; IMPORT Texts, Oberon;
  VAR W: Texts.Writer;
PROCEDURE gcdlcm*;
VAR x, y, u, v: INTEGER;
  S: Texts.Scanner;
  Texts.OpenScanner(S, Oberon.Par.text,
  Texts.Scan(S); x := S.i;
  Texts.WriteString(W, " x =");
  Texts.WriteInt(W, x, 6);
  Texts.Scan(S); y := S.i;
  Texts.WriteString(W, " y =");
  Texts.WriteInt(W, y, 6);
  u := x; v := y;
  (*gcd(x,y) = gcd(x0,y0),
    x*v + y*u = 2*x0*y0*)
  WHILE x > y DO x := x - y; u := u + v
  ELSIF x < y DO y := y - x; v := v + u
  Texts.WriteInt(W, x, 6);
  Texts.WriteInt(W, (u+v) DIV 2, 6);
  Texts.Append(Oberon.Log, W.buf)
END gcdlcm;

BEGIN Texts.OpenWriter(W)
END gcd.

Pascal and Modula-2 have been standardized by the ISO/IEC. Classic Oberon was, or perhaps purposely was not, standardized through the "Oakwood Guidelines for Oberon-2 Compiler Developers", which defined a minimal standard library, and extensions for classic Oberon implementations. Oberon-07 is defined in The Programming Language Oberon, sometimes called the Oberon Report.

The Oberon Report was first published in September 1987 (ETH Zürich) as a revision of the Modula-2 Report (PIM3). A follow up was published in July 1988, with corrections in January 1989, and revised in September 1989 (ETH Zürich Report 111), October 1990, November 1990 (Report 143), and a final polished version in 1992 with the publication of Programming in Oberon: Steps Beyond Pascal. The first Oberon-07 Report was finished in 2007 (published in 2008) as a revision of the October 1990 Report, and revised in 2011, 2013, and in February, March, and June of 2014, and February and March of 2015. (The February 2014 Report was mislabeled as the October 2013 Report. The June 2014 Report was mislabeled as the March 2014 Report.) The current Oberon Report was published as a PDF 19 March 2015, labeled 18 March 2015 (silently correcting an appendix oversight in the 18 March version).


There is a chat room at chat.freenode.net, #oberon, that discusses all things related to Oberon. Also, see Usenet: comp.lang.oberon. Finally, the ETH Oberon mailing list: https://lists.inf.ethz.ch/mailman/listinfo/oberon.