IBM / dbb-zappbuild

zAppBuild is a generic build solution for building z/OS applications using Apache Groovy build scripts and IBM Dependency Based Build (DBB) APIs.
Apache License 2.0
40 stars 123 forks source link

Enhance processing of IMS programs #452

Closed dennis-behm closed 6 months ago

dennis-behm commented 7 months ago

This request is about enhancing the support of processing IMS programs. Especially in mixed environments with CICS and IMS, this is not covered well.

So, let's collect requirements:

Calls to DLI interface

Link phase:

When running the program in CICS, it requires to pull the CBLTDLI from the SDFHLOAD library, but when running in an IMS environment (maybe IMS batch), there is no logic to add the SDFSRESL (IMS RESLIB) to pull the DFSLI000 interface (CBLTDLI is just an alias)

It requires a new flag to indicate that a program will be executed in an IMS context, such as an isIMS flag.

Library concatenation when processing link cards in LinkEdit.groovy

Link phase should be conditional to the "environment" flags as well.

https://github.com/IBM/dbb-zappbuild/blob/d177891a59a41b0947eacaf1e1e5a7ca199ac13a/languages/LinkEdit.groovy#L113-L122

avalon2 commented 7 months ago

Hi Dennis, I would like to control full SYSLIB-Concatenation with the linkedit_linkEditSyslibConcatenation Property. Even better would be to have the possibility to use different Concatenations based on the Programm Language/Subsystem Combinations (e.g. CICS/DB2, PLI/DB2, PLI/IMS). Although in our cases the SCEELKED (LE-Linklib) is always the first. It can happen that the DB2-Linklib or IMS-Linklib are alternating on 2nd Position in the Concatenation

a) PLI Programm with DB2 SCEELKED DB2-Linklib IMS-Linklib Application Libs

b) PLI Programm with IMS SCEELKED IMS-Linklib DB2-Linklib Application Libs

avalon2 commented 7 months ago

Additionally, in the Compiler Step, we use a different SYSTEM-Parm if the Module contains DLI-Calls a) IMS Program - SYSTEM(IMS) b) Other Programs - SYSTEM(MVS)

dennis-behm commented 7 months ago

Additionally, in the Compiler Step, we use a different SYSTEM-Parm if the Module contains DLI-Calls a) IMS Program - SYSTEM(IMS) b) Other Programs - SYSTEM(MVS)

@avalon2 ,the capability exists today via file properties to set different SYSTEM parameters:

# defining the defaults
pli_compileParms=PP(INCLUDE('ID(++INCLUDE)')),SYSTEM(MVS) 
# providing the override for IMS programs
pli_compileParms=PP(INCLUDE('ID(++INCLUDE)')),SYSTEM(IMS) :: **/imsmodules/*.pli (or any other pattern filter). 

Assuming, that would be sufficient.

avalon2 commented 7 months ago

Additionally, in the Compiler Step, we use a different SYSTEM-Parm if the Module contains DLI-Calls a) IMS Program - SYSTEM(IMS) b) Other Programs - SYSTEM(MVS)

@avalon2 ,the capability exists today via file properties to set different SYSTEM parameters:

# defining the defaults
pli_compileParms=PP(INCLUDE('ID(++INCLUDE)')),SYSTEM(MVS) 
# providing the override for IMS programs
pli_compileParms=PP(INCLUDE('ID(++INCLUDE)')),SYSTEM(IMS) :: **/imsmodules/*.pli (or any other pattern filter). 

Assuming, that would be sufficient.

Thx. working.

avalon2 commented 7 months ago

Hi Dennis, As system(IMS) is needed for each PL/I Compile for IMS, couldn't this be leveraged with a isDLI-Parm rather then using the override based on pattern ? "The SYSTEM(IMS) compiler option must be specified for PL/I applications running under IMS" https://www.ibm.com/docs/en/zos/2.4.0?topic=ims-pli-considerations-under

avalon2 commented 7 months ago

IBM requires to have IMS or CICS-Libs BEFORE Db2-Lib: https://www.ibm.com/docs/en/db2-for-zos/12?topic=zos-compiling-link-editing-application

dennis-behm commented 7 months ago

@avalon2 , I have worked on enhancing the scripts for IMS . You can see the updates in PR #454 .

Order of concatenation is CICS, IMS and then Db2, and it is dependent on the way isCICS, isIMS and isSQL is configured.

https://github.com/IBM/dbb-zappbuild/pull/454/files#diff-7208e54398cc20fc4a300ce46a95e7fa9ac82e937e6d88df00c5a26f6272d388

Will add the PLI SYSTEM(IMS) option for PLI.

dennis-behm commented 6 months ago

@avalon2 these features were delivered with zAppBuild 3.6.0