This section of the initialization file is optional. It begins with a line containing the keyword !func and ends with a line containing a point. It contains the names of the commands that are implemented by the user of the command interpreter. There are already 68 built-in commands in the library (cf. 11). The commands defining objects or structures (cf. 3.5 and 3.6) are not present here (they are already defined).
Each command consists of 3 lines.
In the first the name of the command is given.
The second line contains a positive integer, which is the minimal number of arguments of the command (including the name of the command). A command with not enough arguments will be rejected by the interpreter. But commands with a variable number of arguments are allowed. In this case the consistency of the arguments must be checked by the user in the function that realizes the command.
The third line contains a list of integers : the running modes where the command is allowed. If it contains the only integer -1, all the running modes will accept the command. This is the case of all the commands that are implemented in the library.
It is a good idea (but it is not necessary) to give the list of commands in alphabetic order. Of course two commands cannot have the same name. The program must contain somewhere the list of the functions associated to the commands, and in the same order (cf. 5).
Example : beginning of a section !func
!func user_com1 4 -1 user_com2 4 -1 user_com3 2 -1 user_com4 3 -1
Several such sections can appear in an initialization file, for instance if a program is obtained by glueing several applications of the command interpreter. The names of the built-in commands of the interpreter have not to be defined in a section !func . Only the commands defined by the user are concerned.