NOMAD - 1.1


Compatibility: v2 v3 Express
What's new? Release Notes
ID: com.castsoftware.nomad

Description

If your Mainframe application contains NOMAD source code and you want to view these object types and their links with other objects/applications, then you should install this extension.

The extension provides NOMAD programs, the calls between them and to programs of other languages, the calls from COBOL programs and JCL steps, and the code and comment line counts.

Download and installation instructions

The extension will be automatically downloaded and installed when any of the file types listed below are delivered in the source code. It can be managed through the Application → Extensions interface.

Supported file types

Code type Supported file extension Required? Comments
NOMAD programs *.nomad ✅ 1 program per file

File extensions are case insensitive: *.NOMAD files are analyzed too.

Transactions

Transaction support is derived from metamodel concepts used to build CAST Imaging Blueprint and structural transaction flows. Entry Points start transactions; Exit Points include both output/boundary concepts and Data Entities manipulated by transactions.

Role Support Breakdown
Entry Point No direct concept type details
Exit Point No direct concept type details

Data version: 1.1.0-beta1

ISO 5055 Structural Rules

Quality support is based on ISO 5055 structural rules available for the selected extension version.

Reliability Maintainability Security Performance Efficiency

Data version: 1.1.0-beta1

What results can you expect?

Programs and calls

Each source file is a NOMAD Program, named after the file name up to its first dot: ACCTXTR.NOMAD gives the program ACCTXTR. An empty source gives no program.

The CALL name, CALL PROGRAM name and XFR name statements create a call link from the program, one for each statement. Keywords are case insensitive, and the name can be quoted (CALL 'OVRDLTR'). The target is found as follows:

  • The analyzed NOMAD programs with this name, whatever its case. All of them are linked when several programs have this name.
  • When the name matches no analyzed NOMAD program, a NOMAD Call to Program object is created under the calling program, one per called name. It can be linked to programs of other languages (see Calls to other languages).

For example, in the file MONTHEND.nomad below, the four XFR statements create call links to the NOMAD programs FEECALC, CUSTUPDT, HIGHTXN and ACCTXTR, analyzed with it:

...
/* 1. CHARGE THE MONTHLY FEES */
XFR FEECALC;

/* 2. CLOSE DORMANT ACCOUNTS */
XFR CUSTUPDT;

/* 3. AUDIT REPORT AND COBOL EXTRACT */
XFR HIGHTXN;
XFR ACCTXTR;
...

In the file ACCTXTR.NOMAD, no NOMAD program is named OVRDLTR: the statement below creates the NOMAD Call to Program OVRDLTR under the program ACCTXTR, and a call link to it. The Universal Linker then links it to the COBOL program OVRDLTR, when it is analyzed.

CALL PROGRAM OVRDLTR USING &EXTRACT_DSN;

Calls to other languages

NOMAD programs are linked to and from programs written in other languages (COBOL, PL/I, Assembler, …) by the Universal Linker extension (1.7.51 or later):

  • A NOMAD Call to Program is linked to the program of any language with the same name.
  • A COBOL Program Prototype is linked to the NOMAD Program with the same name. The prototype is created by the Mainframe Analyzer for a program that is not a COBOL program, called by a COBOL CALL or run by a JCL step with EXEC PGM=name. This is how a JCL step with EXEC PGM=name reaches the NOMAD program: JCL Step → COBOL Program Prototype → NOMAD Program.

Metrics

The extension computes, for each NOMAD Program, the number of code lines and of comment lines, and saves the comments. The source file gets the same line counts. A line with code and a comment counts as a code line and as a comment line.

Objects

Type Object Name Creation rule
NOMAD Program NOMAD Program Created for each .nomad source file, whatever the case of its extension, named after the file name up to its first dot. An empty source, or one that cannot be parsed, gives no program.
CAST_Nomad_CallToProgram NOMAD Call to Program Created when a CALL name, CALL PROGRAM name or XFR name statement names no analyzed NOMAD program. There is one object per calling program and called name, attached to the calling program.
Caller type Caller description Link Callee type Callee description Creation rule
NOMAD Program NOMAD Program call Link NOMAD Program NOMAD Program Created for each CALL name, CALL PROGRAM name or XFR name statement of the program that names an analyzed NOMAD program. The name is matched whatever its case, and every NOMAD program of this name is linked.
NOMAD Program NOMAD Program call Link CAST_Nomad_CallToProgram NOMAD Call to Program Created for each CALL name, CALL PROGRAM name or XFR name statement of the program that names no analyzed NOMAD program.
Caller type Caller description Link Callee type Callee description Creation rule
Cobol Program COBOL Program Prototype call Link NOMAD Program NOMAD Program Created by the Universal Linker extension when a program prototype, created by the Mainframe Analyzer extension for a COBOL CALL or a JCL EXEC PGM=name, has the name of an analyzed NOMAD program, whatever its case.
CAST_Nomad_CallToProgram NOMAD Call to Program call Link Cobol Program COBOL Program Created by the Universal Linker extension when a COBOL program, analyzed by the Mainframe Analyzer extension, has the called name. Programs of other languages with this name are linked the same way.

Quality rules

None on NOMAD language.

Known limitations

  • Statements: only CALL, CALL PROGRAM and XFR are analyzed. The other statements, such as the database statements (LIST, CHANGE, FOR EACH, …), create no object and no link.
  • Calls: a called name held in a variable (CALL &PGM, XFR &PROC) creates no object and no link.
  • Other technologies:
    • From JCL, a step is linked to a NOMAD program only when it runs it with EXEC PGM=name, through the COBOL Program Prototype (see Calls to other languages).
    • A NOMAD Call to Program is resolved by the Universal Linker by name only: it is linked to every program of another language with this name, whatever its technology.
  • Metrics: no cyclomatic complexity is computed.