Running ECRTP as a DLL

There is one DLL file that can be used to run ECRTP: owrm32c.dll. This file is for single-threaded and multithreaded applications, and contains code for both inbound and outbound maps.

The owrm32c.dll file has three inbound run API functions and three outbound run API functions.

There are also several API functions that allow you to:

For the owrm32c.dll file, there is a corresponding LIB file that can be used to link implicitly to the DLL from a C program or Java program and a DEF file for information only.

The DLL file and its related files are described below.

Table 2-4: DLL file descriptions

DLL file and related files

Description

  • owrm32c.dll

  • owrm32c.lib

  • owrm32c.def

This is a single-threaded and multithreaded Visual C++ compiled DLL with ODBC rule functions. It can be loaded dynamically via an API during runtime. It can also be linked implicitly from a C++ program via owrm32c.lib. owrm32c.def provides information only.

When you run owrm32c.dll, the result of the run returns codes 1–5:

  • 1 – correct

  • 2 – transaction skipped error, – checking trace file (incoming.err or outgoing.err)

  • 3 – transaction user abort error – checking trace file (incoming.err or outgoing.err)

  • 4 – transaction user stop error – checking trace file (incoming.err or outgoing.err)

  • 5 – transaction fatal error P checking trace file (incoming.err or outgoing.err).

If the return code is 2–5, run the map again with long trace set by adding -c and -l at the end of the mapswitch. Or check the long trace in the Run Map screen in ECMap.

  • callrtp.dll

  • callrtp.lib (For

Windows NT only)

This DLL contains JNI functions and acts as a wrapper around owrm32c.dll. From Windows NT, it can be linked implicitly from a C++ program via callrtp.dll. A callrtp.def file is not included.

toolpak.h

Contains the prototypes for the following six WIN API calls that are available within each DLL:

  • OUTBOUNDMAPPER

  • OUTBOUNDRunCmd

  • OUTRun

  • INBOUNDMAPPER

  • INBOUNDRunCmd

  • INRun

There are also four JAVA API functions provided:

  • JINBOUNDRunCmd

  • JOUTBOUNDRunCmd

  • JINRun

  • JOUTRun

When you invoke ECRTP as a DLL, there are required parameters that must be used, as well as optional parameters/switches that can be used. For a description of all available switches, see “Windows runtime parameters/switches”. When ECRTP is invoked as a DLL, all of the memory I/O parameters can be used.

The prototypes for the WINAPI calls (available in toolpak.h) are shown below:

typedef struct {

char *filename;   /* Pointer to name of
					 Directory\Filename-in MAP File */
char **paddr;     /* Double pointer to memory address 
						of data */
long *pbytes;     /* Pointer to Number of bytes of data
						in memory */
long *pbuflen;    /* Pointer to Number of bytes allocated 
						in memory */} MEMIOSTRUCT;

extern "C" {
__declspec( dllimport) int WINAPI  OUTBOUNDRunCmd(char *cmd);
__declspec( dllimport) int WINAPI  INBOUNDRunCmd(char
*cmd);__declspec( dllimport) int WINAPI 
OUTBOUNDMAPPER(int argc, char **argv);
__declspec( dllimport) int WINAPI  INBOUNDMAPPER(int
argc, char **argv);
__declspec( dllimport) int WINAPI OUTRun(LPSTR,
MEMIOSTRUCT **);
__declspec( dllimport) int WINAPI INRun(LPSTR,
MEMIOSTRUCT **);

/* load map into memory ahead of map running*/
/* note: LOADMAP can be called multiple times to load
many maps*/
/* -map_dir:  0 for inbound , 1 for outbound */
/* -MulMaps: how many maps to save in memory, 1 to N */
/* upper limit N is dependent on memory available */
__declspec( dllimport) int WINAPI LOADMAP(char *dir_path, char * name, int map_dir, int MulMaps);

/* free specific map in memory*/
__declspec( dllimport) int WINAPI FREEMAPNAME(char *map_name);

/* clear all maps in memory*/
/* it's calling program's responsibility to call FREEALLMAP to free all maps in memory if  calling program does not pass -xf switch to rtp engine. If -xf switch passes into rtp engine  rtp will  free all maps in memory at the end of this run */

__declspec( dllimport) void WINAPI FREEALLMAP();}

The prototypes for the Java API calls are shown below: