Communication between a client and an interface is done in "sessions" each of which comprises a number of commands sent by the client for the translator to execute.
When a translator is dedicated to a single client (i.e. client/server mode), the length of one of these sessions does not matter, but when a translator is serving multiple-clients (i.e. web service mode), the length of a session must be kept to a minimum to prevent one client "hogging" the service.
Most client applications should be written as though they are connected to a web service.
In Fire language terms, a session is defined by the length of a channel.session language block, e.g.
open mychan,-s='fxarc' mychan.session { # Start of translator session * select * from brisbane7/rlwy.pat * objfetch } # End of translator session
In this example, we have created a connection to fxarc, the ARC/Info coverage translator.
Then we have run a session to get data from a table available to the interface.
The tables available for selection depend on the type of interface, e.g.
Database interfaces: all database tables to which the user has access,
File translators: all data files within a supplied file hierarchy,
Coverage translators: all logical coverage tables within a supplied file hierarchy.
For data discovery purposes, there is an iselect command to retrieve the names of all available tables and meta-data for any table.