Interfacing with Fortran and C programs

In addition to the xpaset and xpaget commands, the XPA mechanism supports C and Fortran interfaces to SAOtng. Using these interfaces, you can open a connection to SAOtng and exchange data and commands. The C and Fortran calls are:

void *OpenXPA(char *name)
integer function openxpa (char name[])

Open a connection to the XPA program. The name of the SAOtng program is SAOtng or whatever name was used with the -title switch. This call starts an intermediate xpaserver program to mediate between your program and SAOtng (so that you need not link X calls into your program).

void SetXPAValue(void *xpas,
char *paramlist, void *buf, int len)
subroutine setxpavaluec(int xpas,
char paramlist[], char buf[], int len)
subroutine setxpavaluei(int xpas,
char paramlist[], int buf[], int len)

Set the value of an XPA public access point. This is equivalent to the xpaset command:
    cat [buf] | xpaset [name] [paramlist]
The len variable specifies the size of buf in bytes. For most simple cases, buf can be set to NULL and len to 0. For example, so set the colormap to SLS, call:
    SetXPAValue(xpas, "colormap SLS", NULL, 0);

int GetXPAValue(void *xpas,
char *paramlist, void *buf, int len)
integer function getxpavaluec(int xpas,
char paramlist[], char buf[], int len)
integer function etxpavaluei(int xpas,
char paramlist[], int buf[], int len)

Get the value of an XPA public access point. This is equivalent to the xpaget command:
    xpaget [name] [paramlist] (into [buf])
It returns its data into buf and returns a byte count of the size of the returned data.

CloseXPA(void *xpas)
closexpa(int xpas)

Close the XPA connection.

When adding the XPA interface to your program, you must link with the following libraries in saord/lib: libxpa, libutil, libparam. (Yes, we need to make a better separation of library routines to eliminate the need to link libparam!).

See the file saord/XPA/ftest.f for example code that interfaces with SAOtng from Fortran.


Last Updated September 10, 1996