Include File Processing
The EQUEL include statement provides a means to include external files in your program's source code. Its syntax is:
## include filename
Filename is a double quoted string constant specifying a file name or an environment variable that points to the file name. You must use the default extension ".qcb" on names of include files unless you override this requirement by specifying a different extension with the -n flag of the eqcbl command.
This statement is normally used to include variable declarations although it is not restricted to such use. For details about the include statement, see the QUEL Reference Guide.
The included file is preprocessed and an output file with the same name but with the default output extension ".cbl" for UNIX or ".lib" for VMS is generated. You can override this default output extension with the -o.ext flag on the command line. The reference in the original source file to the included file is translated in the output file to the specified include output file. If you use the -o flag, with no extension, no output file is generated for the include file. In VMS this is useful for program libraries that are using VMS MMS dependencies.
UNIX: For example, assume that no overriding output extension was explicitly given on the command line. The EQUEL statement:
## INCLUDE "employee.qcb"
is preprocessed to the COBOL statement:
COPY "employee.cbl"
and the file "employee.qcb" is translated into the COBOL file "employee.cbl.".
As another example, assume that a source file called "inputfile" contains the following include statement:
## INCLUDE "mydecls"
The name "mydecls" is defined as a system environment variable pointing to the file "/src/headers/myvars.qcb" by means of the following command at the shell level:
$ setenv mydecls /src/headers/myvars.qcb
Assume now that "inputfile" is preprocessed with the command:
$ eqcbl -o.hdr inputfile
The command line specifies ".hdr" as the output file extension for include files. As the file is preprocessed, the include statement shown earlier is translated into the COBOL statement:
COPY "/src/headers/myvars.hdr"
and the COBOL file "/src/header/myvars.hdr" is generated as output for the original include file, "/src/header/myvars.qbc."
You can also specify include files with a relative path. For example, if you preprocess the file "/src/mysource/myfile.qcb," the EQUEL statement:
## INCLUDE "../headers/myvars.qcb"
is preprocessed to the COBOL statement:
COPY "../header/myvars.cbl"
and the COBOL file "/src/headers/myvars.cbl" is generated as output for the original include file, "/src/headers/myvars.qcb."
VMS: If you use both the -o.ext flag and the -o flags, then the preprocessor generates the specified extension for the translated include statements in the program, but does not generate new output files for the statements.
For example, assume that no overriding output extension was explicitly given on the command line. The EQUEL statement:
## INCLUDE "employee.qcb"
is preprocessed to the COBOL statement:
COPY "employee.lib"
and the employee.qcb file is translated into the COBOL file "employee.lib."
As another example, assume that a source file called "inputfile" contains the following include statement:
## INCLUDE "mydecls"
The name "mydecls" is defined as a system logical name pointing to the file "dra1:[headers]myvars.qcb" by means of the following command at the DCL level:
$ define mydecls dra1:[headers]myvars.qcb
Assume now that "inputfile" is preprocessed with the command:
$ eqcbl -o.hdr inputfile
The command line specifies ".hdr" as the output file extension for include files. As the file is preprocessed, the include statement shown earlier is translated into the COBOL statement:
COPY "dra1:[headers]myvars.hdr"
and the COBOL file "dra1:[headers]myvars.hdr" is generated as output for the original include file, "dra1:[headers]myvars.qcb."
You can also specify include files with a relative path. For example, if you preprocess the file "dra1:[mysource]myfile.qcb," the EQUEL statement:
## INCLUDE "[-.headers]myvars.qcb"
is preprocessed to the COBOL statement:
COPY "[-.headers]myvars.lib"