10 Major Enhancements to the Zowe Explorer for IBM CICS

Jeffin Siby
Zowe
Published in
11 min readJul 12, 2022

{Incubation} To celebrate the Open Mainframe Project’s Zowe Explorer for IBM CICS Visual Studio Code extension passing the milestone of 1000 unique installs within months of being released, here’s a list of the 10 key enhancements we’ve added since our last blog.

If you haven’t already, head over to the Visual Studio Code Marketplace now to install the extension and try the features listed below!

Table of Contents

#1: Local Files
#2: Local Transactions
#3: Tasks
#4: System Groups Defined in Profiles
#5: Plex-wide View of Resources From All Regions
#6: User-defined Filter For All Resource Types
#7: Ad-hoc Filtering For All Resource Types
#8: Cross Resource Navigation With “Reveal” Command
#9: Support for Zowe Version 2 Team Configuration Files
#10: Large Data Paging For Efficiency

In response to user requests, we added the ability to view Local Files, Local Transactions, and Tasks resources in addition to CICS Programs, each with their individual folders and icons.

As with CICS Programs, all the new resources come with the ability to Show Attributes of the resource and to Enable or Disable the resource which will also update the resource’s label to reflect the enable status. Additionally, each resource also comes with a set of specific commands you can instantly perform.

#1: Local Files

Local files come with the option to right-click and toggle the status between the open and closed states.

Opened local files will display the Close Local File right-click menu action and vice-versa. Selecting this command opens a prompt that allows you to select how to perform the operation in the file busy condition with the granular options to Wait, No Wait, or Force.

Closing a Local File and performing an Enable

Once the openstatus has been changed, the Closed tag will be added or removed accordingly from the resource’s label to make identification easy.

#2: Local Transactions

Enabling disabled Local Transactions and performing the ‘Reveal Program’ command

Although Local Transactions don’t include any additional resource-specific CICS commands aside from Enable and Disable, we created the Reveal Program action for improved navigation in the CICS view. Read more about it below.

#3: Tasks

Purging a Task and performing the ‘Reveal Transaction’ command

The label of a Task consists of its Task ID, followed by the tranidattribute value associated with it. The runstatus is also displayed on the label whenever it’s not SUSPENDED (the default status). The function of identifying the runstatusof a Task is further simplified with our Task icons which are unique for the RUNNING, SUSPENDED and DISPATCHABLE states.

One of the key actions to perform on a Task is Purge. Selecting the Purge Task right-click menu action results in a prompt appearing with the options of Purge, Force Purge and Killto choose from. After a Purge operation succeeds, the Task is removed from the Tasks folder.

The final command available is Reveal Transaction. As with Local Transactions, read more about the command below.

#4: System Groups Defined in Profiles

Do you have regions that you regularly interact with? A CICS system group provides a way to group CICS regions in a Plex and they can also consist of other system groups. A system programmer can set CICS system groups for a system on the server-side, which can essentially be used for a server-side filtering of regions.

The Zowe Explorer for IBM CICS extension allows you, as a CICS developer, to then create/update profiles to include this CICS System Group name in the CMCI scope (i.e. in the region name field) and access all the regions within the system group.

Note: We display all the regions in a system group, but we do not show other system groups that are within the chosen system group to avoid cluttering the UI, particularly in the case of recursive system groups.

One of the biggest advantages of the CICS extension is that you can have multiple profiles simultaneously connecting to the same CICS systems, and have the same or different CICS System Groups, CICSPlexes or CICS regions specified on each.

The GIF below demonstrates an example of this by creating 3 profiles connecting to the same system with the same Host URL and port values:

The optional Region Name or System Group field of the cip profile is left blank, hence the extension connects to the specified Plex and displays all the regions contained in the Plex.

cip_00 and cip_03 on the other hand, connect to the system groups TORSTY00 and TORSTY03 . The extension works out whether this is a name of a region or a system group in the plex and updates the profile’s tree structure accordingly.

Notice that both profiles with different system groups have a different set of regions which are a subset of the regions available in cip. Hence, system groups allow you to work with a subset of regions instead of having to request for and work with all regions in a Plex.

