
Desde hace mucho tiempo el IBMi cuenta con una forma súmamente simple de comprimir y descomprimir archivos, usando el formato ZIP.
Lo interesante es que tenemos otros formatos que no usamos simplemente por desconocimiento o falta de interés, como gzip. Sin embargo no es simple el poder comprimir con formatos del mundo Unix, ya que nuestros objetos de la base de datos emplean formato EBCDIC.
Ahora bien, a quien no le gustaría poder generar archivos en TXT, CSV, o simples Save Files y comprimirlos usando ZIP? Como referencia, un archivo TXT suele comprimirse alrededor de 8:1, lo cual no es nada despreciable.
Para poder comprimir acude a nuestro rescate el comando JAR, propio del JAVA. Para poder usarlo recomiendo instalar la versión de Java de 64 bits, la cual soporta archivos de mayor tamaño.
Como primer experiencia iremos a QSHELL , iremos a nuestro directorio dentro del IFS /home/dkesselman (dkesselman es mi usuario y si el directorio no existe podemos crearlo con mkdir /home/dkesselman ) y si no tenemos archivos podemos hacer algo como system wrkactjob > WAJ.TXT Esto creará un archivo de texto WAJ.TXT con la salida del WRKACTJOB.
Ahora vamos a crear un archivo WAJ.zip con el siguiente comando:
jar - cvfM WAJ.zip WAJ.TXT
Esto significa:
c: Crear archivo , v: De forma verbosa, f: tratar con archivos, M; no crear datos de manifiesto (información que crea por default el comando JAR para aplicaciones JAVA), luego el destino y por último el origen.
Al ejecutarlo nos dará un mensaje similar a este:
añadiendo: WAJ.TXT(entrada = 32150) (salida= 3715)(desinflado 88%)
QSHELL puede ser invocado de forma batch de la siguiente forma:
QSH CMD('jar -cfM /home/dkesselman/WAJ.zip /home/dkesselman/WAJ.TXT')
y esto se podría someter.
Si lo que queremos es descomprimir el contenido:
QSH CMD('jar -xf /home/dkesselman/WAJ.zip')
Existe otros métodos más sofisticados, como P7Zip, que permite encriptar, o APIs para integrar de forma nativa, pero creo que en los equipos de Power7 en adelante y en IBMi V7Rx no deberemos tener problemas de rendimiento.
Feliz compresión de datos.