Page tree
Skip to end of metadata
Go to start of metadata

On this page:

PL1 1.0.6

Resolved issues

Internal IDCall IDSummary
PL-25613194IBM PL/I extension can now be upgraded from previous versions.

PL1 1.0.5


  • Strings are now processed as strings
  • Nested PLI/PLCFunctions/Procedures are now detected correctly
  • ++include and -inc syntaxes are now supported
  • Column numbers are now disregarded when PLI/PLCFunctions/Procedures are saved as objects, therefore object names no longer contain this information
  • Code depth detection is improved significantly in PL 1.0.5 resulting in lesser warnings of type "unable to find object end for <type>".

Impacts of upgrading to this version

During the source code pre-processing phase that is done as part of the delivery and analysis process, CAST will now add "$$" to all PL1 source code just prior to the ";". For example:

Original source code
Source code after pre-processing in < 1.0.5
Source code after pre-processing in ≥ 1.0.5

The impact of this change is as follows:

  • Existing objects will be shown as updated when a post upgrade snapshot is run.
  • There will be a reduction in the number of messages of the type "end of object of type <PLC\PLIProcedure|Function> not found" that were previously displayed in the log.

This change has been implemented because of a limitation in the CAST analyzer with regard to the way object start and end patterns are handled. In PL1, object start and end patterns do not match (contrary to most other languages, such as PHP where { and } are used) and therefore the analyzer is not able to correctly identify when an object ends.

Resolved issues

Internal IDSummaryComments
PL-205PL1 infinite loop when comments have #When inline comments contained #, an infinite loop was seen during the analysis. This has been corrected.
PL-166Permanent Fix - [Unicredit][ITA][PMB] snapshot stuck at Compute Snapshot step with pl1_pliproc_pp101 procedure
PL-164[IBM] [CLS FDW] [On-Boarding] [KLingamurthy] - PL1 Analysis - Warnings Unable to find the object end for type 'PLCProcedure'PL1 Extension now detects start of end of PLC and PLI function/procedure correctly.
PL-196PLI: MENUDEF.plinc file pre-processed incorrectly => analysis warning "Unable to find the object end for type 'PLCFunction' 
PL-198Warning "unable to find end of object type PLCProcedure" is given if "end case" statement is present in EXEC SQL
PL-206"Unable to find the object end for type 'PLIProcedure'" warning when "END" is preceded by comment
PL-207"Unable to find the object end for type 'PLIProcedure'" warning when comments has appearance of nested comments (Which are unsupported)
PL-208"Unable to find the object end for type 'PLIProcedure'" warning when variable is named "DO" in DCL statement
PL-200Warning "unable to find end of object type PLIProcedure" for cobol procedure
PL-199Warning "unable to find end of object type PLCProcedure" is given if another statement follows proc declaration
PL-177Cannot find procedure end if "END_" in name
PL-179cannot find object end if $ is in PLCFunction or PLIFunction name
PL-194End is not detected correctly if "options (main)" is on separate line
PL-178unnamed object is created if % is in PLCFunction namePL1 extension now processes PLCInclude objects with special characters and will not create unnamed objects for them.
PL-174PLCInclude does not detect objects with special characters
PL-168missing includeLink in case of callee starting with @

PL1 extension now will create correct links if:

  • objects have special characters such as @,$ or #
  • files are included inside PLI/PLCFunction/procedure instead of only in PLIMainProcedure
