• Home
  • Dashboard
  • Garry Womack - Albums - Serena Trip to Colorado Springs
  • Within the ChangeMan ZMF Administrators Guide, there is an “Enabling the Network Data Mover” section that discusses taking a copy of the #NDM member from the CMNZMF CNTL file, and then following a few... steps. In this enhancement request, I’m proposing that we streamline this process a bit. It appears that we have an opportunity to make a ChangeMan ZMF upgrade (or even an installation) a little more seamless when it comes to ChangeMan ZMF systems configured to use NDM (Connect:Direct). Instead of putting a copy of the #NDM member into the custom CMNZMF CNTL library, changing the “$/” to “./”, and specifying the correct “DSN=somnode.NDMPLIB” (i.e. &NDMPLIB) library before running the JCL that uses PGM=IEBUPDTE, why not have the NDM PROCESS members be built within the ChangeMan ZMF skeleton? The way I see it, the #NDM member needs to be run to add NDM PROCESS members against each node that NDM (Connect:Direct) will be running in. This means that multiple ‘somnode.NDMPLIB’ (i.e. &NDMPLIB) libraries would need to be updated in various places. In a multi-LPAR shop, this can be a fair bit of effort—especially being that a ChangeMan ZMF administrator may not have access to update ‘somnode.NDMPLIB’ libraries and would need to coordinate with another group, such as System Programming. Also, during a ChangeMan ZMF upgrade, if any of the NDM PROCESS members (e.g. CMNSUB and CMNNDM) were to be changed by Serena R&D as part of an upgrade, then the ChangeMan ZMF administrator needs to remember to change the NDM PROCESS members in the various ‘somnode.NDMPLIB’ libraries. Additionally, consideration needs to be done in that a current production version of ChangeMan ZMF may need to still be using the old version of, say, the CMNSUB NDM PROCESS, but the new upgraded ChangeMan ZMF test version may need to be using the new version of the CMNSUB PROCESS. How does one ensure that a given ChangeMan ZMF subsystem is using the current version of the CMNSUB NDM PROCESS when there is only one ‘somnode.NDMPLIB’ per NDM node that can be used for all (test and production) ChangeMan ZMF subsystems? Additionally, the #NDM member currently creates the following NDM PROCESS members: • CMNSUB • CMNNDM • COPY • RUNJOB I did a search against the various skeletons, and the only NDM PROCESS members that are used are: • CMNSUB • CMNNDM It appears that we don’t need the following ones anymore: • COPY • RUNJOB Based on my analysis, the only place that we will need to build the NDM PROCESS members on-the-fly is within the CMN$$PND skeleton. What I’m proposing is to modify the delivered CMN$$PND skeleton from ZMF as follows: *********************************************************** Top of Data ******************************************************* S E R C M P A R (MVS - 862 - 20110512) 2 TEXTONLY THURSDAY JULY 23, 2015 (2015/204) 17:45:31 PAGE 1 SYSUT1=STD50.CHG.A019C.#CF4A217.#31D3497.SSV,SYSUT2=STD50.CHG.A0097.#CF4A217.#30B0717.STG //*)IM CMN$$PND O N E 1 )CM O N E 2 )CM ROUTINE TO EXECUTE CONNECT:DIRECT DATA TRANSMISSION VEHICLE O N E 3 )CM AT A REMOTE SITE. O N E 4 )CM O N E 5 )CM SIGNON LIBRARY SHOULD CONTAIN: "SIGNON USERID(USERID)" O N E 6 )CM O N E 7 )CM This file should be protected so that only ChangeMan ZMF and other O N E 8 )CM authorized tsoids are permitted access. O N E 9 )CM O N E 10 ++++++++|+++.++++1++++.++++2++++.++++3++++.++++4++++.++++5++++.++++6++++.++++7++++.++++8+++++++++++++++++++++ I //NDMPRCLB EXEC PGM=IEBUPDTE, *** CREATE CONNECT:DIRECT PROCLIB DIF T W O 11 + I // PARM=NEW DIF T W O 12 + I //SYSPRINT DD SYSOUT=* DIF T W O 13 + I //SYSUT2 DD DISP=(,PASS),DSN=&&&&NDMPLIB, DIF T W O 14 + I // UNIT=SYSDA,SPACE=(TRK,(1,1,20),RLSE), DIF T W O 15 + I // DCB=(DSORG=PO,RECFM=FB,LRECL=80,BLKSIZE=0) DIF T W O 16 + I //SYSIN DD * DIF T W O 17 + I ./ ADD SEQFLD=801,NAME=CMNSUB DIF T W O 18 + I CMNSUB PROCESS DIF T W O 19 + I RUN JOB (DSN=&&DSN) - DIF T W O 20 + I &&SRC DIF T W O 21 + I ./ ADD SEQFLD=801,NAME=CMNNDM DIF T W O 22 + I CMNNDM PROCESS DIF T W O 23 + I CPYPKG COPY FROM(PNODE DSN=&&PDSN1, - DIF T W O 24 + I DISP=SHR) - DIF T W O 25 + I TO (SNODE DSN=&&SDSN1, - DIF T W O 26 + I DISP=(RPL,CATLG)) - DIF T W O 27 + I COMPRESS PRIME=X'40' DIF T W O 28 + I RUNDST IF (CPYPKG = 0) THEN DIF T W O 29 + I RUN JOB (DSN=&&DSN) - DIF T W O 30 + I &&SRC DIF T W O 31 + I EIF DIF T W O 32 + I /* DIF T W O 33 + ++++++++|+++.++++1++++.++++2++++.++++3++++.++++4++++.++++5++++.++++6++++.++++7++++.++++8+++++++++++++++++++++ //DMBATCH EXEC PGM=DMBATCH, *** TRANSFER DATA VIA CONNECT:DIRECT O N E 11 // PARM=(NNNNNNN) O N E 12 ++++++++|+++.++++1++++.++++2++++.++++3++++.++++4++++.++++5++++.++++6++++.++++7++++.++++8+++++++++++++++++++++ D //DMPUBLIB DD DISP=SHR,DSN=&NDMPLIB DIF O N E 13 + --------|---.----1----.----2----.----3----.----4----.----5----.----6----.----7----.----8--------------------- I //DMPUBLIB DD DISP=(OLD,DELETE),DSN=&&&&NDMPLIB DIF T W O 36 + I // DD DISP=SHR,DSN=&NDMPLIB DIF T W O 37 + ++++++++|+++.++++1++++.++++2++++.++++3++++.++++4++++.++++5++++.++++6++++.++++7++++.++++8+++++++++++++++++++++ //DMMSGFIL DD DISP=SHR,DSN=&RNDMMID O N E 14 //DMPRINT DD SYSOUT=* O N E 15 //NDMCMDS DD SYSOUT=* O N E 16 //SYSUDUMP DD SYSOUT=* O N E 17 //SYSPRINT DD SYSOUT=* O N E 18 //SYSIN DD DISP=SHR,DSN=&NDMSGNO O N E 19 // DD * O N E 20 NETMAP=&RNDMMAP,ESF=YES O N E 21 S E R C M P A R (MVS - 862 - 20110512) 2 TEXTONLY THURSDAY JULY 23, 2015 (2015/204) 17:45:31 PAGE 2 SYSUT1=STD50.CHG.A019C.#CF4A217.#31D3497.SSV,SYSUT2=STD50.CHG.A0097.#CF4A217.#30B0717.STG SER71I - END OF TEXT ON FILE SYSUT1 SER72I - END OF TEXT ON FILE SYSUT2 SER75I - RECORDS PROCESSED: SYSUT1(21)/SYSUT2(45),DIFFERENCES(0,0,24) EXPLANATION - 0 RECORDS DIFFER THAT SYNCHRONIZED TOGETHER 0 RECORDS WERE CONSIDERED INSERTED ON SYSUT1 24 RECORDS WERE CONSIDERED INSERTED ON SYSUT2 SER80I - TIME OF DAY AT END OF JOB: 17:45:31 - CONDITION CODE ON EXIT: 4 ********************************************************** Bottom of Data ***************************************************** Honestly, I’m not even sure we need to have the following, since ChangeMan ZMF out-of-the-box does not call any NDM PROCESS members sitting within the NDM process library, &NDMPLIB: //DMPUBLIB DD DISP=(OLD,DELETE),DSN=&&&&NDMPLIB // DD DISP=SHR,DSN=&NDMPLIB We could get away with just having: //DMPUBLIB DD DISP=(OLD,DELETE),DSN=&&&&NDMPLIB since the required NDM PROCESS members that ChangeMan ZMF needs are stored within &&NDMPLIB that is created via the NDMPRCLB job step. Additionally, the CMN$$NDM skeleton currently does not even reference &NDMPLIB (i.e. ‘somnode.NDMPLIB’) in the DMPUBLIB DD. Even though there is a bit extra overhead in that these NDM PROCESS members need to be generated into the &&NDMPLIB temporary file each time the CMN$$PND skeleton is imbedded, the advantage is that the &NDMPLIB (i.e. “DSN=somnode.NDMPLIB”) does not need to be updated at each NDM node in a coordinated fashion, and you have better support for different versions of the CMNSUB and CMNNDM NDM PROCESS that could occur between different versions of ChangeMan ZMF, since the test ChangeMan ZMF skeleton library concatenation would have the newer version of these NDM PROCESS members vs. the production ChangeMan ZMF skeleton library concatenation. If this enhancement request is accepted, then a few other minor changes need to be done to ensure that the CMNSUBIR process that prevents going over the 255 job step limit does not result in generating a job that has more than 255 job steps. The CMN$$PND skeleton is used as part of the CMNSUBIR’s error handling skeleton of CMNRPMER. The CMNRPMER skeleton imbeds CMNRPMT9. The CMNRPMT9 imbeds CMN$$PND. Because the CMN$$PND skeleton will have an extra job step due to the above proposed change, that means that there is one extra job step would be generated from the CMNRPMER error handling skeleton (specifically when NDM error handling is done; the other transmission vehicles have less job steps for error handling, so having a higher number won’t hurt for the other transmission vehicles). This means that everywhere: )SET SUBERRSK = CMNRPMER is done for the CMNSUBIR skeleton parameter, the: )SET SUBERRJS = 3 needs to be increased by 1. In this case, it would be easiest to consistently change all of the following skeletons: • CMN$$NPM • CMN$$RPM • CMNIMRPM • CMNRPICR • CMNRPMCR that reference the CMNRPMER to have the following set: )SET SUBERRJS = 4 Additionally, within the CMNSUBIR skeleton, the following comment line would need to be updated from: &SUBERRSK &SUBERRJS --------- --------- ... CMNRPMER 3 ... to: &SUBERRSK &SUBERRJS --------- --------- ... CMNRPMER 4 ... I’ve attached a copy of the proposed vendor version of the CMN$$PND skeleton that was modified from the ZMF version. Please take into consideration what should be done with the DMPUBLIB DD concatenation that I had mentioned above, since CMN$$NDM skeleton does not reference &NDMPLIB at all within DMPUBLIB DD. More

Recent Tweets