Internal parameters

This part of the initialization file must be present and must occur only
once. This section should be the first one in the initialization file.
It begins with the keyword `!param`, and ends with a line
consisting of a point. Between the keyword and the point are 20 lines
containing a number.

The 1st number is the maximal number of programs that the interpreter can store. Don't forget to modify this number if you use a lot of programs.

The 2nd number is the maximal number of instructions that a program can have.

The 3rd number if the maximal number of commands that the interpreter can accept. Don't forget to modify this number if you add a lot of commands.

The 4th number is the maximal number of lines that the *greeting message*
can have (cf. 3.8).

The 5th number is the maximal number of *messages* that the interpreter can
store (cf. 3.9).

The 6th number is the maximal number of files that the interpreter can hold
(cf. 11, commands `read` and `write`). Of course it
is possible to use other files inside the
program using the command interpreter.

The 7th number is the maximal number of *running modes* (cf.
3.2).

The 8th number is the maximal number of programs or command files actually running in each thread. This is a kind of stack parameter.

The 9th number is the maximal number of *conditions*
that the program can hold. There are two kinds of conditional jumps that
can be used in programs understood by the command interpreter (cf. 4.6).

The 10th number is the maximal number of *object types* that the
interpreter can accept (cf. 6).

The 11th number is the maximal number of arguments of a command.

The 12th number is the maximal number of *structure types* that the
interpreter can accept (cf. 6).

The 13th number is the maximal number of *labels* that can be in a program
understood by the interpreter (cf. 4). Each loop in a program
is counted as two labels.

The 14th number is the maximal number of *string variables* in
*question files*
(cf. 8).

The 15th number is the maximal number of *preceeding commands* stored by
the interpreter (cf. 11, commands `history` and
`numcom`).

The 16th number is the maximal number of *threads* that will be used,
including the main thread (cf. 10). It should be
less or equal to the maximal number of threads accepted by the thread library
(see `pthread.h`).

The 17th number is the maximal number of user defined *string variables*
(see 4.4).

The 18th number is the maximal number of substitution patterns that can be used (see 4.5).

The 19th number is the maximal number of supplementaty expression evaluators that can be used (see 7.7).

The 20th number is the maximal number of help subjects (see 9).

The 21th number is the maximal number of user defined numerical functions (see 7.3).

**Example :**

!param ; maximal number of stored programs 100 ; maximal number of lines in a program 200 ; maximal number of commands 250 ; maximal number of lines in the greeting message 20 ; maximal number of messages 500 ; maximal number of open files 10 ; maximal number of running modes 5 ; maximal number of voices 20 ; maximal number of conditions 20 ; maximal number of object types 20 ; maximal number of function arguments 10 ; maximal number of structure types 10 ; maximal number of labels in a program 100 ; maximal number of strings 10 ; number of known preceeding commands 10 ; maximal number of threads 100 ; maximal number of string variables 200 ; maximal number of substitution patterns 10 ; maximal number of expression evaluators 10 ; maximal number of help subjects 250 ; maximal number of user defined functions 250 .