RPG - 3.5


Extension ID

com.castsoftware.rpg

What’s new?

See Release Notes.

Description

This extension provides support for applications written using RPG languages and/or CL languages.

Supported languages

  • RPG III (also known as GAP 3)
  • RPG IV Fixed Format with traditional operation code
  • RPG IV Fixed Format with alternate Calc spec and Extended Factor 2
  • RPG IV Free Format
  • RPG IV Full Free
  • CL

Function Point, Quality and Sizing support

  • Function Points (transactions): a green tick indicates that OMG Function Point counting and Transaction Risk Index are supported
  • Quality and Sizing: a green tick indicates that CAST can measure size and that a minimum set of Quality Rules exist
Function Points (transactions) Quality and Sizing

Compatibility

Release Operating System Supported
v3/8.4.x Microsoft Windows / Linux
v2/8.3.x Microsoft Windows

Download and installation instructions

The extension will be automatically downloaded and installed in CAST Console when at least one RPG type file is delivered for analysis. You can manage the extension using the Application - Extensions interface.

Prepare and deliver the source code

When the extension is downloaded and installed, you can now package your source code and run an analysis. The process of preparing and delivering your source code is described below:

Source code preparation

Before the RPG source code can be delivered and then analyzed, it needs to be collected from the proper iSeries libraries and transferred to the designated location. During this operation, each artifact (program, CL, DSPF) must be put into a single file only. This will result in a single artifact per file. Furthermore, the type of source code must be expressed using the extension to the file. The appropriate file extensions are listed in the following table.

Source code is kept in a member of a file. The file is kept in a library. Each file can have many members. Each member is the source code for a program. The source code files can have any name but conventionally the names start with Q and end with SRC, for source.

Source code type iSeries library Required extension Used in MetaModel
RPG-III programs QRPGSRC *.rpg, *.rpg38 RPG300
ILE RPG Programs QRPGLESRC *.rpgle RPG400
ILE RPG Programs with SQL QSQLRPGLESRC *.sqlrpgle RPG400
Copy source members QCPYLESRC *.cpyle RPG400
CL programs QCLSRC *.cl, *.clp, *.cl38, *.clp38 CL400
ILE CL Programs QCLLESRC *.clle CL400
Display Files QDDSSRC *.dspf, *.dspf38 DDS400
Printer Files QDDSSRC *.prtf, *.prtf38 DDS400
Logical Files QDBSRC *.lf, *.lf38 SQL Analyzer/DDS400
Physical Files QDBSRC *.pf, *.pf38 SQL Analyzer/DDS400

The RPG Analyzer is able to autodetect RPG III versus RPG IV, so there is no difference in using *.rpg or *.rpgle. What is very important is to distinguish between Display, Printer, Logical and Physical files using the specific file extensions listed in above table.

What about IBM Db2 for i source code?

In previous releases of the RPG Analyzer extension, when IBM Db2 for i source code was delivered, a dedicated extraction process was launched within the RPG Analyzer to transform this source code into a format that could be analyzed. Starting in release ≥ 3.1.x, the RPG Analyzer is no longer responsible for analyzing source code from IBM DB2 for i. Instead, this task is undertaken by the com.castsoftware.sqlanalyzerexternal link (release ≥ 3.5.4 is required).

There is no change to source code delivery process when using AIP Console - the IBM DB2 for i source code should be delivered together with the RPG source code and AIP Console will be able to detect this type of source code and create the necessary Analysis Units. For those using legacy CAST Management Studio/Delivery Manager Tool, the source code delivery process has changed and is explained below.

IBM Db2 for i is also known as DB400.

Deliver the source code

Using CAST Imaging Console

RPG is supported in CAST Console ≥ 1.22.

CAST Imaging Console expects either a ZIP/archive file or source code located in a folder configured in Console. You should include in the ZIP/source code folder all RPG and IBM DB2 for i (if present) source code. CAST highly recommends placing the files in a folder dedicated to RPG. If you are using a ZIP/archive file, zip the folders in the “temp” folder - but do not zip the “temp” folder itself, nor create any intermediary folders:

