Desarrollando en Cobol y Natural sobre Plataforma Mainframe

jueves, 24 de octubre de 2013

Bind de un programa Cobol DB2

Hace unos días vimos un ejemplo de cómo debía ser un JCL de Compilación de un programa Cobol DB2. Una vez generados el Módulo y el DBRM con dicho compilador, dijimos que aún quedaba un paso adicional antes de tener disponible el Ejecutable de nuestro programa. Se trata del paso de Bind.

Una vez que se ha generado el DBRM de nuestro fuente, dicho objeto DBRM no tiene información acerca de cómo acceder a los datos requeridos de las tablas DB2. Esto se consigue con el proceso de Bind, que enlaza el DBRM con un Plan. Este Plan contiene la información acerca de los recursos DB2 requeridos y sus caminos de acceso.

Para ello, al lanzar el Bind tendremos que especificar tanto el nombre del LOAD MODULE (Módulo Objeto) como el nombre del PLAN asociado.

El JCL de Bind quedaría del siguiente modo, para un programa con nombre "JJ0004CB" que está asociado a un Plan denominado "JJ00".

//JJRUN1CL JOB 102,'BIND Y RUN COBOL DB2',NOTIFY=&SYSUID,       
//  MSGCLASS=Q,CLASS=A,MSGLEVEL=(1,1),REGION=0M,TIME=(0,7)      
//*                                                             
//JOBLIB    DD DSN=DSN910.DB9G.SDSNEXIT,DISP=SHR                
//          DD DSN=DSN910.SDSNLOAD,DISP=SHR                     
//**************************************************************
//* BIND                                                        
//**************************************************************
//BIND           EXEC PGM=IKJEFT01,DYNAMNBR=20,COND=(4,LT)      
//DBRMLIB   DD DSN=LIBPR.DBRM.JJ00,DISP=SHR                     
//SYSTSPRT  DD SYSOUT=*                                         
//SYSPRINT  DD SYSOUT=*                                         
//SYSUDUMP  DD SYSOUT=*                                         
//SYSOUT    DD SYSOUT=*                                         
//SYSTSIN   DD *                                                
  DSN SYSTEM(DB9G)                                              
  BIND PLAN(JJ00) MEMBER(JJ0004CB) -                              

        ACT(REP) ISO(CS) ENCODING(EBCDIC)                         
  END                                                             
/*                                                                
//*****************************************************************
//* RUN PGM                                                       
//*****************************************************************
//RUNPGM   EXEC PGM=IKJEFT01,DYNAMNBR=20 COND=(4,LT)              
//STEPLIB  DD DSN=DSN910.SDSNLOAD,DISP=SHR                        
//SYSTSPRT DD SYSOUT=*                                            
//SYSPRINT DD SYSOUT=*                                            
//SYSUDUMP DD SYSOUT=*                                            
//SYSOUT   DD SYSOUT=*                                            
//SYSTSIN DD *                                                    
  DSN SYSTEM(DB9G)                                                
  RUN PROGRAM(JJ0004CB) PLAN(JJ00) LIB('LIBPR.MODULOS.JJ01')      
  END                                                             
//*
      
                                                         

En este JCL hemos incluido dos pasos: el primero es el propio Bind y el segundo es el lanzamiento de la ejecución (RUN) del programa.

1º) Bind: hay que resolver la librería DBRM. Y para su lanzamiento hay que indicar el nombre del programa y el nombre del Plan asociado.

2º) Run: hay que indicar la librería STEPLIB. Para su lanzamiento habría que especificar el nombre del programa, el nombre del Plan asociado y la librería donde se encuentra el objeto Módulo.

Tras ejecutar este JCL, la salida del mismo debería mostrar la información extraída por la ejecución del programa especificado. En el caso de nuestro ejemplo, programa JJ0004CB, se mostraría la siguiente salida.


Pues nada, esperamos que lo indicado os sirva de ayuda a la hora de ejecutar la Compilación y el Bind de un programa Cobol con DB2.

Saludos.

1 comentario:

  1. Buenas,

    una preguntilla, si el programa principal no tiene DB2, pero tiene llamadas a rutinas con DB2. Solo es necesario hacer el BIND del plan o es necesario el PLAN del programa y el paquete de la rutina?

    Gracias y saludos
    Alberto

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...