PL-169missing callLink in case of callee starting with $
PL-180No links to pli files and objects across files
PL-212No include links unless file is included in PLIMainProcedure
PL-213No call links unless file is included in PLIMainProcedure
PL-183No call links to objects with @ in name
PL-171PL1 should have string patternPL1 extension now processes strings as strings.
PL-172PL1 should have correct nesting supportPL1 extension now detects nested PLI/PLCFunction/Procedure correctly.
PL-175preprocessor erroneous identification - many cases of files saved as PLC instead of PLI when PROC and MAIN(OPTIONS) are on 2 separate linesPLC and PLI file identification has been corrected so that PLI files will not be saved as PLC files.
PL-193PL1 extractor processes PLC files incorrectly
PL-184PL1 extension should support ++include\-inc syntaxPL1 extension will now detect if files are included using ++include or -inc syntax.
PL-209Object names for procedures\function\main procedures should not consider column headingPL1 extension will now disregard column number while creating PLC\PLIFunction|Procedure.
PL-214PLC\PLIFunction is converted to PLC\PLIProcedure object if function does not take any parametersPL1 extension will now correctly identify PLCFunction as PLCFunction with no parameters.
PL-161Include the default TCC configure files into the productPL1 extension includes default configuration for TCC setup.
PL-165fix:QR "Avoid main procedures not having an ON ERROR clause (PL1)" violation for DMT generated unknown object

PL1 extension now disregards CAST generated objects for computing metric violations when CAST AIP schemas are installed in a CSS environment.

When using CAST AIP schemas in an Oracle environment, the CAST generated objects are not ignored automatically, as such, to benefit from this improvement, please create an SQL Tool job using the Tools after module generation option in the CAST Management Studio (see CMS Snapshot Analysis - Tools After Module Generation - Error Free Logs - CAST AIP 8 for more information).

