We are using Gen 8.6 and have a ton of “dual” action blocks. That is what we call the action blocks that are used by both batch and online. We started with dual action blocks way back when it was still called IEF though so in this case version probably doesn’t matter too much. We use dynamic linking. As a rule we only ever generate them from the “owning” business system. Our “owning” business system is online for some and batch for others. No standard as to what owns a dual action block. It is just whatever business system needed it first. Then we use a “link only” option (our own encyclopedia customization) to do the link from the foreign business system and we submit a bind for the “foreign” collection outside of Gen (we have a batch collection and an online collection). Way back in the day, I don’t know if it is still true or not, if you generated and installed from the foreign business system it didn’t do the compile. You could force it but we just added the link option and made the rule about always generating from the “owning” business system. We have been doing it that way ever since. We have not noticed any issues with our duals.
Here is an explanation of our Customization:
Add Link Only Option for Dynamically Linked Objects
This allows the developer to request that only a specific action block within a procedure be link-edited instead of all action blocks within the procedure step. Without this option a lot of CPU and developer time is wasted link-editing modules that have not been recompiled. It also places unchanged programs in the load library, which reduces the PMA’s ability to verify moves to production, and will cause timestamp errors in development over time.
Gen will automatically compile and link any dynamically linked object that was generated if an installation is requested. The Link Only option will be used for linking a dual action block in the foreign business system.
The ‘L’ option only works with foreground processing. It cannot be used with background processing because the modification for background processing has not been made.
Member Modified:
|
CEHBPNL0(TILMPRC2)
|
Member Purpose:
|
Displays The Expanded Load Module Component Table for a batch load module
|
Modification:
|
Add “L=Link Only” text to the body of the panel and add ‘L’ to the list of valid pitons in the verify statement.
|
Member Modified:
|
CEHBPNL0(TILMPROC)
|
Member Purpose:
|
Displays The Expanded Load Module Component Table for an online load module
|
Modification:
|
Add “L=Link Only” text to the body of the panel and add ‘L’ to the list of valid pitons in the verify statement.
|
Member Modified:
|
CEHBCLS0(TICCGENE)
|
Member Purpose:
|
Displays The Expanded Load Module Component Table “Ticstpl” and Process/Validate the selections made against it.
|
Modification:
|
Within the RESLOOP section of the code where it checks each object and the action requested, if the action is an L and the action block is not external, set all the installation parameters and execute %TICINST. Two shared variables were created to accomplish this. They are AMFMLNK and AMFMLOD. AMFMLNK is a flag. When it is set to ‘Y’, a link only was requested for the action block. AMFMLOD is the member name of the action block that the link only was requested for.
|
Member Modified:
|
CEHBCLS0(TICCMLK)
|
Member Purpose:
|
Clist that does the VS COBOL II Compile and Link of Advantage Gen generated code
|
Modification:
|
At the very beginning of the clist, get the AMFMLNK and AMFMLOD variables. If the link is Y and the member that is being processed is not the same as the AMFMLOD, then skip the installation.
|
Dee