Description

When analyzing an application using Mainframe analyzer, an Unknown Program object is created when the source code contains a call to a program that is undefined (not present in the source code).

In this case, some Unknown Programs are present in Knowledge Base whereas there is no call for their names in the source code.

It happens when a variable defined with N characters is first assigned a program name with N characters, then assigned a program name with P characters (P < N).

Example : DYN-PGM is defined as 8-character long variable, with several possible values, including some which are less than 8-character long.

Definition of variable DYN-PGM
01 DYN-PGM PIC X(08) GLOBAL.

 88 DYN-PFFEA661              VALUE 'PFFEA661'.
 88 DYN-UYY130                VALUE 'UYY130'.

DYN-PGM is first assigned value DYN-PFFEA661, which is 8-character long. Then further in the code, it is assigned value DYN-UYY130, which is 6-character long.

Use of variable DYN-PGM
R          SET DYN-PFFEA661 to TRUE.
R          CALL DYN-PGM.
 
R          SET DYN-UYY130 to TRUE.
R          CALL DYN-PGM.

In this case, the analyzer will create an Unknown Program called UYY130, which is expected. But it will also create an Unknown Program called UYY13061, which is unexpected. It is the results of the old value being only partly overriden by the new value : UYY130 (new value) + 61 (remaining two last digits of the previous value)

Observed in CAST AIP
Release
Yes/No
8.3.x, x< 3(tick) 
Observed on RDBMS
RDBMS
Yes/No
CSS(tick)
Step by Step Scenario
  1. Package the source code and deliver via DMT
  2. Accept the delivery, set as current version
  3. Run the analysis.
Impact on Analysis

Unwanted Unknown Program objects would be present on dashboard

Action Plan
  1. Check that the source code really does not contain any call to the Unknown Program name : using Notepad++, do a Search in Files on the name of the Unknown Program. If a match is found, for example : CALL UYY13061., then the Unknown Program is expected. : explain this to customer. If there is no match, then the Unknown Program is unexpected : proceed to step Look for other Unknown Programs whose name is a substring of the unexpected Unknown Program

  2. Open Enlighten and search for other Unknown Programs whose name is a substring of the unexpected Unknown Program, removing digits from the end one by one. For example, if your unexpected Unknown Program is UYY13061, then look first for UYY1306, then for UYY130 and so on, until you find one. If you find none, then report your problem to CAST Technical Support and provide the below relevant input. If you find one, then proceed to step Look for the source file defining the variable
  3. Look for the source file defining the variable : In Notepad++, do a Search in File on the name of the Unkown Program you have just found in Enlighten (for example : UYY130). If you do not find it, then report your problem to CAST Technical Support and provide the below relevant input. Else proceed to step edit the source file
  4. Edit the source file : in the definition of the possible values for the variable :

    1. Spot the length of the variable : in the below example, it is 8
      01 DYN-PGM PIC X(08) GLOBAL.

    2. Complete all the values with blank spaces up to this value : in the below example, 'UYY130' is completed with 2 blank spaces

       88 DYN-UYY130                VALUE 'UYY130 '.
  5. Drop analysis results.
  6. Relaunch analysis.
  7. If the Unknown Program objects are still there, report your problem to CAST Technical Support and provide the below relevant input

Relevant input

Sherlock export with the following options: Export CAST Bases (Knowledge Base only), Source code

Notes/comments

Ticket # 11833

This issue is planned to be fixed in 8.3.3