The contents of both BasicIO and Environment have been enlarged considerably in recent years. It is likely that further extensions, such as new subclasses of File, will be made in the next year or two. The lists given here cover the attributes defined in the 1985 SIMULA Standard.
It is important to check the documentation for the SIMULA system that you are using against the lists given here. Some features may be missing and extra ones may be present. The preceding chapters have tried, with the exceptions of ByteFile and some parts of DirectFile which are new in this standard, to use only the most generally available features in examples.
When Terminate_Program is called the program ends as if a goto had been made to the final end of the program. Where the program is prefixed, the final end refers to the end of the prefixing class body.
Where the program is prefixed by a class containing an inner statement, this is the only way to guarantee that it stops immediately, except by forcing a deliberate runtime error.
zero if I=J I-(I//J)*J if I and J have the same sign J+I-(I//J)*J if I and J have different signs.
I-(I//J)*J.
if I>=0 then result =I if I<0 then result =-I.
The following are described in chapter 12:
The following are described in appendix B:
There are two further text handling procedures.
The first set reveal the range of arithmetic values and internal character values.
The others give information recorded by the compiler.
Array characteristics can be found from the following:
Date and time information are given by the following:
YYYY-MM-DD HH.MM.SS.sss...An example is 1985-11-26 08.39.23.00
The use of the negative value of a seed as the seed to a second series of drawings will produce an antithetic series of random numbers. For suitable sizes of seeds, consult the documentation for your system.
An integer in the range LowerBound(A,1) to UpperBound(A,1)+1 is returned. It is the lowest value of I such that A(I) is greater than some basic drawing.
A and B must be one dimensional long real arrays and have equal numbers of elements. The first element of each must be 0 and the last 1.
Finally there is one statistical reporting procedure:
Formally, A(LowerBound(A,1)+I) is increased by D, where I is the smallest integer such that C<= B(Lowerbound(B,1)+I). A should normally be one element longer than B. If it is not the system reacts in any appropriate way.
The highest element of A corresponds to observations larger than all elements of B.
Only a handful of text books have been written describing SIMULA. Several are not available in English. The only one that I can unreservedly recommend is SIMULA BEGIN (see bibliography) and even that is rather behind on the new developments in the language. What it does have is a marvellous feel for what is special about SIMULA.
For up to date information on the world of SIMULA users, the Association of SIMULA Users (ASU) publishes a quarterly newsletter, organises conferences and workshops, etc. They are also a pleasant, sociable bunch who are delighted to help newcomers.
On the other hand SIMULA has been used very extensively in simulation work, particularly in dicrete event and combined simulation. When I proposed writing this book, some people expressed disappointment that it was not going to be about simulation in SIMULA. There are two answers to them. Firstly, maybe one day I will write such a book, but this is needed more urgently. Secondly, there already exist some excellent books on the subject. I would like to recommend two in particular.
Discrete Event Modelling on SIMULA, by Graham Birtwistle, describes both a rudimentary amount of SIMULA and how the DEMOS simulation package can be used to extend SIMULA and make discrete event simulation easy. The package is a joy to use and constitutes what class SIMULATION would be like if it were to be written today. To use it you have to buy the package, but it is a good investment. If you are interested, contact E.R.C.C. (see implementors list).
The Process View of SIMULATION, by Bill Franta, is a seminal work on this area. It outlines a general theory of simulation using a process based approach and shows how it could be implemented in SIMULA. Well worth reading, perhaps after some experience with DEMOS, but using only SIMULA.
This helps to guarantee that nearly all programs which run on one machine will run on any other which has a SIMULA system. It does not, however, mean the SIMULA is rigidly fixed. Extensions are made regularly to add to its power.
The guarding of the standard is the responsibility of the SIMULA Standards Group (SSG) which contains representatives of all the recognised implementations. Changes and additions have to be approved by this body.
Working with the SSG is the SIMULA Development Group (SDG), which is responsible for investigating new features and problems with existing features. It contains the SSG members plus other interested parties and is less formal than the SSG.
If you have suggestions for changes or would like to raise problems you have found which you think are due to bad design of SIMULA, you should write to the chairman of the SSG. If you want to become involved in this work yourself, you should write to the chairman of the SDG. Both can be contacted at the address given for the ASU.