'Hola mundo CICS'.

El código COBOL con CICS embebido requiere de un procedimiento muy estricto, para funcionar.

Trataré de explicar paso a paso todo el proceso.

Los siguientes archivos contienen los códigos que usaremos.



COBOL, programa que mostrará en la pantalla 'Hola mundo CICS'.

JCL para compilar el COBOL.

JCL para compilar el MAPA CICS.

CODIGO del MAPA CICS (en este caso la pantalla de 'Hola mundo CICS').

CODIGO mapa lógico de las variables a usar en COBOL.



Lo primero que haremos es crear los datasets que vamos a usar.

IBMUSER.CICS.LOAD                                                            
IBMUSER.CICS.MAPS                                                            
IBMUSER.CICS.SOURCE                                                          
IBMUSER.MAG.JCL       (ya lo tenemos de antes, asi que no hace falta crearlo)

Desde el menú principal de ispf, 'Option ===> =3.4'


Ingresamos 'IBMUSER' como parámetro de búsqueda.

Enter one or both of the parameters below:                          
Dsname Level . . . IBMUSER                                       
Volume serial  . .                                               

Al dar ENTER aparecerán todos los dataset que contengan 'IBMUSER'.


Con la opción 'i' veremos la información de como ha sido creado el dataset, y esta información quedará en memoria para crear los dataset que usaremos.



Con la opción 'Command ===> =3.2 ' vamos al Data Set Utility para crear uno a uno los dataset que necesitamos.


Los datos de cada dataset ya estan en memoria por lo que cuando aparezca la pantalla de datos del dataset solo precionamos ENTER y listo.




Con los datasets creados, cargamos los códigos en cada uno de la siguiente manera.

HOLA.TXT       -> IBMUSER.CICS.SOURCE(HOLA)
HCBLCICC.TXT   -> IBMUSER.MAG.JCL(HCBLCICC)
HCICCMMP.TXT   -> IBMUSER.MAG.JCL(HCICCMMP)
HOLAMP.TXT     -> IBMUSER.CICS.MAPS(HOLAMP)
HOLAMPCP.TXT -> IBMUSER.CICS.SOURCE(HOLAMPCP)
(este último va a ser generado por uno de los JCL así que no importa que este cargado).
     


En este punto hay que preparar el IBMUSER.CICS.LOAD (que es donde se depositará el Hola compilado), para que CICS busque el programa para ejecutarlo.

Para esto realizaremos el siguiente proceso.

Desde el menú principal del ispf '=3.4', ENTER, y en Data set list utility ingresamos lo siguiente.

Enter one or both of the parameters below: 
Dsname Level . . . **.proclib           
Volume serial  . .                      


Esto nos mostrará todos los dataset que contengan el 'qualifier' (que asi se llama cada parte del dataset) 'proclib'.

Dentro de esta lista debemos buscar 'CICSA' que es el programa que inicia el CICS.

Una vez encontrado, lo editamos con mucho cuidado de cambiar solo lo que necesitamos. Si llegamos a cambiar algo por error, con F12 cancelamos la edición sin guardar.


En este caso, CICSA lo encontraremos en 'ADCD.Z110.PROCLIB'

Como se muestra en la imagen anterior, con 'b' (Browse) y ENTER, entramos al dataset a buscar CICSA.


Con la opción 'e' editamos CICSA. Una vez dentro, buscamos lo siguiente.

000069 //DFHRPL   DD DSN=&INDEX2..SDFHLOAD,DISP=SHR                
000070 //         DD DSN=CEE.SCEECICS,DISP=SHR                     
000071 //         DD DSN=CEE.SCEERUN,DISP=SHR                      

Agregamos una linea, y como linea 000072 ingresamos 'DD DSN=IBMUSER.CICS.LOAD,DISP=SHR'. En la siguiente imagen se muestra como queda.


Completado este punto, grabamos y salimos.




Ahora vamos a pasar a las compilaciones.

Desde el menú principal de ispf, opción 1 'View' y vamos a IBMUSER.MAG.JCL(HCICCMMP) para compilar el MAPA CICS.


