CONVERT
Convierte archivos de intercambio entre diferentes formatos y codificaciones.
Sintaxis
$ cardak help convert
usage: cardak convert [<flags>] <format> <files>...
Convert files between formats.
Files have three characteristics:
Encoding : Which characters each byte value represents (ASCII or EBCDIC are supported)
Record definition: Records can be of fixed length, delimited, or determined by a length
File packing : Then can have no packing (NORMAL) or can be packed in blocks (typically 1014)
This tool allow to convert files changing those formats
Flags:
--help Show context-sensitive help (also try --help-long and --help-man).
-v, --verbose Add more information displayed on some commands.
--mono Supress color on output.
--ignore Try to ignore some errors and continue processing the file
-W, --width Ignore small terminal width check and force execution
-z, --silent Suppress all output (banner, headers, summary) except the results. Specially useful for DESCRIBE command piped to a search
utility like fzf
-T, --file-type=FILE-TYPE Filter by file type when supplying several files. File types are represented by a single letter as: I-IPM files, M-MPE files
Args:
<format> New file format The format consists of three consecutive characters that indicate the Encoding, the record format, and the file format. Valid
values are:
Encoding : [E] - EBCDIC, [A] - ASCII
Record format : [R] - RDW, [F] - Fixed 1400, [1] - Fixed 1400, [6] - Fixed 600, [D] - Delimited
File format : [B] - Block 1014, [N] - Normal
<files> List of files. This can be a single file or you can use wildcards
Descripción
Este comando permite convertir el formato de un archivo IPM a un formato difernte, manteniendo el contenido original. Esto resulta útil cuando recibimos un archivo de intercambio que está en un formato diferente al esperado por los sistemas de procesamiento de la institución, y a veces no es posible o no hay tiempo para solicitar un nuevo archivo con un formato diferente. Estos formatos suelen pactarse con la marca y luego no suelen variar, pero es muy común que aparezcan problemas de incompatibilidad en las etapas de desarrollo.
Los archivos que utiliza MasterCard (y en particular los archivoa IPM), tienen tres propiedades que son: la codificación, el formato del registro, y el formato del archivo.
Codificación
Dentro de estos archivos se encuentran diferentes tipos de datos. Algunos de ellos son valores binarios (por ejemplo el largo de los registros o campos que contienen información criptográfica que no está expresada en HEXA o Base24), y otros que son, básicamente, texto.
Son estos campos que contienen texto que pueden venir en dos tipos de codificación, ASCII o EBCDIC
La codificación EBCDIC viene de la época en que estos archivos eran en su mayoría generados y procesados en mainframes, y era la codificación natural para estos entornos, siendo la variedad utilizada por IBM la más extendida.
Por ejemplo, para representar el valor "CARDAK2025", tendríamos:
| Codificación | Valor (HEX) |
|---|---|
| ASCII | 43 41 52 44 41 4B 32 30 32 35 |
| EBCDIC | C3 C1 D4 C4 C1 D2 F2 F0 F2 F5 |
Formato del registro
Cuando se almacenan registros en archivo, los mismos suelen representarse de diferentes formas. Las usuales son, delimitados, fijo o variables.
Delimitado: Cada registro queda definido por un delimitador. Este es el caso de los archivos de texto plano, donde cada línea representa un registro, y el fin de cada línea viene indicado por un carácter especial. En el caso de sistemas basados en DOS y Windows, se utilizan los caracteres de control CR/LF (0x0A y 0x0D), y en sistemas basados en Unix (incluído Linux y otras variantes), está representado por el caracter LF (0x0D)Fijo: En este caso cada registro tiene una cantidad fija de caracteres por lo que no es necesario contar con ningún carácter delimitador. Es necesario saber el largo de cada registro para poder procesarlos correctamente. Valores típicos utilizados en archivos de intercambio, especialmente de Amex, son 600 o 1400Variable: Este formato incluye para cada registro, un indicador del largo del registro seguido por los datos del registro en sí. Para leerlo primero se interpreta el largo del registro (generalmente uno, dos o cuatro bytes) y seguido se lee esa cantidad de bytes. Lo que sigue sería el registro siguiente, también con el su largo y datos. Este formato lo conocemos como RDW
Los archivos IPM y MPE manejados por MasterCard contienen registros de longitud variable. Archivos manejados por otras marcas, suelen ser de longitud fija (típicamente de 600 o 1400 caracteres)
Formato del archivo
Aidicionalmente, MasterCard suele formatear el contenido de sus archivos de intercambios en bloques de 1014 bytes, es decir, el contenido se va almacenando en grupos de 1012 bytes seguidos de dos caracteres de relleno para completar bloques de 1014 bytes cada uno. El último bloque se completa de ser necesario con caracteres de relleno para alcanzar los 1014 bytes (por lo que su tamaño es siempre múltiplo de ese valor). Los caracteres de relleno tienen el valor 0x40.
Utilidad
Generalmente, los sistemas que generan o procesan archivos de intercambio con MasterCard suelen estar configurados para procesar solamente una combinación de estos valores, por lo que es importante estipular con la marca cual sera el formato a utilizar. En etapas tempranas, especialmente durante el desarrollo, test y certificación, suele suceder que los archivos no están en el formato correcto, lo que hace necesario cambiar la configuración del sistema en cada caso.
Esta herramienta permite convertir el formato de un archivo, independientemente de cual sea ese formato, en uno con el formato deseado.
El formato lo especificamos utilizando tres letras (consecutivas, sin espacios), donde la primera corresponde a la codificación, la segunda al tipo de registro, y la tercera al formato del archivo.
Para la codificación, utilizaremos la letra A para indicar ASCII, o la letra E para indicar EBCDIC (las dos opciones utilizadas en los archivos de intercambio)
Para el tipo de registro utilizaremos R para registro de longitud variable (o RDW), F o 1 para registros de longitud fija de 1400 caracteres, 6 para registros de longitud fija de 600 caracteres, o D para archivos delimitados (el delimitador va a depender de si estamos utilizando la herramienta bajo Windows o Linux)
Por ultimo, para la tercer opción, utilizaremos la letra B si queremos que el archivo quede en bloques de 1014, o N si queremos que el archivo quede en formato normal (sin bloques)
El primer parámetro debe ser el formato, y a continuación viene uno o mas nombres de archivos para convertir.
El archivo convertido se nombra a partir del nombre del archivo original, un punto y las tres letras correspondientes al formato, y le agrega la extensión “.cvt”
Este comando se puede utilizar con cualquier tipo de archivo, pero los archivos IPM son tratados en forma diferente, ya que pueden contener datos que son binarios y no debemos intentar convertir su formato ya que estaríamos cambiando el valor y su significado. Por eso, la herramienta, al detectar que se trata de un archivo IPM, interpreta los registros y solamente cambia la codificación de aquellos campos que no son binarios.
Este comando esta optimizado y procesa los registros a medida que se van leyendo, por lo que es capaz de trabajar con archivos grandes sin requerir un uso excesivo de memoria.
Podemos utilizar el flag -T para indicar el tipo de archivo que queremos procesar de la lista de archivos indicados. Esto nos permite utilizar comodines pero solamente aplicarlo a aquellos archivos del tipo especificado. Actualmente podemos indicar el tipo utilizando la letra I para archivos IPM, y la letra M para archivos MPE
Ejemplo

Como podemos observar, el archivo original no se cambia, se genera uno con el mismo contenido pero con el formato solicitado.