To distinguish profiles with a system group specified from profiles with a single Plex, the extension uses a different icon for both. Additionally, a system group’s label consists of the name of the Plex it belongs to for straightforward association, followed by its name.

A profile containing a single plex ‘CICSGRP1'
Profile with a system group ‘TORSTY03’ specified, which belongs to the Plex ‘CICSGRP1’

#5: Plex-wide View of Resources From All Regions

The Zowe Explorer for IBM CICS extension allows you to view regions in a CICSPlex and you can expand each region individually to access the resources within that region.

However, expanding each region tree individually to view a resource is not only a tedious task but also imposes a massive restriction on the amount of data you can see on the screen at one time.

We solved this with the new and improved ability to view all resources in a plex via ‘All’ resource trees.

‘All Programs’, ‘All Local Transactions’, ‘All Local Files’, and ‘All Tasks’ trees

You can apply a filter on an ‘All’ resource tree and perform a command against multiple resources across multiple regions by multi-selecting.

Applying a filter on an ‘All Programs’ tree and perform a ‘New Copy’ after multi-selecting resources

Each resource in these folders has a label containing its name, followed by the name of the region they belong to which makes identification straightforward, especially in cases where two resources belonging to different regions have the same name.

#6: User-defined Filter For All Resource Types

Do you have resources that you frequently access? Apply a filter on the resource tree to search for a common prefix in the resource names followed by the asterisk wildcard, or by applying a comma-separated filter containing multiple strings to match if the resource names largely differ.

These filters are kept in persistent storage, meaning that they are saved for quick access anytime in the future when performing a filter action on that resource type.

If you want to take this one step further and don’t want to work with any other resources every time you open Visual Studio Code, we also provide the option to apply a default persistent resource filter via Settings (UI).

Default filter criteria string for CICS Programs

We currently filter out programs that begin with CEE, DFH, etc. by default, but this can be modified to a different set of values.

You can even filter resources based on other CICS attributes aside from the ones set by default as shown below

Example of setting the default filter of programs to only show programs that have a New Copy Count > 0 using the ‘NEWCOPYCNT’ program attribute

Once the new filter has been applied in the appropriate input box, remember to reload the window to apply the changes.

#7: Ad-hoc Filtering For All Resource Types

That’s right, filtering doesn’t stop there. We also added the filtering functionality to the Regions folder which appears in connections that have a CICSPlex.

Clicking the search button allows you to apply a filter on the regions, or a filter on the resources of a particular type across all regions in the plex (you can also combine both filters as shown below!).

Applying a ‘Regions’ filter, then apply a ‘Programs’ filter across all the remaining regions in the plex. Finally, clearing ‘All’ filters

#8: Cross Resource Navigation With “Reveal” Command

CICS Tasks have an associated Local Transaction, and Local Transactions have an associated program attribute. Finding these relationships can be very useful for a developer.

The original method for finding the related Local Transaction from a Task would be to perform the right-click Show Attributes menu action against the Task to find the tranid of the related Local Transaction and then apply a search filter on the Local Transactions folder with this value.

To make this process far simpler, we introduced the Revealcommand on a Task which performs all the steps listed above in the background and reveals the related resource with just a right-click.

The Reveal command is also available on a Local Transaction which filters out the Program resource with the corresponding Task program attribute.

Tip: As with all our right-click menu actions, the ‘Reveal’ command also allows you to multi-select resources and perform the action. CRTL/SHIFT + click (or CMD/SHIFT + click on macOS) the resources you want to select and perform the right-click Reveal action to view all the associated resources of that type for the selected resources.

Performing the ‘Reveal Transaction’ command on a CICS Task followed by a ‘Reveal Program’ on the revealed CICS Transaction

#9: Support for Zowe Version 2 Team Configuration Files

Zowe Version 2 has had some major changes with the introduction of Team Configuration files which vastly improves team collaboration.

The shift from using YAML files to the zowe.config.json file for storing profile data means that the way in which we interact with profiles requires changes.

Changes to the Create, Update, and Delete Profile Commands

