Blog Summary

  • Performance improvements to the internal handling of channels and containers in CICS TS V5.5
  • Good practices associated with using CICS channels and containers
  • How to learn more to get the most out of channels and containers

Introduction

CICS channels and containers are great. They make it easy to pass data efficiently between CICS programs, written in different languages, in a structured manner. They can be used to pass data between programs, transactions, clients (using CICS Transaction Gateway), or batch programs (using EXCI) and CICS programs. A container can contain either binary data or character data. When you use containers with character data, CICS takes care of codepage conversions. A channel provides an easy way to group multiple, related containers.

Named containers can be added to a channel, modified, read or deleted. Channels can easily be passed between programs. Large numbers of containers can be added to a single channel or spread across multiple channels, whichever suits the application.

About the change in CICS TS 5.5

In CICS TS V5.5, we have added some performance improvements to CICS channels and containers. The changes improve performance in scenarios where there are large numbers of containers in a channel, without impacting performance where there are only a few containers.

Most operations against containers in a channel first require CICS to find the relevant container. As the number of containers in a channel increases, so does the time that is required to search for a named container. The changes in CICS TS 5.5 significantly reduce the time that is required to find a container.

A side effect of the changes in CICS TS V5.5 is that the order in which containers are returned on an EXEC CICS STARTBROWSE and GETNEXT command is likely to be different to the return order in previous releases. You can choose to disable this change and continue with the pre-V5.5 ordering of returned containers with a feature toggle.

Good practices

Although CICS deletes channels and containers at the end of the transaction, it is still good practice to delete containers, and even channels, when they are no longer required. This is especially important for long-running transactions. Not only does this speed up subsequent operations against the channel, it also frees up storage used by the container and its data.

When you use the EXEC CICS STARTBROWSE and GETNEXT container commands, the order in which containers are returned is undefined and might change. Ensure that your applications do not depend on the order in which containers are returned. A side effect of the changes in CICS TS V5.5 is that the order in which containers are returned on an EXEC CICS STARTBROWSE and GETNEXT command is likely to be different to the return order in previous releases. If circumstances prevent you from modifying existing applications, you can use a feature toggle to disable the performance improvement and stick with the return order that was used in previous releases

Find out more

If you’d like to know more about how to get the best out of channels and containers then the CICS TS Knowledge Center contains a very readable section covering good practices:
https://www.ibm.com/support/knowledgecenter/en/SSGMCP_5.5.0/applications/designing/dfhp3_ch_desif.html

For an introduction to Channels and containers, the CICS TS Knowledge Center offers a useful quick start:
https://www.ibm.com/support/knowledgecenter/en/SSGMCP_5.5.0/applications/designing/dfhp3_ch_ifcons.html

Finally, if you would like to know more about what else is new in CICS TS 5.5, What’s New? Is the place to start:
https://www.ibm.com/support/knowledgecenter/en/SSGMCP_5.5.0/whats-new/intro.html

Join The Discussion

Your email address will not be published. Required fields are marked *