Last Changed: July 12th, 1997
This is a conversion from Oberon text to HTML, and from German to English. The converter software is still under development,
and some features or information may be missing in this converted version.
HTML hypertext facilities are not yet active in this document.
To exploit the interactive facilities, use Oberon System 3 and the source of this text,
available for download using binary ftp as Oberon System 3 archive.
The converter from German to English is still under development as well.
A previous version is also available for Oberon V4.
To access this and other additional material use
For the convenience of our students, most of this information and the related material is available
in German as well.
Introduction to Oberon
The Oberon Programming Language
Introduction to the Oberon Programming Language
Preface and Contents
- Under development. Version: June 1998 -
The "Introduction to the Oberon programming language" is written for readers
with some mathematical background knowledge and a special interest in computer
Among other meanings, Oberon is the name for
- A research project on software
environments for work stations, carried through 1986-1989 at the Institute
for Computer Systems, ETH Zürich
- An operating system, developed
as part of the Oberon research project. The Oberon operating system can be
implemented as native (stand alone) operating system. Or it can be implemented
on top of another operating system, such as MS-DOS/Windows, Macintosh or
- A programming language.
The course focusses on the Oberon programming language. Since the first report
in 1988, the language has seen some extensions and clarifications. This course
is based on the language definition as given in the Oberon-2 report, October
1993. The Oberon language can be used indepently of the Oberon operating
The course has three parts. The first part introduces basic concepts of the
Oberon operating system and the elements of the Oberon language (modules,
types and variables, declarations, controll structures). This should be a
sufficient guide to continue with a self-paced training, for example using
Reiser and Wirth: "Programming in Oberon", Ch. 9 ff .
The second part discusses program design and implementation in Oberon, based
on examples. A special topic are principles of object oriented design and
methods of software engineering. Some additional examples to be discussed
in this context can be taken from "Project Oberon" (Wirth and Gutknecht 1992)
and "Programming in Oberon" (Reiser and Wirth 1992).
The third part is a systematic and complete walk through the language definition
"The Programming Language Oberon 2" (Mössenböck and Wirth, October
The first part can be completed in about a week. The second part is more
prone to be used in a one term course with project work in groups, to be
concluded with the third part, for example in the form of a two day repetition
For practical exercises, the Oberon operating system is used. Over time,
this has been implemented in various variants, and development is still going
on. So it is unavoidable that differences will occur between the configuration
documented here, and the configuration a reader will meet at his site at
a later time and a different location.
The original design of Oberon is documented in (Wirth and Gutknecht 1992)
and (Reiser 1991); as of this writing, the recent version is Oberon V4. An
older version of this course material, implemented for V4, is accessible
The recent development line at the ETH Zürich is Oberon system 3.
This version of of the course material has been used with Oberon system 3
Version 2.1 and system 3 Version 2.2.1. On the commercial side, BlackBox
(formerly named Oberon/F ) is available, but implemented only for Windows
Oberon system 3 with Gadgets is recommended for this course. The course is
using additional tools which can be accessed via our Oberon home page at
If this material is not accessible to you, you can use the corresponding
tools which come with the Oberon System 3 distribution.
This course is not a general introduction to your Oberon operating system.
Usually, with any implementation of an Oberon system, you will receive system
specific instructions online ("ReadMe", "DoubleClickOnMe", "Tour"). It is
strongly recommended to read the introduction which comes with your variant
of the Oberon system.
For more information on System 3, the recommended book is
A. Fischer, Hannes Marais: The
vdf Hochschulverlag AG, Zürich
1998, ISBN 3 7281 2493 1.
(c) G. Sawitzki, StatLab Heidelberg 1995 - 1998
Thank you for help, hints and support to A. Fischer, F. Friedrich, M. Fuchs,
G. Valiente and C. Werner, and to all participants of the previous Oberon
System specific hints:
General: if you are using an Oberon Version which has a flat (non-hierarchical)
file system, you have to delete the path name components (like ItO/, ItO/PIO/,
...) in all file references used in the course.
S3: the Macintosh and Windows version support file names using UNIX conventions.
On the Macintosh, new directories are created on the fly. For the Windows
version, you have to create directories yourself if needed.
S3: The native implementation for
IBM compatible PCs does not support a hierarchical file systems. You have
to change file references in the course material correspondingly.
S3: The conventions for the option
character are in transition. Depending on the version and module you are
using, the option character may be one of the following: "/", "\" or "%"
. Check your system specific documentation.
V4 general: if gsBuilder is not available, use Folds.Compile instead. To
get imbedded error marks, select the error list after compilation and use
Folds to insert error marks.
To open a file, use Edit.Open ^ (see System.Tool
V4 for Macintosh uses file names
using Macintosh conventions. Replace / by : for all file references in the
V4: Files are opened using Edit.Open.
Replace Desktops.OpenDoc ^ by Edit.Open.
If gsBuilder is not available, use Builder.Compile instead of gsBuilder.Compile.
If compilation returns an error list, select the error list and use Builder.MarkErrors
to insert error marks.