La culpa fue del spectrum

La culpa fue del spectrum

jueves, 27 de septiembre de 2012

Directorio de enlace y llamada al módulo desde el RPGLE


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. 


  

Conduce entre la niebla

La culpa fue del spectrum