Table of Contents Previous Next PDF

Introduction to FML Programming

Introduction to FML Programming
This topic includes the following sections:
What Is 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.
Two interfaces are available for FML and the VIEWS facility:
How Does FML Fit into the Oracle Tuxedo System?
Within the Oracle Tuxedo system, FML functions are used to manipulate fielded buffers in the context of ATMI applications.
Data entry programs written for the core portion of the Oracle 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.
Oracle Tuxedo Typed Buffers
Typed buffers is a feature of the Oracle Tuxedo system that grew out of the FML idea of a fielded buffer. Two of the standard buffer types delivered with the Oracle Tuxedo system are FML typed buffers and VIEW typed buffers. One difference between the two is that Oracle 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 an Oracle Tuxedo ATMI Application Using C, we present VIEW as one of several available Oracle Tuxedo buffer types.
FML Terminology
Field Identifier
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.
Fielded Buffer
A fielded buffer is a data structure in which each data item is accompanied by an identifying tag (a field identifier) that includes the type of the data and a field number.
Field Types
FML fields and fielded buffers are typed. They can be any of the standard C language types: short, long, float, double, and 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 mbstring, ptr, fml32, and view32 types are supported only for the FML32 interface. The corresponding types in COBOL are COMP-5, COMP-1, COMP-2, and PIC X with the following exceptions: currently, no corresponding types in COBOL exist for mbstring, ptr, fml32, and view32. A C packed decimal type is also supported in VIEWS for integration with COBOL COMP-3.
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.

Copyright © 1994, 2017, Oracle and/or its affiliates. All rights reserved.