# SYSTEM OVERVIEW

Product Data Exchange (PDX) Subsystem

The PDX subsystem contains functions for manipulating characteristics of the library which are common to all subsystems. Most of these functions pertain to integrating message tables into the system while others define platform portable utilties for eliminating certain compiler dependencies. For the most part, the only functions an application need call are pdx_Initialize, pdx_SetTable, and pdx_Terminate.

Note: If you will be reinitializing subsystems for re-entrancy or DLL processing, you must call pdx_Terminate and pdx_Initialize before making a second call to any subsystem Initialize routine. For example:

       Okay:
       {
          pdx_Initialize(PDX_NOOPT);
          iges_Initialize(IGES_NOOPT);
             :
             :
          iges_Terminate(IGES_NOOPT);
          pdx_Terminate(PDX_NOOPT);
          pdx_Initialize(PDX_NOOPT);
          iges_Initialize(IGES_NOOPT);
             :
             :
          iges_Terminate(IGES_NOOPT);
          pdx_Terminate(PDX_NOOPT);
       }
       Not Okay:
       {
          pdx_Initialize(PDX_NOOPT);
          iges_Initialize(IGES_NOOPT);
             :
             :
          iges_Terminate(IGES_NOOPT);
          iges_Initialize(IGES_NOOPT);    <- This initialize fails
             :
       }

# EXCEPTIONS

The following non-subsystem specific exceptions are defined:

PDX_EXC_FILEIO

Raised whenever a low-level file I/O operation fails.

PDX_EXC_MAXERROR

Raised whenever a maximum error value is reached.

PDX_EXC_MEMORY

Raised whenever a malloc, calloc or realloc fails.

# ENVIRONMENT VARIABLES

Currently the only environment variable used is PDELIB_TMP which controls where temporary files are created. If this variables is not set then temporary files will be placed in the directory returned by the function tmpnam. See the ugn_intro man page for information on setting up environment variable aliases to allow an application to redefine the names of the variables.