Lo primero que haremos es ejecutar el siguiente comando.

Command ===> C XXXXXX holamp ALL Lo que hace este comando es cambiar el nombre XXXXXX por holamp.

Hacerlo de esta manera para que el mismo JCL sirva para compilar otros mapas CICS futuros.


Una vez cambiados los nombres, estamos en condiciones de hacer 'SUB'


Todo deberia ir bien y vemos en rojo el siguiente informe.

09.25.24 JOB00529 $HASP165 COMPMAP  ENDED AT N1  MAXCC=0 CN(INTERNAL)       
***                                                                         

Este compilado, además genera un mapa lógico que debemos agregar en la WORKING-STORAGE de nuestro programa COBOL.

El miembro generado se encuentra en IBMUSER.CICS.SOURCE(HOLAMPCP), y alcanza con copiar el contenido y pegarlo en el programa COBOL.

(HOLA.TXT ya tiene copiado en la WORKING la parte logica del mapa, así que no se debe hacer nada en este caso. Solo lo explico porque es parte del procedimiento).

Ahora pasamos a compilar el programa COBOL con el otro JCL IBMUSER.MAG.JCL(HCBLCICC).

Repetimos en este miembro abierto en modo view, el cambio de XXXXXX por HOLA.


Una vez cambiados los nombres, estamos en condiciones de hacer 'SUB'

Nuevamente, si todo va bien, veremos un informe en rojo similar al anterior.


A esta altura, deberiamos tener:

IBMUSER.CICS.LOAD(HOLA)            COMPILADO                                                                           
IBMUSER.CICS.LOAD(HOLAMP)          COMPILADO                                                                           
IBMUSER.CICS.SOURCE(HOLAMPCP)      El contenido de este archivo debe ir en la WORKING-STORAGE de nuestro programa COBOL
     


Hasta acá, si todo fue bien, terminamos con la parte de programas y compilados, y comenzamos con los procedimientos de CICS para poner en linea nuestro proyecto.



Nos deslogueamos del TSO... (F3 hasta salir, y LOGOFF)

Ahora vamos a entrar al CICS. En la pantalla de inicio de z/OS ingresamos 'L CICS' (sin comillas) y ENTER.




En la pantalla de bienvenida de CICS, ALT+C (clear) borra la pantalla y la deja en espera del ingreso de un comando.

Crearemos un grupo para definir la transaccion y el mapa. Dividir en grupos, hace al orden a la hora de administrar CICS.

Ingresamos el comando 'ceda def prog (HOLA) group (HOLA)' (sin comillas). ENTER, y nos mostrará lo siguiente.


  DEF PROG (HOLA) GROUP (HOLA)                                             
OVERTYPE TO MODIFY                                        CICS RELEASE = 0650
     CEDA  DEFine PROGram( HOLA )                                            
     PROGram        : HOLA                                                  
     Group          : HOLA                                                      
     DEscription  ==>                                                           
     Language     ==>                    CObol | Assembler | Le370 | C | Pli    
     RELoad       ==> No                 No | Yes                               
     RESident     ==> No                 No | Yes                               
     USAge        ==> Normal             Normal | Transient                     
     USElpacopy   ==> No                 No | Yes                               
     Status       ==> Enabled            Enabled | Disabled                     
     RSl            : 00                 0-24 | Public                          
     CEdf         ==> Yes                Yes | No                               
     DAtalocation ==> Below              Below | Any                            
     EXECKey      ==> User               User | Cics                            
     COncurrency  ==> Quasirent          Quasirent | Threadsafe                 
     Api          ==> Cicsapi            Cicsapi | Openapi                      
     REMOTE ATTRIBUTES                                                           
+  DYnamic      ==> No                 No | Yes                               
     I New group HOLA created.                                                   
                                                       SYSID=CICS APPLID=CICS   
     DEFINE SUCCESSFUL                            TIME:  02.21.37  DATE: 23.309  