D:\temp
    |-----RPG
    |-----OtherTechno1
    |-----OtherTechno2

When the source code has been delivered, CAST Imaging Console will create an Analysis Unit for:

  • IBM Db2 for i (if present)
  • RPG

analysis_unit.png

Analysis configuration

Add a dependency between the RPG Analysis Unit as Source and SQL Universal Analysis Unit as the target:

dependencies.png

Starting from CAST Imaging Console 1.26, this dependency will be automatically added and no manual intervention is required. You should still check that the dependency is present, however.

Configuring Technical Size measures for RPG in the CAST Health Dashboard

Technical Size measures can be displayed for RPG analysis results in the CAST Health Dashboard by manually editing the following file:

1.x WAR file: %CATALINA_HOME%\webapps\<dashboard>\portal\resources\app.json
2.x WAR file: %CATALINA_HOME%\webapps\<dashboard>\WEB-INF\classes\config\hd\app.json
2.x ZIP file: com.castsoftware.aip.dashboard.2.0.0\config\hd\app.json

Add the following entries into the existing section “TechnicalSizeMeasures”:

"TechnicalSizeMeasures": {
...
      {
        "id": 1008000,
        "label": "Number of RPG400 Program(RPG400)"
      },
      {
        "id": 1008001,
        "label": "Number of RPG400 Subroutine(RPG400)"
      },
      {
        "id": 1008002,
        "label": "Number of RPG400 Procedure(RPG400)"
      },
      {
        "id": 1008003,
        "label": "Number of RPG IV Copy Member(RPG400)"
      },
      {
        "id": 1009000,
        "label": "Number of RPG300 Program(RPG300)"
      },
      {
        "id": 1009001,
        "label": "Number of RPG300 Subroutine(RPG300)"
      },
      {
        "id": 1009003,
        "label": "Number of RPG300 Copy Member(RPG300)"
      }
} 

Following any changes you make, save the app.json file and then restart your application server so that the changes are taken into account.

What results can you expect?

Transaction Sample

C     SCRLVL        CHAIN     PACCLVS
C                   IF        %FOUND
C                   DELETE    RACCLV
C                   ENDIF

CALL       PGM(&EXTLIB/&EXTPGM)

CL language

See CL Language for more information.

RPG Language

See RPG Language for more information.

Objects

Icon Object Name Comment
CL Project
RPG III Project
RPG IV Project
DDS Project
Interal object to define a scope for CL, RPG III, RPG IV and DDS objects.
CL Program
RPG III Program
RPG IV Program
Standard Program declaration
CL Call to Generic Program
RPG III Call to Generic Program
RPG IV Call to Generic Program
Created when a call to a program is not resolved or an external program
RPG IV Module Created for files that starts with the keyword “NOMAIN”.
RPG IV Procedure
RPG IV Missing Procedure
Standard Procedure declaration.
Created when a reference to a procedure is found.
RPG IV Procedure Prototype Standard Procedure Prototype declaration.
CL Subroutine
RPG III MainSubroutine
RPG III Subroutine
RPG IV MainSubroutine
RPG IV Subroutine
Standard Subroutine declaration
CL EXEC SQL
RPG III EXEC SQL
RPG IV EXEC SQL
SQL CL example
SQL RPG examples
CL Call to Sql File SQL script CL example
STRQMQRY CL example
CL Data Area Data Area CL example
CL Data Queue Publisher
RPG III Data Queue Publisher
RPG IV Data Queue Publisher

CL IBM MQ Queue Publisher
RPG III IBM MQ Queue Publisher
RPG IV IBM MQ Queue Publisher
DataQ CL example
DataQ RPG example

IBM MQ CL example
IBM MQ RPG example
CL Data Queue Receiver
RPG III Data Queue Receiver
RPG IV Data Queue Receiver

