Instalación ServerPak z/OS (II)

Siguiendo con el punto anterior, en el que se explicó que es un ServerPack, ahora toca instalar la herramienta que utilizaremos para implantar todo.

Instalación del DIALOG

Instalar el DIALOG es lo primero que se tiene que hacer. El procedimiento varía según el formato recibido (electrónico o por cinta), pero baste decir que el de cinta está en el interior de la cinta RIM. En el formato electrónico es lanzar un JCL de carga. Dado que en mi caso, he recibido todo en formato electrónico, seguiré por esta vía, pero salvo por un par de diferencias, sobre todo relativas a la carga del FTP, el proceso de instalación de un ServerPak es idéntico. Por tanto, seguiremos los siguientes pasos:

1.- Crearemos un Volumen 3390 para alojar todo el instalador. Esto viene muy bien, porque para futuras instalaciones de DIALOG, ir siempre a los mismos volúmenes da la independencia necesaria. En mi caso, creé un volumen 3390 modelo 9, de 9 GB. Lo inicializaremos con el ICKDSF, siguiendo el siguiente JCL de ejemplo:

 

//INITVOL1 JOB (FB3TR,60000,4365),'SVTSC.CBIPO.89C',
//             NOTIFY=&SYSUID,                      
//             CLASS=A,MSGCLASS=H,MSGLEVEL=(1,1)    
//*                                                 
//*                                                 
//INSP1   EXEC PGM=ICKDSF,REGION=2M                  
//SYSPRINT DD  SYSOUT=*                             
//SYSIN    DD  *                                    
 INIT UNIT(1030) VOLID(SRVPK1) VTOC(200,0,15) -     
     INDEX(201,0,15) NOVERIFY NOCHECK

 

2.- Crearemos un catálogo de usuario y su ALIAS, que mantenga todos los datasets del ServerPak y su DIALOG, con un JCL tal que:

//DEFINCAT JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID 
//DFNEWCAT EXEC PGM=IDCAMS                                      
//SYSPRINT DD SYSOUT=*                                           
//SYSIN    DD *                                                 
 DEFINE USERCATALOG -                                           
       (NAME(USERCAT.SRVPAK) -                                  
        VOLUME(SRVPK1) -                                         
        MEGABYTES(15 5) -                                       
        ICFCATALOG -                                            
        FREESPACE(20 20) -                                      
        STRNO(3) -                                              
        REPLICATE ) -                                           
 DATA( CONTROLINTERVALSIZE(4096) -                              
       BUFND(4) ) -                                             
 INDEX( BUFNI(4) )                                              
 DEFINE ALIAS (NAME(SRVPAK) RELATE(USERCAT.SRVPAK)

 

Es decir, que todos los HLQ que empiecen por SRVPAK se catalogarán aquí dentro.

3.- Crearemos un Dataset de JCL llamado SRVPAK.SIST.JCL donde iremos dejando estos JCLs. Entre ellos, vamos a dejar un JCL donde crearemos un HFS para alojar los fuentes del ServerPak, en un volumen grande, un 3390-27 para tener todo el HFS allí metido y que nos quepa. El JCL de inicialización de disco, será igual que el del punto 1, pero lo llamaremos SERV01. Y el JCL de creación del HFS es el siguiente:

//DEFHFSDS JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID
//PASO001  EXEC PGM=IEFBR14                                    
//SYSPRINT DD SYSOUT=*                                          
//DDNAME1  DD DSN=SRVPAK.SERVICE.HFS,                          
//            DISP=(NEW,CATLG),VOL=SER=SERV01,                 
//            SPACE=(TRK,(400000,100,1)),                      
//            DSNTYPE=HFS                                      
//

 

4.- Una vez creado el HFS, crearemos un punto de montaje llamado /service con un mkdir /service desde el OMVS y lo añadiremos a nuestro BPXPRMXX el punto de montaje:

MOUNT FILESYSTEM('SRVPAK.SERVICE.HFS')  
      MOUNTPOINT('/service')
      TYPE(HFS) MODE(RDWR)

 

5.- Montaremos un FTP por ejemplo con un Filezilla FTP Server en un servidor (por ejemplo, con IP 192.168.1.4, con usuario shopzseries y misma password) y crearemos las carpetas y copiaremos lo descargado en la web de IBM allí dentro).

