SIMULA is a general purpose programming language. It inherits the algorithmic properties of ALGOL 60 and introduces methods for structuring data. The main characteristic of SIMULA is that it is easily modelled towards specialized problem areas, and hence can be used as a basis for Special Application Languages.
In this Standard the name SIMULA is considered synonymous with SIMULA 67. Although there exists a predecessor, SIMULA I, this latter language has achieved limited use. It is recommended that the language defined in this Standard be referred to as "Standard SIMULA".
SIMULA includes most of the ALGOL 60 language. Wherever ALGOL is used in this Standard it relates to the STANDARD ALGOL 60 definition (ISO 1538).
This Standard establishes the definition of the programming language SIMULA and specifies conformity rules to related products, such as programs and processors. Its purpose is to facilitate interchange and promote portability of SIMULA programs between data processing systems.
This Standard specifies:
This Standard does not specify:
ISO 646-1973: The 7-bit coded character set for information processing
ISO 1538-1984: Programming languages - ALGOL 60
ISO 2022-1982: ISO 7-bit and 8-bit coded character sets
"Common Base Language" by O.-J. Dahl, B. Myhrhaug and K. Nygaard Norwegian Computing Center 1984. (ISBN 82-539-0225-5)
For the purpose of this Standard the following definitions apply.
Several terms used in this Standard are explained at the appropriate place in Part II (Description of the language). For convenience some of these have been included here too, at times with a simplified definition. It is understood, however, that no difference of meaning is considered to exist, and all definitions of a term are equivalent.
A text, that is a sequence of characters or typographical marks, meant to be a sequence of tokens constituting a SIMULA program.
A potential program that is a program according to the rules in this Standard.
A potential program that is not a program but can be turned into one by deleting or inserting a number of symbols.
A sequence of actions specified by the semantics to be carried out.
A valid program whose elaboration is defined by this Standard for an indicated class of input data.
A compiler, translator or interpreter, in combination with a data processing system, that accepts a potential program, transcribed in a form that can be processed by that data processing system, reports whether the potential program is valid or not, and if so requested is able to execute it, if it has not rejected it.
A well-documented processor is said to establish an implementation of the language SIMULA.
The version of the language defined by the implementation.
A rule in the implemented language that
What is to be specified for each implementation.
What is left to the discretion of the implementor.
Conformity to this Standard requires for a program that
Conformity to this Standard requires for a processor that
It is required for the documents accompanying a conforming processor that these shall describe clearly
A conforming implementation shall comply with the above requirements for a processor and its accompanying documents.
The requirements specified in 4.1 shall allow for quantitative restrictions to rules stated or implied as having no such restriction in this Standard, but only if they are fully described in the documents with the implementation. These restrictions are to be considered implementation-defined in as far as they are not dependent of any momentary resource restraint during execution of a program.
An implementation that allows for extensions in the implemented language is considered to conform to this Standard, notwithstanding 4.1 if
Extensions are allowed only if the following conditions are fulfilled:
An implementation which allows extensions, shall give warning messages for the use of such extensions.
Valid programs using extensions shall be described as "conforming to the SIMULA Standard but for the following indicated parts".
This Standard does not include subsets.
Whether an implementation is a conforming implementation may possibly be detected by a suite of test programs. If there is any uncertainty or doubt regarding acceptance of these programs then the conclusion drawn from the actual behavior of the processor will prevail over those derived from its accompanying documents.
Appendices contained within this document are not part of this Standard.