10 Major Enhancements to the Zowe Explorer for IBM CICS
{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
.
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
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
The label of a Task consists of its Task ID, followed by the tranid
attribute 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 runstatus
of 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 Kill
to 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.
#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.
You can apply a filter on an ‘All’ resource tree and perform a command against multiple resources across multiple regions by multi-selecting.
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).
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
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!).
#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 Reveal
command 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.
#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.
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.
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.
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.
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).
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.