DFT (Default) keyword—physical files only

You can use this field-level keyword to specify a default value for a field.

The format of the keyword is:
DFT('value' | numeric-value | X'hexadecimal-value' | *NULL)

Without this keyword, character and hexadecimal fields are set to blanks as default and numeric fields are set to zeros as default. However, if you specify the ALWNULL keyword for the field, then the character, hexadecimal, and numeric fields are set to the null value as default.

The following rules apply to the specified value:
  • If the field being defined is a character field, specify a character constant, hexadecimal value, or *NULL. Specify character strings within single quotation marks. If the field is variable length (VARLEN), then the length of the string must be less than or equal to the allocated length.

    Specify hexadecimal values as an X followed by a combination of the digits 0 through 9 and the letters A through F. Enclose the combination in single quotation marks. The number of hexadecimal digits in single quotation marks must be exactly twice the specified length of the field. If the field is variable length (VARLEN), then the number of hexadecimal digits in single quotation marks must be exactly twice the allocated length.

  • If the field being defined is a hexadecimal field, specify a character constant, hexadecimal value, or *NULL.
    Note: If a character constant is specified, the hexadecimal representation of the character constant is the default value.

    Specify character strings within single quotation marks. If the field is variable length (VARLEN), then the length of the string must be less than or equal to the allocated length.

    Specify hexadecimal values as an X followed by a combination of the digits 0 through 9 and the letters A through F. Enclose the combination in single quotation marks. The number of hexadecimal digits in single quotation marks must be exactly twice the specified length of the field. If the field is variable length (VARLEN), then the number of hexadecimal digits in single quotation marks must be exactly twice the allocated length.

  • If you are defining a numeric field, specify a numeric value (digits 0 through 9 specified without single quotation marks) or *NULL. For a value other than zero in positions 36 and 37, specify the decimal character with a numeric constant in the appropriate position in the DDS.
  • If you specify *NULL, then you must also specify the ALWNULL keyword on the field.
  • If you do not specify any value (DFT('')), this indicates a default of a 0 length string and is valid only when the field is variable length (the VARLEN keyword must also be specified).
  • If you are defining a date field, specify a valid date in the same format specified on the DATFMT keyword and use the same separator as specified on the DATSEP keyword. For example, DFT('12/15/05') is the default value if *MDY is specified for DATFMT and '/' is specified for DATSEP.

    If the DFT keyword is not specified, the default value is the current date.

  • If you are defining a time field, specify a valid time in the same format specified on the TIMFMT keyword and use the same separator as specified on the TIMSEP keyword. For example, DFT('11.00.00') is the default value if *ISO is specified for TIMFMT. The default separator for *ISO is a period (.).

    If the DFT keyword is not specified, the default value is the current time.

  • If you are defining a timestamp field, you must specify the default value in the following format:
    DFT('YYYY-MM-DD-HH.MM.SS.UUUUUU')

    If the DFT keyword is not specified, the default value is the current time.

The value specified is assigned to the field in the following cases:
  • When the program does an output operation to a logical file based on this physical file and the record format in the logical file does not name this field.
  • When you use the Initialize Physical File Member (INZPFM) command for a member in this file.
  • When you use the Copy File (CPYF) command with FMTOPT(*MAP) specified and a field in the to-file is not in the from-file.
The specified value is supplied to the program when the program does an input operation to a join logical file and all of the following situations are true:
  • You specify the JDFTVAL keyword for the join logical file.
  • The file being defined is specified as a secondary file in the join logical file.
  • When the input operation occurs and the link to the secondary file produces no records.

This keyword does not affect the physical file on input operations.

Example

The following example shows how to specify the DFT keyword.

|...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
00010A          R RECORD1
00020A            CHARFLD1      20A         DFT('Sample field')
00030A            CHARFLD2       5A         DFT(X'D985955185')
00040A            HEXFLD1        3H         DFT('ABC')
00050A            HEXFLD2        3H         DFT(X'C1C2C3')
00060A            NUMFLD1        5S 0       DFT(99999)
00070A            NUMFLD2        5S 2       DFT(999.99)
00080A            NUMFLD3        5S 2       DFT(999)
00090A            NUMFLD4        5S 2       DFT(*NULL)
00100A                                      ALWNULL
00110A            NUMFLD5        5S 2       DFT(999.99)
00120A                                      ALWNULL
00130A            DATFLD1         L         DATFMT(*MDY) DATSEP('-')
00140A                                      DFT('12-31-05')
00150A            TIMFLD1         T         DFT('11.15.00')
     A

The default value for CHARFLD1 is 'Sample field'. The default value for CHARFLD2 is hexadecimal D985955185. The default value for HEXFLD1 is C1C2C3 (the hexadecimal representation of the character constant). The default value for HEXFLD2 is C1C2C3. The default value for NUMFLD1 is 99999 (no decimal character is required because the field has zero decimal positions). The default value for NUMFLD2 is 999.99. The default value for NUMFLD3 is 999 (no decimal character is required if you do not need to specify decimal values). The default value for NUMFLD4 is the null value (ALWNULL is a required keyword for the field if DFT(*NULL) is specified). The default value for NUMFLD5 is 999.99; the field also allows the null value. The default value for DATFLD1 is 12-31-05. The default value for TIMFLD1 is 11.15.00 (*ISO format).