La compilación de un programa de servicio escrito en lenguaje RPG en un sistema iSeries consta de los siguientes pasos:

 

 

- Introducir el fuente con el código principal y el fuente con los prototipos

 

Vamos a suponer que queremos generar el programa de servicio SRAGM, cuyo fuente con el código principal radica en QRPGLESRC, y que en QCOPYSRC se sitúe el fuente PSRAGM con el código de los prototipos.

 

 

- Compilar el fuente y generar el módulo a enlazar

 

         SBMJOB CMD(CRTRPGMOD MODULE(SRAGM) DBGVIEW(*ALL)) JOB(SRAGM)

 

Con esta instrucción se somete la compilación del módulo SRAGM, con el comando CRTRPGMOD, que se emplea con la opción  DBGVIEW(*ALL)  para que podamos acceder al fuente si estamos en modalidad de depuración.

 

El resto de opciones que se especificaban explícitamente para crear un módulo C se toman aquí por defecto, o se complementan en las hojas H del código fuente.

 

 

- Crear la lista de enlace y especificar las dependencias externas del módulo

 

Hay que utilizar la instrucción  CRTBNDDIR SRAGM  para crear la lista, y luego el mandato  WRKBNDDIR SRAGM  para añadir las dependencias, que en este ejemplo serían:

 

                      Work with Binding Directory Entries                   

Binding Directory:   SRAGM         

Type options, press Enter.                                                 

   1=Add   4=Remove                                                          

                                                   --------Creation---------

 Opt     Object         Type        Library        Date           Time      

         SRAGG          *SRVPGM     *LIBL          02/21/09       11:31:42  

         SRRCW          *SRVPGM     *LIBL          03/06/09       14:44:16  

 

 

 

- Crear la lista de exportación

 

En PSRAGM se expresan los prototipos de las funciones que se van a exportar a efectos de compilación de otros módulos escritos en RPG, pero a la hora de crear el programa de servicio hay que crear un fuente que contenga las especificaciones de exportación que se utilizan para generar su signatura.

 

En el ejemplo se usa el fuente SSRAGM ubicado en QSRVSRC. Si se examina puede comprobarse que se emplea una técnica de signatura evolutiva con cierre fijo a nueves. Esta construcción asume que se dispone de un sistema externo de examen y control de la evolución de las signaturas; si se carece de el, es equivalente a eludir la verificación de signatura, aunque con la ayuda de poder consultar la evolución teórica de signaturas.

 

 

- Compilar el programa de servicio

 

SBMJOB CMD(CRTSRVPGM SRVPGM(SRAGM) SRCMBR(SSRAGM) TEXT(SRAGM) BNDDIR(SRAGM) ALWLIBUPD(*YES)) JOB(SRAGM)

 

Con esta instrucción se somete la compilación del módulo SRAGM, mediante el comando CRTSRVPGM, que se emplea con las opciones:

 

CRTSRVPGM SRVPGM(SRAGM) SRCMBR(SSRAGM) TEXT(SRAGM) BNDDIR(SRAGM) ALWLIBUPD(*YES)

 

          SRCMBR(SSRAGM)  Indica que se emplea el fuente SSRAGM con las especificaciones de exportación del programa

          BNDDIR(SRAGM)   Indica que se utiliza el directorio de enlace SRAGM que se creó con el CRTBNDDIR

ALWLIBUPD(*YES) Indica que se permite actualizar el programa con UPDSRVPGM sin necesidad de recompilarlo

 

Tras estos pasos se generaría el programa de servicio SRAGM que puede consultarse con el mandato DSPSRVPGM para ver la lista de procedimientos exportados, las signaturas soportadas, etc.

 

Esta última parte coincide con la entrada dedicada a la generación de programas de servicio escritos en C, puesto que la arquitectura de enlace los programas de servicio es independiente del tipo de lenguaje empleado en la creación de los módulos que le compongan.

 

                                                                                      ________ 

iSeries ficheros virtuales