6.- En este punto, hemos llegado ya a dejar preparada la infraestructura para instalar el DIALOG y el resto del Serverpack. Para instalar el DIALOG, lanzaremos este JCL especialmente preparado desde los servicios electrónicos de IBM que tiene el siguiente contenido:

//LOADRIMS JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=&SYSUID,      
//             REGION=0M                                               
//*******************************************************************/
//* 5751-CS9                                                        */
//* COPYRIGHT IBM CORP.  1988, 2013                                 */
//*******************************************************************/
//*                                                                   
//**********************************************                      
//* DO NOT TURN CAPS ON. THIS JOB CONTAINS CASE                        
//*         SENSITIVE CONTROL CARDS.                                  
//**********************************************                      
//*                                                                   
//* Before submitting this LOADRIMS job, allocate and mount a UNIX    
//* file system to contain the destination directory and its files.   
//*                                                                   
//* You have the option to customize this JCL to use either           
//* Secure FTP (FTPS) or Standard FTP (FTP).                          
//* Please see NOTE 4 for Secure FTP and NOTE 5 for Standard FTP.     
//*                                                                   
//* Read all comments carefully and modify them to suit your          
//* environment before submitting the job.                            
//*                                                                   
//* NOTE 1: CHANGE SRVPAK.DIALOG to your environment's MASTER HLQ     
//*                SRVPK1              to a valid DASD SRVPK1         
//*                                                                   
//* NOTE 2: If you want your SCPPCENU Clist data set to have RECFM=VB,
//*         locate the statement that looks like:                      
//*              archid="SCPPCENU" and change it to:                  
//*              archid="SCPPCENV"                                    
//*                                                                   
//*         (Do not forget to specify the proper RECFM when you       
//*          generate the RECEIVE job later.)                         
//*                                                                   
//* NOTE 3: On the SET statement below, specify the path for the      
//*         directory in which the CustomPac dialog and order         
//*         information will be stored.  Specify a directory         
//*         that has at least 100 cylinders (80 MB) of free space    
//*                                                                   
//* NOTE 4: Secure FTP connection using TLS                          
//*                                                                  
//*         Change host_userid to a userid which is authorized to    
//*         use Secure FTP. Ensure the "Root 2 - GeoTrust Global CA" 
//*         certificate is connected to the keyring with trust       
//*         status.  Also review the KEYRING statement in the        
//*         FTP.DATA input and change the ShareableKeyRing           
//*         as per RACF setup on your system.  For more information  
//*         on the specific RACF tasks that need to be completed     
//*         on your system to support Secure FTP, visit the Shopz    
//*         home page at: "www.ibm.com/software/shopzseries" and     
//*         click the "Connectivity Test for SW download readiness"  
//*         link in the "Using Shopz" box near the bottom of the page.
//*                                                                   
//* NOTE 5: Standard FTP connection                                  
//*                                                                    
//*         If you want to use Standard FTP to communicate with        
//*         the IBM Server, comment FTP.DATA statements in the CRTFTPD1
//*         step that are setting the FTP TLS connection.              
//*                                                                    
//*                                                                     
//* NOTE 6: If you want to use an existing FTP.DATA file or data set,  
//*         comment the CRTFTPD1 and DELFTPD1 steps.                   
//*         In the DOWNLOAD step, update the <FTPOPTIONS> tag          
//*         value used for the SMPCLNT DD input with the               
//*         directory path and file name or data set name for the      
//*         existing FTP.DATA file.                                    
//*         <FTPOPTIONS> -f /tmp/host_userid.ftp.data </FTPOPTIONS>    
//*                                or                                  
//*         <FTPOPTIONS> -f "//'tsouid.FTP.DATA'" </FTPOPTIONS>        
//*                                                                    
//* NOTE 7: The <FTPOPTIONS> tag contains only -f parameter. You can   
//*         add any additional parameters as required by your          
//*         system settings.                                             
//*                                                                       
//SETPATH  SET PATH='/service/'   <<<<<<--- Nuestro punto de montaje                               
//*                                                                      
//*                                                                       
//* Create a temporary FTP.DATA file to be used for FTP by GIMGTPKG.     
//CRTFTPD1  EXEC PGM=IKJEFT1B                                            
//SYSTSPRT  DD SYSOUT=*                                                  
//DATAIN    DD *                                                          
  ; These FTP.DATA statements provide the FTP client with information    
  ; to communicate with the IBM Server securely using TLS.               
  ;SECURE_MECHANISM  TLS                                                  
  ;TLSRFCLEVEL       CCCNONOTIFY                                         
  ;TLSMECHANISM      FTP                                                 
  ;SECURE_FTP        REQUIRED                                            
  ;SECURE_CTRLCONN   CLEAR    ; Commands may be clear (unencrypted).     
  ;SECURE_DATACONN   PRIVATE  ; Payload must be encrypted.               
  ;KEYRING           host_userid/ShareableKeyRing                        
  ;EPSV4             TRUE                                        
