Validar archivos
Esto es útil para ser utilizado en un proceso automatizado, donde es ventajoso tomar acciones antes de procesar un archivo si detectamos que este contiene errores. Se pueden validar luego de ser generados y antes de ser transferidos a fin de evitar rechazos de la marca ante errores detectables, ya que después de determinada cantidad de rechazos, la marca puede aplicar multas económicas.
La validación puede hacerse de un archivo en particular o de una lista de archivos. La herramienta devuelve un código de error al sistema operativo en caso de detectar algún error, o un valor cero en caso que todos los archivos pasen la validación, lo que permite automatizar fácilmente el chequeo y posterior acción.
Veamos como funciona. Primero, validaremos los archivos cuyo nombre son file*

Vemos que hay dos archivos que pasan las validaciones, y tres que fallan. Vemos la cantidad de registros que contienen errores, y un mensaje que nos indica si los tipos de errores encontrados pueden ser corregidos automáticamente o no. Vemos que el valor devuelto al sistema operativo es 1, lo que indica que se encontraron errores.
Una salida alternativa es agregar el flag --silent (-z) para analizar la salida y tomar acciones en forma automática.

El flag --silent omite toda salida por consola, excepto los resultados. Como vemos, la salida es una linea por archivo, que contiene 4 secciones separadas por el carácter “:”. La primera indica si la validación ha fallado o no, la segunda es el nombre del archivo, la tercera es la cantidad de registros con errores (en caso de haberlos), y la cuarta indica si los errores encontrados pueden ser corregidos automáticamente o no.
Continuando con su utilidad para las automatizaciones, podemos especificar si queremos obtener solamente la lista de los archivos sin errores o aquellos que contienen errores. Para ello podemos utilizar los flags --pass y --fail.
Por ejemplo:

De esta forma, podemos analizar la salida y mover solamente aquellos archivos que sean correctos o que contengan errores.
Volviendo a la validación, podemos obtener información mas detallada de los errores encontrados, agregando el flag --verbose (-v) de esta forma:

Vemos que el archivo file10 contiene el error en el trailer (que puede ser corregido), y que file9 contiene un error también en el trailer ya que el checksum no contiene el valor esperado. Este error también se puede corregir automáticamente.
Sin embargo, vemos que file8 contiene varios errores de diferente tipo. Los dos primeros errores son de formato del archivo, y nos esta indicando que en las posiciones 236261 y 236262, se encontraron bytes con el valor 0x00 cuando lo correcto seria que contuvieran el valor 0x40. Estos dos errores pueden ser corregidos, pero vemos que ademas hay otros errores (se muestran solo los primeros 10 errores), 2048 en total, donde vemos que para esa combinación de MTI (1240) y Function Code DE24 (200), el campo DE094 (Transaction Originator Institution ID Code) es mandatorio, pero no esta presente. Este tipo de errores no se pueden corregir automáticamente ya que no podemos saber que valor deberíamos poner en este campo sin un análisis de estos casos en particular.