CL IBM MQ Queue Receiver
RPG III IBM MQ Queue Receiver
RPG IV IBM MQ Queue Receiver
DataQ CL example
DataQ RPG example

IBM MQ CL example
IBM MQ RPG example
CL Data Unknown Queue Publisher
RPG III Data Unknown Queue Publisher
RPG IV Data Unknown Queue Publisher

CL IBM MQ Unknown Queue Publisher
RPG III IBM MQ Unknown Queue Publisher
RPG IV IBM MQ Unknown Queue Publisher
DataQ CL example
DataQ RPG example

IBM MQ CL example
IBM MQ RPG example
CL Data Unknown Queue Receiver
RPG III Data Unknown Queue Receiver
RPG IV Data Unknown Queue Receiver

CL IBM MQ Unknown Queue Receiver
RPG III IBM MQ Unknown Queue Receiver
RPG IV IBM MQ Unknown Queue Receiver
DataQ CL example
DataQ RPG example

IBM MQ CL example
IBM MQ RPG example
CL Disk File
RPG III File Disk
RPG IV File Disk

CL Display File
RPG III File Workstn
RPG IV File Workstn

RPG III File Printer
RPG IV File Printer

RPG III File Special
RPG IV File Special

RPG III File Seq
RPG IV File Seq
Created when a reference to a LF/PF/DSPF/PTRF file is found within a Program (or MainSubroutine/Subroutine/Procedure).
DDS Logical File DDS Logical File is associated to .lf file and is a hidden object to help linking between RPG III/RPG IV/CL Disk File and Sql Views.
CL Missing Physical/Logical File
RPG III Missing Physical/Logical File
RPG IV Missing Physical/Logical File
DDS Physical File
DDS Physical File is associated to .pf file and is a hidden object to help linking between RPG III/RPG IV/CL Disk File and Sql Tables.
This icon is also used for transaction End Point when there is RPG III/RPG IV/CL Disk File references but no .lf or .pf files associated.
CL Missing Display File
RPG III Missing Display File
RPG IV Missing Display File
DDS Display File

RPG III Missing Printer File
RPG IV Missing Printer File
DDS Printer File
DDS Display File and DDS Printer File are associated with .dspf and .prtf files, respectively.
This icon is also used for transaction End Point when there is RPG III/RPG IV Display/Printer Files references but no .dspf or .ptrf files associated.
RPG III Copy Member
RPG IV Copy Member

