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:
Load a map into memory
Free a specific map in memory
Free all maps in memory
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.
DLL file and related files |
Description |
---|---|
|
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:
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. |
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:
There are also four JAVA API functions provided:
|
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:
int JINBOUNDRUNCmd(String Str);
int JOUTBOUNDRunCmd(String Str);
int JINRun(String[] starr);
int JOUTRun(String[] strarr);