Cómo recuperar el fuente de un programa o módulo CL en AS400
- Detalles
- Escrito por Nora Salmún
Recupere las sentencias fuente de un programa CL OPM (Original Program Model), y desde IBM i 7.1 también las sentencias fuente de un módulo CL ILE (Integrated Language Environment).
Es probable que tanto los programadores como los administradores u operadores en AS400, hayan escrito una incontable cantidad de fuentes en el Lenguaje de Control CL (tipo de fuente CLP). Se sabe que para que existan los programas CL para su ejecución, esos fuentes deben compilarse. Es en el momento que esos fuentes se "compilan", cuando el sistema crea los programas correspondientes a partir de estos fuentes, generando los objetos *PGM con atributo CLP en alguna biblioteca, para una futura ejecución con el comando CALL del Lenguaje de Control CL.
Pero ... ¿qué sucede si Ud. en algún momento necesita editar algún fuente porque hay cambios a realizar en el comportamiento del programa, y el fuente CL a partir del cual se creó el objeto *PGM ya no existe?¿O qué ocurre si lo que se desea es examinar un programa CL del sistema operativo, en QSYS, para el que nunca se contó con un fuente? ¿O si lo que pasó, en cambio, es que suprimió por accidente dicho fuente CL para el que no tiene un backup?
Para las distintas situaciones planteadas anteriormente, entre otras, el sistema operativo i5/OS - IBM i - de AS400 provee la posibilidad de ejecutar el comando RTVCLSRC que permitirá recrear un fuente CL a partir del objeto *PGM existente (el programa que se invoca con CALL).
Uso del comando RTVCLSRC
Debido a que el comando RTVCLSRC utiliza la referencia a un objeto en una biblioteca específica para recuperar el fuente CL correspondiente, como se muestra en la siguiente pantalla, RTVCLSRC requiere especificar el nombre del programa CL del cual recuperar sus sentencias fuente CL, la biblioteca donde se encuentra el programa y el nombre del archivo físico de fuentes (que ya debe existir) en donde almacenar el miembro fuente recuperado, que por default tendrá el mismo nombre del programa:
Para poder ejecutar el comando RTVCLSRC es importante tener en cuenta algunas consideraciones:
- Se puede recuperar un fuente CL con el comando RTVCLSRC sólo si en el momento de su compilación, que implica crear el programa con el comando CRTCLPGM (Create CL Program), se especificó el parámetro ALWRTVSRC(*YES).
- El valor por default de este campo "Permitir RTVCLSRC" con parámetro ALWRTVSRC es *YES, a menos que el usuario lo cambie. Por lo tanto, si en el momento de crear el programa CL (compilarlo), con el comando Create CL Program - CRTCLPGM), el parámetro ALWRTVSRC está especificado en *NO, considerar que no se podrá recuperar el fuente del programa CL al ejecutar el comando RTVCLSRC.
- Es aconsejable, que siempre se mantenga el valor de este parámetro en su valor default (*YES) para estar en condiciones de recuperar el fuente CL de ese programa cuando se den algunas de las situaciones mencionadas al principio de esta nota, al menos que se determine lo contrario dentro de la organización.
El comando DSPOBJD
Por otro lado .... Muchas veces sucede que se conoce donde está el objeto, pero no dónde está su fuente ... ¿Cómo averiguar esa información?
El comando DSPOBJD es muy útil y permite visualizar la información descriptiva de cualquier objeto.
En base a eso, cuando se ejecuta el comando DSPOBJD sobre un objeto de tipo *PGM determinado, si se especifica DETAIL(*SERVICE), como resultado se observará entre otra información, cuál es el nombre del miembro fuente CL a partir del cual se creó el objeto y en qué archivo fisico de fuentes está (o estuvo!) ubicado el mismo, teniendo en cuenta que posiblemente ese fuente pueda ya no existir.
Por ejemplo:
DSPOBJD OBJ(TEKM7/prumsg) OBJTYPE(*pgm) DETAIL(*SERVICE), devuelve la siguiente pantalla:
En donde se puede observar: que el nombre del miembro fuente a partir del cual se creó el objeto es PRUMSG, y su atributo es CLP, y además, que el archivo físico de fuentes que lo contiene es QCLSRC ubicado en la biblioteca TEKM7.
IBM i 7.1: Recuperar sentencias CL de un MODULO ILE
A partir de la versión IBM i 7.1, también es posible utillizar el comando RTVCLSRC (Retrieve CL Source) para recuperar sentencias fuente del lenguaje de Control (CL) de un módulo ILE (Integrated Language Environment).
El módulo tiene que ser creado con el comando CRTCLMOD (Crear módulo CL) o por el comando CRTBNDCL (Create Bound CL Program o Crear Programa CL enlazado) especificando *YES en el parámetro ALWRTVSRC.
El módulo que contiene el fuente CL a recuperar puede ser: un objeto módulo (*MODULE), un módulo dentro de un programa (*PGM) ILE, o un objeto de tipo programa de servicio (^SRVPGM).
Al "promptear" el comando RTVCLSRC en versión IBM 7.1 se van a visualizar 2 parámetros que no se encuentran en las versiones anteriores.
- parámetro Programa de Servicio (SRVPGM): especifica el objeto programa de servicio desde el cual será recuperado el fuente CL original. Tener en cuenta que este parámetro y el parámetro Programa (PGM) son mutuamente excluyentes.
- parámetro Módulo (MODULE): especifica el módulo CL desde el cual se va a recuperar el fuente CL original. Si se ha asignado un valor en el parámetro Programa (PGM) o en el parámetro Programa de Servicio (SRVPGM), este parámetro identifica qué modulo CL (en el programa o en el programa de servicio) contiene el fuente CL a ser recuperado. Tener en cuenta que el parámetro MODULE se va a ignorar cuando en el parámetro PGM se especifique un objeto *PGM del Modelo de Programa Original (OPM).
Ej. de RTVCLSRC en i 7.1:
Para tener en cuenta ...
- En la versión del sistema operativo IBM i 7.1, el comando Retrieve CL Source (RTVCLSRC) puede ser usado con programas ILE CL, en las versiones anteriores del sistema operativo, recuperar el fuente CL sólo es una capacidad provista para la programación CL OPM (Original Programa Module).
- Es posible utilizar el comando RTVCLSRC para también recuperar un fuente CL de un programa de QSYS, como QSTRUP.
- El comando DSPOBJD también puede ser útil para averiguar la información sobre el nombre y ubicación del fuente DDS para un objeto *FILE PF-DTA determinado.
Copyright 2012 - Teknoda S.A.
IMPORTANTE: “Notas técnicas de AS/400 - IBM i" se envía con frecuencia variable y sin cargo como servicio a nuestros clientes IBM i - AS/400. Contiene notas/tutoriales/artículos técnicos desarrollados en forma totalmente objetiva e independiente. NS iTech - Teknoda es una organización de servicios de tecnología informática y NO comercializa hardware, software ni otros productos. |