TivoliInformation/Management for z/OS

Invoking multiple Assisted Entry Panel

Program Exits from a Single Field

Mike Sine

IBM Corporation

Advanced Technical Support, Gaithersburg, MD

Tivoli Information/Management (Info/Mgmt) is a highly modifiable program product. In addition to customer specific and unique modifications, Info/Mgmt offers a number of program exits to perform frequently requested functions. Many of these program exits are designed to be invoked at the field level from the Info/Mgmt Assisted-Entry panel. To enable these and many other modifications, Info/Mgmt provides the Panel Modification Facility (PMF). Using PMF, Info/Mgmt administrators are able to modify the Info/Mgmt product to invoke a specific program exit when data is entered into a field. These modifications allow Info/Mgmt to match a customer’s unique system management process flows. There is a restriction of one program exit invocation from a given AE panel effectively limiting a single program exit per field by default. However, it is common for process flows to require the functions of more than one program exit for a given field’s attributes. This whitepaper will offer a way to use PMF modifications to allow multiple program exit invocations for a single Info/Mgmt field.

This paper assumes the reader has a working knowledge of the Info/Mgmt PanelModification Facility (PMF). Specifically, familiarity with control panels, assisted-entry panels (AE), terminal simulation panels (TSP), and data-entry panels (DE). For more information on PMF, see the following manual:

Tivoli Information Management for z/OS

Panel Modification Facility Guide

Version 7.1

Document Number SC31-8750-00

It is possible to invoke multiple program exits that can only be invoked by AE panels and still work with the restriction that only one program exit can be invoked by an AE panel. The way this is done is by having more than one AE panel for the given field and a little help from other panels in Info/Mgmt.

As an example, I will take an actual customer question that required this solution. The customer had an Info/Mgmt field that collected a privilege class name. The AE panel for that field is BLG6PTRF. As supplied by IBM, BLG6PTRF already invokes the program exit BLG01246 to valid that the field value is actually a known privilege class in the database. The customer also wanted to invoke the program exit BLG01439 to copy data from the privilege class record to the problem record. This paper will answer the question of how to invoke BLG01246 and BLG01439 from the same field using two AE panels. This same technique may be used for other AE invoked program exits.

A critical piece to understanding this solution requires a reminder of how the DE and AE panel flows interact. For every data-entry field on an Info/Mgmt DE panel, there is an associated AE panel. When viewing the control information via PMF for the Transfer-to class field on DE panel BLG0B200, Problem Status Entry (Figure 1), the target panel specified as the next in the panel flow is AE BLG6PTRF. The AE panel validates the data entered based on the dictionary attributes defined to the specific AE panel. Make note of the fact that the field titled, Branch and link, contains the value YES. This will be discussed shortly.

Figure 1.

Viewing the summary of the control information for the AE BLG6PTRF (Figure 2), it is important to notice that both the Create and the Inquiry target fields are blank.

Figure 2.

With no specific target panel specified to continue the panel flow explicitly, how does Info/Mgmt know where to flow once the AE panel is done with its processing? Notice the Return to caller field in Figure 2 has the value YES. This is where the Branch and link field from Figure 1 is important. Info/Mgmt will return the panel flow to the panel that last set the Branch and link field to YES when Return to caller is YES in an AE panel. In this example, BLG0B200 was the last panel to set the Branch and link field to YES and therefore, upon completion of its processing, with the Return to caller field set to YES on BLG6PTRF, panel flow processing will return to BLG0B200. This is done to allow the same AE panels to be used on Create, Inquiry and even different record type panels when the only difference in the AE processing is where it flows upon completion of its processing. It is important to remember that Return to caller does not function as the nameimplies. The panel flow returns to the last panel to set the Branch and link field to YES. This is NOT always the previous panel or “calling panel”.

The panel flow out of the box from BLG0B200 for the Transfer-to class field invokes BLG6PTRF. BLG6PTRF, among other functions, invokes BLG01246 which validates the value entered is a valid privilege class and has authority to update the record type. To also invoke program exit BLG01439, data copy program exit, and allow BLG01439’s copy function to take place, additional panels are needed. Panel BLG6PTRF is invoked from over a dozen DE panels as shipped by IBM. Therefore, any modification to BLG6PTRF will apply to those panel flows as well. For the purpose of this paper, it is assumed that invoking BLG01439 is only desired for the Transfer-to caller field on BLG0B200. Therefore, new AE panels as well as other panels will be created. The following step-by-step instructions will provide the modifications necessary to invoke two AE panels allowing functions for both program exits BLG01246 and BLG01439 as well as the other functions of the AE panels to be completed.

  1. Using PMF, copy BLG6PTRF twice. For purposes of this paper, the new names will be ONE6PTRF and TWO6PTRF.
  2. Using PMF, update the control information for the Transfer-to caller field on panel BLG0B200. Change the target panel from BLG6PTRF to ONE6PTRF. Figure 3 shows the change to BLG0B200

