Task attributes, file equations, library equations, and database equations are preceded by the word COMPILER or a compiler name if they are to be applied to the compilation. Otherwise, they are permanently attached to the resulting object code file. These values are assigned to the task whenever the compiled program is executed, unless the attribute values are overridden by run-time task equations.
The MODIFY statement permits task attributes, file equations, library equations, and database equations that are compiled into an executable object code file to be added to or changed, without recompiling the source file. For further information, refer to the description of the MODIFY statement provided later in this section.
Task attributes, file equations, library equations, and database equations that apply to the compilation can be mixed with ones that apply to the object code file in any order.
All expressions in task attribute assignments and file attribute assignments for the program are evaluated prior to compilation. The values obtained are stored in the object code file as if they had been specified as constants.
Typically, the source file to be used by the compiler is specified by a file equation. For an example, see “Naming the Object Code File” earlier in this section.
Examples
File equations that change the attributes of the object code file are enabled, but most are overridden by the compiler and have no effect. However, the security attributes of the object code file can be set through a file equation, as in the following example:
COMPILE OBJECT/TEST WITH ALGOL LIBRARY; COMPILER FILE CODE (SECURITYTYPE=PUBLIC,SECURITYUSE=IN);
The resulting object code file has a security of PUBLIC IN. The same effect can be achieved by using the SECURITY statement to change the security of the object code file after it is compiled.
Global file equation of the object code file produced by the compiler is not permitted. For example, if the following statement is specified, a syntax error is given:
COMPILE OBJECT/TEST WITH ALGOL; COMPILER FILE CODE:=GLOBALFILE; % Illegal syntax