EFD Directives
EFD directives are special comments that allow the customization of the generation of the EFD file when the -efd or -efc compiler options are used. There are three syntaxes to specify an EFD directive.
Syntax 1:
$EFD directive-name [=directive-value] |
Syntax 2:
*(( EFD directive-name [=directive-value] )) |
The $ and the * must be in the comment area, that is column 7 in ANSI source format and column 1 in Terminal source format.
If the source code is written in Free format, EFD directives can appear at any column with the following syntax.
Syntax 3:
*>(( EFD directive-name [=directive-value] )) |
The directive must appear above the field or the file that you want to customize in the FILE SECTION of the source code.
Note that no spaces are allowed between the comment symbol and the couple of parenthesis. If spaces are present, the directive is treated as a standard comment and doesn’t have effects.
For compatibility with Acucobol-GT, the XFD keyword is supported. $XFD is synonymous with $EFD, while *((XFD is synonymous with *((EFD.
EFD directives are ignored in Object and Factory methods. They can be used only in standard programs.
Defining multiple EFD directives in the same point
Multiple EFD directives can be distributed on multiple lines as follows
Fixed:
$EFD ALPHA $EFD NAME=field1 03 fd1-field1 pic 9(5). |
Terminal:
*((EFD ALPHA)) *((EFD NAME=field1)) 03 fd1-field1 pic 9(5). |
Free:
*>((EFD ALPHA)) *>((EFD NAME=field1)) 03 fd1-field1 pic 9(5). |
or merged in a single line as follows:
Fixed:
$EFD ALPHA, NAME=field1 03 fd1-field1 pic 9(5). |
Terminal:
*((EFD ALPHA, NAME=field1)) 03 fd1-field1 pic 9(5). |
Free:
*>((EFD ALPHA, NAME=field1)) 03 fd1-field1 pic 9(5). |
Splitting a EFD directive on multiple lines
A single EFD directive can be splitted on multiple lines by repeating the EFD delimiters on each line.
For example, the following snippets
Fixed:
$EFD NAME= $EFD field1 03 fd1-field1 pic 9(5). |
Terminal:
*((EFD NAME=)) *((EFD field1 )) 03 fd1-field1 pic 9(5). |
Free:
*>((EFD NAME=)) *>((EFD field1 )) 03 fd1-field1 pic 9(5). |
are equivalent to
Fixed:
$EFD NAME= field1 03 fd1-field1 pic 9(5). |
Terminal:
*((EFD NAME= EFD field1 )) 03 fd1-field1 pic 9(5). |
Free:
*>(($EFD NAME= field1 )) 03 fd1-field1 pic 9(5). |