INFINITY/IX is a distributed data base manager based on relational technology that provides reliable, deterministic performance. Based on the client/server concepts introduced by the original INFINITY system in 1978, INFINITY/IX maintains a similar style of transaction interface for applications. While functionality remains, the entire software system has been rewritten using ANSI C for maximum portability. It takes full advantage of 32-bit technology and larger system memory while maximizing the use of the file I/O and cache technologies of its host system. Client's applications may be distributed geographically from servers. Clients may be connected with one or more data base servers through industry-standard TCP/IP socket connections. For clients accessing a data base server located in the same system, applications may choose direct access through the INFINITY/IX native shared memory interface for even higher performance. Both interface mechanisms are built into the application interface and are externally selectable, transparent to the application’s logic.

INFINITY/IX performs up to 100 times faster than the original INFINITY data base system, opening data base technology up to a new realm of real-time applications. The INFINITY/IX data base server using today’s standard computing platform is far superior to the original proprietary system of 20 years ago, but the hardware only costs 1% of the original system’s cost. The result is a cost/performance improvement of 10,000 times over the original technology.

To simplify programming and configuration, INFINITY/IX provides transparent interoperability with automatic data translation and realignment across a variety of popular platforms, languages, and operating systems. The users of the original INFINITY system can migrate data base operations immediately to an INFINITY/IX server using a network link, accelerating existing applications without even requiring a recompilation. Establishing a bridge to the INFINITY/IX environment allows application migration to occur while running existing systems. It eliminates the anxiety and risk of conversion.

In today’s "instant-solutions" world, compatibility does not seem to have much priority. Users often experience incompatibility in exchanging files with a previous revision of an application that may be only 2 years old. The upward compatibility of INFINITY over 20 years and continued support by INFINITY/IX may be unique. It demonstrates the kind of commitment that customers have come to expect from Logical Data Corporation, and which should be expected from all vendors. Corporations can’t commit; only people can. INFINITY’s theme will often be echoed by customers: "INFINITY – it just works!"


The INFINITY/IX Data Base Processor (inf_db) is a server that controls all data access and manipulation of data stored in the data base. Data base applications access data through this program. The INFINITY/IX Data Base Processor uses shared memory as its primary interface. Shared memory provides efficient access and supports other interface mechanisms to operate in parallel. Three interfaces are currently available:

  1. TCP/IP socket access through the INFINITY/IX Network Interface
  2. Direct shared memory access
  3. MAX BIOS access for INFINITY applications using an Intelligent Peripheral Controller that communicates with the INFINITY/IX MAX Interface in the server

In addition to the INFINITY/IX Data Base Processor, other programs that operate on a server support the other methods of interfacing with the data base processor. INFINITY/IX Network Interface (inf_net) manages the TCP/IP socket interface. INFINITY/IX MAX Interface (inf_max) provides an interface for MAX INFINITY transactions originating from MODCOMP INFINITY applications running on proprietary Classic systems.

Application programs that use INFINITY/IX are called clients. Client applications invoke data base services by calling functions in the INFINITY/IX Interface Library (libinfapi). This library is written as a set of C language functions and is designed to be called by any language that supports the use of "C" language type functions.

The INFINITY/IX Interface Library provides a set of data base functions that encode and decode data base transactions as packets of information and then exchanges these packets with INFINITY/IX servers. Each transaction packet defines the data base operation to be performed or a response to an operation. Data that applies to the transaction or its response is appended to the packet. The INFINITY/IX Interface Library supports both the TCP/IP socket and the shared memory interface mechanisms.

TCP/IP socket communication is the default access method used by the INFINITY/IX Interface Library. It allows client applications to be located anywhere in a network connected to the server. The INFINITY/IX Network Interface is located on the server with the data base processor and supports the TCP/IP socket communications interface.

The INFINITY/IX Interface Library also supports a shared memory interface, which bypasses the network protocol overhead and is available for clients located in the same CPU with the data base processor. Shared memory provides the most efficient interface to the INFINITY/IX Data Base Processor. It bypasses the overhead of TCP/IP communications and provides direct accesses to the data base processor. Shared memory is also used by the other server interfaces.

The INFINITY/IX MAX Interface (inf_max) provides transparent access to INFINITY/IX for existing MAX IV or MAX 32 INFINITY applications with the help of the Intelligent Peripheral Controller (IPC), a peripheral subsystem for MODCOMP Classic systems. INFINITY transactions from MAX applications are handled by the IPC, where they are packaged and sent to the INFINITY/IX MAX Interface on the server. INFINITY/IX applies these transactions to the INFINITY/IX Data Base Processor and returns results to applications via the IPC.

A MAX INFINITY data base system can be instantly migrated from its proprietary hardware to an external INFINITY/IX server. This dramatically improves data access performance for remote clients, and it doubles data base throughput for the proprietary MODCOMP system. MAX applications continue to run unchanged.


Transaction routing is based on a server’s host name (specified when a data base file is opened). Standard network routing procedures are used to locate and establish a connection to a server.

