En ocasiones, nuestro programa Cobol llevará alguna sentencia COPY incluida en la sección WORKING-STORAGE. En dichas situaciones, en el compilador tendremos que indicar la ubicación exacta de dicha COPY, identificando la librería que la contiene.
Si incluimos una COPY en nuestro Cobol y lanzamos el Compilador sin más, entonces se generará un mensaje de error informándonos de que no se ha encontrado la librería de copys. Este mensaje, que puede ser un poco confuso, será el siguiente.
The COPY library SYSLIB was not found.
Para informar de la ubicación de la librería de copys a nuestro compilador tendremos que incluir la declaración del parámetro SYSLIB en nuestro JCL. Por ejemplo, si la librería de copys es LIBPR.COPYS.JJ00, entonces la declaración se haría del siguiente modo.
//COBOL.SYSLIB DD DSN=LIBPR.COPYS.JJ00,DISP=SHR
Tengamos en cuenta que el parámetro SYSLIB tendrá que ser especificado en los dos pasos de nuestro compilador (el paso de Compilación y el paso de Linkedition). Sin embargo, la librería de copys únicamente tendrá que ser indicada en el paso de compilación.
Para verlo más claramente, a continuación mostramos cómo quedaría un Compilador ejemplo, una vez incluidas las dos librerías en SYSLIB.
//JJCOM1CL JOB 102,'COMPILADOR COMPLETO',NOTIFY=&SYSUID,
// MSGCLASS=Q,CLASS=A,MSGLEVEL=(1,1),REGION=0M,TIME=(0,7)
//************************************************************** //* SYSLIB ES LA LIB. DE COPYS
//* SYSIN ES LA LIB. DE PROGRAMAS FUENTES
//* SYSLMOD ES LA LIB. DE PROGRAMAS OBJETOS O EJECUTABLES
//************************************************************** //STEP0 EXEC IGYWCLG,PARM.COBOL='LIB,APOST,XREF,MAP,OFFSET'
//* LIBRERIA EN LA QUE SE ENCUENTRA EL COMPILADOR IGYCRCTL
//COBOL.STEPLIB DD DSN=IGY410.SIGYCOMP,DISP=SHR
//* LIBRERIA DE FUENTES Y DE COPYS PARA PASO COBOL
//COBOL.SYSIN DD DSN=LIBPR.FUENTES.JJ00(JJ0004CO),DISP=SHR
//COBOL.SYSLIB DD DSN=LIBPR.COPYS.JJ00,DISP=SHR
//* AÑADIMOS COPYS Y MODULOS PARA PASO LKED DE IGYWCL (PGM HEWL)
//LKED.SYSLIB DD DSN=CEE.SCEELKED,DISP=SHR
//LKED.SYSLMOD DD DSN=LIBPR.MODULOS.JJ01(JJ0004CO),DISP=SHR
//
Como vemos, el compilador se divide en dos partes (paso COBOL y paso LKED), cada una de las cuales tiene su parámetro SYSLIB.
1º) Compilación COBOL: aquí es donde tenemos que especificar, asociado al parámetro SYSLIB, el nombre de la librería donde van a estar almacenadas nuestras copys.
//COBOL.SYSLIB DD DSN=LIBPR.COPYS.JJ00,DISP=SHR
2º) Linkedition LKED: este es el paso de prelinkedit. Aquí también tendremos un parámetro SYSLIB, pero no hace referencia a nuestras copys del programa Cobol.
//LKED.SYSLIB DD DSN=CEE.SCEELKED,DISP=SHR
Hay que tener en cuenta que el compilador mostrado valdría únicamente para programas Cobol que no tengan accesos a DB2. En caso contrario, tendríamos que recurrir a un Compilador más completo, del cual ya hemos hablado en otros post anteriores.
Pues nada, incluyendo la librería de Copys tal y como se indica aquí ya no deberíamos tener problemas a la hora de compilar correctamente nuestros Cobol.
Saludos.
No hay comentarios:
Publicar un comentario