Figure 3.

  1. Using PMF, update the control information for AE panel, ONE6PTRF. Add a Create Target of CTL1PTRF and change the Return to caller field value from YES to NO. Figure 4 shows the changes to ONE6PTRF (the previous values of ONE6PTRF where the same as BLG6PTRF shown in Figure 2).

Figure 4.

  1. Using PMF, create a new control panel CTL1PTRF. This control panel will be used to simply invoke a TSP, TSPTPTRF, on the second AE panel TWO6PTRF. Figure 5 shows the summary of this new control panel.

Figure 5.

  1. Using PMF, create the TSP TSPTPTRF. This TSP will apply coding logic bridging the gap between ONE6PTRF and TWO6PTRF. TSPs are a power tool of Info/Mgmt allowing conditional logic and automation to take place in the panel flows. They have recently been enhanced to offer the REXX programming language as an alternative to TSPs. The REXX supported simulations are known as Terminal Simulator REXX or TSX. This paper will use the traditional TSP as Info/Mgmt administrators are familiar with TSPs and may or may not be REXX programmers and familiar with the TSX. Anyone familiar with coding TSXs should have no difficulty following the logic of TSPTPTRF and implementing it as a TSX. Figure 6 shows the summary of TSPTPTRF.

Figure 6.

Understand that data has already been entered into ONE6PTRF and that data entry has caused the flow to CTL1PTRF. CTL1PTRF, in turn, invokes TSPTPTRF on panel TWO6PTRF. A TSP cannot function independently. It is designed to simulate a user’s panel dialog. Therefore, it MUST be started on an “interactive” panel. An “interactive” panel is any panel that a user would be able to view in their Info/Mgmt dialog and interact with. AE panels are interactive panels. Two panels are now active. The current dialog has TWO6PTRF as the current panel with TSPTPTRF interacting with it instead of the user. The last data collected prior to this TSP being invoked was a privilege class value. Program exit BLG01246 on ONE6PTRF verified that the value was a valid privilege class or it would not have allowed the flow to CTL1PTRF. The first line in the TSP is simply a label identifying the TSP name and can be ignored. The second line is a FINDSDATA command. What is not seen in the summary is that the FINDSDATA command has the Word Occurrence set as LAST. This causes the last value entered into the record to be loaded into the TSCASDF or the Terminal Communication Area Structured Data Field. The last value entered is the Privilege class name processed by ONE6PTRF. A copy of this value is now stored in the TSCASDF. For the moment, we will ignore lines 3 and 4. Line 5 is a MOVEVAR that will transfer the value stored in the TSCASDF to the TSCAVDA or the TSCA Variable Data Area. This allows the TSP to use this data. Line 6 is an ADDDATA line with the Get Variable Data field set to YES. This ADDDATA line will take the privilege class value that is now stored in the TSCAVDA and place it in the command line reply buffer. Line 7 is a PROCESS command that takes data in the command line reply buffer and essential hits the enter key to process this data. With TSPTPTRF loading the privilege class value found in the record from the FINDSDATA command and putting it in the command line reply buffer and hitting enter, the privilege class is being re-entered into the second AE panel TWO6PTRF. This allows the second AE, TWO6PTRF to invoke BLG01439 which will be seen later. Lines 3 and 4 are in place to handle a problem associated with this solution. It is common for users of Info/Mgmt to blank out fields by entering the ^ (not symbol) into a field. This will work fine on the first AE panel, however, the TSP will not be able to see the ^ symbol as there is not data present. However, the FINDSDATA command will return and Return Code 0 and a Reason Code 8 when it does a FINDSDATA and finds the data marked for deletion. The Return Code is stored in the TSCAFRET and the Reason Code is TSCAFRES. Using the two TESTFIELDS in lines 3 and 4 will test to see if the data found by the FINDSDATA command in line 2 is marked for deletion. If it is, the TSP flow will move to line 10 and the ¬ symbol will be added on TWS6PTRF so that the data is blank out in both AE panels.

  1. Using PMF, update TWO6PTRF to have a program exit value of BLG01246 and the Return to caller field set to YES (Figure 7). This completes the solution. The Return to caller will cause the panel flow to return to BLG0B200 where the Branch and link was set to YES.

Figure 7.

By having the Replace Previous field value set to YES, the second AE panel’s reprocessing of the Privilege class value loaded by the TSP will simply replace the same value entered earlier in the first AE panel. The SWORD/PWORD values and other attributes are the same between ONE6PTRF and TWO6PTRF. The only difference is the Create target, Return to Caller, and Program exit fields.

The double AE panel concept may be used for many other solutions as well as to invoke more than one program exit. By understanding the TSP capabilities of Info/Mgmt as well as some basic PMF concepts like Branch and Link, it is possible to modify Info/Mgmt to perform many tasks beyond the default capabilities. Creative thinking and the robust flexibility has allowed this product to match many unique process flows.