RPG III Missing Copy Member
RPG IV Missing Copy Member
-
RPG III SQL Statement/Structure -
RPG IV Get Resource Service REST RPG examples
RPG IV Post Resource Service REST RPG examples
RPG IV Put Resource Service REST RPG examples
RPG IV Delete Resource Service REST RPG examples
DDS Join Structure Deprecated will soon be removed from the documentation.
DDS Section Deprecated will soon be removed from the documentation.
DDS Record Structure LF Deprecated will soon be removed from the documentation.
DDS Record Structure PF Deprecated will soon be removed from the documentation.
Caller Icon Caller Type Link Type Callee Icon Callee Type Remarks
CL Program call Link CL Program -
CL Program call Link CL Subroutine -
CL Program call Link CL Call to Generic Program
CL Subroutine call Link CL Call to Generic Program
CL Subroutine call Link CL Call to Sql File SQL script CL example
STRQMQRY CL example
CL Subroutine call Link CL Program
CL Subroutine call Link CL Subroutine
CL Program call Link CL Data Queue Publisher DataQ CL example
CL Data Queue Receiver call Link CL Program DataQ CL example
CL Data Unknown Queue Receiver call Link CL Program DataQ CL example
CL Program call Link CL IBM MQ Publisher IBM MQ CL example
CL IBM MQ Queue Receiver call Link CL Program IBM MQ CL example
CL Program call Link CL EXEC SQL SQL CL example
CL Program call Link CL Call to Sql File SQL Script CL example
STRQMQRY CL example
CL Program Use Select Link CL Disk File DCLF command example
CL Disk File Relyon Link CL Missing Physical/logical File DCLF command example
CL Program Access link CL Display File DCLF command example
CL Program Read Access link CL Display File DCLF command example
CL Program Write Access link CL Display File DCLF command example
CL Missing Display File call Link CL Program DCLF command example
CL Program Access link CL Data Area Data Area Example
CL Program Read Access link CL Data Area Data Area Example
CL Program Write Access link CL Data Area Data Area Example
Caller Icon Caller Type Link Type Callee Icon Callee Type Remarks
RPG III Program call Link RPG III Main Subroutine -
RPG III MainSubroutine call Link RPG III Program -
RPG III MainSubroutine call Link RPG III Subroutine -
RPG III Subroutine call Link RPG III Subroutine -
RPG III Subroutine call Link RPG III Call to Generic Program -
RPG III MainSubroutine call Link RPG III Call to Generic Program -
RPG III MainSubroutine call Link RPG III EXEC SQL SQL RPG III example
RPG III Program Access link RPG III File Workstn RPG Display File
RPG III Missing Display File call Link RPG III Program RPG Display File
RPG III File Disk Relyon Link RPG III Missing Physical/Logical File RPG Disk File
RPG III File Printer Relyon Link RPG III Missing Printer File -
RPG III MainSubroutine Use Insert Link RPG III File Disk RPG Disk File
RPG III MainSubroutine Use Select Link RPG III File Disk RPG Disk File
RPG III MainSubroutine Use Delete Link RPG III File Disk RPG Disk File
RPG III MainSubroutine Use Update Link RPG III File Disk RPG Disk File
RPG III Subroutine Use Insert Link RPG III File Disk RPG Disk File
RPG III Subroutine Use Select Link RPG III File Disk RPG Disk File
RPG III Subroutine Use Delete Link RPG III File Disk RPG Disk File
RPG III Subroutine Use Update Link RPG III File Disk RPG Disk File
Caller Icon Caller Type Link Type Callee Icon Callee Type Remarks
RPG IV Program call Link RPG IV MainSubroutine
RPG IV Program call Link RPG IV Procedure Prototype
RPG IV Procedure Prototype call Link RPG IV Program
RPG IV Missing Display File call Link RPG IV Program
RPG IV MainSubroutine call Link RPG IV Procedure
RPG IV MainSubroutine call Link RPG IV Procedure Prototype
RPG IV MainSubroutine call Link RPG IV Program
RPG IV MainSubroutine call Link RPG IV Subroutine
RPG IV MainSubroutine call Link RPG IV Call to Generic Program -
RPG IV Subroutine call Link RPG IV Call to Generic Program -
RPG IV Procedure Prototype call Link RPG IV Call to Generic Program -
RPG IV Procedure Prototype call Link RPG IV Missing Procedure -
RPG IV Program includeLink RPG IV Missing Copy Member -
RPG IV Procedure call Link RPG IV Procedure
RPG IV Procedure call Link RPG IV Procedure Prototype
RPG IV Procedure call Link RPG IV Subroutine
RPG IV Subroutine call Link RPG IV Procedure
RPG IV Subroutine call Link RPG IV Procedure Prototype
RPG IV Subroutine call Link RPG IV Program
RPG IV Subroutine call Link RPG IV Subroutine
RPG IV Procedure Prototype call Link RPG IV Module
RPG IV Procedure Prototype call Link RPG IV Procedure
RPG IV Copy Member call Link RPG IV Subroutine
RPG IV MainSubroutine call Link RPG IV EXEC SQL SQL RPG IV example
RPG IV Subroutine call Link RPG IV EXEC SQL SQL RPG IV example
RPG IV Copy Member call Link RPG IV EXEC SQL SQL RPG IV example
RPG IV Procedure call Link RPG IV EXEC SQL SQL RPG IV example
RPG IV Program accessLink RPG IV File Workstn RPG Display File
RPG IV Module accessLink RPG IV File Workstn RPG Display File
RPG IV File Disk Relyon Link RPG IV Missing Physical/Logical File
RPG IV File Printer Relyon Link RPG IV Missing Printer File
RPG IV MainSubroutine Use Select Link RPG IV File Disk RPG Disk File
RPG IV MainSubroutine Use Delete Link RPG IV File Disk RPG Disk File
RPG IV MainSubroutine Use Insert Link RPG IV File Disk RPG Disk File
RPG IV MainSubroutine Use Update Link RPG IV File Disk RPG Disk File
RPG IV MainSubroutine Use Insert Link RPG IV File Printer
RPG IV Subroutine Use Insert Link RPG IV File Printer
RPG IV Procedure Use Select Link RPG IV File Disk RPG Disk File
RPG IV Procedure Use Delete Link RPG IV File Disk RPG Disk File
RPG IV Procedure Use Insert Link RPG IV File Disk RPG Disk File
RPG IV Procedure Use Update Link RPG IV File Disk RPG Disk File
RPG IV Subroutine Use Select Link RPG IV File Disk RPG Disk File
RPG IV Subroutine Use Delete Link RPG IV File Disk RPG Disk File
RPG IV Subroutine Use Insert Link RPG IV File Disk RPG Disk File
RPG IV Subroutine Use Update Link RPG IV File Disk RPG Disk File
Caller Icon Caller Type Link Type Callee Icon Callee Type Remarks
DDS Logical File Use Select Link DDS Logical File
DDS Logical File Use Select Link DDS Physical File
DDS Physical File Use Select Link DDS Physical File
Caller Icon Caller Type Link Type Callee Icon Callee Type Remarks
CL Disk File Relyon Link DDS Display File
CL Disk File Relyon Link DDS Logical File
CL Disk File Relyon Link DDS Physical File
DDS Display File call Link CL Program
CL Program Use Select Link DDS Logical File
CL Program Use Select Link DDS Physical File
Caller Icon Caller Type Link Type Callee Icon Callee Type Remarks
DDS Display File call Link RPG III Program
RPG III File Disk Relyon Link DDS Logical File
RPG III File Disk Relyon Link DDS Physical File
RPG III MainSubroutine Use Update Link DDS Logical File
RPG III MainSubroutine Use Insert Link DDS Logical File
RPG III MainSubroutine Use Select Link DDS Logical File
RPG III MainSubroutine Use Insert Link DDS Physical File
RPG III MainSubroutine Use Select Link DDS Physical File
RPG III Subroutine Use Delete Link DDS Logical File
RPG III Subroutine Use Update Link DDS Logical File
RPG III Subroutine Use Select Link DDS Logical File
RPG III Subroutine Use Insert Link DDS Logical File
RPG III Subroutine Use Insert Link DDS Physical File
RPG III Subroutine Use Update Link DDS Physical File
RPG III Subroutine Use Select Link DDS Physical File
RPG III Subroutine Use Delete Link DDS Physical File
Caller Icon Caller Type Link Type Callee Icon Callee Type Remarks
DDS Display File DDS Display File call Link RPG IV Module RPG IV Module
DDS Display File DDS Display File call Link RPG IV Program RPG IV Program
RPG IV File Disk RPG IV File Disk Relyon Link DDS Logical File DDS Logical File
RPG IV File Disk RPG IV File Disk Relyon Link DDS Physical File DDS Physical File
RPG IV File Disk RPG IV File Disk Relyon Link DDS Printer File DDS Printer File
RPG IV File Printer RPG IV File Printer Relyon Link DDS Physical File DDS Physical File
RPG IV File Printer RPG IV File Printer Relyon Link DDS Printer File DDS Printer File
RPG IV MainSubroutine RPG IV MainSubroutine Use Select Link DDS Logical File DDS Logical File
RPG IV MainSubroutine RPG IV MainSubroutine Use Update Link DDS Logical File DDS Logical File
RPG IV MainSubroutine RPG IV MainSubroutine Use Delete Link DDS Logical File DDS Logical File
RPG IV MainSubroutine RPG IV MainSubroutine Use Insert Link DDS Logical File DDS Logical File
RPG IV MainSubroutine RPG IV MainSubroutine Use Update Link DDS Physical File DDS Physical File
RPG IV MainSubroutine RPG IV MainSubroutine Use Insert Link DDS Physical File DDS Physical File
RPG IV MainSubroutine RPG IV MainSubroutine Use Select Link DDS Physical File DDS Physical File
RPG IV MainSubroutine RPG IV MainSubroutine Use Delete Link DDS Physical File DDS Physical File
RPG IV MainSubroutine RPG IV MainSubroutine Use Insert Link DDS Printer File DDS Printer File
Caller Icon Caller Type Link Type Callee Icon Callee Type Remarks
RPG III MainSubroutine call Link CL Program
RPG III Subroutine call Link CL Program
RPG IV MainSubroutine call Link CL Program
RPG IV Procedure Prototype call Link CL Program
RPG IV Subroutine call Link CL Program
CL Program call Link RPG III Program
CL Program call Link RPG IV Copy Member
CL Program call Link RPG IV Procedure
CL Program call Link RPG IV Program
CL Subroutine call Link RPG IV Program

