How to get LOC is executed or % of code covered in iSeries pgm batch execution?

Summary

The question revolves around determining the percentage of code covered or lines of code (LOC) executed in an iSeries program (RPG) during batch execution without relying on third-party code coverage tools. The focus is on exploring alternatives that leverage native iSeries capabilities, such as PEX/Collection services or Job watcher reports, to gain insights into code execution metrics.

Root Cause

The root cause of the challenge is the lack of built-in code coverage analysis in iSeries for RPG programs executed in batch jobs. This limitation necessitates either the use of third-party tools or creative utilization of existing iSeries monitoring and reporting features.

Why This Happens in Real Systems

This issue arises in real systems due to several factors:

  • Limited native monitoring capabilities for code execution metrics in iSeries.
  • Restrictions on using third-party tools due to cost, security, or administrative constraints.
  • Need for efficient debugging and optimization of RPG programs in batch environments.

Real-World Impact

The real-world impact includes:

  • Inefficient debugging: Without code coverage data, identifying unexecuted code paths can be challenging.
  • Optimization difficulties: Lack of insights into which parts of the code are executed most frequently hinders optimization efforts.
  • Quality assurance challenges: Ensuring the quality and reliability of RPG programs is more complicated without comprehensive code coverage analysis.

Example or Code

// Example RPG code snippet
H DFTACTGRP(*NO)

FMYFILE     UF   A                     Disk    Rename(MYFILE:MFF)

 /FREE
   READ MYFILE;
   // Code execution example
   IF %FOUND(MYFILE);
     // Process found record
   ELSE;
     // Handle not found condition
   ENDIF;
 /END-FREE

How Senior Engineers Fix It

Senior engineers address this challenge by:

  • Leveraging PEX/Collection services for performance monitoring and analysis.
  • Utilizing Job watcher reports to gather execution metrics.
  • Implementing custom logging and analysis within RPG programs to track execution paths and metrics.
  • Evaluating open-source alternatives for code coverage analysis.

Why Juniors Miss It

Juniors might miss this solution due to:

  • Lack of experience with iSeries native monitoring tools and reporting services.
  • Unfamiliarity with RPG programming and its specific challenges in batch environments.
  • Overreliance on third-party tools without exploring native capabilities.
  • Insufficient understanding of code coverage analysis and its importance in software development and debugging.