The Interface Library, by default, utilizes the socket interface, available in most systems, to communicate with the INFINITY/IX data base. For this method of communications, a socket connection is established with the INFINITY/IX Network Interface at the server. A unique socket is established between an application and each data base server. The socket is maintained for the duration of the session and used to communicate transactions for all data base files accessed by the client on a specific server. The socket is closed when all data base files accessed on the server are closed or if the application abnormally terminates or stops execution.

The INFINITY/IX Network Interface at the server listens for connections and receives transactions and data from remote clients. When a transaction and any accompanying data is received, the Network Interface queues it to the INFINITY/IX Data Base Processor through its shared memory interface. The INFINITY/IX Data Base Processor notifies the Network Interface when the transaction is completed. The Network Interface removes the transaction from the shared memory interface and returns the results to the client application using its socket connection.

Client applications require no knowledge of the communications routine or interface method used. A route is established based on the host name of the data base server. The host name "localhost" traditionally identifies the client's local system, and this name is used by default unless another host name is supplied. The name can be defined internally or externally through an environment variable. Only the name of one INFINITY/IX server is needed since data base files resident on other servers can be registered with a local server. If the client attempts to open a data base file registered on another server, the Interface Library is advised of its true location, and the request will automatically be rerouted.

Client applications on the same system as the INFINITY/IX data base server also use the socket interface by default. Normally the socket interface involves TCP/IP network communications, but if the destination is the same system, the system may bypass the TCP/IP protocol overhead and implement a more efficient form of intertask communications, such as a pipe.

A client application, operating in the same CPU as the INFINITY/IX data base server, can specify the host name of "local" to direct the Interface Library to access the local data base server using the shared memory interface. This eliminates the overhead of the socket system and the INFINITY/IX Network Interface and takes advantage of the efficiency of the shared memory interface for maximum performance.


Client applications can open up to 256 data base files across any number of servers. Data is always stored in a form compatible with the host CPU of the server. If the client application is operating on a different type of CPU, the Interface Library automatically translates data to a format appropriate for the intended target, so clients always operate with data in their own native formats. Transaction packet headers uniformly use network byte order.

The Interface Library also provides data alignment options to realign data fields for each transaction to match requirements of data structure alignment for various compiler options, CPUs, and languages. Programmers can declare data structures, naming fields in the usual manner, in the programming language. An alignment algorithm can be selected for each opened file to instruct the Interface Library to automatically insert and extract data from named fields in the record according to the data base’s schema. Allowing programmers to concentrate on application logic rather than the mechanics of packing or unpacking data to match a server’s storage strategy enhances productivity. Such data interoperability allows mixed manufacturer systems to be linked to share information without affecting applications.


For new applications, the choice of languages used for client applications will probably include C++, Visual Basic, Java, and other more popular languages. In MODCOMP environments, most applications were written in FORTRAN IV or FORTRAN 77. The INFINITY/IX Interface Library uses a function call suitable for C language users and differs from the subroutine library format provided in the older INFINITY FORTRAN Library. With the updating of FORTRAN to newer dialects like FORTRAN 90 and beyond, some users may prefer to maintain some existing application in FORTRAN and just modernize the code.

FORTRAN available on most systems today supports access to C library routines, allowing the use of the INFINITY/IX Interface Library. However, should you wish to maintain the same calling sequences for INFINITY/IX, the INFINITY/IX FORTRAN Library can be used. This library does not duplicate the features of the INFINITY/IX Interface Library, but it provides a layer of subroutines with compatible calling parameters that in turn call the equivalent functions in the INFINITY/IX Interface Library.


INFINITY/IX is designed to be stable should a client or server be stopped and restarted or become unavailable. If a client application abnormally terminates execution without closing data base files or unlocking data records or files, the server will automatically detect the connection’s closure and perform shutdown actions to release resources.


Most INFINITY/IX transactions are completed in a very short period of time. The TCP and shared memory interfaces allow concurrently executing transactions to queue requests to the server, overlapping processing time for other transactions. Transactions with data base logic errors are returned to the application, and the data base remains unaffected by the error. The application can then choose the best method of error recovery for its needs. There is no need to undo some previously committed resource. Each data base server performs transactions in real-time, so all other users will see consistent results as data base changes occur.

The INFINITY/IX data base system is designed to never need reorganization or restructuring of key indices. Incremental logic in each transaction that updates key indices maintains the structure in a highly optimized state to ensure rapid retrieval and updates. (Click for a diagram that illustrates rapid retrieval of data by key index.)


