Validar archivos
Esto es útil para ser utilizado en procesos automatizados, donde es ventajoso tomar acciones antes de procesar un archivo si detectamos que éste contiene errores. Se pueden validate 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 varios 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, permitiendo automatizar fácilmente el chequeo y posterior acción.
Veamos cómo funciona. Primero, vamos a validar 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 error encontrados pueden ser corregidos automáticamente o no. Vemos también 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 procesar solamente aquellos archivos que sean correctos o que contengan errores (por ejemplo moviéndolos a diferentes carpetas).
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 un error en el trailer (que puede ser corregido), y que file9 contiene un error también en el trailer ya que el checksum no tiene 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 está indicando que en las posiciones 236261 y 236262 se encontraron bytes con el valor 0x00 cuando lo correcto seria que tuvieran 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 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 qué valor deberíamos poner en este campo sin un análisis de cada caso en particular.