Skip to content

Understanding the File_Field and Field Keywords

In DataFlex, a file-number identifies tables and a field-number identifies a table column. Data Dictionaries use the same system: A Data Dictionary’s table is identified by a file number (Main_File), and each of its fields is identified by a field number.

This has the advantage that tables and fields can be represented in an abstract manner. The entire DataDictionary class is created using this abstraction. This allows you to create classes (perhaps a custom subclass of the DataDictionary class) that also utilize this abstraction. For example, you could create a custom method that returns a field’s long label with all spaces removed. In addition, if the data type of the field is numeric, it will place a “$” at the end of the label:

Class cMyDataDictionary is a DataDictionary
    Function Field_NoSpaceLabel Integer iField returns string
        String sLabel
        Integer iFile iFieldType

        Get Main_File to iFile
        Get_Attribute DF_FIELD_TYPE of iFile iField to iFieldType
        Get Field_Label iField DD_LABEL_LONG to sLabel

        Move (Replaces(" ", sLabel, "")) to sLabel

        If (iFieldType = DF_BCD) begin
            Move (sLabel + "$") to sLabel
        End

        Function_Return sLabel
    End_Function
End_Class

This class will now work properly with any Data Dictionary using any table and any field.

While the use of file and field numbers is very useful for creating abstracted processing, it becomes more cumbersome when you wish to use these interfaces in a non-abstract manner (i.e., using them when you know the names of the table and fields but you don’t know their numbers). You don’t want to have to keep track of numbers; you want to use meaningful names.

Symbols, commands, and special command syntax are provided to make this easy.

See Also