Fault Diagnosis Advanced Topics 1



This tutorial will guide you through several advanced capabilities within BMC AMI DevX Abend-AID.

Table of Contents



Starting BMC AMI DevX Abend-AID

To access Abend-AID for Batch within BMC AMI DevX Workbench for Eclipse:

Do This
  • Click on the BMC dropdown.
  • Click on Operations.
  • Click on Abend-AID.
  • Click on TestDrive.













The Abend-AID Logon view opens in the bottom pane.

  • Double-click the tab for the Abend-AID view to maximize the pane.
  • Enter your Test Drive ID and password, and then press enter.

Start AA.JPG

BMC AA sign in.jpg 

This opens a view into Abend-AID within your BMC AMI DevX Workbench for Eclipse IDE. Integration of the tools needed for developers to do their daily jobs is a key feature of the Workbench experience. 



Adding Your BMC AMI DevX Listing Repository to Abend-AID


There are two types of listing repositories that Abend-AID can use, system DDIO files and user DDIO files.

Abend-AID, by default, knows the names of the listing repositories (DDIO files) that were identified during the installation process. The installer would probably not know the names of the user DDIO files.

The Abend-AID Viewer allows users to add their own DDIO file names to the list of known DDIO files. When Abend-AID searches for the listing that matches the abending program, if the listing is found in a user-added DDIO file the listing is merged into the Abend-AID report.

We will step through the process of adding a user DDIO file so that your specific listings are available to you when working with Abend-AID. The file we want to add is called CWEZ000.TOPAZ.XPED.DDIO.

Do This

When successfully logged on, you are taken to the Abend-AID main menu.

  • Click on 'Source Directory' icon to display the list of known DDIO files.

BMC AA home arrow to source dir.jpg

worddav825f878b38e811e1c0b9db5b7decfda9.png

  • CWEZ000.TOPAZ.XPED.DDIO (dataset used for this exercise) is not listed in the source directory in Abend-AID.




Do This
  • Click on 'Add' hyperlink.

  • Type 'CWEZ000.TOPAZ.XPED.DDIO' in the 'Dataset' field and press <Enter>.


aa6-image007.png


aa6-image008.png

aa6-image010.png

File CWEZ000.TOPAZ.XPED.DDIO was added to the user-specific source directory list. The custom source directory list is stored in an Abend-AID viewer file by TSO userid and will not need to be re-added at the next logon.

Viewing Abend-AID reports will now search the additional DDIO file as well as those specified during installation, to find the listing that matches the abended program.

Do This
  • Press <F3> to return to the Home screen.



Root Cause Analysis


When a program abends with a S0C7, S0C9, S0CB, or a data-related S0C4 and the program's listing is located in a DDIO file defined to the source directory, Abend-AID will generate an additional section to the Abend-Aid report named Root Cause Analysis. In some cases, Abend-AID can identify the root cause of the issue. In other cases, it may not identify the root cause, but can provide additional information which can assist the programmer in locating bad data.

Let's take a look at a SOC7 abend generated by a job named CWEZXXX to see how this may help the developer get to a resolution quickly.


Do This
  • Click on 'Fault Summary'.





  • In the filter field under 'Job Name or Application Description', enter CWEZ in columns 1-4 and press <Enter>.


  • Click on 'CWEZXXXX' to display the Abend-AID Directory for that job name.




  • Click on report number 0017226 to display the Diagnostic Summary.


BMC AA home arrow to fault summary.jpg

CWEZ masking arrow to masking.jpg

CWEZ masking click cwezxxxx.jpg

0017226 arrow.jpg



In this example, a S0C7 abend occurred in a Compute statement (shown in the box below). The ‘Current values’ of the fields comprising the abending instruction indicate the value of H-EMP-RATE was invalid, causing the abend. In this situation a developer will need to know where the bad data came from! Since this was a data exception, Abend-AID automatically created the Root Cause Analysis to attempt to identify the location from where the bad data originated.


worddav444686bcf9847c5547d9eb68b6b15a6b.png

In this example, a S0C7 abend occurred in a Compute statement (top red box above). The ‘Current values’ of the fields comprising the abending instruction indicate the value of H-EMP-RATE was invalid, causing the abend. In this situation a developer will need to know where the bad data exists! Since this was a data exception, Abend-AID automatically created the Root Cause Analysis to attempt to identify the location from where the bad data originated.


