# Enterprise Communication Interface (ECI)

## Example for using ECIS (string based ECI) from Visual Basic

| This example program can be started from the Visual Basic editor of Word 2003 / 2007.
| To avoid the error-message "epclt_eci.dll not found", make sure your Windows environment variable "path" (or "Path") contains the "Path" where epclt_eci.dll is located. Also "Path" has to contain the path of the library (-> "epshr.dll" and "epshr_eci.dll") which is imported by "epclt_eci.dll" (Standard: %ep_root%\axalant\bin\%EP_MACH%).

Further information about imported libraries can be found when choosing quick-preview for the corresponding library from the explorer.

Visual Basic: To run this example program more than once it is recommended to set the program back by confirming (run -> end).

Parameters which are passed back by ECIS-functions (output) should have sufficient memory (e.g. approx. 200 characters for ecis_connect for connectionID, and ecis_call for returnCode). In the following example the variable "BUFFER" is used for this.

When starting the example program the DTV client should be opened as a window in the background (not minimized in the task-bar).

- While executing this example program you have to switch between Word 2003 / 2007and Agile e6 repeatedly.

Option Explicit Module exampleECI
| '----------------------------------------------------------------------------------- ' General information ' ' Name : exampleECI (exampleECI.vb) ' ' Purpose : Visual basic Example ' ' Dependencies : ECI shared libraries '-----------------------------------------------------------------------------------
| '----------------------------------------------------------------------------------- ' Declaration of the native ECI functions '-----------------------------------------------------------------------------------
declare function ecis_add_par | lib | "epshr_eci.dll"
| (byval variab as string, byval initial as string) as integer
declare function ecis_cre_par | lib | "epshr_eci.dll"
| (byval variab as string, byval zeichen as string) as integer
declare function ecis_end_par | lib | "epshr_eci.dll"
| (byval variab as string) as integer
declare function ecis_des_par | lib | "epshr_eci.dll"
| (byval variab as string) as integer
declare function ecis_set_par | lib | "epshr_eci.dll"
| (byval cp_FunctionParameter as string, byval cp_ParNum as string) as integer
declare function ecis_get_par | lib | "epshr_eci.dll"
| (byval cp_FunctionParameter as string, byval cp_Data as string) as integer
declare function ecis_connect | lib | "epclt_eci.dll"
| (byval cp_ConnectionId as string, byval cp_Connection_Type as string, byval cp_Node as string, byval cp_Ressource as string, byval cp_PartnerId as string, byval cp_Myld as string) as integer
declare function ecis_call | lib | "epclt_eci.dll"
| (byval cp_ConnectionId as string, byval cp_FunctionCode as string, byval cp_FunctionParameter as string, byval cp_ReturnCode as string, byval cp_ReturnParameter as string) as integer
declare function ecis_close | lib | "epclt_eci.dll"
| (byval cp_ConnectionId as string) as integer
| '----------------------------------------------------------------------------------- ' Buffer constant to provide memory for several output variables ' (long string of 200 space charaters) '-----------------------------------------------------------------------------------
| public const BUFFER as string =" " Public Function EciConnect()
| '----------------------------------------------------------------------------------- ' Creates an ECI connection with standard parameters ' input : none ' returns : connectionID '-----------------------------------------------------------------------------------
| Dim connectionID As String dim connectionType as string dim node as string dim ressource as string dim serverID as string dim clientID as string dim result as integer connectionID = BUFFER ' initialize output variable with sufficient memory connectionType = "1" ' type of ipc connection ressource = "44444" ' identificator of IPC-Ressource node = "localhost" ' name of host where the PLM client is running serverID = "PLM" ' identificator of partner-process clientID = "MSWord" ' identificator of own process result = ecis_connect(connectionID, connectionType, node, ressource, serverID, clientID) if (result <> 0) then
| call msgbox("Cannot connection to PLM!", 0, "ECI Error")
| end if return (connectionID)
| End Function Public Sub EciDisconnect(connectionID as string)
| '----------------------------------------------------------------------------------- ' Closes an ECI connection ' input : connectionID ' returns : none '-----------------------------------------------------------------------------------
| ecis_close(connectionID)
| End Sub Public Sub PrintPlmUser()
| '----------------------------------------------------------------------------------- ' Prints the user/group information of an ECI connection ' input : connectionID ' returns : none '-----------------------------------------------------------------------------------
| Dim connectionID As String dim functionName as string dim inputPar as string dim outputPar as string dim value as string dim returnCode as string dim result as integer connectionID = EciConnect() functionName = "eci_rea_edb_usr" outputPar = "eci_rea_edb_usr_out" inputPar = "eci_rea_edb_usr_in" result = ecis_cre_par(inputPar, "100") result = ecis_cre_par(outputPar, "100") returnCode = BUFFER result = ecis_call(connectionID, functionName, inputPar, returnCode, outputPar) if (result <> 0) then
| call msgbox("ECI call failed!", 0, "ECI Error")
| else
| value = BUFFER result = ecis_set_par(outputPar, "1") result = ecis_get_par(outputPar, value) call msgbox(value, 0, "PLM user of the connection") value = BUFFER result = ecis_set_par(outputPar, "2") result = ecis_get_par(outputPar, value) call msgbox(value, 0, "PLM group of the connection")
| end if result = ecis_des_par(outputPar) result = ecis_des_par(inputPar) EciDisconnect(connectionID)
| End Sub
End Module