You can use the following query in the SQL Tool job to ignore the CAST generated objects:

    update ctt_object_applications app_objects 
    set = 2 where app_objects.object_id in (
      select objects.object_id from cdt_objects objects, DSSAPP_MODULES modules
      where modules.MODULE_ID = app_objects.application_id
      and regexp_like(objects.object_fullname, '\\UNKNOWN\\' || objects.OBJECT_NAME || '.PLI.PLIMainProcedure.' || objects.OBJECT_NAME || '$')

PL1 1.0.4


In this release the Quality Rule Avoid using letters as I, J, K,.. for loops instead of using more meaningful variables (PL1) - 1001076 has been removed. As a direct result of this:

    • The associated metric "PLI: Use of I J K in Loop" has also been removed.
    • The associated metamodel type "PLIProcDOVar (PLI DO Variable)" has been marked as deprecated
    • The associated Quality Rule stored procedure "PL1_PLIPROC_PP102" has been removed:
      • On CAST AIP schemas installed on CAST Storage Service, after upgrading from PL1 1.0.3 the stored procedure will no longer exist
      • On CAST AIP schemas installed on Oracle Server, after upgrading from PL1 1.0.3 the stored procedure will remain in place but no longer be used
    • The impacts on analysis results of this decision are as follows:
      • No objects of type PLIProcDOVar (PLI DO Variable) will be resolved and saved in the CAST Analysis Service schema
      • The analysis log will no longer contain "duplicate object" warnings for PLIProcDOVar (PLI DO Variable) objects.
      • After upgrading from PL1 1.0.3 with existing snapshots, the Quality Rule will no longer be visible in the CAST dashboards for all existing snapshots and any new snapshots (that are generated with PL1 1.0.4)
  • The entry in the CAST Delivery Manager Tool for packaging PL1 source code has been renamed "PL1". In addition, it has been moved from the "Source Code Management" section to the "Repository" section (click to enlarge):

Internal ID



Correct extractor UI in DMT


Remove unused MAv2 metric Name="PLI: Begin Multiline Comment" TYPE="5000109"


Remove unused MAv2 metric with no name, regexp = FROM


Remove unused MAv2 metric "Number of Blank Lines" TYPE="5000040">

PL-135Explain or Remove MAv2 metric PLI: Use of I J K in Loop" TYPE="5000067"


Remove unused MAv2 metric PLI: Declaration of JWB001" TYPE="5000077


PL1 Library Extractor should not be listed under SCM in DMT


PLI Procedures ended by $$END are not recognized


Extractor v1.0.3 does not always clear margin - PLIProcedure identification jeopardized


Extractor v1.0.3 makes UA engine loop undefinitely on WARNING cannot find end of PLIProcedure


Extractor info message "apath\G04071" %OLD_EXT%="PLC" %NEW_EXT%="PLI" whereas OLD_EXT is .


Extractor is not resilient - in case of exception, catch and continue with next file


Extractor does not detect invalid files : binary and empty source files are renamed to .PLC and sent to analysis


Extractor generates 2 Analysis Units, only 1 is expected - no Include Link PLI to PLC


Extractor adds superfluous (duplicated) OPTIONS (MAIN)


QR Avoid duplicated Main Procedures (PL1) reports violation for generated code for called programs


Extractor does not log the processed file names


Owners and other tags in nuspec file are wrong in v1.0.3. v1.0.2 was correct

PL1 1.0.3

Resolved issues

Internal IDTicket IDSummaryComment


3469No violations for quality rule "Avoid having multiple artifacts inserting data on the same table (PLI)"

For these Rules, the scope has been updated. It contains only DB2 ZOS tables. So these rules will be computed only when DB2 ZOS tables exists in same Analysis Service with a PL1 analysis.

The same update has been done to the following PLC rules:

  • 1001014: Avoid having multiple artifacts inserting data on the same table (PLC)
  • 1001016: Avoid having multiple artifacts deleting data on the same table (PLC)
  • 1001018: Avoid having multiple artifacts updating data on the same table (PLC)


3525No violations for quality rule "Avoid having multiple artifacts updating data on the same table (PLI)"


3526No violations for quality rule "Avoid having multiple artifacts deleting data on the same table (PLI)"


3487Missing link between two PL1 programs 


1722PL1 - Warnings during analysis - Unable to find the object end for type 'PLCProcedure' 

PL1 1.0.2

Resolved issues

PL1 1.0.2 contains various fixes for issues found preventing compatibility with CAST AIP 7.3.3.

PL1 1.0.1

Resolved issues

Internal IDTicket IDSummary



PL1 : False violation for QR "Avoid unreferenced PLC Procedures & Functions (PL1) "



PL1: Incorrect name for "Violating Object" for QR " Avoid PL1 Errors Blocks having ON ERROR SYSTEM blocks and not containing and displaying ONCODE and ONLOC (PL1)"



PL1 : False violation for QR " Avoid undocumented PLI Programs (PL1)"



PL1_SCOPE_COUNT_PLI & PL1_SCOPE_COUNT_PLC do not use the best practices for Tech Size



Some UA Metrics are initialized to 1



icons for certain object types are not visible on dashboard - UA PL1 analysis



FALSE NEGATIVES for rule Avoid using letters as I, J, K,.. for big loops instead of using more meaningful variables (PL1)



PL1 false positive violation: Avoid not testing the SQLCODE return code after each SQL statement PL1



Rule "Avoid PLI Main procedures using GOTO statement" shows 3 violations in DEVELOPMENT_VIEW



PL1: Missing violation for QR " Avoid Functions and Procedures using RETURN statements (PL1)



PL1 : Violations are at "Main" procedure level instead of "Function and Procedure" level for QR "Avoid Functions and Procedures using BIN FIXED(15) instead of BIN FIXED(31) for all local variables (PL1) "



PL1: False violation for QR "Avoid Programs overriding the *PROCESS statement (PL1) "



PL1: False violation for QR "Avoid undocumented PLC Copybook (PL1) "



PL1 : False violation for QR "Avoid Functions and Procedures using RETURN statements (PL1) "

PL1 1.0.0


  • The Regular Expression engine used to interpret the Regular Expressions defined in the Quality Rule configuration has changed. BOOST is now used in place of TCL. Please see for more information about BOOST
  • In this release, the manual preprocessing step is no longer required - it is actioned automatically during code source Delivery via the CAST Delivery Manager Tool.
  • No labels