Directorio de Enlace
Los directorios de enlace sirven para agrupar módulos o programas de servicio con la ventaja de que a la hora crear el programa no sea necesario indicar uno por uno los módulos o programas de servicio que forman el programa.
Ahora continuando con el ejemplo veremos como creamos un directorio de enlace para nuestro programa de servicio.
Primero escribe WRKBNDDIR *ALL verás que te aparecen varios Directorios de Enlace, si nunca nadie los ha creado en tu máquina, solo verás los del sistema dentro de la biblioteca QSYS.
Ahora tecleamos CRTBNDDIR y pulsamos F4, escribimos nombre para el directorio de enlace, biblioteca donde queremos ubicarlo y una descripción que nos sirva para saber que agrupa.
CRTBNDDIR BNDDIR(PRUEBAS/FUNCIONES) TEXT('PGM DE SERVICIO')
Una vez creado añadiremos todos los programas de servicio que tengamos creados o creemos en un futuro. Para hacer esto utilizaremos WRKBNDDIRE
Tecleamos WRKBNDDIRE BNDDIR(PRUEBAS/FUNCIONES)
Directorio de Enlace: FUNCIONES Biblioteca: PRUEBAS
Teclee opciones, pulse Intro.
1=Añadir 4=Eliminar
--------Creación---------
Opc Objeto Tipo Biblioteca Fecha Hora
No hay ningún programa de servicio, ni tampoco ningún módulo asociado a este directorio de enlace.
Para añadirlo hacemos lo siguiente, pulsamos 1, objeto FUNFECHA, tipo *SRVPGM, biblioteca donde tenemos el programa de servicio.
Teclee opciones, pulse Intro.
1=Añadir 4=Eliminar
--------Creación---------
Opc Objeto Tipo Biblioteca Fecha Hora
1 FUNFECHA *SRVPGM PRUEBAS
Al pulsar intro ya veremos lo siguiente
Teclee opciones, pulse Intro.
1=Añadir 4=Eliminar
--------Creación---------
Opc Objeto Tipo Biblioteca Fecha Hora
FUNFECHA *SRVPGM PRUEBAS 15/09/12 16:22:20
Bien ya tenemos un directorio de enlace llamado FUNCIONES donde iremos añadiendo todos los programas de servicio que realicemos.
Uso desde un RPGLE o SQLRPGLE
Ahora ya solo nos queda ver como se le dice al programa, que vamos a compilar con la opción 14 (CRTBNDRPG), que enlace con los módulos del programa de servicio.
En la hoja H añadimos estas dos líneas
H BNDDIR('*LIBL/FUNCIONES')
H DFTACTGRP(*NO) ACTGRP(*CALLER)
En la primera indicamos que busque el directorio de enlace que hemos creado para nuestros programas de servicio.
En la segunda le indicamos que el programa no se ejecuta en el grupo de activación por omisión DFTACTGRP(*NO), esto es necesario para poder usar el directorio de enlace. Con ACTGRP le indicamos el grupo de activación que vamos a usar en mi caso siempre es *CALLER ya que siempre me interesa que se ejecuten en el grupo de activación del programa llamador.
En la hoja D definimos el procedimiento.
D FUNDMYAISO PR 8P 0
D 6P 0
También definimos las dos variables que vamos a usar.
D FECHA8 S 8P 0
D FECHA6 S 6P 0 INZ(010112)
Ahora dentro del código del programa lo usamos de la siguiente forma.
FECHA8=FUNDMYAISO(FECHA6);
Si todo es correcto FECHA8 contendrá el valor 20120101.