IBM Support

PH03001: THE LAYOUT DXL COLUMN GENERATED BY THE ANALYSIS WIZARD IS INEFFICIENT TO PROCESS LINKS TO PURGED OBJECTS

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

APAR status

  • Closed as program error.

Error description

  • When an object has several outgoing links to purged objects, the
    layout DXL reloads the target module(s) even if they were
    already open for each link to a purge object.
    This inefficient code is generated by all versions of the DOORS
    client even the latest version at the time (9.6.1.11).
    
    Steps to reproduce:
    ==============
    1) create a source module containing one object
    2) create a target module containing 90 objects
    3) create links from the object in the source module to the 90
    objects in the target module
    4) save the 2 modules
    5) in the target module,
    - run "Link > delete > delete all links..."
    - delete all objects
    - run "Edit > Purge All"
    - save the module
    6) close the source module WITHOUT saving
    7) reopen the source module and run "Analysis > Wizard..." and
    then
    - in the first page, select "Out-links" and "DOORS Links"
    - in the second page, select formal module = "All modules" and
    select link module = "All modules"
    - in the third page, leave the default options
    - in the fourth page, uncheck "Recursive analysis"
    - click OK => you will get the problematic layout DXL code
    below:
    
    // DXL generated by DOORS traceability wizard on 06 August 2018.
    // Wizard version 2.0, DOORS version 9.6.1.11
    pragma runLim, 0
    void showOut(Object o, int depth) {
        Link l
        LinkRef lr
        ModName_ otherMod = null
        Module linkMod = null
        ModuleVersion otherVersion = null
        Object othero
        string disp = null
        string s = null
        string plain, plainDisp
        int plainTextLen
        int count
        bool doneOne = false
        string linkModName = "*"
        for l in all(o->linkModName) do {
            otherVersion = targetVersion l
            otherMod = module(otherVersion)
            if (null otherMod || isDeleted otherMod) continue
            othero = target l
            if (null othero) {
                load(otherVersion,false)
            }
            othero = target l
            if (null othero) continue
            if (isDeleted othero) continue
            doneOne = true
            if (depth == 1) {
                s = (identifier othero)
                if (s == "")
                displayRich("\\pard " " ")
                else
                displayRich("\\pard " s)
            }
        }
    }
    showOut(obj,1)
    
    
    Workaround:
    =========
    The test performed to check if the target module needs to be
    loaded is:
    
           othero = target l
           if (null othero) {
               load(otherVersion,false)
           }
    
    It effectively enables to open the target module when it is not
    yet open, but it also leads to opening the target module even if
    it is already open whenever the target object is purged.
    Instead the test should be on the target module itself:
    
           mOther = data(otherVersion)
           if (null mOther) {
               load(otherVersion,false)
           }
    
    where mOther is a variable of type Module.
    
    Note:
    ====
    You can end up with broken links to purged objects in the
    following scenario:
    1) remove the link
    2) purge the target object and save the target module
    3) close the source module WITHOUT saving it (discard the
    warning message)
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:                                              *
    * All DOORS users.                                             *
    ****************************************************************
    * PROBLEM DESCRIPTION:                                         *
    * The layout DXL column generated by the analysis wizard is    *
    * inefficient to process links to purged objects.              *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    Client side fix.
    

Problem conclusion

  • This has been resolved in the DOORS 9.7 release.
    

Temporary fix

Comments

APAR Information

  • APAR number

    PH03001

  • Reported component name

    TLOGIC DOORS

  • Reported component ID

    5724V61DR

  • Reported release

    961

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2018-09-19

  • Closed date

    2019-07-10

  • Last modified date

    2019-07-10

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    TLOGIC DOORS

  • Fixed component ID

    5724V61DR

Applicable component levels



Document information

More support for: Rational DOORS

Software version: 961

Reference #: PH03001

Modified date: 10 July 2019