IBM Support

PK80056: EXTERNAL CODE IN DERIVED CONFIG - #INCLUDE IS SHORT/ABSENT

Subscribe

You can track all active APARs for this component.

APAR status

  • Closed as program error.

Error description

  • 221177
    Issue whereby the #include path in model is in full path
    notation thus:
    
    #include?FolderA\FolderB\ClassE.h?
    
    but when using Derived configuration, such as with the Testing
    Profile the path becomes:
    
    #include?classE.h?
    
    or maybe even absent entirely
    
    classE.h is external code
    
    GenerateDirectoryPerModelComponent property is over-ridden in
    both components but still #include is short
    
    Simple test scenario:
    
    1 - create new project and create a class (local)
    2 - reverse engineer some simple code as external
    3 - create a dependency ??Usage?? from your class to the
    external code
    4 - generate code, and verify the #include is generated
    correctly with the long path
    5 - switch the configuration to derived
    6 - regenerate code, #include is absent
    7 - switch the configuration to explicit again
    8 - create Test Architecture for the local class
    9 - generating code will reveal #include in shortened notation.
    This means the code is not found
    10 - also while creating test architecture, the Include Path of
    the test component does not contain the path to the external
    source code
    

Local fix

  • Preliminary tests for Rhapsody 7.5 appears to show
    that it correctly
    generates the full paths for the #include in derived
    configuration
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED:                                              *
    ****************************************************************
    * PROBLEM DESCRIPTION:                                         *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    When using Derived configuration, #include directive does
    not contain full path.
    

Problem conclusion

  • There are two issues here:
    1) Generating #includes to external elements - this issue
    was fixed in version 8.0. Note, however, that a property was
    included to provide backward compatibility for code
    generation of older models
    (CG::Class::GenerateDependencyToExternals). Remove this
    property to get the new code generation behavior.
    2) Generating full path. In this model, you are using the
    deprecated property
    CG::Configuration::GenerateDirectoryPerModelComponent. To
    get the behavior that you want, use the property
    CPP_CG::Package::GenerateDirectory instead.
    

Temporary fix

Comments

APAR Information

  • APAR number

    PK80056

  • Reported component name

    TLOGIC RHAPSODY

  • Reported component ID

    5724V74RP

  • Reported release

    740

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2009-02-05

  • Closed date

    2012-09-26

  • Last modified date

    2012-09-26

  • 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 RHAPSODY

  • Fixed component ID

    5724V74RP

Applicable component levels

  • R740 PSN

       UP



Document information

More support for: Rational Rhapsody

Software version: 7.4

Reference #: PK80056

Modified date: 26 September 2012