Gen generated RMT files don't contain references to triggers and ultimately yield a link failure.
XXXXXXXX Link-edit Failed, RC = 12
IEW2456E 9207 SYMBOL XXXXXXXX UNRESOLVED. MEMBER COULD NOT BE INCLUDED FROM THE DESIGNATED CALL LIBRARY.
Release : 8.6
Component : Gen Generator, Distributed
The following are methods for managing Referential Integrity (RI) when using the workstation Toolset Generator for RMT files.
In some instances, RI trigger objects are not brought down to the Toolset within a model or subset and in others they are actually missing from the Encyclopedia. The following will focus on two RI objects, the ACBLKTD (TD Action Block) and the IMPUSE (Implementation Logic Usage) which are Technical Design objects.
IMPUSEs are the objects that link the ACBLKTD’s to their calling action blocks. ACBLKTDs are created at the time an entity type is created or a relationship is implemented on the Toolset. They are transferred to the Encyclopedia with an Upload or Gen New Model. The Model Conversion program also creates ACBLKTD objects if they do not already exist. They can also be created by Host Construction Generation or the Specify Member Name function. If ACBLKTD objects are missing and the triggers are regenerated, Toolset generation might create new names for some of the triggers. Then, if the calling action blocks are not regenerated, their load module .rmt files will contain references to the old trigger names. When the .rmt file is processed, the link-edit will fail. IMPUSE objects are created only by the generation of RI triggers and their calling action blocks—those action blocks that perform deletes, disassociates, or transfers. Unlike ACBLKTDs, IMPUSE objects are transferred to the Encyclopedia only with a GEN NEW MODEL. They can also be created by Host Construction generation. They are not created by the conversion program. If IMPUSE objects are missing, a load module .rmt file will be missing references to some triggers.
Resolutions
1. Perform a Gen New Model followed by an adoption and migration of the new entity types, relationships, and data records to the existing model. This method works if the migration rules have not been relaxed.
2. If available, use the Host Encyclopedia Construction. Host Construction’s Referential Integrity generation and Application System generation can be used to create the IMPUSE objects. Both the triggers and the action blocks that call them must be generated.
3. Generate the triggers and their calling action blocks with each download. This generation is performed only to create the IMPUSE objects. One method for managing the generation of the calling action blocks includes creating a procedure step that only USEs those common action blocks that perform deletes, disassociates, and transfers. Expand the load module for this “dummy” procedure step and generate the calling action blocks and the .rmt file. If the Delete Source after Install generation option is selected, the source is deleted after the .rmt file is created. This ensures that the source is not included in any other load module .rmts and prevents unnecessary compiles.
4. When generating from a subset, scope on the procedure step with full expansion and with System Test. Incorrect scoping can result in missing ACBLKTD and/or IMPUSE objects.