Desarrollando en Cobol y Natural sobre Plataforma Mainframe

viernes, 13 de diciembre de 2013

Procedimiento DFHMAPS para compilación de Mapas

Cuando necesitemos compilar un Mapset de Cobol, siempre podremos recurrir al procedimiento estándar DFHMAPS en vez de crearnos nuestro propio JCL de compilación. De esta forma nos ahorraremos todo el trabajo requerido para la generación de los Mapas Simbólico y Físico.

El procedimiento estándar DFHMAPS es un proceso que incluye la compilación de nuestros Mapas mediante el Ensamblador ASMA90, así como de todos los pasos necesarios para chequear si nuestro Mapset tiene algún problema en su estructura.



El contenido de DFHMAPS es el siguiente:

//DFHMAPS PROC INDEX='DFH320.CICS',
//             MAPLIB='DFH320.CICS.SDFHLOAD',         
//             DSCTLIB='DFH320.CICS.SDFHMAC',       
//             MAPNAME=,             
//             A=,                          
//             AMODE=31,    
//             RMODE=ANY,       
//             ASMBLR=ASMA90,       
//             REG=2048K,               
//             OUTC=A,                   
//             WORK=SYSDA                     

//COPY     EXEC PGM=IEBGENER                            
//SYSPRINT DD SYSOUT=&OUTC                             
//SYSUT2   DD DSN=&&TEMPM,UNIT=&WORK,DISP=(,PASS),   

//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=400),       
//            SPACE=(400,(50,50)) 
//SYSIN    DD DUMMY                        
//* SYSUT1 DD * NEEDED FOR THE MAP SOURCE                 
//ASMMAP   EXEC PGM=&ASMBLR,REGION=&REG,              
//* NOLOAD CHANGED TO NOOBJECT
//  PARM='SYSPARM(&A.MAP),DECK,NOOBJECT'                      
//SYSPRINT DD SYSOUT=&OUTC                 
//SYSLIB   DD DSN=&INDEX..SDFHMAC,DISP=SHR
//         DD DSN=SYS1.MACLIB,DISP=SHR               
//SYSUT1   DD UNIT=&WORK,SPACE=(CYL,(5,5))  
//SYSUT2   DD UNIT=&WORK,SPACE=(CYL,(5,5))
//SYSUT3   DD UNIT=&WORK,SPACE=(CYL,(5,5))
//SYSPUNCH DD DSN=&&MAP,DISP=(,PASS),UNIT=&WORK,
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=400),         
//            SPACE=(400,(50,50)) 
//SYSIN    DD DSN=&&TEMPM,DISP=(OLD,PASS)       
//LINKMAP  EXEC PGM=IEWL,PARM=('LIST,LET,XREF,RMODE(&RMODE)',
//            'AMODE(&AMODE)')
//SYSPRINT DD SYSOUT=&OUTC                           

//SYSLMOD  DD DSN=&MAPLIB(&MAPNAME),DISP=SHR                  
//SYSUT1   DD UNIT=&WORK,SPACE=(1024,(20,20))
//SYSLIN   DD DSN=&&MAP,DISP=(OLD,DELETE)
//* NOLOAD CHANGED TO NOOBJECT
//ASMDSECT EXEC PGM=&ASMBLR,REGION=&REG,
//  PARM='SYSPARM(&A.DSECT),DECK,NOOBJECT'
//SYSPRINT DD SYSOUT=&OUTC               
//SYSLIB   DD DSN=&INDEX..SDFHMAC,DISP=SHR
//         DD DSN=SYS1.MACLIB,DISP=SHR               
//SYSUT1   DD UNIT=&WORK,SPACE=(CYL,(5,5))  
//SYSUT2   DD UNIT=&WORK,SPACE=(CYL,(5,5))
//SYSUT3   DD UNIT=&WORK,SPACE=(CYL,(5,5))
//SYSPUNCH DD DSN=&DSCTLIB(&MAPNAME),DISP=OLD 
//SYSIN    DD DSN=&&TEMPM,DISP=(OLD,DELETE) 
                           

Como vemos, el procedimiento se divide en 4 pasos:

1º) Paso COPY: aquí únicamente se toma el Mapset de la librería origen (indicada por el usuario) y se copia en un Dataset temporal.

2º) Paso ASMMAP: en este punto se aplica el Ensamblador ASMA90 sobre el mapa origen y se genera el Mapset Físico.

3º) Paso LINKMAP: aquí se ejecuta el Binder sobre el mapset creado en el paso anterior. Se genera, en la librería destino, un objeto ejecutable con el Mapset Físico.

4º) Paso ASMDSECT: en este último paso se genera, a partir del mapa origen, el Mapset Simbólico en la librería destino correspondiente.

Y, con estos 4 pasos, el proceso DFHMAPS crea el Mapset Simbólico y el Mapset Físico asociados a nuestro mapa. Para incluir esta utilidad en nuestra compilación únicamente tendremos que incorporar la ejecución de este procedimiento en nuestro JCL.

Finalmente mencionar que las librerías incluidas en el DFHMAPS podrían variar un poco en vuestro equipo, dependiendo de la instalación del CICS.

Saludos.

1 comentario:

Related Posts Plugin for WordPress, Blogger...