Do This
  • Click on the 'analysis' hyperlink to go to the Root Cause Analysis series of screen.


  • Click on 'H-EMP-RATE' to display the Root Cause Analysis Information screen for that field.

Analysis hyperlink arrow.jpg

aa6-image020.png



The Root Cause Analysis Information screen provides information Abend-AID has gathered concerning where the bad data came from.

Items 1 and 2 summarize the abending line of code and the field that was identified as the cause of the abend.

Item 3 identifies the location of the bad data in storage (File Section, Working-Storage Section, or Linkage section). If the data was in the linkage section, it will look at the active calling chain information to determine the program that called the abending program. The calling program is then identified.

We can now drill down further into the calling program to continue our investigation.



worddav410045f40d0638a1d86ebb914510ce86.png 


Do This
  • Click on the calling program 'CWAACOB1' hyperlink to take you to the Call Detail screen.

worddav97b63c0878aa803c3d27a518994794c8.png


worddavb8209226c3791e02dc96b33ae374f411.png 

The Call Detail screen shows the call statement from CWAACOB1 along with the values of the arguments of the call.



Do This
  • Press <F3> to return to the Root Cause Analysis Information screen.

worddav410045f40d0638a1d86ebb914510ce86.png

If Abend-AID determines the source of the bad data, it is displayed in Item 4. In this case, Abend-AID determined that the bad data came from SA-EMP-RATE in the calling program, CWAACOB1. The report displays the value of H-EMP-RATE in CWAAHOUR and SA-EMP-RATE in CWAACOB1.

Since the bad data was passed from CWAACOB1 to CWAAHOUR, Abend-AID correlated the position in the linkage section to the position in the CALL statement and determined the source of the data.

If the bad data was not passed from a calling program, item 5 can provide some meaningful information if the bad data came from a file that was read, a DB2 table entry, or an IMS variable.

worddave2b89f8777bdcd84fde1e846473a696e.png

The Recommended Actions section looks at the H-EMP-RATE and identifies lines of code in the procedure division where H-EMP-RATE is modified either directly or indirectly. Also shown are data definitions that directly or indirectly reference the selected field.
 

Do This
  • Click on the 'H-EMP-RATE' hyperlink.

worddavd7fe7931f766d37ae8606c994ec64e00.png

worddavaf735bced46ce3ecc0765038743fb9c1.png

Since the field was passed from the calling program, it shows that there were no lines in the procedure division that directly or indirectly modified the code. A more robust example of the Field Usage Summary will be shown later in the in the Extended Search section.


Do This
  • Press <F3> to return to the Root Cause Analysis Information screen.

worddave2b89f8777bdcd84fde1e846473a696e.png



Do This

You can also search storage, looking for any variables that contain the same erroneous data.

  • Click on the X'025C5B' hyperlink to see other fields with the same value.

worddav5f875b6a6de89d8c6cce22c7a5c91e6a.png

worddav6309c9d9ca676929a09abd17dc314985.png 
Here you can see that there are other fields that match the value.



Now, let's move on to take a look at Abend-AID's Extended Search Feature.


Do This
  • Click 'Fault Summary' in the Abend-AID title bar.

  • Remove 'CWEZ' from the 'Job Name or Application Description' masking field and press <Enter>.

Blue bar header arrow to fault.jpg

CWEZ masking arrow to masking.jpg

worddav096e461aac2cc99bb8ac06547cb292d1.png

Extended Search

The Extended Search Listing screen can be used to search the source listing and display statements that directly or indirectly modify the selected field, or to display data definitions that directly or indirectly reference the selected field. This is especially helpful when trying to determine from where the value of a field originated.

Do This
  • Enter 'HCCA' in the masking box under 'Job Name or Application Description' and press <Enter>.

HCCA in fault summary masking.jpg



Do This
  • Click on 'HCCAC013' to display the Abend-AID Directory for that job name.



  • Type 0014176 in the masking field under Entry and press <Enter>.



  • Click on the menu icon and select 'Menu'.

hccac013.jpg

