Use the following information to help validate your analysis. Problems with a Mainframe analysis can be separated into two categories: unresolved objects and code analysis. The first category is the most common and generally appears during the first analyses.
Issue 1: Unresolved objects
The following table shows examples of "Unresolved object" messages:
Cannot resolve 'CALL' instruction with the program name 'COBSALR2'. In the source file "COBCIOP8.CBL" which is a COBOL program.
Missing program COBSALR2 would not be analyzed
Ask SME for missing program "COBSALR2" also stating where it is being called from.
Cannot resolve name for CICS Screen Map object. In the source file "COBCIOP4.CBL" which is a CICS COBOL program.
Missing Mapset and Map would not be analyzed or is analyzed in another job.
Check if the CICS Map is available. To know the missing map name, go to Enlighten and look in the COBOL analysis\Unknown\CICS folder.
Cannot resolve copybook 'PAYROLL'. In the source file "COBSALR.CBL" which is a COBOL program.
PAYROLL copybook would not be analyzed.
If this is an application specific copybook, then it is recommended to ask the SME. It is more important if you want to do "data access" level analysis. This could affect any diagnostic rules you might want around data components.
Cannot resolve EXEC instruction with program name 'CCCDB201'. In the source file "JOBPAYRL.JCL" which is a JCL job.
There would be a CALL type link between the JCL Step and CCCDB201 program (which will be typed as external JCL program).
If this is an application specific program, then it is recommended to ask the SME for it. It can affect any diagnostic rules.
Creating unknown DBD 'DBDCOMP1'. In the source file "COBIMSB1" which is an IMSPSB.
The PSB refers to a DBD which has not been analyzed.
Ask SME for missing IMS DBD "DBDCOMP1".
Examples of unresolved object messages
An unresolved object generally means that there is a missing component, directly or not.
It is important to distinguish objects which have associated source files from the other objects which do not have a source file. You can ask the SME about the first type, but not the second.
For instance, a program, a copybook, a screen map, a JCL or a procedure all have an associated source file. If they are involved in a message which indicates they are unresolved, then you can immediately assume they are missing.
On the contrary, data structures and paragraphs do not have a source file. Instead they are defined in a program or in a copybook. If there is a message which indicates either is unresolved then you must find out if there is a missing copybook.
Why can the component not be found? Because it has not been delivered or because the analyzer has no information about its location (source file directories or working folders). In the first case you must ask the customer to deliver it and, in the second case you must modify the parameters of the analysis job.
You can also see missing components using the Cast Enlighten tool. The unknown objects are classified in "Unknown" folders and you can easily find them with the Object Browser.
Unresolved objects in the CAST Enlighten object browser.
There are technical/system/utility programs which are called by application programs and JCLs. The Mainframe Analyzer can produce "Unresolved object" messages about them. Their names usually begin with the "DFH", "DSN", "IKJ", "DFS" or "IEB" strings. The "DFH" programs are dedicated to CICS, the "DSN" and "IKJ" programs are usually dedicated to DB2 and the "DFS" programs are dedicated to IMS. The JCL can also invoke utilities such as the IEB family, IEF family or IDCAMS, FILE-AID… Do not ask the customer to deliver them because they do not have the corresponding source files. If they are used to run another program in a JCL job then you should change the analysis parameters. Otherwise, you can ignore the messages.
For instance, the last message in Table 2 means that there is an "EXEC" card in the "JOBPAYRL" JCL which refers to a program named "CCCDB201" and the analyzer has not found it. The first thing to do is to locate this program. If you cannot find it then ask the customer to deliver it. Otherwise, verify the parameters. This third case can occur when, for instance, a JCL uses a specific launcher to run a program. You must then modify the "AdvancedJCL.XML" file and add a new rule.
A program can be called through its PROGRAM-ID name (this is generally the case) which is different to its source file name. In this case you must search for it by using a GREP tool.
Issue 2: Code analysis
Code analysis errors can occur in several situations such as:
- Parameters are not set correctly (especially the starting column)
- There are non-printable characters in the source code
- The source code is not correct and does not compile
The Mainframe Analyzer is not based on grammar. So, when it encounters an unknown statement then it will generally skip it. As a result, there are rarely any syntax errors.
The following table shows an example of code analysis messages:
GOTO instruction with unresolved section or paragraph name '200-RECEIVE-MAP'. In the source file "COBCIO10.CBL" which is a COBOL program.
The analyzer could not detect the paragraph names and thus did not succeed in creating the links to them.
Look at the source code and check if the Starting Column used to analyze it is correctly set.
COBOL-Lexer: Unclosed quoted-string (starting column value is bad or language is not COBOL.
Part of code could be ignored by the analyzer and some objects and links will be missed.
Open the source file. Check if it contains COBOL code.
Example of code analysis messages
It is possible that the source code does not compile. Mainframe sites have a lot of source code that includes deprecated code and non-executable code. When the customer delivers his source code he cannot distinguish code which runs from code which does not. In addition it is possible that this code cannot be analyzed. If this is so, the code generally contains bad syntax statements or unsupported syntaxes.
Issue 3: Other messages
The following table shows examples of other messages which can occur in the log file:
The IMS analyzer cannot found the PSB 'COBIMS' because no PSB file is analyzed. In the source file "COBIMS.COB" which is a COBOL program.
The analyzer could not find the "COBIMS" PSB and is going to create an unknown PSB object. Links between COBOL programs and IMS database will not be correctly created or not created at all.
There are two possibilities:
Cannot resolve the PCB #2 of 'COBIMSB1' PSB with IMS analyzer. In the source file "COBIMSB1.COB" which is a COBOL program.
The analyzer could not succeed in resolving the PCB defined in the PSB and those which are specified in the COBOL program. Links between COBOL programs and IMS database will not be correctly created or not created at all.
Check the PCB list in the PSB "COBIMSB1" and the parameters specified in the PROCEDURE division and the ENTRY DLITCBL in the COBOL program. Both must have the same number of PCB in the same order.
Cobol name 'PROGTEST' found in file 'C:\APP1\PROG1.COB' and file 'C:\APP1\PROG2.COB'.
The analyzer found two programs having the same main entry point. This means that both programs have the same PROGRAM-ID or the same filename (in this specific case they can not be saved in the same directory).
Check both programs to see if they are not different versions of the same program.