Endevor

 View Only
  • 1.  Hanging load modules from failed generates.

    Posted Aug 13, 2013 08:49 AM
    In the past couple of weeks I have had programmers put an element into a test environment, get a good compile, then after making a change to the source the compile fails. Rather than correct the error they try to delete the element and give up their idea. When they do the delete it leaves the load from the good compile on the load library. I understand why and it makes sense because the bad compile overwrites the component list so Endevor doesn't know about the load anymore.

    I have taken two different approaches to this, The first, and easiest is I just delete the load. For repeat offenders I have made them put a good version of the program back, compile it then delete it.

    My question is how do others handel, or prevent this?


  • 2.  RE: Hanging load modules from failed generates.

    Posted Aug 13, 2013 09:07 AM
    In our delete processor we use a condele step against the loadlib. Load-member with the same name as the element will be gone even if it actually 'belongs' to a previous version.


  • 3.  RE: Hanging load modules from failed generates.

    Posted Aug 13, 2013 10:04 AM
    Thanks Bart,

    That gives me an idea but I have to figure out the ramifications of it. I am thinking of adding a delete step to the top of my generate processors with a MAXRC=4. We only generate in test so at first glance I don't see any issues with doing this. If no component list exists the utility gives an RC of 4.


  • 4.  RE: Hanging load modules from failed generates.

    Posted Aug 13, 2013 10:13 AM
    Hi Maike,

    I assume that you have PGM=CONDELE,PARM='*COMPONENTS' in your delete processor and for the reason that you have described we do not allow this option in our delete processors. We write individual CONDELE steps for each dataset that we need to delete members from.

    Emlyn


  • 5.  RE: Hanging load modules from failed generates.

    Posted Aug 14, 2013 12:37 PM
    agreed with Emlyn, sometime this PGM=CONDELE,PARM='*COMPONENTS' is not working as expected even we have monitor component usage in a compile. the delete processor using CONDELE steps are better and accurate to clean up.


  • 6.  RE: Hanging load modules from failed generates.

    Posted Aug 22, 2013 10:32 AM
    Hi Mike,

    it's a known problem that PGM=CONDELE,PARM='*COMPONENTS' cannot delete components which are not present in the component list after a failed processor execution.

    Our solution is that we have a special step in the generate processor which is invoked when the LINK step fails.
    The LINK step has a STEP name (e.g.: "LINK").
    Then we have following steps which write into the component list in case of a link error:

    //******************************************************
    //IFLNKFAI IF (LINK.RUN EQ FALSE) OR
    // (LINK.RC GT 8 ) THEN
    //*
    //*-----------------------------------------------------
    //* STEP CPYLOAD1 - COPY LOADMOD TO TEMP-DSN
    //*-----------------------------------------------------
    //CPYLOAD1 EXEC PGM=BSTCOPY,MAXRC=4
    //SYSPRINT DD SYSOUT=T
    //IN DD DISP=SHR,DSN=&LOADLIB.
    //OUT DD DISP=(NEW,PASS),DSN=&&LOADOLD,
    // SPACE=(CYL,(2,1,1)),
    // RECFM=U,LRECL=0,BLKSIZE=27920,
    // DSORG=PO,STORCLAS=SCWRK#00
    //SYSIN DD DATA,DLM=$$
    COPY I=IN,O=OUT
    SELECT MEMBER=&C1ELEMENT
    $$
    //*
    //*-------------------------------------------------------------
    //* WHEN TEMP-DSN has a member you are sure you had a LOADMOD before
    //*-------------------------------------------------------------
    //IFCPYLOD IF (CPYLOAD1.RC EQ 0) THEN
    //*
    //*-------------------------------------------------------------
    //* STEP CPYLOAD2 - COPY LOADMOD from TEMP-DSN to &LOADLIB
    //*-------------------------------------------------------------
    //CPYLOAD2 EXEC PGM=BSTCOPY,MAXRC=0
    //SYSPRINT DD SYSOUT=T
    //IN DD DISP=SHR,DSN=&&LOADOLD
    //OUT DD DISP=SHR,DSN=&LOADLIB.,MONITOR=&MON
    //SYSIN DD DATA,DLM=$$
    COPY I=IN,O=OUT
    SELECT MEMBER=((&C1ELEMENT,,R))
    $$
    //*



    If you have more output components than only a LOADMOD (e.g. a DBRM) you have to double these steps for the DBRM.

    Then you can use PGM=CONDELE,PARM='*COMPONENTS' in the delete processor.


  • 7.  RE: Hanging load modules from failed generates.

    Broadcom Employee
    Posted Sep 05, 2019 03:33 AM
    This issue resurfaced again recently and I would like to offer one other suggestion, while I like BridgeStone's suggestion to 're-build' the compnent list an easier option might be to just add a //DELCOMP EXEC PGM=CONDELE,PARM='*COMPONENTS' at the top of the generate processor.  This would mean you effectively start with a clean plate each time, you use the component list from the last successful run to clean up.  Personally I like that deleting the load avoids the situation where the user might not have noticed a failed generate, but WILL notice a missing load when they try to test.  That said keeping a last kown good working version also has merit.  Emlyn's suggestion of deliberate deletes also avoids the problem, and only cleans up when needed.

    ------------------------------
    Sr Principal Software Engineer
    ------------------------------



  • 8.  RE: Hanging load modules from failed generates.

    Posted Oct 19, 2019 02:59 PM
    Edited by Mathew Goldstein Oct 20, 2019 06:31 PM