PF 1 HELP 2 COM 3 END             6 CRSR 7 SBH 8 SFH 9 MSG 10 SB 11 SF 12 CNCL

El comando CEDA que ingresamos, lo podemos ir ingresando palabra por palabra, apretando ENTER entre medio, con lo que nos irá mostrando las distintas opciones y comandos.

F3 y ALT+C para dejar todo en condiciones de ingresar otro comando.



Ahora definimos el mapa con el siguiente comando. 'ceda def map (HOLAMP) group (HOLA)' (sin comillas) y nos mostrará lo siguiente.

DEF MAP (HOLAMP) GROUP (HOLA)                                                 
OVERTYPE TO MODIFY                                        CICS RELEASE = 0650 
     CEDA  DEFine Mapset( HOLAMP   )                                              
     Mapset         : HOLAMP                                                     
     Group          : HOLA                                                       
     Description  ==>                                                            
     REsident     ==> No                 No | Yes                                
     USAge        ==> Normal             Normal | Transient                      
     USElpacopy   ==> No                 No | Yes                                
     Status       ==> Enabled            Enabled | Disabled                      
     RSl            : 00                 0-24 | Public                           
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                       SYSID=CICS APPLID=CICS    
     DEFINE SUCCESSFUL                            TIME:  02.24.31  DATE: 23.309   
PF 1 HELP 2 COM 3 END             6 CRSR 7 SBH 8 SFH 9 MSG 10 SB 11 SF 12 CNCL 

F3 y ALT+C para dejar todo en condiciones de ingresar otro comando.



Solo queda definir la transacción cuyo nombre solo puede tener 4 caracteres.... asi que se llamara HOLA....

Con el comando 'ceda def trans(HOLA) prog(HOLA) group(HOLA)' (sin comillas), nos mostrará lo siguiente.

DEF TRANS(HOLA) PROG(HOLA) GROUP(HOLA)                                       
OVERTYPE TO MODIFY                                        CICS RELEASE = 0650
     CEDA  DEFine TRANSaction( HOLA )                                            
     TRANSaction    : HOLA                                                      
     Group          : HOLA                                                      
     DEscription  ==>                                                           
     PROGram      ==> HOLA                                                     
     TWasize      ==> 00000              0-32767                                
     PROFile      ==> DFHCICST                                                  
     PArtitionset ==>                                                           
     STAtus       ==> Enabled            Enabled | Disabled                     
     PRIMedsize     : 00000              0-65520                                
     TASKDATALoc  ==> Below              Below | Any                            
     TASKDATAKey  ==> User               User | Cics                            
     STOrageclear ==> No                 No | Yes                               
     RUnaway      ==> System             System | 0 | 500-2700000               
     SHutdown     ==> Disabled           Disabled | Enabled                     
     ISolate      ==> Yes                Yes | No                               
     Brexit       ==>                                                           
+ REMOTE ATTRIBUTES                                                           
                                                                                
                                                       SYSID=CICS APPLID=CICS   
     DEFINE SUCCESSFUL                            TIME:  02.28.33  DATE: 23.309  
PF 1 HELP 2 COM 3 END             6 CRSR 7 SBH 8 SFH 9 MSG 10 SB 11 SF 12 CNCL

F3 y ALT+C para dejar todo en condiciones de ingresar otro comando.

Con esto ya definimos todo...



Ya estamos en los últimos procedimientos.

Con 'ceda di group (HOLA)' (sin comillas), vamos a llamar a la transacción. Nos mostrará lo siguiente.

DI GROUP (HOLA)                                                               
ENTER COMMANDS                                                                
     NAME     TYPE         GROUP                                   DATE   TIME    
     HOLAMP   MAPSET       HOLA                                    23.309 02.24.31
     HOLACICS PROGRAM      HOLA                                    23.309 02.21.37
     HOLA     TRANSACTION  HOLA                                    23.309 02.28.33
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                       SYSID=CICS APPLID=CICS    
     RESULTS: 1 TO 3 OF 3                         TIME:  02.31.38  DATE: 23.309   