worddav45941ac01535928f397710685822e48f.png

worddavd3fd8d664f8c0209da716846eec1daa5.png

worddavf419eeb370bb00f917db0aaa64db94e9.png



Do This
  • Click the 'Program Information' hyperlink.

worddav480dd9ba897517988a26fecab02e38eb.png

worddavfb616261317d2904af7d92f18e1d4a16.png 



Do This
  • Click the 'Program Summary Information' hyperlink.

worddav193f076e4d6b097041dafb97d8f0983b.png




Program Summary Screen

The Program Summary Information screen identifies all active modules involved in an abending transaction. Key identification data is summarized for each module used by a transaction up to the abending module. This screen allows you to quickly verify whether the correct version of a module is in use.

worddav46b8a0048cf3061f4a91f2adc5befffb.png 


Do This
  • Click the menu icon next to LGTESTC1, then click 'Extended Search'.

worddavc5cb1d3b64b13054f67425a6838787d9.png

worddava21b49631d9b6f35eb58e3ae61046db4.png 
 As an example, we will find out where the value of variable WMF-NUM-INPUT originated. To do so, we need to locate WMF-NUM-INPUT in Working-Storage.



Do This
  • Click on the Tool icon to display the dropdown menu.

  • Click on 'Command Line'.

  • Key in 'F WMF-NUM-INPUT' to find the first occurrence of the variable and press <Enter>.

worddav51fea87001bbb612fe6d6a8d06ded291.png

worddav5a9a7d766b6e850db3f0ff97f2c348e1.png

worddav7164b38bda331536a5ef8bf9e19b51ab.png

worddavaad9cef08380ddcc0e13d942d4058a3e.png 

The value of WMF-NUM-INPUT at the time of the abend is 0001000022. Extended Search can examine the procedure division for instructions directly or indirectly modifying WMF-NUM-INPUT.





Field Usage Summary Option

The Field Usage Summary screen has three sections:

  1. Modifying Statements - Direct: This section displays lines of code in the procedure division where the variable was directly modified by other variables.
  2. Data Definitions, either directly or indirectly: This section displays the location of the variable. If it's an elementary item within a group, the group variable is also displayed.
  3. Modifying Statements, either directly or indirectly: This section displays lines of code in the procedure division where the variable was modified (either directly or by other variables), OR if a higher group level were modified (like moving a variable to the group level, which would modify any elementary items below).


Do This
  • Click on the menu icon next to 'WMF-NUM-INPUT' and select 'Field Usage Summary'.

worddavb994180994a9bb2f12b892d5f6c88213.png


 
 worddav1f819626b9447911b59742fa5f24d6a5.png 

Here you can see the instructions in the Procedure Division where WMF-NUM-INPUT was modified. Also shown is where in Working-Storage it was defined. The line numbers are hyperlinked to give you direct access to the value of the sending field at the time of the abend.



Do This
  • Click on line number 001496 to take you to the line of code in the listing.

  • To use the "Peek" command discussed in earlier Test Drives, type 'P' in the first position of the line number (you may need to clear out the line number first) and press <Enter>.

worddav24ff5634356d165e162ca1c4010b0e82.png

worddav2ebd99dab454a5c5553416de9e913ccb.png

worddav28b5fd9a06d592343ea4c34113f9ac92.png

ENT1CNOO has a value at the time of the abend of 0001000022 - the same as WMF-NUM-INPUT. Next we'll check the other two lines of code to find if there are other variables with the same value.



Do This
  • Press <F3> twice to return to the Field Usage Summary screen.

  • Click on line number 002427 to go into the listing.


  • Type 'P' in the first position of the line number (you may need to clear out the line number first) and press <Enter>.



worddav849205bf00be6c80abeae2aeee40fafe.png


worddav653a3918aa174b70ad4ed3d4c7bcfe17.png

worddav805d60f616e14799e3d5acc605992b16.png 

The value of ENT1PH1I is 999 888777 and is not the line of code that set WMF-NUM-INPUT to 0001000022. Next, let's check the last line of code that modified WMF-NUM-INPUT.



Do This
  • Press <F3> twice to return to Field Usage Summary.


  • Click on line number 002447 to go into the listing.


  • Type 'P' in the first position of the line number (you may need to clear out the line number first) and press <Enter>.



