Configuration manager

Flat file - fixed length fields

A flat file with fixed length fields is an ASCII file in which database records are written. Each database record consists of one line terminated by carriage return (CR) and linefeed (LF), and where the fields always have the same number of characters, independent of their contents.

For example: consider a database table holding warehouse inventory and having the following information:

Field Start position Length Description
Location 1 10 Warehouse location
Product 11 8 Product identification
Description 19 30 Product description
On-hand quantity 49 12 Quantity on location

The flat file could look like:

Warehouse inventory dump
20030101124500
U12A09    24188   Lubricant                     00000018.450
U12A10    87912   Ball bearing                  00000201.000
U12A11    54399   Fuel injection pump           00000001.000
U12A12    A65432  Gasket                        00000003.000
U13A01    99553   Spark plug                    00000124.000
U13A02    63298   Brake drum                    00000003.000

123456789012345678901234567890123456789012345678901234567890

You define a connection client of this type by selecting FIXED FILE in the connection type listbox of the edit connections screen.

 

  • Directory: the full path to the directory where the connection client scans for input files, or the directory where the output files are written in.
  • Manual or Scan directory: when manual is selected, the input file is always selected manually at the connection client. When 'Scan directory' is selected the input file is automatically read and interpreted when the file is written in the directory specified. This option does not disable the manual mode.
  • After interpreting the input file, it must be marked as been executed, to avoid a repetitive execution. Three options are available:
    - Delete after read: the input file is deleted, and will be no longer available
    - Set archive: the archive attribute of the file is set. Only files that do not have the archive attribute set are read by the connection client.
    - Reset archive: the archive attribute of the file is switched off. Only files that have the archive attribute set are read by the connection client.
  • Filename format and Format variables: definition of the format of the filename. For input files, only files with a name matching the format will be read. If the filename format is left blank, any file written in the input directory is executable. For output files, this is the format how the connection client should name the file. If left blank, the output file can only be generated manually, since the connection client does not have a way to generate the filename. See below for the syntax in these fields.
  • Start reading at line: Specify on what line the first record in the file is. This avoids header lines in the file being treated as records.

Format strings and variables

With a format string you can specify how the filenames should be interpreted when the file is of input type, or how the output filename should look like. The format string can contain both literal text and substitution symbols. If you want the connection client to recognize an input file, then its filename should match exactly the format string. If not, the file is ignored.

Substitution symbols are placeholders for variable strings in the filename. By defining a substitution symbol you can extract parts of the filename and put it in a variable for further use, or insert the contents of a variable in the filename to be generated. The format string can contain the following substitution symbols:

For input files

  • %#s : specifies a fixed length string, where # should be replaced by the number of characters in the string. For example: when you specify %5s the connection client will consider the 5 next characters as one string and put this string in the variable provided.
  • %sdelimiter : all characters starting at the % sign till the delimiter character are considered to be one string and written in the variable provided. Example: %s_ will read all characters till the underscore and put these as one string in the variable (without the underscore).
  • %n : starting at the % sign, all characters till the first alpha-numeric characters will be treated as a number. Example: '078.txt' will return 78 as numeric value when %n is specified.
  • %#t : specifies a fixed length table name. The usage is the same as for %#s, but the string is considered to be a table name used in the 'source tables and mapping' section. You must provide a dummy variable, however you cannot use the variable in further configuration. A %t symbol can only be used once in one format string.
  • %tdelimiter : as %sdelimiter but specifies a table name.

For output files

  • %s : the contents of the variable is written at the exact place of the %s. The variable is written when defined in the 'destination field name' (See source tables and mapping).
  • %t : the table name defined in 'destination table name' (See source tables and mapping) is written at the exact place of the %t.

As many substitution symbols you define, as many format variables you need to define. The substition symbols are replaced by the variables content in the exact sequence as both symbols and variables are defined. The name of the variable specified for a %s or %n symbol can be used as a field name when you do the field mapping job. A %t symbol is always placed in an internal variable. The contents of %t is used as table name. However, you still need to provide a dummy variable for %t.

If you do not specify a table name, you must use 'ANY' as table name in your 'source tables and mappings' section.

Some examples:

Filename format Format variables Results in
In%n%t_%4s%2s%2s.txt

Sequencenumber
,inputtablename,
year,month,day

Input Filename: In001inventory_20030101.txt
Sequencenumber = 1
Table = inventory
year = 2003
month = 01
day = 01

Input Filename: In001inventory_20030101.dat
file is rejected
Out%t%s.txt Outputtablename,
Datestamp
Table = PartMaster
Datestamp = 1Jan2003
Output filename = OutPartMaster1Jan2003.txt
In%4s.txt YearDayCode Input filename: InA254.txt
YearDayCode = A254
Table = ANY

Defining fields

Fields are defined and used in exactly the same way as outlined in source tables and mapping. However, as soon as you use a fixed file connection your screen will be slightly different.

 

In source table name you define the name extracted from the filename and defined as %t or %#t in the format string. In case of destination table it would be the string written in the filename where %t is defined.

In case you defined a variable %s or %n in the format string with corresponding variable names, you may use the variable name here by entering it in the 'Field position' input field.

When writing files, you will get as many files as records sent to the fixed file client. If you want to group records, you can only do this by defining a scheduled task (batch) at the source client, and enable the obsolete check option in the 'tables and mappings' section.