EDITRAN/API API para aplicaciones Windows/Unix Manual de referencia INDRA 30 de octubre de 2014 EDITRAN/API Windows/Unix Manual de referencia ÍNDICE 1. INTRODUCCION. .................................................................................................................................. 1-1 2. SOLICITUD DE SERVICIO. .................................................................................................................... 2-1 2.1. FUNCION EDItranG_Req ................................................................................................................................ 2-1 2.2. Conversión a texto de los códigos de retorno. ........................................................................................... 2-2 2.3. Variable de entorno....................................................................................................................................... 2-3 2.2.1. 2.2.2. 2.2.3. 3. Función GetErrorText........................................................................................................................................................................................................... 2-2 Función GetErrText ............................................................................................................................................................................................................... 2-2 Función EDItranIsAlive ........................................................................................................................................................................................................ 2-2 EJEMPLO DE PROGRAMACIÓN............................................................................................................ 3-1 3.1. Entorno C, C++: .............................................................................................................................................. 3-1 3.2. Entorno Visual Basic...................................................................................................................................... 3-3 4. COMPONENTES DE LA API. ................................................................................................................. 4-1 INDRA. Todos los derechos reservados. EDITRAN/API EDITRAN/API Windows/Unix 1. Manual de referencia 1.INTRODUCCION. INTRODUCCION. El interfaz de programación de aplicaciones basadas en el módulo de EDItran/G, de la plataforma de comunicaciones de Indra, permite a los desarrolladores de aplicaciones usuarias acceder a todos los servicios que la plataforma proporciona. Esta API incorpora la misma funcionalidad que se ofrece desde el menú de operador de EDItran/G, pudiéndose sustituir de esta manera la actuación manual por un programa de aplicación. INDRA. Todos los derechos reservados. EDITRAN/API Pág. 1-1 EDITRAN/API Windows/Unix Manual de referencia 2. SOLICITUD DE SERVICIO. 2.1. FUNCION EDItranG_Req 2.SOLICITUD DE SERVICIO. Declaración de la función en C, C++ int EDItranG_Req (char *Request, char *Presentación, int bWait, int bVerbose); Declaración de la función en Visual Basic Declare Function EDItranG_Req Lib "libedi_g" Alias "_EDItranG_Req@16" (ByVal txtRequest As String, ByVal txtPresentation As String, ByVal bWait As Long, ByVal bVerbose As Long) As Long Descripción Realiza la petición a EDItran/G para la presentación dada y espera el resultado de dicha petición si bWait es distinto de cero. Parámetros Request - Operación a realizar. INITE_EDITRANG_REQ LOADE_EDITRANG_REQ SEND_EDITRANG_REQ SENDD_EDITRANG_REQ ENDE_EDITRANG_REQ INITR_EDITRANG_REQ UNLOADR_EDITRANG_REQ RECV_EDITRANG_REQ ENDR_EDITRANG_REQ Procesar emisión Cargar emisión Emitir Emitir (dinámica) Finalizar emisión Inicializar recepción Descargar recepción Recibir Finalizar recepción Presentación - identificador de la presentación sobre la que realizar la petición. bWait - Esperar respuesta. bVerbose - Modo verboso. Valores de retorno IGAMSG_NO_ERROR_RC SCRIPT_OPEN_ERROR_RC SCRIPT_CLOSE_ERROR_RC SCRIPT_READ_ERROR_RC SCRIPT_WRITE_ERROR_RC SCRIPT_EXEC_ERROR_RC IGAMSG_SNTX_ERROR_RC IGAMSG_INIT_ERROR_RC IGAMSG_SEND_ERROR_RC IGAMSG_RECV_ERROR_RC NO_ERROR_RC OPEN_IN_ERROR_RC OPEN_OUT_ERROR_RC READ_CTRL_ERROR_RC WRITE_CTRL_ERROR_RC WRITE_DATA_ERROR_RC ZERO_REC_ERROR_RC ALLOC_ERROR_RC OPEN_REL_ERROR_RC WRITE_REL_ERROR_RC WRITE_OUT_ERROR_RC SEQUENCE_ERROR_RC TOTALFILES_ERROR_RC TIPOFICH_ERROR_RC LONGREG_ERROR_RC SECFILE_ERROR_RC TOTALREGFILE_ERROR_RC TOTALAPLICREGS_ERROR_RC TOTALBYTES_ERROR_RC TOTALSYNCS_ERROR_RC CONFIGLEN_ERROR_RC INDRA. Todos los derechos reservados. Resultado correcto Error al abrir script Error al cerrar script Error al leer script Error al escribir script Error al ejecutar script Sintaxis incorrecta Sistema EDItran/G no iniciado Error al comunicar con EDItran/G (send) Error al comunicar de EDItran/G (receive) Resultado correcto Error al abrir fichero de aplicación origen Error al abrir fichero de aplicación destino Error al leer control en TAMPON o CSB Error al escribir control en TAMPON o CSB Error al escribir datos en TAMPON o CSB Fichero tampón sin registros cargados Error al solicitar memoria Error al abrir fichero de relación Error al escribir fichero de relación Error al escribir fichero de aplicación Error de secuencia en CSB Error en el numero total de ficheros en CSB Formato de fichero desconocido Error en la longitud de ficheros en CSB Error de secuencia de registros en la descarga Error en numero total de registros en fichero aplicación Error en el numero total de registros de ficheros en CSB Error en el total de bytes del fichero de aplicación Error en el numero total de sincronismos en CSB Fichero con registro menor que dado en perfil EDITRAN/API Pág. 2-1 EDITRAN/API Windows/Unix Manual de referencia READ_DATA_ERROR_RC OPEN_STATUS_ERROR_RC OPEN_CSB_ERROR_RC ERROR_NO_PERFIL_LOCAL ERROR_NO_PERFIL_SESION ERROR_CONVERSOR ERROR_CARGADOR TMPS_UNCOMPLETED_RC NO_FILES_TO_CONVERT ERROR_USER_SCRIPT PENDING_ERROR_RC I_OFFSET I_Aborto I_Operador I_Tampon_remoto_incorr_lanza_previo I_Tampon_remoto_incorr_no_existe_previo I_Tampon_remoto_incorr_posible_previo I_Tampon_remoto_incorr_numero_sesion I_Tampon_remoto_incorr_reg_totales I_Liberacion I_Exceso_reintentos_emitir I_SBR_Descuadre_totales I_Exceso_reintentos_sincronismo I_Exceso_reintentos_fin_emision I_Perfiles I_Fichero_no_preparado 2.2. 2.SOLICITUD DE SERVICIO. Error de lectura de fichero TAMPON Error al abrir fichero de estados Error al abrir fichero CSB No existe perfil local de EDITRAN/G No existe perfil de la presentación Error de conversión Error de carga No existe tampón recibido completo No hay ficheros de aplicación para convertir Error al ejecutar script de usuario Hay pendiente una petición previa Offset de los códigos de excepción Recibido aborto Operador Tampon_remoto_incorr_lanza_previo Tampon_remoto_incorr_no_existe_previo Tampon_remoto_incorr_posible_previo Tampon_remoto_incorr_numero_sesion Tampon_remoto_incorr_reg_totales Liberación Exceso reintentos para emitir Descuadre de totales Exceso reintentos de sincronismo Exceso reintentos de fin de emisión Perfiles Fichero no preparado Conversión a texto de los códigos de retorno. 2.2.1. Función GetErrorText char *GetErrorText (int Error); Descripción Transforma los códigos de retorno de EDItranG_Req en texto. La función GetErrorText es adecuada para usarla en entornos de programación C, C++. 2.2.2. Función GetErrText - Declaración de la función en C, C++: void GetErrText (int nError, char *szError); - Declaración de la función en Visual Basic: Declare Sub GetErrText Lib "libedi_g" Alias "_GetErrText@8" (ByVal nError As Long, ByVal strError As String) Descripción Transforma los códigos de retorno de EDItranG_Req en texto. La función GetErrText es adecuada tanto para usarla junto a programas C o C++ u otros lenguajes de programación de Windows como Visual Basic. 2.2.3. Función EDItranIsAlive - Declaración de la función en C, C++: int EDItranIsAlive (void); INDRA. Todos los derechos reservados. EDITRAN/API Pág. 2-2 EDITRAN/API Windows/Unix Manual de referencia 2.SOLICITUD DE SERVICIO. Descripción Indica el estado del sistema EDItran. La función devuelve 0 si el sistema está inactivo y 1 si está listo para recibir peticiones. 2.3. Variable de entorno. EDITRAN_INSTALL_DIR Opcionalmente indica a la API de EDItran/G el directorio donde se encuentra la instalación EDItran. Esto permite que las aplicaciones que hacen uso de dicha API sean invocadas desde cualquier directorio. INDRA. Todos los derechos reservados. EDITRAN/API Pág. 2-3 EDITRAN/API Windows/Unix Manual de referencia 3. EJEMPLO DE PROGRAMACIÓN. 3.1. Entorno C, C++: 3.EJEMPLO DE PROGRAMACIÓN. /***************************************************************************** * * Departamento : Soluciones de comunicaciones * * (C) INDRA SSI, S.A Noviembre, 2002. * * <ejemplo.c> ****************************************************************************/ /*---------------------------------------------------------------------------System includes ----------------------------------------------------------------------------*/ #include <stdio.h> #include <stdlib.h> #include <stdarg.h> #include <ctype.h> #include <signal.h> #include <string.h> #if defined(DOS) #include <direct.h> #elif defined(OS2) #include <direct.h> #define INCL_DOSPROCESS #include <os2.h> #else int chdir (const char *path); #endif #define SLASH '\\' #define TRUE 1 #define IGAMSG_SNTX_ERROR_RC 101 #define IGAMSG_NO_ERROR_RC 100 /*---------------------------------------------------------------------------Projetc includes ----------------------------------------------------------------------------*/ #include "api.h" /*---------------------------------------------------------------------------Typedefs ----------------------------------------------------------------------------*/ /* Program options */ typedef struct { char presentacion[100]; /* Presentacion */ char operacion[100]; /* Operacion */ int bWait; /* Opcion espera */ int bVerbose; /* Opcion verboso */ } opts_t; /*---------------------------------------------------------------------------Global variables ----------------------------------------------------------------------------*/ static char *ProgName; static char IgaMsgVersion[] = "1.0"; /*---------------------------------------------------------------------------usage ----------------------------------------------------------------------------*/ void usage (char *format,...) { va_list ap; va_start (ap, format); fprintf (stderr, "%s: ", ProgName); INDRA. Todos los derechos reservados. EDITRAN/API Pág. 3-1 EDITRAN/API Windows/Unix Manual de referencia 3.EJEMPLO DE PROGRAMACIÓN. vfprintf (stderr, format, ap); fprintf (stderr, "\n\n%s. Peticionario de EDItran/G en modo comando.\n", ProgName); Copyright (IgaMsgVersion); fprintf fprintf fprintf fprintf fprintf fprintf fprintf fprintf fprintf fprintf fprintf fprintf fprintf fprintf (stderr, (stderr, (stderr, (stderr, (stderr, (stderr, (stderr, (stderr, (stderr, (stderr, (stderr, (stderr, (stderr, (stderr, "\nUso : %s -o <operacion> -p <presentacion> [-v] [-w]\n",ProgName); "Siendo :\n"); " -o <operacion> : Operacion a realizar.\n"); " InitE - Inicializar emision\n"); " LoadE - Cargar emision\n"); " Send - Emitir\n"); " SendD - Emitir dinamica\n"); " EndE - Interrumpir emision\n"); " InitR - Inicializar recepcion\n"); " UnloadR - Descargar recepcion\n"); " Recv - Recibir.\n"); " EndR - Interrumpir recepcion.\n"); " -p <presentacion#> : Identificador de la presentacion.\n"); " -v : Modo verboso.\n"); #if !defined(DOS) fprintf (stderr, " #endif fflush (stderr); -w : Espera finalizacion de la peticion.\n"); exit (IGAMSG_SNTX_ERROR_RC); } /*---------------------------------------------------------------------------quit ----------------------------------------------------------------------------*/ void quit (int code) { printf ("Received signal %d\n", code); exit (code); } /*---------------------------------------------------------------------------main ----------------------------------------------------------------------------*/ int main (int argc, char *argv[]) { opts_t opts; char *BaseDir, *pstr; int result = IGAMSG_NO_ERROR_RC; if ((ProgName = (char *) strrchr (argv[0], SLASH)) == NULL) ProgName = argv[0]; else ++ProgName; BaseDir = (char *) strrchr (argv[0], '/'); if (BaseDir != NULL) { *BaseDir = '\0'; if (chdir (argv[0]) < 0) usage ("%s: directorio invalido", argv[0]); } /*****************************************************/ /* Obtencion de opciones */ /*****************************************************/ argv++; argc++; memset (&opts, 0, sizeof (opts)); while (*argv) { pstr = *argv; if (*pstr == '-') { pstr++; /* it's an option */ switch (tolower (*pstr)) { INDRA. Todos los derechos reservados. EDITRAN/API Pág. 3-2 EDITRAN/API Windows/Unix Manual de referencia 3.EJEMPLO DE PROGRAMACIÓN. case 'p': /* presentacion */ argv++; if (*argv) { pstr = *argv; strcpy (opts.presentacion, pstr); } else { usage ("Error - falta presentacion"); return (IGAMSG_SNTX_ERROR_RC); } break; case 'o': /* operacion */ argv++; if (*argv) { pstr = *argv; strcpy (opts.operacion, pstr); } else { usage ("Error - falta operacion"); return (IGAMSG_SNTX_ERROR_RC); } break; case 'v': /* verbose */ opts.bVerbose = TRUE; break; case 'w': /* wait */ #if !defined(DOS) opts.bWait = TRUE; #endif break; default: usage ("Opcion ilegal -- %c", tolower (*pstr)); return (IGAMSG_SNTX_ERROR_RC); } } argv++; } /*****************************************************/ /* Validacion de opciones */ /*****************************************************/ if (!*opts.operacion) { usage ("Error - falta operacion"); return (IGAMSG_SNTX_ERROR_RC); } if (!*opts.presentacion) { usage ("Error - falta presentacion"); return (IGAMSG_SNTX_ERROR_RC); } /*****************************************************/ /* Realiza la peticion */ /*****************************************************/ result = EDItranG_Req (opts.operacion, opts.presentacion, opts.bWait, opts.bVerbose); return (result); } 3.2. Entorno Visual Basic Ediapi.frm Private Sub btnEjecutar_Click() Dim nRet As Integer Dim strError As String Dim txtRequest as String Dim txtPresentation as String Dim lWait as Long Dim lVerbose as Long INDRA. Todos los derechos reservados. EDITRAN/API Pág. 3-3 EDITRAN/API Windows/Unix Manual de referencia 3.EJEMPLO DE PROGRAMACIÓN. 'Reservo memoria y asigno variables strError = Space(500) txtRequest = “InitE” txtPresentation = “Presentacion01” lWait = 1 lVerbose =1 'LLamada a la función de la DLL nRet = EDItranG_Req(txtRequest, txtPresentation, lWait, lVerbose) 'Reemplazo el codigo de error por un texto mediante otra llamada a la DLL GetErrText nRet, strError MsgBox ("Retorno: " & nRet & ". " & strError) End Sub Module1.bas Attribute VB_Name = "Module1" ' Declaraciónes globales de las funciones de la DLL Declare Function EDItranG_Req Lib "libedi_g" Alias "_EDItranG_Req@16" (ByVal txtRequest As String, ByVal txtPresentation As String, ByVal bWait As Long, ByVal bVerbose As Long) As Long Declare Sub GetErrText Lib "libedi_g" Alias "_GetErrText@8" (ByVal nError As Long, ByVal strError As String) INDRA. Todos los derechos reservados. EDITRAN/API Pág. 3-4 EDITRAN/API Windows/Unix Manual de referencia 4. 4.COMPONENTES DE LA API. COMPONENTES DE LA API. libedi_g Librería con los componentes de la API de EDItran/G api.h Fichero de definición de la API. libmisc Librería con componentes comunes. liblic Librería de control de licencia. libdes Librería con componentes criptográficos. export.h Fichero de definiciones para la exportación de símbolos. cc_depen.h Fichero de definiciones dependientes. ejemplo.c Ejemplo INDRA. Todos los derechos reservados. EDITRAN/API Pág. 4-1 Centros de Competencia eCommerce Avda. de Bruselas 35 28108 Alcobendas. Madrid, España T. +34 91 480 80 80 T. +34 91 480 50 00 www.indracompany.com INDRA. Todos los derechos reservados. EDITRAN/API Pág. 4-1