Analysis log messages

The following list of log messages may occur during an analysis and will help locate in which file the warning occured. In addition, just before the Analyzer Statistical Report is displayed in the log file, the extension will report the total number of occurences of these messages, for example:

Info   : [com.castsoftware.rpg] RPG-001: Cannot resolve copy GFCOLEC/QRPGSRC/GF_OBTCN_L -- 1 occurrences
Info   : [com.castsoftware.rpg] RPG-001: Cannot resolve copy QRPGLESRC/HTTPAPI_H -- 5 occurrences
Info   : [com.castsoftware.rpg] RPG-002: Cannot resolve DDS file SGGQGC00 -- 5 occurrences
Info   : [com.castsoftware.rpg] RPG-002: Cannot resolve DDS file SGGQGD00 -- 5 occurrences
Info   : [com.castsoftware.rpg] RPG-002: Cannot resolve DDS file SGSPLZ00 -- 2 occurrences
Info   : [com.castsoftware.rpg] RPG-003: Cannot resolve program RTNFECHA -- 5 occurrences
Info   : [com.castsoftware.rpg] RPG-003: Cannot resolve program SGG4648C -- 1 occurrences
Info   : [com.castsoftware.rpg] RPG-003: Cannot resolve program SGS99500 -- 5 occurrences
Info   : [com.castsoftware.rpg] RPG-003: Cannot resolve program TBL50400 -- 4 occurrences

