#define americano 0 #define europeo 1 #define lmax 200 #define posin 18 #define ladat 82+posin #define estac 37+posin // llamadas entrantes #define linea 26+posin #define durac 42+posin #define hor 11+posin #define fech 4 +posin #define tranf 0 +posin #define numero 58+posin #define ccost 0 #define proye 77+posin #define cuenta 17+posin #define pulsos 52+posin #define ruta 23+posin #define prinum 0 #define ring 54+posin #define antran 0 // anexo transferido (pendiente) #define fofech europeo // formato de fecha #define lar_lin 2 #define lar_est 3 #define lar_pry 4 #define lar_num 17 #define lar_hor 8 //#define phor 15 #define num_tra 600 #define num_train 600 extern void gua_rut(char *buf); char ruanex[(lmax+1)*2][7] ; /* Rutas Consideradas como Anexos */ extern char rgua[]; // Procesos Inicialiales (Inicializar Variables, Abrir // Archivos especiales, etc) void in_central() { /* rgua[0] = '\0'; abr_tra(); */ } // Procesos de Finalización (Cerrar Archivos especiales, etc) void fi_central() { /* cer_tra(); */ } // Driver Propiamente tal. Las posiciones de los campos se // ingresan como parámetros, lo que permite modificar desde // Aplicación de Tarificación la posición de estos en el // Registro de Llamados. void DatCentral(char *buf, char *tel, int vestac, int vlinea,int vdurac,int vhor, int vfech, int vtranf, int vnumero, int vccost,int vproye, int vcuenta, int vpulsos, int vruta, int vprinum, int vring, int vantran, int vfofech) { int i=strlen(buf),it,k; char aux,vtip; aux = 0; if (i>(vnumero+2) && (buf[vtranf]=='S' || buf[vtranf]=='E')) { k = 0 ; if (buf[vtranf]=='S') vtip = 'O'; else vtip = 'I'; if (!isdigit(buf[vestac+3])) tel[k++] = '*'; else { for (it=0; it<4&&(vestac+it)