Troubleshooting
Problem
For a COBOL or PL/I program that uses EXEC SQL FETCH and is analyzed by the proprietary scanner, an impact analysis project that traces through the FETCH statement does not correctly identify any of the data elements on that statement as being modified.
Symptom
When impact analysis is performed, and the analysis traces through an EXEC SQL FETCH statement, the data items named on the FETCH statement will be updated with the data as defined by the select list in the associated cursor. Prior to the V6.1.0.21 fix pack, there was insufficient data stored from the analysis to allow the connection to be made between DB2 columns being fetched and the data items receiving the data.
Resolving The Problem
As of the V6.1.0.21 fix pack, additional details are stored in the database when a COBOL or PL/I program is analyzed using the proprietary scanner, and an EXEC SQL FETCH statement is encountered.
For Rational Asset Analyzer:
- If you have the V6.1.0.17 fix pack or earlier, migrate your database with the latest migration utility prior to installing the V6.1.0.21 fix pack. If you already downloaded the V6.1.0.21 fix pack prior to August 16, 2019, you should download it again from Fix Central and use the newer file for installing.
- If you have the V6.1.0.18 fix pack or later, install the V6.1.0.21 fix pack. If you already downloaded the V6.1.0.21 fix pack prior to August 16, 2019, you should download it again from Fix Central and use the newer file for installing, even if you had previously installed a V6.1.0.21 fix pack.
For Rational Asset Analyzer for System z:
- If you have the V6.1.0.17 fix pack or earlier, migrate your database with the latest migration utility prior to installing the V6.1.0.21 fix pack. Once the V6.1.0.21 fix pack is installed, contact IBM for a test fix with the updated AESPANAL load module.
- If you have the V6.1.0.18 fix pack or later, install the V6.1.0.21 fix pack. Once the V6.1.0.21 fix pack is installed, contact IBM for a test fix with the updated AESPANAL load module.
In order to have that additional detail for a program, the program must be reanalyzed.
Step 1 – Update the product runtime
Install the latest V6.1.0.21 runtime from August 16, 2019 or later as described above.
Step 2 – List the affected files / programs
Step 3 – Queue the programs for analysis
For RAA, copy the following two INSERT statements to a file (eg. C:\temp\raa_aq.sql), change $(SCHEMA) to your schema name, and then execute these commands from a DB2 Command Prompt window, using your database name in place of DMHDB:
See the note at the end of this document for details about processing groups of programs.
First INSERT
Second INSERT
Step 4 – Perform the analysis
Start the postprocessor to analyze the files that you’ve queued.
Step 5 – Verify the results
From the web UI, navigate to Database -> Execute a Query, paste the following query, and click Submit. When the results are listed, there should be rows for PHRASE_TYPE_ID 1004 and 1018. The 1004 row has the count of data elements that are the target of a FETCH INTO, and it should have a non-zero result. The 1018 row has a count of the data elements that are used as indicators that are the target of a FETCH INTO, and it should have a non-zero result if indicators are used in your FETCH statements.
Note - Processing groups of files
If you want to process the requests to reanalyze files in smaller groups, you could iteratively queue up groups of files in Step 3 and process them in Step 4. To do that, you would modify the first INSERT statement in Step 3 so that the predicate “f.row_num BETWEEN 1 AND 1000000” includes the desired row numbers (from viewing the query results in Step 2), and then execute it. For example, assume there were 3000 files reported in Step 2, and you wanted to process them in groups of 1000. You’d iteratively run Step 3 and Step 4:
- Update the first INSERT in Step 3 using “f.row_num BETWEEN 1 AND 1000”, and execute it.
- Execute the second INSERT in Step 3 unchanged.
- Perform the analysis in Step4.
- Update the first INSERT in Step 3 using “f.row_num BETWEEN 1001 AND 2000”, and execute it.
- Execute the second INSERT in Step 3 unchanged.
- Perform the analysis in Step4.
- Update the first INSERT in Step 3 using “f.row_num BETWEEN 2001 AND 3000”, and execute it.
- Execute the second INSERT in Step 3 unchanged.
- Perform the analysis in Step4.
For ease in copying the SQL text, it is attached here: sql.txt
Document Location
Worldwide
Product Synonym
RAA;RAAz
Was this topic helpful?
Document Information
Modified date:
19 August 2019
UID
ibm10967810