Toggle Sidebar
  • Recent updates
    • Post is under moderation
      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 8.1.0.00 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 8.1.1.00 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
      Stream item published successfully. Item will now be visible on your stream.
    • Post is under moderation
      Tom Mavor
      DevOps Interchange16 Attendee
      Attended the 2016 DevOps Interchange in Chicago
      Stream item published successfully. Item will now be visible on your stream.
    • Post is under moderation
      Tom Mavor
      DevOps Interchange16 Presenter
      Presented at the 2016 DevOps Interchange in Chicago
      Stream item published successfully. Item will now be visible on your stream.
    • Post is under moderation
      Tom Mavor
      Tom Mavor added HLLX cursorField to favorites
      The cursorField in HLLX is currently numeric and differs for a field based on the calling procedure. Best example is between package create and package update.  In one the work request is 12 in the ot...her it is 13.  The best solution is for the cursor field to be the name of the field Instead of a number.  That way when I write validation code I can share the code between processes without having to account for it In my code.  You want the same edits for both update an create in most cases. More
      Stream item published successfully. Item will now be visible on your stream.
    • Post is under moderation
      Tom Mavor
      Tom Mavor added new listing HLLX cursorField in ChangeMan ZMF/Mainframe
      The cursorField in HLLX is currently numeric and differs for a field based on the calling procedure. Best example is between package create and package update.  In one the work request is 12 in the ot...her it is 13.  The best solution is for the cursor field to be the name of the field Instead of a number.  That way when I write validation code I can share the code between processes without having to account for it In my code.  You want the same edits for both update an create in most cases. More
      Stream item published successfully. Item will now be visible on your stream.
    • Post is under moderation
      Query component information from component list in package and from browse baseline via linecommand saves time and effort. Getting information about a component in ChangeMan is inconvenient. Let me gi...ve an example: You are in a package working with component ABC. Now you want to know about the dependencies of ABC to other components. You may open ChangeMan ZMF on a second screen, so you can stay in the package on the first screen. On the second screen you choose ‘QC’, ‘I’. Then you need to enter the components name, libtype, type of relationship. Now you want to check the history of the component. You leave item ‘I’ and enter ‘C’. You have to enter the components name and libtype again. You get the information. Your component is a subroutine, so you also check ‘B’ BofM. Again you enter the components name… There is a lot of unnecessary typing with the chance of typing errors. You understand the problem. It would be much easier, if you could get your information in the package, using a line command before the component! No repeated typing of component’s name and libtype again and again, as these items are known by ChangeMan, no typing error. And it would be even better, if you could use the same (!) line commands while browsing the baseline. More
      Stream item published successfully. Item will now be visible on your stream.
    • Post is under moderation
      i would like to have ZMF product changed to allow CHECKOUT of a component from Baseline if the component is in CHECKOUT status in package. We often checkout the components required for changes during ...analysis and then when we get approval to start change we audit package and start working on changes. We find that often we have a member that was checked out has been updated in baseline in the interim. Serena will not allow a component to be checked out again if it is in CHECKOUT status, yet if in ACTIVE/INCOMP... status then a checkout can occur. We have to delete the checked out component to perform checkout same member again instead if just allowing checkout again. I would like to have ZMF update to CHECKOUT can occur on a component in CHECKOUT status in package More
      Stream item published successfully. Item will now be visible on your stream.
    • Post is under moderation
      update option menu 8  HLL Exits      High level language exits  to have options for reload, detach and attach add selection options from 8  HLL Exits      High level language exits to allow global adm...ins a option selection for performing commands for reload, detach and attach that are now needed to be performed at console   /F zmfstcname,CMN,RELOAD,HLLX /F zmfstcname,CMN,ATTACH,HLLX /F zmfstcname,CMN,DETACH,HLLX         More
      Stream item published successfully. Item will now be visible on your stream.
    • Post is under moderation
      There are several useability issues when invoking Merge+Reconcile from the Version Control Panel (CMNSIDV1) after selecting the versions you wish to merge. There are several useability issues when inv...oking Merge+Reconcile from the Version Control Panel (CMNSIDV1) after selecting the versions you wish to merge. 1) After selecting the versions and pressing Enter you go to Panel SER@PRIM then have to select M and go to panel SER@MAIN then have to select 1 and go to Panel SERCDFCM.  The Enhancement is: After making the version selections on Panel CMNSIDV1 and pressing Enter, you should automatically go to Panel SERCDFCM. 2) Once on Panel SERCDFCM you have to fill in the CMN Export Package and Libtype fields.  The Enhancement is: These 2 fields should be automatically filled in just as other fields are automatically populated.  The values for these fields are already known to ZMF and even displayed on the original Panel CMNSIDV1. 3) When Selecting 6 Export you should not have to select this twice to have successful export of the merged code.  If there is some technical reason why you need to have a 2nd actin taken then it shouldn't be to do the same thing again but possibly a message like "Are you Sure". More
      Stream item published successfully. Item will now be visible on your stream.
    • Post is under moderation
      John You can display all that information in the log of the HLLX task now when using REXX. The log is by invocation .. It creates a sys000? File for each invocation, that is how I debug all the HLL...X programs. I haven't done much with the LE versions. More
      Stream item published successfully. Item will now be visible on your stream.
  • DateTitle
    10/04/2015 New HLLX Exits
  • DateTitle
    27/07/2016 HLLX cursorField

Recent Tweets