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:
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!