Crear un programa de servicio
Un programa de servicio es un programa que agrupa funciones que vamos a llamar desde distintos programas de forma dinámica como si fueran una función del sistema del tipo %CHAR, etc...
Para crear un programa de servicio utilizaremos el mandato CRTSRVPGM, que a continuación vamos a ver en detalle.
Parámetro SRVPGM, aquí ponemos el nombre de nuestro programa de servicio, en este caso vamos a llamar PRUEBA.
Parámetro MODULE, aquí el nombre del módulo, o módulos que van a formar el programa de servicio. En este caso FUNDMYAISO.
Parámetro EXPORT *SRCFILE tal como viene por defecto
Parámetro SRCFILE (BIBLIOTECA/QSRVSRC) siendo biblioteca la biblioteca donde guardes tus fuentes y QSRVSRC el archivo que el sistema propone para guardar los fuentes del enlazador. Ambos se pueden cambiar al gusto del programador.
Parámetro SRCMBR *SRVPGM tal como viene por defecto.
Parámetro TEXT texto para identificar que hace este programa de servicio.
Si ahora pulsamos intro nos dará un error, si indagamos en la causa nos encontraremos con que el miembro prueba no existe el archivo QSRVSRC.
Esto quiere decir que cuando hemos indicado *SRVPGM en el parámetro SRCMBR le estábamos indicando que existe un miembro llamado como el programa, donde hemos guardado la información de enlace para el programa de servicio. Esto se llama Fuente del enlazador.
Crear un miembro Fuente del Enlazador
Un fuente de enlazador contiene la lista de los procedimientos exportados de un programa de servicio, cada programa de servicio debe de tener el suyo.
Para este caso nuestro miembro enlazador se llamará PRUEBA y sera del tipo BND.
Son miembros que no se compilan y que se limitan a contener los módulos exportados de cada programa siguiendo la siguiente estructura
STRPGMEXP PGMLVL(*CURRENT) SIGNATURE('PRUEBA')
EXPORT SYMBOL(FUNDMYAISO)
ENDPGMEXP
Aquí iremos añadiendo lineas EXPORT por cada módulo que añadamos al programa de servicio, antes lógicamente de hacer el CRTSRVPGM.
Para no tener problemas a la hora de modificar el programa de servicio es recomendable respetar el orden, si añado un nuevo módulo siempre se debe hacer por el final.
Ahora si ejecutamos CRTSRVPGM pulsamos F4 y lo cumplimentamos de esta forma.
Para no tener problemas a la hora de modificar el programa de servicio es recomendable respetar el orden, si añado un nuevo módulo siempre se debe hacer por el final.
Creamos el programa de servicio (ahora si)
Ahora si ejecutamos CRTSRVPGM pulsamos F4 y lo cumplimentamos de esta forma.
Crear Programa de Servicio (CRTSRVPGM)
Teclee elecciones, pulse Intro.
Programa de servicio . . . . . . PRUEBA Nombre
Biblioteca . . . . . . . . . . PRUEBA Nombre, *CURLIB
Módulo . . . . . . . . . . . . . FUNDMYAISO Nombre, genérico*, *SRVPGM...
Biblioteca . . . . . . . . . . PRUEBA Nombre, *LIBL, *CURLIB...
+ para más valores
Exportar . . . . . . . . . . . . *SRCFILE *SRCFILE, *ALL
Exportar archivo fuente . . . . QSRVSRC Nombre, QSRVSRC
Biblioteca . . . . . . . . . . PRUEBA Nombre, *LIBL, *CURLIB
Exportar miembro fuente . . . . *SRVPGM Nombre, *SRVPGM
Texto descriptivo . . . . . . . PRUEBA PGM DE SERVICIO
Pulsamos intro y ahora si nos debe de crear el programa de servicio en la biblioteca PRUEBA, formado por un solo módulo que se llama FUNDMYAISO.
Teclee elecciones, pulse Intro.
Programa de servicio . . . . . . PRUEBA Nombre
Biblioteca . . . . . . . . . . PRUEBA Nombre, *CURLIB
Módulo . . . . . . . . . . . . . FUNDMYAISO Nombre, genérico*, *SRVPGM...
Biblioteca . . . . . . . . . . PRUEBA Nombre, *LIBL, *CURLIB...
+ para más valores
Exportar . . . . . . . . . . . . *SRCFILE *SRCFILE, *ALL
Exportar archivo fuente . . . . QSRVSRC Nombre, QSRVSRC
Biblioteca . . . . . . . . . . PRUEBA Nombre, *LIBL, *CURLIB
Exportar miembro fuente . . . . *SRVPGM Nombre, *SRVPGM
Texto descriptivo . . . . . . . PRUEBA PGM DE SERVICIO
Pulsamos intro y ahora si nos debe de crear el programa de servicio en la biblioteca PRUEBA, formado por un solo módulo que se llama FUNDMYAISO.
Con WRKSRVPGM podemos trabajar con todos los programas de servicio.
Solo añadir que al ser un programa de servicio cuando modifiquemos el módulo FUNDMYAISO, lo compilaremos como módulo y después haremos un UPDSRVPGM del programa PRUEBA para actualizar el programa de servicio. Todos los programas que usen ese FUNDMYAISO empezarán a usar la nueva versión con los cambios.
En la próxima entrada veremos como podemos usar un programa de servicio desde cualquier programa ile compilado con la opción 14 del PDM es decir con CRTBNDRPG.