The following components may be used to construct integrated system, client, server, and bridging environments.
NOTE: To see INFINITY/IX component relationships, use your Adobe Acrobat Reader to view Diagram 1, INFINITY/IX with Interface to MAX INFINITY. If migrating from a MAX environment, you may also be interested in Diagram 2, which shows MAX INFINITY with INFHAND Interface to INFINITY/IX.
(To download a free copy of Acrobat Reader, use this link to Adobe's home page.)

  1. INFINITY/IX Data Base Processor (inf_db) – This program provides the actual logic to process each INFINITY transaction for a set of data base files. It is the primary server program and interfaces through shared memory.
  2. INFINITY/IX Network Interface (inf_net) – This is the INFINITY/IX TCP/IP socket server that manages network connections from clients using the INFINITY/IX API. INFINITY/IX transactions received over the network are queued to the INFINITY/IX Data Base Processor (inf_db) via the shared memory interface. Completed transactions are routed back to client applications.
  3. INFINITY/IX Interface Library (libinfapi) – This software provides a library of "C" language callable INFINITY/IX Interface functions for client applications to access the INFINITY/IX server. The library supports communications with the INFINITY/IX server through TCP/IP communications sockets as well as through a shared memory interface for local users. The INFINITY/IX API Library is available for a variety of platforms and provides automatic data type conversion, if necessary, between client and server machine architectures. User selectable data alignment algorithms are provided to match data record and key structure alignment options for the language in use. The library is compatible with GNU C++, Visual Studio C++, Visual Basic, and other products.
  4. INFINITY/IX FORTRAN Library (libinffor) – This library provides a set of FORTRAN callable subroutines compatible with the INFINITY library for MAX IV and MAX 32 users. It calls the INFINITY/IX Interface Library (libinfapi).
  5. INFINITY/IX Conversational Utilities – Two conversational utilities provide a text-based interface designed to be used from character-based CRT terminals or through software that provides an emulation of such, like xterm or Telnet.

The INFINITY/IX Data Editor (inf_ed) provides functions to create, modify, and destroy data base files, list file directories, perform inquiries, display data, and enter, modify, delete, and copy data records. Input and output can be directed to and from a number of sources. Data type conversions between machine types is automatically provided through the API. This program is also capable of extracting data from MAX IV and MAX 32 archive tapes and sequential files, performing data conversions and introducing it into INFINITY/IX Data Base files.

The INFINITY/IX Data Base Archiver (inf_ar) is a command line driven program that can selectively create an archive of data base files and restore data base files from an archive. Archive output and input is handled sequentially in a single pass, and output is independent of media, making it excellent for CD ROM archives. Each archive includes a directory of data base files saved, plus the schema, data, and key indices of each file. Data base files may be selected for archive or restore operations using names, regular expressions of names, or via text files containing lists of names and/or name expressions. Data base files can be selectively restored, replacing the data in an existing data base file if schemas match properly. A data base file can also be recreated under its original name or a different name to support access to multiple revisions of the same data base file.

  1. INFINITY/IX Graphical Utilities – The graphical utilities have not been released but are designed to provide a Graphical User Interface (GUI) equivalent to the functions available through the conversational utilities. They are intended to relieve typing and maximize the use of pointing devices and windows. Two versions will be released; one compatible with X-Window use for operating on UNIX systems and the other compatible with Windows 95/98 and NT-based systems.
  2. INFINITY/IX MAX Interface (inf_max) – This is a server program that supports an INFINITY (MAX) transaction interface for an INFINITY/IX Data Base Processor (inf_db). Existing MAX applications can have direct access to INFINITY/IX data bases running on an external server with complete transparency. Access is provided via a TCP/IP socket using an Intelligent Peripheral Controller (IPC) running INFHAND.
  3. INFINITY/IX MAX Handler (INFHAND) – This program runs on the Intelligent Peripheral Controller (IPC) and interfaces with one or more INFINITY/IX MAX Interfaces (inf_max) running on external INFINITY/IX servers. The IPC transports INFINITY transactions between MAX IV/32 applications and one or more INFINITY/IX data base servers using high-speed TCP/IP connections. MAX systems can immediately off-load the INFINITY data base system to an open system platform and open direct access to INFINITY/IX data for applications running on a number of platforms. INFHAND is supported by the INFINITY/IX MAX Interface (inf_max), which interprets and converts MAX INFINITY transactions to INFINITY/IX transactions and directs them to the INFINITY/IX Data Base Processor (inf_db) via shared memory. Completed transactions and data are converted back to their native MAX formats and returned to the IPC. INFHAND in the IPC then routes transaction results back to the MAX application with total transparency, just as though they had been processed by the MAX INFINITY Data Base Processor.
  4. INFINITY DATA BASE TEE (ITEE) – This is a symbiont program for MAX IV and MAX 32 systems that clones INFINITY transactions and queues them to two data base processors. It is useful when verifying parallel operation of a local INFINITY data base and an external INFINITY/IX data base server. Either system can be primary, but only results from the primary system are returned to applications. ITEE is typically inserted between MAX applications, the DBS symbiont, and the INFINITY/IX data base device supported by the IPC. The results of each pair of transactions are sent to a log socket (if opened) to support comparison analysis.
  5. INFINITY COMPARISON UTILITY (ITEE Monitor) – This Visual Basic application communicates with ITEE to monitor and compare INFINITY transaction responses from the two servers. Windows display the last transaction that failed to compare and allow inspection of data base schemas in use. A log file is created to record comparison errors and to document program access to data base files. Connections from this program to ITEE can be established or closed at any time. This application runs on Windows 95/98/NT systems. This program is useful in monitoring the compliance of an external INFINITY/IX data base server against the results obtained from the internal INFINITY data base system for MAX applications during parallel operation. The program helps to detect differences, which can be analyzed and corrected before committing to the external server.