Programming a Tuxedo ATMI Application Using FML
Field Manipulation Language, or FML, is a set of C language functions for defining and manipulating storage structures called fielded buffers, which contain attribute-value pairs in fields. The attribute is the field's identifier, and the associated value represents the field's data content.
Fielded buffers provide an excellent structure for communicating parameterized data between cooperating processes, by providing named access to a set of related fields. Programs that need to communicate with other processes can use the FML software to provide access to fields without concerning themselves with the structures that contain them.
FML also provides a facility called VIEWS that allows you to map fielded buffers to C structures or COBOL records, and vice-versa. The VIEWS facility lets you perform lengthy manipulations of data in structures rather than in fielded buffers; applications run faster if data is transferred to structures for manipulation. Thus the VIEWS facility allows the data independence of fielded buffers to be combined with the efficiency and simplicity of classic record structures.
Data entry programs written for the core portion of the BEA Tuxedo system use FML functions; these programs use fielded buffers to forward user data entered at a terminal to other processes. If you write ATMI applications that receive input in fielded buffers from data entry programs, you will need to use FML functions.
Even if you choose to develop your own applications programs for handling user input and output or if programs are written to pass messages between processes, you may still decide to use FML to deal with fielded buffers passed between these programs.
Typed buffers is a feature of the BEA Tuxedo system that grew out of the FML idea of a fielded buffer. Two of the standard buffer types delivered with the BEA Tuxedo system are FML typed buffers and VIEW typed buffers. One difference between the two is that BEA Tuxedo VIEW buffers can be totally unrelated to an FML fielded buffer.
In this text we show how a VIEW is a structured version of an FML record. In other documents, such as Programming a BEA Tuxedo ATMI Application Using C, we present VIEW as one of several available BEA Tuxedo buffer types.
A field identifier (
fldid) is a tag for an individual data item in an FML record or fielded buffer. The field identifier consists of the name of the field (a number) and the type of data in the field.
FML fields and fielded buffers are typed. They can be any of the standard C language types:
char. The following types are also supported:
string (a series of characters ending with a NULL character),
carray (a character array),
mbstring (a multibyte character array—available in Tuxedo release 8.1 or later),
ptr (a pointer to a buffer),
fml32 (an embedded FML32 buffer), and
view32 (an embedded VIEW32 buffer). The
view32 types are supported only for the FML32 interface. The corresponding types in COBOL are
PIC X with the following exceptions: currently, no corresponding types in COBOL exist for
view32. A C packed decimal type is also supported in VIEWS for integration with
VIEWS is a facility of the Field Manipulation Language that allows the exchange of data between fielded buffers and C structures or COBOL records, by specifying mappings of fields to members of structures/records. If extensive manipulations of fielded buffer information are to be done, transferring the data to structures will improve performance. Information in a fielded buffer can be extracted from the fields in the buffer and placed in a structure using VIEWS functions, manipulated, and the updated values returned to the buffer, again using VIEWS functions. VIEWS can also be used independently of FML, particularly in support of COBOL records.