Saltar al contenido principal

Identificar archivos

A continuación mostraremos algunas situaciones a las que nos enfrentamos al manejar estos archivos, y como la herramienta nos puede ayudar a solucionarlas. Son ejemplos prácticos que permiten entender el funcionamiento y la utilidad de la herramienta en forma practica y en algunos casos utilizan mas de un comando.

Para conocer mas acerca de los diferentes comandos expuestos, podemos visitar la sección correspondiente a cada uno de los comandos utilizados aquí, y presentados mas adelante en este mismo documento en la sección Comandos.

Tipo y formato

Muchas veces nos encontramos con una lista de archivos de diferentes tipos, y por la nomenclatura nos es difícil determinar el contenido. Simplemente listando el directorio no podemos saber el tipo de información que contienen, y menos aun, el formato del archivo.

A modo de ejemplo, veamos el contenido de un directorio con archivos para explicar esta situación con un ejemplo:

Listado de archivos en el directorio

Podemos ver una serie de archivos, algunos nombres nos pueden resultar familiares, pero las extensiones son variadas y no todos cumplen con una nomenclatura en particular. Ademas, tampoco sabemos la codificación utilizada (si están en ASCII o en EBCDIC), si son archivos con registros de longitud fija, variable, o delimitados, o incluso si están en bloques o no (MasterCard suele enviar los archivos en bloques).

Veamos ahora como utilizaría la herramienta para determinar esto. Cuando la invocamos sin especificar ningún comando, se asume que estamos usando el comando IDENTIFY

Identificación automática con CardAK

La información que vemos es la siguiente: primero, el nombre del archivo, luego su tamaño en bytes, la codificación utilizada (ASCII o EBCDIC), el tipo de registros (RDW – Registros de largo variable, FRL – Registros de longitud fija y su largo, DEL – Delimitados, y si se usan los delimitadores de Unix o de Windows), y si el archivo esta en bloques o no.

Ademas se muestra, en caso de ser posible, de que tipo de archivo se trata. Vemos que en su mayoría son archivos IPM de MasterCard, pero tenemos también archivos de MPE, de AMEX e incluso de VISA

Para los archivos IPM y MPE de MasterCard, se nos muestra la fecha que viene indicada en el Header del archivo.

Si bien en estos momentos la herramienta esta desarrollada para trabajar principalmente con archivos de IPM de MasterCard, hay algunas operaciones que funcionan con otros tipos de archivos, como por ejemplo lo que veremos mas adelante que es el cambio de formato.

Acerca de los formatos de los archivos IPM

Los archivos de intercambio de MasterCard y en particular los IPM tienen tres características sobre su formato que son:

  • Tipo de registro
    • RDW - Registros de longitud variable donde cada registro contiene un encabezado indicando la longitud del mismo
    • FRL - Registros de longitud fija donde todos los registros tienen un único largo fijo
    • DEL - Registros delimitados, tipicamente un registro por linea. Estos delimitadores dependen del sistema:
      • Unix (Linux) - El indicador de fin de linea es \n o LF (0x0A)
      • Windows - El indicador de fin de linea son los caracteres \r\n o CR+LF0x0A (0x0D + 0x0A)
  • Codificación - Los registros pueden venir codificados en ASCII o en EBCDIC
  • Bloques - Es común que estos archivos vengan contenidos en bloques de 1014 bytes.

A continuación, y a efectos de mostrar ejemplos concretos, vamos a trabajar con los siguientes archivos:

Selección de archivos específicos

Veamos de qué se tratan estos archivos:

Identificación de archivos específicos

Son todos archivos IPM de MasterCard, y hay archivos en ASCII, en EBCDIC, con y sin bloques. Todos los archivos IPM contienen registros de longitud variable (o RDW)

Esta vista es compacta, con los datos de cada archivo en una sola linea. Podemos tener una vista diferente si especificamos solo un archivo, como por ejemplo file8, especificando el nombre del archivo como parámetro, de esta forma:

Vista compacta de archivos

Esta información se obtiene a partir de una muestra de los primeros 10Kb del archivo (o el archivo completo si su tamaño es menor que eso), por lo que el proceso es sumamente rápido.

Información extendida

Si quisiéramos tener mas información, podemos especificar el flag --analyze (-a), que leerá el contenido total de los archivos y nos podrá brindar otros datos. Por ejemplo:

Análisis detallado con --analyze

En este caso, se agrega una linea donde podemos ver la cantidad de registros que contiene cada archivo, la cantidad de archivos lógicos, y la cantidad de registros por cada archivo lógico que contenga. En el caso del primer archivo, vemos que contiene 5 archivos lógicos, cada uno con 10880 registros (todos tienen la misma cantidad porque el archivo fue creado con fines demostrativos, uniendo 5 veces el mismo archivo)

Vemos que algunos contiene la palabra “Records” en color rojo y con un asterisco delante. Esto significa que se encontraron algunos errores al procesar el archivo.

Debemos notar que cuando utilizamos esta opción, el programa debe leer el contenido de todos los archivos por lo que esta operación es mas lenta que la anterior.

Para investigar un poco mas, indicaremos como parámetro solamente el nombre del archivo a verificar, lo que nos mostrara información mas detallada. Veamos que problemas contiene el archivo file10

Análisis de un archivo individual

Vemos que el archivo contiene errores en el archivo lógico numero 1 (LF: 1), y en particular en el registro físico numero 43 (PRN: 43) que es el trailer del archivo. Se nos indica que el campo DE71 (indicador de numero de linea dentro del archivo) no cumple con el requisito que sea mayor al anterior. También se nos indica que el campo PDS0301, que contiene el checksum los los importes, no es correcto.

Ademas se nos brinda información estadística, por ejemplo, la cantidad de registros por cada MTI, o la cantidad de registros por cada tipo de transacción. Si ademas agregáramos el flag --verbose (-v), se nos mostraría la cantidad de registros encontrados por cada valor de MCC

Análisis de un archivo individual