Trabajando con ficheros SAVF y Transferencia FTP

El presente articulo explica algunos procedimientos de cómo trabajar con ficheros SAVF y operar con ellos, haciendo transferencias y demás entre equipos.

Un fichero SAVF es un tipo de fichero de salvado de datos, como si fuera un ZIP en Windows o un TAR en Unix, solo que este tipo de ficheros se dan entre equipos AS/400. El concepto de copia a cinta es el mismo, solo que un fichero SAVF se graba a disco en vez de a cinta. Lo bueno es que se puede crear un fichero SAVF desde un conjunto de bibliotecas o incluso incluirlo dentro de una copia completa de todo el sistema, ya que esta opción, si se dispone del disco suficiente, es mucho mas rápida que un salvado tradicional a cinta.

Crear un fichero SAVF y salvar una Biblioteca

Si tenemos una biblioteca que queremos salvar a un fichero SAVF, basta con ejecutar los siguientes pasos:

1.- Creamos un archivo de salvar SAVF llamado MIFICHERO dentro de la QGPL con el comando CRTSAVF FILE(QGPL/MIFICHERO).

2.- Con el fichero creado, la idea es salvar la biblioteca que necesitemos salvar, por ejemplo, la biblioteca MILIBRERIA, con el siguiente comando:

SAVLIB LIB(MILIBRERIA) DEV(*SAVF) SAVF(QGPL/MIFICHERO)

Con esto, tendremos un fichero de salvar cuyo contenido sea una biblioteca y todos sus objetos.

Sacar un fichero SAVF del AS/400 y transferirlo al PC

Para ello, lo más sencillo es utilizar el comando FTP. Por tanto, nos conectaríamos con un cliente sencillo de FTP por línea de comandos (el propio FTP del Windows nos vale) y haríamos los siguientes pasos:

1.- Abrir una ventana de Windows (cmd)

2.- Escribir ftp 192.168.1.200 (siendo 192.168.1.200 la IP de nuestro AS/400)

3.- Introducir el nombre de usuario y contraseña de un usuario autorizado del AS/400 (por ejemplo, QSECOFR)

4.- Entrar dentro del directorio QGPL con un cd qgpl

5.- Escribir bin para cambiar el modo de transferencia de modo texto a Binario

6.- Escribir QUOTE SITE NAMEFMT 1 para pasar de modo Biblioteca a modo Fichero -luego explico por que-.

7.- Para recibir el fichero hacer un get mifichero.savf

8.- Una vez recibido, hacer un quit para salir del ftp del sistema.

El modo SITE NAMEFMT es un tipo de nomenclatura que se da al AS/400 para las transferencias tradicionales de AS/400. Por defecto, esta en modo NAMEFMT 0, lo que significa que esta en modo “biblioteca”. En este estado, en el FTP podriamos haber hecho simplemente un get mifichero pero claro, en el PC te lo deja tal cual, sin extensión. Si internamente sabes que ese fichero es un SAVF perfecto, pero luego suelen surgir problemas si ese fichero lo subimos al AS/400, ya que el sistema detectara un fichero tipo FILE con atributo PF-DTA y no un FILE con atributo SAVF que es como deberia ser.

Por tanto, es interesante dotar a todas nuestras transferencias antes el comando QUOTE SITE NAMEFMT 1, ya que en modo 1 es en modo “directorio” y si haces el get de mifichero.savf, con extensión, el sistema ya sabe de que fichero se trata. Y claro, si ese fichero lo vuelves a subir al AS/400, con el NAMEFMT a 1 haces que la extensión SAVF la detecte y entonces el AS/400 crea el fichero SAVF como lo debe crear, es decir como FILE con atributo SAVF.

Por tanto, recomendacion: SITE NAMEFMT siempre a 1.

Transmisión de un fichero SAVF al AS/400

Para transmitir un fichero al AS/400 desde nuestro PC, usaremos el FTP:

1.- Abrimos una ventana de comandos de Windows

2.- Escribiremos ftp 192.168.1.200 (siendo 192.168.1.200 la IP de nuestro AS/400)

3.- Introduciremos el nombre de usuario y contraseña autorizados

4.- Escribiremos cd qgpl para situarnos en esa biblioteca por defecto

5.- Escribiremos QUOTE SITE NAMEFMT 1 para cambiarnos al modo de “directorios” (como hemos explicado).

6.- Escribiremos un bin para poner el modo de transferencia en binario

7.- Haremos un put mifichero.savf para cargar al AS/400.

8.- Opcional: Si queremos “descomprimir” el contenido del fichero SAVF que acabamos de subir, introducir el siguiente comando: QUOTE RCMD RSTLIB SAVLIB(MILIBRERIA) DEV(*SAVF) SAVF(QGPL/MIFICHERO) para que el contenido de ese fichero lo dejemos en la biblioteca MILIBRERIA (debemos tener los privilegios de acceso suficientes, primero para hacer un Remote Command (RCMD) y luego para poder restaurar).

9.- Con un quit, nos saldremos de la máquina.

NOTA: Si hacemos un SAVLIB con un parametro llamado TGTRLS podemos salvar un fichero para que pueda ser leido por una versión anterior del SO en otra máquina diferente, aunque solo mantiene una compatibilidad hacia atras de 2 versiones (un salvado en V6R1M0 puedes restaurarlo en un V5R3M0, pero no en anteriores). Tambien hay que tener cuidado, porque no siempre se pueden salvar todos los programas (sobre todo, aquellos que son RPG compilados para una version del SO en concreto).

About Urtzi Larrieta

Director de Proyectos de entornos Mainframe, AIX y AS/400, llevo mas de 10 años trabajando para el sector servicios y banca, así como proyectos de sistemas, renovación tecnológica, estrategias de backup, y consultoría de sistemas.