IBM Support

Creating a Basic CPSM CICSPlex environment

Technical Blog Post


Abstract

Creating a Basic CPSM CICSPlex environment

Body

 

CPSM (CICSPlex System Manager) makes managing your CICS systems much easier. It is also a requirement if you are going to use the CICS Explorer to view and manage multiple CICS regions. But CPSM can be a challenge to setup for the first time.

One of the questions we often get in Level 2 is how to setup a basic CICSPlex that spans multiple LPARs. That task involves setting up a CMAS on each LPAR and connecting them so that they can talk to each other. While there are a number of ways to do that, I will provide sample JCL below that you can customize to accomplish this task.

First let's start out with a picture of what you might want to setup. We'll start with a CICSPlex called PRODPLEX that spans two LPARs, with application regions running on both LPARs. Once you setup something like this, it can easily be extended across many more LPARs.

image

 

The steps I will describe below will be:

  • Specify the CPSM-related parameters for job DFHISTAR
  • Create the datasets needed to run CMAS001, including its EYUDREP file
  • Create the datasets needed to run CMAS002, including its EYUDREP file
  • Define the first half of a connection from CMAS001 to CMAS002 and indicate that CMAS002 is going to help manage PRODPLEX
  • Define the second half of the above connection, going the other direction from CMAS002 back to CMAS001
  • Run a batch job to define additional CICS regions (TORs, AORs, FORs, WUI Servers) as needed

 


 

The first step is to build the CMAS region on LPAR 1. When you customized your CICS installation by running the DFHISTAR job you specified CPSM related parameters at the end of it. To specify those parameters so they match the sample environment in the above diagram, you would specify:

image

Once you run DFHISTAR, one of the customized jobs produced by it is EYUCMSDS. This job creates the necessary datasets to run a CMAS. The first three steps in that job delete, define and initialize the EYUDREP file for CMAS001. (The EYUDREP file, or Data Repository file, is the location where a CPSM CMAS keeps all of its information. One EYUDREP file is required for each CMAS. They may not be shared.) Those first three steps look similar to the following. The only manual change I made was to the space allocations. Initially it had RECORDS(500,3000). It is important that the EYUDREP file never run out of space, so I changed it to CYL(100,50) below:


//DELDREP  EXEC PGM=IDCAMS            
//SYSPRINT  DD  SYSOUT=*              
//SYSIN     DD  *                     
 DELETE  CVMGT2.CMAS001.EYUDREP       
 SET MAXCC=0                          
//DEFDREP  EXEC PGM=IDCAMS            
//SYSPRINT  DD  SYSOUT=*              
//SYSIN     DD  *                     
 DEFINE  CLUSTER -                    
   (NAME(CVMGT2.CMAS001.EYUDREP) -    
   CYL(100,50) -                  
    CISZ(8192) -                      
   RECSZ(200,6550) -                  
    KEYS(64,0) -                      
     SHR(2) -                         
 INDEXED -                            
 SPEED -                              
 REUSE)                               