RPG-001

Item Description
Identifier RPG-001
Message Cannot resolve copy {RefName} – {count} occurrences
Severity Info
Explanation Analyzer could not find the source file included by a /copy statement. This can lead to various missing results.
User Action Ensure that all required source code is packaged and delivered. The missing copy can also be in an external library in that case ensure to provide it.

RPG-002

Item Description
Identifier RPG-002
Message Cannot resolve DDS file {Refname} – {count} occurrences
Severity Info
Explanation Analyzer could not find a DDS file (pf, lf, dspf, prtf, …). The analysis results will be degraded. A fallback mechanism will link missing PF/LF references to available SQL Table & View Objects.
User Action Ensure that all required source code is packaged and delivered.

RPG-003

Item Description
Identifier RPG-003
Message Cannot resolve program {Refname} – {count} occurrences
Severity Info
Explanation Analyzer could not find a program. The analysis results will be incomplete.
User Action Ensure that all required source code is packaged and delivered. The program can also be in a different technology (COBOL, etc…) in that case it will be linked in a later analysis step. The program may also be external to the application, that is outside of the application boundaries. In this case it should not be delivered (the RPG analyzer created a placeholder object of type CL/RPG III/RPG IV Call to Generic Program).

RPG-004

Item Description
Identifier RPG-004
Message Cannot resolve procedure {Refname} – {count} occurrences
Severity Info
Explanation Analyzer could not find a procedure.
User Action Ensure that all required source code is packaged and delivered.