worddav21af06cf2a4ac8b14bed824664638d5e.png


worddav05fa876e4e01396e5f3ea5743b71cb5a.png

worddav8a87b00392bb88c43239dfe1c17153f2.png 

The value of ENT1PH2I is 666 555444 and is not the line of code that set WMF-NUM-INPUT to 0001000022.



Lines of code that indirectly modified WMF-NUM-INPUT would normally also appear in the ‘Modifying Statements, either directly or indirectly’ section. In this example, there were none.

To this point, variable ENT1CNOO was the only line of code that modified WMF-NUM-INPUT. Now use Extended Search to find where ENT1CNOO was modified - find ENT1CNOO in Working-Storage and repeat the exercise.


Do This
  • Press the <F3> key three times to return to the Extended Search Listing.

  • Click the Tool icon to display the dropdown menu.

  • Click on 'Command Line'.

  • Enter 'F ENT1CNOO FIRST' in the Command Line box.




worddav51fea87001bbb612fe6d6a8d06ded291.png


worddav5a9a7d766b6e850db3f0ff97f2c348e1.png


worddavd82a598d877853b0be01fbb103dc3264.png

worddavc45f64e8f5709bffb4faa5b217e42595.png 



Do This
  • Click the menu icon next to 'ENT1CNOO' and select 'Field Usage Summary' to find the occurrences where ENT1CNOO has been modified directly or indirectly.

worddavb5284b6a2a7aa344d2810afc18e61f99.png

worddavaa5c219d3901c0de37a31f6a31676d2f.png

There are four lines of code where ENT1CNOO is modified directly. The value of ENT1CNOO is 0001000022.

Line 1381 moves zeroes to the field and cannot be the code that set the value of ENT1CNOO.



Do This
  • Click on line number 001508 to take you to the line of code in the listing.


  • To use the "Peek" command discussed in earlier Test Drives, type 'P' in the first position of the line number (you may need to clear out the line number first) and press <Enter>.

worddav13814b3dffe0576646241cfac01b658c.png

worddava7ed604af2f282854db31ee7edc3c2d6.png

worddavdd55fef685ab0891ac0663848aaed271.png 

The value of WMF-NUM-OUTPUT-910 is 0001000022; this could be the line that set value for WMF-NUM-INPUT.



Do This
  • Press <F3> twice to return to the Field Usage Summary screen.


  • Click on line number 001575 to take you to the line of code in the listing.

  • To use the "Peek" command discussed in earlier Test Drives, type 'P' in the first position of the line number (you may need to clear out the line number first) and press <Enter>.


worddav5080d918034649987b74f555bccd3354.png

worddavba72af810ca0c7c3566d1ce98ed8f73e.png

worddav3cfb96140f9ea232662045ef0f014194.png 

The value of CA-CUSTOMER-NUM is 0001000021 - this is not the line of code that set the value for WMF-NUM-INPUT.



Do This
  • Press <F3> twice to return to the Field Usage Summary screen.

worddavaa5c219d3901c0de37a31f6a31676d2f.png


  • Line 2018 moves zeroes to the field and cannot be the code that set the value of ENT1CNOO.
  • At this point, WMF-NUM-OUTPUT-910 on line 1508 is the only variable with the same value as WMF-NUM-INPUT.
  • Notice that there are additional lines of code where ENT1CNOO were modified 'directly or indirectly'. Check those lines to see if there are any additional lines of code where the sending field needs to be checked.
  • The Initialize statements in lines 1374, 1375, 2057, and 2058 would not set the value of ENT1CNOO to 0001000022.
  • Lines 1381 and 2018 are moving zeroes to the field.
  • In lines 1509, 1575 and 1784, the value of variable CA-CUSTOMER-NUM was moved to ENT1CNOO and ENT1CNO1. We saw earlier that the value of CA-CUSTOMER-NUM was 0001000021.

You can continue to use Extended Search to find out where WMF-NUM-OUTPUT-910 was modified but, for the purposes of this Test Drive script, we will stop at this point.



Do This
  • Press <F3> to return to the Extended Search Listing.

worddavaddf167d07f5d1250e352379e8352dda.png