/*                                    
//***************************************************
//DREPINIT EXEC PGM=EYU9XDUT,
//             COND=(8,LT),
//             PARM=('CMASNAME=CMAS001',
//             'DAYLIGHT=N',
//             'TIMEZONE=U',
//             'SYSID=CM01',
//             'ZONEOFFSET=0')
//EYUXDPRM  DD *
 WUI=YES
 WUIPLEX=PRODPLEX
 WUINAME=WUI001
 WUIAPPLID=WUI001
 WUISYSID=WU01
/*
//STEPLIB   DD DISP=SHR,DSN=CVM.HALSUPT.V5R2M0.SEYUAUTH
//EYUDREP   DD DISP=OLD,DSN=CVMGT2.CMAS001.EYUDREP
//SYSPRINT  DD SYSOUT=*
//

Once you run this job, your EYUDREP file will be ready for use with a definition of PRODPLEX and an entry for the WUI Server Region to run in that plex. You can start up CMAS001, pointing it to the EYUDREP file you just created. It is critical that your CMAS name and SYSIDNT match the EYUDREP file it is using. If it does not, the CMAS will issue an error message, produce an SVC dump, and terminate.

Once CMAS001 has fully initialized, you will see the following message at the bottom of the JOBLOG:

EYUXL0010I CMAS001 CMAS initialization complete.

Now you will run the same EYUCMSDS job, but create datasets for your second CMAS, CMAS002. You will NOT be creating a CICSPlex in this step. Just an empty EYUDREP file for CMAS002 to use. The EYUDREP parts of that job are:

//DELDREP  EXEC PGM=IDCAMS            
//SYSPRINT  DD  SYSOUT=*              
//SYSIN     DD  *                     
 DELETE  CVMGT2.CMAS002.EYUDREP       
 SET MAXCC=0                          
//DEFDREP  EXEC PGM=IDCAMS            
//SYSPRINT  DD  SYSOUT=*              
//SYSIN     DD  *                     
 DEFINE  CLUSTER -                    
   (NAME(CVMGT2.CMAS002.EYUDREP) -    
   CYL(100,50) -                  
    CISZ(8192) -                      
   RECSZ(200,6550) -                  
    KEYS(64,0) -                      
     SHR(2) -                         
 INDEXED -                            
 SPEED -                              
 REUSE)                               
/*                                    
//***************************************************
//DREPINIT EXEC PGM=EYU9XDUT,
//             COND=(8,LT),
//             PARM=('CMASNAME=CMAS002',
//             'DAYLIGHT=N',
//             'TIMEZONE=U',
//             'SYSID=CM02',
//             'ZONEOFFSET=0')
//EYUXDPRM  DD *
 WUI=NO
/*
//STEPLIB   DD DISP=SHR,DSN=CVM.HALSUPT.V5R2M0.SEYUAUTH
//EYUDREP   DD DISP=OLD,DSN=CVMGT2.CMAS002.EYUDREP
//SYSPRINT  DD SYSOUT=*
//

When this EYUCMSDS job finishes, you can bring CMAS002 up on LPAR 2. You should see the following at the bottom of its JOBLOG:

EYUXL0010I CMAS002 CMAS initialization complete.

At this point, you have two CMASes running, and that's all. They're not talking to each other yet, so you need to define a connection from each side pointing to the other. The next steps will do that.

With CMAS001 up and running, run the following utility on the same LPAR where CMAS001 is. It will define a connection to CMAS002, and indicate that CMAS002 is supposed to manage PRODPLEX. This CPSM utility is documented here: The EYU9XDBT CICSPlex SM definition utility

...jobcard
//*************************************************************
//*                                                           *
//*************************************************************
//*
//  SET  CPSMHLQ=CVM.HALSUPT.V5R2M0    CICSPLEX SM DATASET HLQ
//  JCLLIB ORDER=(&CPSMHLQ..SEYUPROC) <- Location of EYUJXBTP
//*
//EYU9XDBT EXEC EYUJXBTP,
//             CPSMHLQ=&CPSMHLQ
//*
//EYU9XDBT.SYSIN DD *
 CONTEXT CMAS001
 OPTION FEEDBACK VERBOSE
 IMPORT RESDEFS * *
/*
//EYU9XDBT.RESDEFS DD *
DEFINE CMTCMDEF CMAS002
CMTCMDEF_DESCCODEPAGE = "37";
CMTCMDEF_PROTOCOL     = "MRO";
CMTCMDEF_RECVBUF      = "8192";
CMTCMDEF_RECVPFX      = "<";
CMTCMDEF_SECATTACH    = "LOCAL";
CMTCMDEF_SENDBUF      = "8192";
CMTCMDEF_SENDPFX      = ">";
CMTCMDEF_SYSID        = "CM02";
CMTCMDEF_TARGETAPPL   = "CMAS002";
CMTCMDEF_TARGETNAME   = "CMAS002";
 
DEFINE CPLXCMAS CMAS002 PRODPLEX
CPLXCMAS_BOTRSUPD     = "10";
CPLXCMAS_CICSPLEX     = "PRODPLEX";
CPLXCMAS_CMASNAME     = "CMAS002";
CPLXCMAS_DAYLGHTSV    = "YES";
CPLXCMAS_INTERVAL     = "480";
CPLXCMAS_MPNAME       = "CMAS001";
CPLXCMAS_MPSTATUS     = "NO";
CPLXCMAS_READRS       = "200";
CPLXCMAS_RODMPOP      = "NO";
CPLXCMAS_RSPOOLID     = "DFHRSTAT";
CPLXCMAS_SECBYPASS    = "NO";
CPLXCMAS_SECCMDCHK    = "YES";
CPLXCMAS_SECRESCHK    = "YES";
CPLXCMAS_STATE        = "NORMAL";
CPLXCMAS_STATUS       = "2";
CPLXCMAS_SYSID        = "CM02";
CPLXCMAS_TMEZONE      = "T";
CPLXCMAS_TMEZONEO     = "0";
CPLXCMAS_TOPRSUPD     = "5";
CPLXCMAS_UPDATERS     = "15";
/*
//

The job must end with RC=0. You can look at the job's SYSTSPRT output to see that both DEFINE commands were successful. Further, if you look at the EYULOG from the running CMAS001, you will see messages showing that the batch job did connect and define what it was supposed to:

EYUCP0200I CMAS001 CMAS CMAS002 Being added to CMAS directory in CMAS CMAS001.                       
EYUXD0002I CMAS001 Add CONTEXT(CMAS001) MAJOR_ID(CMTCMDEF) MAJOR_NAME(CMAS002) MAJOR_VER(NONE)       
EYUXD0002I CMAS001  MINOR_ID(NONE) MINOR_NAME(NONE) MINOR_VER(NONE) By User(CVMGT2) On System(CMAS001)
EYUXD0002I CMAS001  Date(08615) Time(19:33:47).                                                      
EYUXD0002I CMAS001 Add CONTEXT(CMAS002) MAJOR_ID(CPLXCMAS) MAJOR_NAME(CMAS002) MAJOR_VER(NONE)       
EYUXD0002I CMAS001  MINOR_ID(CPLEXDEF) MINOR_NAME(PRODPLEX) MINOR_VER(NONE) By User(CVMGT2) On       
EYUXD0002I CMAS001  System(CMAS001) Date(08615) Time(19:33:47).                                     

Now you will define the connection going the other direction, from CMAS002 back to CMAS001. This next job must be run on the same LPAR where CMAS002 is up and running:

...jobcard
//*************************************************************
//*                                                           *
//*************************************************************
//*
//  SET  CPSMHLQ=CVM.HALSUPT.V5R2M0    CICSPLEX SM DATASET HLQ
//  JCLLIB ORDER=(&CPSMHLQ..SEYUPROC) <- Location of EYUJXBTP
//*
//EYU9XDBT EXEC EYUJXBTP,
//             CPSMHLQ=&CPSMHLQ
//*
//EYU9XDBT.SYSIN DD *
 CONTEXT CMAS002
 OPTION FEEDBACK VERBOSE
 IMPORT RESDEFS * *
/*
//EYU9XDBT.RESDEFS DD *
DEFINE CMTCMDEF CMAS001
CMTCMDEF_DESCCODEPAGE = "37";
CMTCMDEF_PROTOCOL     = "MRO";
CMTCMDEF_RECVBUF      = "8192";
CMTCMDEF_RECVPFX      = "<";
CMTCMDEF_SECATTACH    = "LOCAL";
CMTCMDEF_SENDBUF      = "8192";
CMTCMDEF_SENDPFX      = ">";
CMTCMDEF_SYSID        = "CM01";
CMTCMDEF_TARGETAPPL   = "CMAS001";
CMTCMDEF_TARGETNAME   = "CMAS001";
/*
//

This job must also get RC=0, and if you look at the output you will see the connection is defined.

NOW if you look at the EYULOG for CMAS002, you see a bit more. After the

EYUXL0010I CMAS002 CMAS initialization complete.

message, you will see a connection definition being made going back to CMAS001. But you will also see that connection be acquired and the two CMASes start talking, as Repository Synchronization takes place. Finally, you will see messages in CMAS002 that show it has imported the definition for PRODPLEX and is now participating in the management of it:

EYUCP0200I CMAS002 CMAS CMAS001 Being added to CMAS directory in CMAS CMAS002.                           
EYUXD0002I CMAS002 Add CONTEXT(CMAS002) MAJOR_ID(CMTCMDEF) MAJOR_NAME(CMAS001) MAJOR_VER(NONE)           
EYUXD0002I CMAS002  MINOR_ID(NONE) MINOR_NAME(NONE) MINOR_VER(NONE) By User(CVMGT2) On System(CMAS002)   
EYUXD0002I CMAS002  Date(08615) Time(19:48:50).                                                          

EYUCL0015I CMAS002 Receive Link Task initiated for MRO Network connection with CMAS CMAS001.             
EYUCS0010I CMAS002 Enhanced MRO Network connection to CMAS CMAS001 being initialized.                    
EYUCL0015I CMAS002 Send Link Task initiated for MRO Network connection with CMAS CMAS001.                
EYUCL0012I CMAS002 Connection of CMAS002 to CMAS001 started.                                             
EYUCS0006I CMAS002 MRO network connection CM01SEND assigned to link set.                                 
EYUCP0030I CMAS002 Connected directly to CMAS CMAS001.                                                   
EYUCL0012I CMAS002 Connection of CMAS002 to CMAS001 complete.                                            

EYUCP0203I CMAS002 Repository Synchronization started with CMAS CMAS001.                                 
EYUCP0204I CMAS002 Repository Synchronization successfully ended with CMAS CMAS001.                      

EYUXD0004I CMAS002 Import of PLEX(PRODPLEX) from CMAS(CMAS001) successful.                               
EYUTS0006I CMAS002 Topology Add of CICSPlex PRODPLEX Initiated.                                          
EYUTS0008I CMAS002 Topology Add of CICSPlex PRODPLEX Complete.                                           
EYUCW0107I CMAS002 Plex end-of-interval is set to occur once every 480 minutes for context (PRODPLEX).   
EYUBI0004I CMAS002 BAS initialization for CICSplex PRODPLEX has started.                                 
EYUBI0005I CMAS002 BAS initialization for CICSplex PRODPLEX is complete.    
                             


At this point, you can bring up WUI001 and signon, either through the browser or CICS Explorer. You can then use the WUI or CICS Explorer to do any further customization and definitions, including adding a CSYSDEF (CICS System Definition) for the second WUI WUI002, to PRODPLEX so that it can be brought up and connect directly to CMAS002.

However, all that said, while I still have you thinking in 'batch utility' mode, I'll note that you can add definitions for more CICS regions through batch as well, instead of through the WUI or the CICS Explorer. Depending on your background, you may find using batch utilities easier and more efficient, especially when you have a large number of definitions to make.

Let me introduce you to BATCHREP, the CPSM Batched Repository-Update Facility. To read more about using this utility, please see the documentation here: Submitting a batched repository-update (BATCHREP) job

There are a few different ways of running this utility. I will show you how to do so with a submitted batch job. The JCL to run the utility would look like this:

...jobcard
//BTCHUPD EXEC PGM=EYU9XDBC,REGION=5M                  
//STEPLIB   DD DISP=SHR,DSN=CVM.HALSUPT.V5R2M0.SEYUAUTH
//          DD DISP=SHR,DSN=CVM.HALSUPT.V5R2M0.SEYULOAD
//SYSPRINT  DD SYSOUT=*                                
//SYSABEND  DD SYSOUT=*                                
//SYSIN     DD *                                       
CMASNAME(CMAS001)                                      
EXECUTE                                                
INPUTDSN(CVMGT2.BATCHREP.INPUT)                        
INPUTMEMBER(CSYSDEF)                                   
OUTPUTUSER(EXUSER)                                     
PRINTNODE(LOCAL)                                       
PRINTCLASS(A)                                          
/*                                                     
//                                                     

This job just submits the request to the mentioned CMAS. The details about what you're asking to be done are in the INPUTDSN and INPUTMEMBER. In the sample above, the contents of CVMGT2.BATCHREP.INPUT(CSYSDEF) contains:

CONTEXT PRODPLEX;                                                       
                                                                        
CREATE CSYSDEF                                                          
                                                                        
   NAME(AOR001) APPLID(AOR001) SYSID(AOR1)                              
   DESC(CICS REGION AOR001)                                             
                                                                        
   ACTVTIME( ) AINSFAIL(CONTINUE) AUTOINST(COLDONLY) BOTRSUPD(*)        
   CICSSAMP(*) CONNSAMP(*) DAYLGHTSV(INHERIT) DBXSAMP(*)                
   DESCCODEPAGE(37) DYNROUTE(YES) FILESAMP(*) GLBLSAMP(*) HOST( )       
   JRNLSAMP(*) MONSTATUS(INHERIT) MXTACTION( ) MXTSEV(N_A) NETWORKID( ) 
   NRMACTION( ) NRMSEV(N_A) PORT( ) PROGSAMP(*) READRS(*) RETENTION(*)  
   RTASTATUS(YES) SAMACTION( ) SAMSEV(N_A) SDMACTION( ) SDMSEV(N_A)     
   SECBYPASS(INHERIT) SECCMDCHK(INHERIT) SECRESCHK(INHERIT) SOSACTION( )
   SOSSEV(N_A) STLACTION( ) STLSEV(N_A) TDMACTION( ) TDMSEV(N_A)        
   TDQSAMP(*) TERMSAMP(*) TMEZONE(*) TMEZONEO(*) TOPRSUPD(*) TRANSAMP(*)
   UPDATERS(*) WLMOPTEN(ENABLED) WLMQMODE(ALL) WLMSTATUS(YES)          
   WLMTHRSH(60) ;                                                       

  
Note that commands can span multiple lines, but each command terminates with a semicolon (;) character. Because most of the parameters for defining a CSYSDEF don't change, I've pulled the ones that do need to change up to the top.

When you submit the batch JCL to run BATCHREP, it should end with RC=00. That does not mean though that the definitions you asked to be created were created successfully. It only means that the batch submission process completed successfully. To check whether your CREATE worked, you need to look at the SYSOUT from the CMAS you connected to, CMAS001 in this case. Each time you submit a BATCHREP job, the CMAS will create a new SYSOUT with a system-generated name, and attach it to the CMAS job output. In SDSF, if you look at the CMAS output you should see:

SDSF JOB DATA SET DISPLAY - JOB CMAS001     
COMMAND INPUT ===>                                            SCROLL ===>
NP   DDNAME   StepName ProcStep DSID Owner    C Dest               Rec-Cnt
     JESMSGLG JES2                 2 CVMGT2   A                          4
     JESJCL   JES2                 3 CVMGT2   A                        143
     JESYSMSG JES2                 4 CVMGT2   A                          2
     DFHCXRF  CMAS001  CICS      103 CVMGT2   A                          0
     MSGUSR   CMAS001  CICS      105 CVMGT2   A                      2,846
     COUT     CMAS001  CICS      107 CVMGT2   A                          0
     EYULOG   CMAS001  CICS      108 CVMGT2   A                          0
     CEEMSG   CMAS001  CICS      109 CVMGT2   A                          0
     CEEOUT   CMAS001  CICS      110 CVMGT2   A                          0
     CRPO     CMAS001  CICS      111 CVMGT2   A                          0
     S0000003 CMAS001  CICS      114 CVMGT2   A EXUSER                   6
     S0000005 CMAS001  CICS      116 CVMGT2   A EXUSER                   5
     S0000007 CMAS001  CICS      118 CVMGT2   A EXUSER                   7
     S0000009 CMAS001  CICS      120 CVMGT2   A EXUSER                  71
     S0000011 CMAS001  CICS      122 CVMGT2   A EXUSER                   7
     S0000013 CMAS001  CICS      124 CVMGT2   A EXUSER                 137
     S0000015 CMAS001  CICS      126 CVMGT2   A EXUSER                  24
     S0000017 CMAS001  CICS      128 CVMGT2   A EXUSER                  24

Note that each time I submit a BATCHREP job, the details of the commands executed go to a new spun sysout.

The CREATE command could be duplicated as many times as needed. For example, to define three TOR regions, TOR001, TOR002, and TOR003, you would use:

CONTEXT PRODPLEX;                                                       
                                                                        
CREATE CSYSDEF                                                          
                                                                        
   NAME( TOR001 ) APPLID(TOR001) SYSID(TOR1)                               
   DESC(CICS REGION TOR001)        
                                     
                                                                        
   ACTVTIME( ) AINSFAIL(CONTINUE) AUTOINST(COLDONLY) BOTRSUPD(*)        
   CICSSAMP(*) CONNSAMP(*) DAYLGHTSV(INHERIT) DBXSAMP(*)                
   DESCCODEPAGE(37) DYNROUTE(YES) FILESAMP(*) GLBLSAMP(*) HOST( )       
   JRNLSAMP(*) MONSTATUS(INHERIT) MXTACTION( ) MXTSEV(N_A) NETWORKID( ) 
   NRMACTION( ) NRMSEV(N_A) PORT( ) PROGSAMP(*) READRS(*) RETENTION(*)  
   RTASTATUS(YES) SAMACTION( ) SAMSEV(N_A) SDMACTION( ) SDMSEV(N_A)     
   SECBYPASS(INHERIT) SECCMDCHK(INHERIT) SECRESCHK(INHERIT) SOSACTION( )
   SOSSEV(N_A) STLACTION( ) STLSEV(N_A) TDMACTION( ) TDMSEV(N_A)        
   TDQSAMP(*) TERMSAMP(*) TMEZONE(*) TMEZONEO(*) TOPRSUPD(*) TRANSAMP(*)
   UPDATERS(*) WLMOPTEN(ENABLED) WLMQMODE(ALL) WLMSTATUS(YES)          
   WLMTHRSH(60) ;                                                       

CREATE CSYSDEF                                                          
                                                                        
   NAME(TOR002) APPLID(TOR002) SYSID(TOR2)                              
   DESC(CICS REGION TOR002)  
                                           
                                 
                                       
   ACTVTIME( ) AINSFAIL(CONTINUE) AUTOINST(COLDONLY) BOTRSUPD(*)        
   CICSSAMP(*) CONNSAMP(*) DAYLGHTSV(INHERIT) DBXSAMP(*)                
   DESCCODEPAGE(37) DYNROUTE(YES) FILESAMP(*) GLBLSAMP(*) HOST( )       
   JRNLSAMP(*) MONSTATUS(INHERIT) MXTACTION( ) MXTSEV(N_A) NETWORKID( ) 
   NRMACTION( ) NRMSEV(N_A) PORT( ) PROGSAMP(*) READRS(*) RETENTION(*)  
   RTASTATUS(YES) SAMACTION( ) SAMSEV(N_A) SDMACTION( ) SDMSEV(N_A)     
   SECBYPASS(INHERIT) SECCMDCHK(INHERIT) SECRESCHK(INHERIT) SOSACTION( )
   SOSSEV(N_A) STLACTION( ) STLSEV(N_A) TDMACTION( ) TDMSEV(N_A)        
   TDQSAMP(*) TERMSAMP(*) TMEZONE(*) TMEZONEO(*) TOPRSUPD(*) TRANSAMP(*)
   UPDATERS(*) WLMOPTEN(ENABLED) WLMQMODE(ALL) WLMSTATUS(YES)          
   WLMTHRSH(60) ;                                                       

CREATE CSYSDEF                                                          
                                                                        
   NAME(TOR003) APPLID(TOR003) SYSID(TOR3)                              
   DESC(CICS REGION TOR003)         
 
                                   
                                                                        
   ACTVTIME( ) AINSFAIL(CONTINUE) AUTOINST(COLDONLY) BOTRSUPD(*)        
   CICSSAMP(*) CONNSAMP(*) DAYLGHTSV(INHERIT) DBXSAMP(*)                
   DESCCODEPAGE(37) DYNROUTE(YES) FILESAMP(*) GLBLSAMP(*) HOST( )       
   JRNLSAMP(*) MONSTATUS(INHERIT) MXTACTION( ) MXTSEV(N_A) NETWORKID( ) 
   NRMACTION( ) NRMSEV(N_A) PORT( ) PROGSAMP(*) READRS(*) RETENTION(*)  
   RTASTATUS(YES) SAMACTION( ) SAMSEV(N_A) SDMACTION( ) SDMSEV(N_A)     
   SECBYPASS(INHERIT) SECCMDCHK(INHERIT) SECRESCHK(INHERIT) SOSACTION( )
   SOSSEV(N_A) STLACTION( ) STLSEV(N_A) TDMACTION( ) TDMSEV(N_A)        
   TDQSAMP(*) TERMSAMP(*) TMEZONE(*) TMEZONEO(*) TOPRSUPD(*) TRANSAMP(*)
   UPDATERS(*) WLMOPTEN(ENABLED) WLMQMODE(ALL) WLMSTATUS(YES)          
   WLMTHRSH(60) ;                                                       


I hope these samples help you get started configuring your own CPSM environment. Given the sample JCL above, you should be able to cut and paste them into your own jobs, provide a jobcard, and perform CHANGE ALL commands so that the names of datasets and regions follow your own local naming standards.

Let me know through feedback on this article if you have any suggestions for clarity, or if there are other samples that you'd like to see in a future blog entry.

 

 

[{"Business Unit":{"code":"BU011","label":"Systems - zSystems"},"Product":{"code":"SSGMGV","label":"CICS Transaction Server"},"Component":"","Platform":[{"code":"PF035","label":"z/OS"}],"Version":"5.2;5.3;5.4;5.5","Edition":""}]

UID

ibm11080873