Structural Rules

The following structural rules are provided:

Release Link
3.5.0-alpha1 https://technologies.castsoftware.com/rules?sec=srs_rpg&ref=||3.5.0-alpha1external link

Analyzer Statistical Report

At the end of an analysis, a statistical report is printed in the log file displaying the number of saved objects and links. For the com.castsoftware.rpg extension, this report splits the results by object type.

For links, the report uses the information stored in the analysis schema (caller object type, link type, callee object type) to provide a detailed view of links created by the extension.

An example statistical report is shown below:

Info   : [com.castsoftware.rpg] Stats Report:
Info   : [com.castsoftware.rpg] Number of Objects per type:
Info   : [com.castsoftware.rpg] 'RPG IV Call to Generic Program'       : 4 
Info   : [com.castsoftware.rpg] 'RPG IV File Disk'                     : 12 
Info   : [com.castsoftware.rpg] 'RPG IV MainSubroutine'                : 5 
Info   : [com.castsoftware.rpg] 'RPG IV Missing Copy Member'           : 2 
Info   : [com.castsoftware.rpg] 'RPG IV Missing Physical/Logical File' : 3 
Info   : [com.castsoftware.rpg] 'RPG IV Post Resource Service'         : 5 
Info   : [com.castsoftware.rpg] 'RPG IV Program'                       : 5 
Info   : [com.castsoftware.rpg] 'RPG IV Subroutine'                    : 15 
Info   : [com.castsoftware.rpg] Number of Links per link flags:
Info   : [com.castsoftware.rpg] 'RPG IV File Disk'       -- relyonLink    --> 'RPG IV Missing Physical/Logical File' : 12
Info   : [com.castsoftware.rpg] 'RPG IV MainSubroutine'  -- callLink      --> 'RPG IV Subroutine'                    : 11
Info   : [com.castsoftware.rpg] 'RPG IV Program'         -- callLink      --> 'RPG IV MainSubroutine'                : 5
Info   : [com.castsoftware.rpg] 'RPG IV Program'         -- includeLink   --> 'RPG IV Missing Copy Member'           : 6
Info   : [com.castsoftware.rpg] 'RPG IV Subroutine'      -- callLink      --> 'RPG IV Call to Generic Program'       : 15
Info   : [com.castsoftware.rpg] 'RPG IV Subroutine'      -- useSelectLink --> 'RPG IV File Disk'                     : 2
Info   : [com.castsoftware.rpg] 'RPG IV Subroutine'      -- callLink      --> 'RPG IV Post Resource Service'         : 5
Info   : [com.castsoftware.rpg] 'RPG IV Subroutine'      -- callLink      --> 'RPG IV Subroutine'                    : 8

Known limitations

  • SOAP services are not supported
  • With regard to RPG language:
    • Dynamic calls are not supported
    • Dynamic SQL is partially supported since 3.3.0-alpha2 (prepare and execute immediate with variables are resolved when encountered in RPG IV free format; the support for RPG IV fixed format and CL is available since 3.3.0-alpha3)
    • If you code the /FREE or /END-FREE directive, it will be ignored by the compiler, but the syntax of the directive will be checked - see the official documentation referenceexternal link. The com.castsoftware.rpg extension requires BOTH directives (i.e. a closing /END-FREE directive if there is an opening /FREE directive and vice-versa) in the source code: a missing opening or closing directive will produce traceback issues and missing objects. To fix the issue ensure you add the missing /FREE or /END-FREE appropriately within the file for it to be properly analyzed.