/*                                                              
//FTPDATA  DD PATH='/tmp/ibmuser.ftp.data',                     
//            PATHOPTS=(OWRONLY,OCREAT,OTRUNC),PATHMODE=SIRWXU  
//SYSTSIN  DD *                                                  
  OCOPY INDD(DATAIN) OUTDD(FTPDATA)                             
/*                                                              
//*                                                             
//DOWNLOAD EXEC PGM=GIMGTPKG                                     
//*                                                             
//*   *******************************************************   
//*   *   Download the order data                               
//*   *******************************************************   
//*                                                             
//SMPOUT   DD SYSOUT=*                                          
//SYSPRINT DD SYSOUT=*                                          
//*   *******************************************************   
//*   *   He tenido que poner la ruta de JAVA                   
//*   *******************************************************
//SMPJHOME DD PATH='/usr/lpp/java/J5.0'                     
//*SMPCPATH DD PATH='/usr/lpp/smp/classes'                  
//*                                                         
//SMPNTS   DD PATHDISP=KEEP,                                
// PATH='&PATH.'                                            
//*                                                          
//SMPSRVR  DD *                                             
<SERVER                                                     
  host="192.168.1.4"    <<<<<--- Nuestro Servidor FTP                                     
  user="shopzseries"    <<<<<--- Usuario FTP                                     
  pw="shopzseries">     <<<<<--- Password FTP                                     
  <PACKAGE                                                   
      file="/order/GIMPAF.XML"             
      hash="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" <<<- Hash       
      id="STXXXXXX.order">      <<<- Numero de Orden ServerPak                        
  </PACKAGE>                                                
</SERVER>                                                    
/*                                                          
//SMPCLNT  DD *                                             
<CLIENT  retry="3">                                         
    <FTPOPTIONS>-f /tmp/ibmuser.ftp.data </FTPOPTIONS>      
</CLIENT>                                                   
/*                                                          
//*                                                         
//GIMUNZIP EXEC PGM=GIMUNZIP,COND=(0,LT)                    
//*                                                         
//*   *******************************************************
//*   *   Load the master dialog data sets                  
//*   *******************************************************
//*                                                         
//*                                                         
//SMPDIR     DD PATHDISP=KEEP,                              
// PATH='&PATH.STXXXXXX.order'                               
//*                                                         
//SMPOUT     DD SYSOUT=*                                    
//SYSPRINT   DD SYSOUT=*                         
//SYSUT3     DD UNIT=SYSALLDA,SPACE=(CYL,(50,10))
//SYSUT4     DD UNIT=SYSALLDA,SPACE=(CYL,(25,5)) 
//SYSIN      DD *                                
<GIMUNZIP>                                       
   <ARCHDEF                                      
      archid="DOCLIB"                            
      newname="SRVPAK.DIALOG.DOCLIB"             
      volume="SRVPK1"/>                          
   <ARCHDEF                                      
      archid="SCPPCENU"                          
      newname="SRVPAK.DIALOG.SCPPCENU"           
      volume="SRVPK1"/>                          
   <ARCHDEF                                      
      archid="SCPPEENU"                          
      newname="SRVPAK.DIALOG.SCPPEENU"           
      replace="yes"                              
      volume="SRVPK1"/>                           
  <ARCHDEF                            
     archid="SCPPHENU"                
     newname="SRVPAK.DIALOG.SCPPHENU" 
     replace="yes"                    
     volume="SRVPK1"/>                
  <ARCHDEF                             
     archid="SCPPLENU"                
     newname="SRVPAK.DIALOG.SCPPLENU" 
     volume="SRVPK1"/>                
  <ARCHDEF                            
     archid="SCPPLOAD"                
     newname="SRVPAK.DIALOG.SCPPLOAD" 
     volume="SRVPK1"/>                
  <ARCHDEF                            
     archid="SCPPMENU"                
     newname="SRVPAK.DIALOG.SCPPMENU" 
     volume="SRVPK1"/>                
  <ARCHDEF                            
      archid="SCPPPENU"                                              
      newname="SRVPAK.DIALOG.SCPPPENU"                               
      volume="SRVPK1"/>                                              
   <ARCHDEF                                                           
      archid="SCPPSENU"                                              
      newname="SRVPAK.DIALOG.SCPPSENU"                               
      volume="SRVPK1"/>                                              
   <ARCHDEF                                                           
      archid="SCPPTENU"                                              
      newname="SRVPAK.DIALOG.SCPPTENU"                               
      volume="SRVPK1"/>                                              
</GIMUNZIP>                                                          
/*                                                                   
//*                                                                  
//INVUPDT1 EXEC PGM=IDCAMS,COND=(0,LT)                                
//*                                                                  
//*   ****************************************************************
//*   *   Add or replace Version record with the key"V" to SCPPVENU  
//*   ****************************************************************
//*                                                                  
//SYSPRINT DD  SYSOUT=*                                              
//*                                                                   
//IVENU    DD   DSN=SRVPAK.DIALOG.SCPPSENU(VERSION),DISP=SHR         
//SYSIN    DD  *                                                     
  DEFINE CLUSTER(                          -                         
                   NAME(SRVPAK.DIALOG.SCPPVENU) -                    
                   CYL(5  1)                  -                      
                   FREESPACE(30 30)           -                      
                   KEYS(30 0)                 -                      
                   RECORDSIZE(1024 32760)     -                      
                   UNIQUE                     -                      
                   SHAREOPTIONS(2 3)          -                      
                   VOLUME(SRVPK1)             -                       
                 )                            -                      
            DATA ( NAME(SRVPAK.DIALOG.SCPPVENU.DATA)) -              
            INDEX( NAME(SRVPAK.DIALOG.SCPPVENU.INDEX))               

    REPRO INFILE(IVENU) OUTDATASET(SRVPAK.DIALOG.SCPPVENU) 
/*                                                          
//* Delete the temporary FTP.DATA file created earlier.     
//DELFTPD1  EXEC PGM=IKJEFT01,COND=(0,LT)                   
//SYSTSPRT  DD SYSOUT=*                                     
//SYSTSIN   DD *                                            
  BPXBATCH SH rm /tmp/ibmuser.ftp.data                       
/*                                                          
//*

 

Por temas de confidencialidad, he cambiado y puesto una “X” en lo relativo al número de Orden ServerPak y también el Hash.

Llegados a este punto, este JCL ha creado los Datasets necesarios con el producto DIALOG instalado. La lista que debería haber creado es la siguiente:

SRVPAK.DIALOG.DOCLIB

SRVPAK.DIALOG.SCPPCENU

SRVPAK.DIALOG.SCPPEENU.DATA

SRVPAK.DIALOG.SCPPEENU.INDEX

SRVPAK.DIALOG.SCPPHENU.DATA

SRVPAK.DIALOG.SCPPHENU.INDEX

SRVPAK.DIALOG.SCPPLENU

SRVPAK.DIALOG.SCPPLOAD

SRVPAK.DIALOG.SCPPMENU

SRVPAK.DIALOG.SCPPPENU

SRVPAK.DIALOG.SCPPSENU

SRVPAK.DIALOG.SCPPTENU

SRVPAK.DIALOG.SCPPVENU.DATA

SRVPAK.DIALOG.SCPPVENU.INDEX

 

Para invocar el DIALOG, basta con hacer un EXEC al miembro CPPCSAMP del Dataser SRVPAK.DIALOG.SCPPCENU. O lo que es lo mismo, desde el TSO:

EXEC ‘SRVPAK.DIALOG.SCPPCENU(CPPCSAMP)’

Lo que mostraría por fin el DIALOG en todo su esplendor:

dialog-01

 

 

 

 

 

 

 

Fig. 1: Menú Principal del Dialog

Llegados a este punto, en una siguiente entrega explicaré como realizar la recepción de la orden ServerPack. Seguid atentos a este Blog!

About Urtzi Larrieta

Director de Proyectos de entornos Mainframe, AIX y AS/400, llevo mas de 10 años trabajando para el sector servicios y banca, así como proyectos de sistemas, renovación tecnológica, estrategias de backup, y consultoría de sistemas.