Other Fields With Same Value Option



Do This
  • In the Command Line box, enter 'F ENT1CNOO FIRST'.

worddavd82a598d877853b0be01fbb103dc3264.png

worddavc45f64e8f5709bffb4faa5b217e42595.png 



Do This
  • Click on the menu icon and select 'Other Fields with same value' to find all fields in storage with a value of 0001000022.

worddava31fa7817c67ffc16d53cb6022a2610f.png

worddav0260d748939abc22f32ae8e136dc6703.png

The 'Other Fields' screen can display other fields and literals that have the same value as the selected field in the Extended Search.


COBOL Perform Flow

The COBOL Perform Flow screen (instructions to view this screen are detailed over the next few pages) lists the active PERFORM PROCEDURE statement flow through the COBOL program that occurred prior to the abend; or for calling programs, the flow prior to the call. This feature is available for Enterprise COBOL only, requires the viewing server to be using the Shared Services component of BMC AMI Enterprise Common Components, and the DDIO listing to have been processed with Shared Services and the COBOL compiler option LIST.

COBOL Perform Flow reports only those PERFORM verbs that exist in the executed module. When you compile with OPTIMIZE(STD) or OPTIMIZE(FULL), any PERFORM verbs used in the source that are converted by the IBM compiler to inline code cannot be displayed.



Do This
  • Press <F3> until you return to Fault Summary.

worddav95e029c88c42bcd9ef26db1b86beb300.png


Do This
  • Delete the HCCA from the masking field under Job Name or Application Description and press <Enter>.


  • Type 'CWEZXXXP' in the masking field under Job Name or Application Description and press <Enter>.
  • Click the 'CWEZXXXP' hyperlink.

  • If the masking field under Entry is still populated, remove the value and press <Enter>.



  • Enter 0018190 in the masking field and press <Enter>.

  • Click the menu icon next 0018190 and select 'Menu'.

worddavc4eaaeaa81d67a97bd2901550f4734d3.png

worddav3c978db8474e5391b1cb40e63ad4b00d.png

worddav58623c69dc13e0686a75eb093a09ab90.png

worddavbc1f864bd14782dfe5f350f7d5688292.png

worddave206c88656500cbb9f693ed63e756779.png

worddav8744aa7a1ffdf3f6479295cbeb0beba2.png



Do This
  • Click on the 'Program Information' hyperlink to bring up the Program Summary Information and other screens.

worddav480dd9ba897517988a26fecab02e38eb.png

worddave2b5608990d48206c057656c8566753a.png 



Do This
  • Click the menu icon and select 'COBOL PERFORM Flow'.

worddav072c69808a902bdb09abb3b5b51a33d1.png

worddav5d6de8899dcecabd511995177c0af988.png 
 The Perform Flow screen displays the Perform statements in the order they were executed. This can be helpful if you need to use BMC AMI DevX Code Debug to walk through the code. The sequence of Perform statements can be used to set breakpoints.



Do This
  • To see the abending line of code, click 'ABEND STMT'.

worddavbb583ef53f4cf8b13e43d9e3ed07be09.png

worddavf32ec603cab3d12e91adc1fc8a138e1f.png

The abending line of code is highlighted. You can also go from the list of Perform statements to the specific Perform statement.


Do This
  • Scroll to the top of the page (if necessary) and click on page '1' to see the list of PERFORM PROCEDURE statements.

worddav8e67e4cea982a835aed725ef17f99698.png


worddavd5197b263a7902c7a664618194a5b6fd.png 



Do This
  • To see the first perform to LEVEL-01 click on line number 000055 and press <Enter>.

aa6-image092.jpg

aa6-image093.jpg 

Wrap-up

This concludes our look at how Abend-AID provides powerful analysis tools and deep-dive options for data errors leading to abends. We hope that you have enjoyed your look at these capabilities and look forward to working with you to implement some or all of the solution within your systems. Please remember to complete the Test Drive survey, as both your sponsor and our team are very interested in your feedback on the Test Drive Experience.

You can choose from any of the available scripts from the panel to the left or return to the main page here: Welcome to Test Drive


 

Tip: For faster searching, add an asterisk to the end of your partial query. Example: cert*