For users who have a Zowe Version 2 (V2) setup, the CICS extension will locate and open the zowe.config.json file for editing when performing the Create New CICS Profile, Update Profile, and Delete Profile actions.

Once open, edit the config file, e.g. by changing the value of a CICS profile property, and then click the refresh icon on the top right-hand corner of the CICS view sidebar to apply the changes.

Adding a new CICS profile with the ‘Create New Profile’ action and refreshing the view to reflect changes

Tip: If you have properties that are shared by multiple profiles, use Zowe’s base profiles to define a shared profile property structure which you can then use in other profiles. See Zowe documentation for more details.

Still want to work with a Zowe Version 1 configuration? No problem! The Zowe Explorer for IBM CICS extension also supports backward compatibility for V1 profiles by detecting the configuration format. This means you can easily switch configurations without having to install a previous version of the extension, and also access the previous functionalities for the create, update, and delete actions for V1 profiles.

Store Profile Credentials Securely

Displaying a profile’s user and password properties in plain text may be undesired, particularly when sharing your zowe.config.json file within teams. Zowe V2 addresses this by using the secure array field in the config file to store these values securely in your device.

To add the secure array field to a CICS profile, load the profile into the CICS view by clicking the + button and selecting the desired profile. Then expand the loaded profile. Since the user and password fields are missing, the extension will prompt you for these values via input boxes. Once the details are entered into the input box and submitted, these values are stored securely and the expanded profile is updated in the zowe.config.json file with the secure array — no need to use the CLI!

Identify Missing Required Parameters for a Profile

To make setting up V2 CICS profiles even easier, the CICS extension will inform you if any required fields of a profile are missing upon the expansion of that profile via an information message dialog box.

Expanding a profile with missing required parameters

Update these values in the config file and click the CICS view’s refresh button to reflect the changes and make a connection to the system.

#10: Large Data Paging For Efficiency

Adding ‘All’ resource trees to provide a plex-wide view of resources from all regions introduces the problem of large volumes of data needing to be requested upon every expansion which is highly inefficient and also puts a lot of strain on systems.

To resolve this, we added a maximum limit to the number of resources fetched at any given time. You can customize this value for an ‘All’ resource tree by modifying the Record Count Increment property in Settings (UI) via an input box.

Tip: To access Settings (UI), go to File > Preferences > Settings on Windows/Linux or go to Code > Preferences > Settings on macOS.

Setting the Record Count Increment for the ‘All Local Files’ to 200

To retrieve more resources, scroll to the bottom of the results and click on the View [x] more button which will append x more resources to the current list, where x is the minimum of the Record Count Increment value and the number of resources remaining.

Viewing 500 more resources in the ‘All Programs’ folder which has a ‘Record Count Increment’ value set to 500

This method is highly efficient because the heavy lifting is performed by CMCI which retains the set of search results in memory and on the client-side we use a token to access required portions of this stored data.

What’s Next

We’d love to hear users’ feedback on what is missing and what the next stories that should be tackled are. The project is open source so all of the issues are tracked in https://github.com/zowe/vscode-extension-for-cics/issues which is the same repository that holds the source code for the extension. Future items under consideration include

  • Adding more resource types such as DB2 Transactions, Library resources, URI Maps, Pipelines and extending the use case to cover CICS web programs (see GitHub issue).
  • Including the editor in mainframe education courses such as https://github.com/openmainframeproject/cobol-programming-course and Master the Mainframe (see GitHub issue).
  • Adding a way to link CICS and associated z/OSMF profiles so that you can right-click a CICS region and view the CEEMSG log in the Zowe Explorer’s ‘JOBS’ view (see GitHub issue).
  • Allowing users to personalize and choose which resource folders they want to see (see GitHub issue).
The Zowe Explorer for IBM CICS extension achieved 1000+ unique installs within months of being published to the Visual Studio Code marketplace 👏

Finding out more

If you enjoyed this blog, check out more at the Zowe blogs site. Or, ask a question and join the conversation on the Open Mainframe Project Slack Channel #Zowe-dev, #Zowe-user or #Zowe-onboarding. If this is your first time using the slack channel register here.

--

--