PF 1 HELP       3 END 4 TOP 5 BOT 6 CRSR 7 SBH 8 SFH 9 MSG 10 SB 11 SF 12 CNCL 

Ponemos 'I' (sin comillas) en cada renglón entre las columnas GROUP y DATE para instalar la transaccion para siempre.

DI GROUP (HOLA)                                                               
ENTER COMMANDS                                                                
     NAME     TYPE         GROUP                                   DATE   TIME    
     HOLAMP   MAPSET       HOLA           I                        23.309 02.24.31
     HOLACICS PROGRAM      HOLA            I                       23.309 02.21.37
     HOLA     TRANSACTION  HOLA             I                      23.309 02.28.33
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                       SYSID=CICS APPLID=CICS    
     RESULTS: 1 TO 3 OF 3                         TIME:  02.31.38  DATE: 23.309   
PF 1 HELP       3 END 4 TOP 5 BOT 6 CRSR 7 SBH 8 SFH 9 MSG 10 SB 11 SF 12 CNCL 

Le damos ENTER y aparece INSTALL SUCCESSFUL en DATE en los 3 renglones.

  DI GROUP (HOLA)                                                               
  ENTER COMMANDS                                                                
   NAME     TYPE         GROUP                                   DATE   TIME    
   HOLAMP   MAPSET       HOLA     *                           INSTALL SUCCESSFUL
   HOLACICS PROGRAM      HOLA     *                           INSTALL SUCCESSFUL
   HOLA     TRANSACTION  HOLA     *                           INSTALL SUCCESSFUL
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                      SYSID=CICS APPLID=CICS    
   RESULTS: 1 TO 3 OF 3                         TIME:  02.36.19  DATE: 23.309   
 PF 1 HELP       3 END 4 TOP 5 BOT 6 CRSR 7 SBH 8 SFH 9 MSG 10 SB 11 SF 12 CNCL 

Con 'ceda' hemos definido e instalado el programa.... Ahora solo falta cargarlo.

F3 y ALT+C para dejar todo en condiciones de ingresar otro comando.

Ingresamos el comando 'cemt s prog(HOLA)' (sin comillas), y nos muestra lo siguiente.

          S PROG(HOLA)                                                              
          STATUS:  RESULTS - OVERTYPE TO MODIFY                                         
           Prog(HOLA) Leng(0000000000)     Pro Ena Pri     Ced                      
              Res(000) Use(0000000000) Bel Uex Ful Qua Cic                              

El 'Leng(0000000000)' significa que aún no está ocupando memoria el programa, por lo tanto, no está cargado.

Para cargarlo, introducimos una 'N' (sin comillas) entre 'Pri' y 'Ced'. Quedaría así.

               S PROG(HOLA)                                                              
               STATUS:  RESULTS - OVERTYPE TO MODIFY                                         
                Prog(HOLA) Leng(0000000000)     Pro Ena Pri N   Ced                      
                   Res(000) Use(0000000000) Bel Uex Ful Qua Cic                              

Al darle ENTER se modificará la 'Leng' mostrando cuanto ocupa el programa, y habremos dejado listo el programa para ejecutarse la próxima vez que se reinicie CICS.

F3 y ALT+C para dejar todo en condiciones de ingresar otro comando.

'cesf logoff' para salir de cics normalmente. Pero en este caso no debemos ejecutarlo.



Ahora vamos a apagar CICS y reiniciarlo para probar el programa.

El comando 'CEMT P SHUT I' (sin comillas) apagará de forma correcta el CICS.

Para darle arranque nuevamente, desde la consola 1 (la de carga), 'S CICSA' (sin comillas) que significa START CICSA (el miembro que cambiamos al principio).

Una vez que el CICS arranque, entramos desde la pantalla de bienvenida de z/OS con 'L CICS'.

Al mostrar la pantalla de bienvenida de CICS con ALT+C quedamos en condiciones de ingresar un comando.

En este caso nuestro comando sera 'HOLA' (sin comillas).





¡Listo!