TYPE data types. Building upon basic data types, new data types can be defined. Variables are always bound to data types by their declaration. Thus it is possible for the compiler to examine the type compatibility and to detect violations already during the development phase of a program. This check of the type compatibility is done also for the parameters of procedures.
Data types give a basis for communication.
Since in Oberon types can be extended, it is also possible to write generic procedures which support a whole family of types as parameters. Control over the visibility of types and the details of type declarations is in the authority of the programmer. The programmer determines which types or which type details are exported. It is possible to define abstract types. An abstract type is a type exporting no implementation details.