# RPG and CL Program Inventory Worksheet for Modernization

> Source: https://netray.co/tools/rpg-cl-program-inventory-worksheet
> Publisher: Netray (netray.co), AI and integration engineering for ERP and manufacturing systems.
> Section: Free Tools

## Short answer

List your custom programs with language, size, files used and owner, and get a simple complexity score to prioritise what to retire, keep or rewrite.

## Category

erp-migration

## Erp

Oracle JD Edwards World

## Audience

- IBM i developer
- Modernization architect
- JDE World analyst

## Tool

**Kind:** worksheet

**Mode:** editable

**Currency:** $

**Columns:**

#### Program

**Key:** program

**Type:** text

#### Language

**Key:** lang

**Type:** select

**Options:**

- RPG III
- RPG IV
- RPGLE free
- CL
- CLLE
- COBOL
- SQL
- Other

#### Lines of code

**Key:** lines

**Type:** number

#### Files used

**Key:** files

**Type:** number

#### Programs called

**Key:** calls

**Type:** number

#### Complexity score

**Key:** complexity

**Type:** number

**Expr:** lines / 100 + files * 2 + calls * 1.5

**Format:** decimal

**Help:** Lines divided by 100, plus 2 per file, plus 1.5 per call.

#### Plan

**Key:** action

**Type:** select

**Options:**

- Keep
- Retire
- Rewrite
- Replace with standard
- Investigate

#### Business owner

**Key:** owner

**Type:** text

#### Last run date

**Key:** lastrun

**Type:** date

**Rows:**

**Program:** XYZ4211A

**Lang:** RPG III

**Lines:** 1800

**Files:** 6

**Calls:** 3

**Action:** Rewrite

**Owner:** Order desk

**Lastrun:** 2026-10-15

**Program:** XYZBILL1

**Lang:** RPG IV

**Lines:** 950

**Files:** 4

**Calls:** 2

**Action:** Keep

**Owner:** Finance

**Lastrun:** 2026-10-18

**Program:** XYZNITE

**Lang:** CL

**Lines:** 220

**Files:** 0

**Calls:** 9

**Action:** Keep

**Owner:** IT operations

**Lastrun:** 2026-10-19

**Program:** XYZOLD01

**Lang:** RPG III

**Lines:** 640

**Files:** 2

**Calls:** 0

**Action:** Retire

**Owner:** Unknown

**Lastrun:** 2023-02-11

**Program:** XYZRPT05

**Lang:** COBOL

**Lines:** 2400

**Files:** 8

**Calls:** 1

**Action:** Investigate

**Owner:** Purchasing

**Lastrun:** 2026-09-30

**Program:** XYZEXP02

**Lang:** RPGLE free

**Lines:** 410

**Files:** 3

**Calls:** 2

**Action:** Keep

**Owner:** Logistics

**Lastrun:** 2026-10-17

**Totals:**

#### Total lines of code

**Key:** lines

**Agg:** sum

**Format:** integer

#### Total complexity

**Key:** complexity

**Agg:** sum

**Format:** decimal

#### Programs listed

**Key:** program

**Agg:** count

**Format:** integer

**Summary:**

#### Average complexity per program

**Key:** avg_complexity

**Expr:** sum_complexity / count

**Format:** decimal

#### Average lines per program

**Key:** avg_lines

**Expr:** sum_lines / count

**Format:** integer

**Notes:** The complexity score is a simple ranking aid, not a standard metric. Adjust the weights to suit your environment, and verify last run dates from job logs or object usage data before retiring anything.

## Content

**Intro:** Before a modernization or move off a legacy system you need a list of what custom code exists, what it touches and whether anyone still uses it. This worksheet gives you a simple structure for that list.

**Sections:**

#### How to use it

**Body:** Start by exporting object lists from the system, for example with DSPOBJD to an output file or the OBJECT_STATISTICS service, then paste program names into the sheet. Add language, size, number of files and called programs from your source or analysis tools. Assign a business owner and a planned action. Export the sheet to Excel to share with business and project teams.

#### How the score works

**Body:** The worksheet computes a rough complexity number for each program as lines divided by 100, plus 2 for each file used and 1.5 for each program called. Larger programs with many files and calls score high and are harder to rewrite or test. Use it to rank programs, not to estimate hours exactly. Programs with high scores and recent usage deserve the most careful analysis.

**Bullets:**

- Lines divided by 100
- Plus 2 per file used
- Plus 1.5 per program called
- Sort high to low to rank effort

#### Deciding keep, retire, rewrite or replace

**Body:** Programs not run for a year or more are candidates to retire after owner confirmation. Programs that duplicate a feature now in standard JD Edwards World or a newer system can be replaced with the standard function. Frequently used, high complexity programs are rewrite candidates, and should be tested against recorded data before cutover. Mark unknown ones as Investigate rather than guessing.

#### Common mistakes

**Body:** Taking last-used dates from object descriptions alone can miss programs that run only at year end. Ignoring CL programs and menu options hides the batch flow that links everything together. Counting only RPG source misses embedded SQL, display files, printer files and data areas, which also need migration attention. Revisit the list after each analysis round.

**Cta:** If you need help reading and documenting legacy RPG and CL at scale, Netray can build a private code analysis assistant that runs on your own hardware.

**Faq:**

#### How do I get a list of programs from the IBM i?

**Answer:** Use DSPOBJD with OBJTYPE(*PGM) and OUTPUT(*OUTFILE) for a library, or query QSYS2.OBJECT_STATISTICS. Source file members can be listed with DSPFD or the SOURCE_FILE_MEMBER_INFO services on newer releases. Export the results to your spreadsheet.

#### Is lines of code a good measure?

**Answer:** It is a rough measure. It ignores the quality of the code and the business logic. Combined with files used and calls it gives a usable ranking, but always have a developer review the top-scoring programs before estimating work.

#### Should I include standard JD Edwards World programs?

**Answer:** Normally no. List custom and modified programs, and note which standard programs they replace or extend. Standard programs are covered by the vendor, and the modifications are what make an upgrade or migration hard.

#### How do I find unused programs safely?

**Answer:** Check last used dates and usage counts on object descriptions, review job logs and scheduler history, and ask the business owner. Rename or move an object to a holding library for a period before deleting it permanently.

## Search terms

rpg program inventory, as400 application inventory template, legacy program inventory excel, ibm i modernization assessment worksheet, jde world custom program list, rpg code complexity, cobol rpg inventory template, legacy modification inventory

---
Talk to an engineer: https://netray.co/contact?intent=erp_ai | Machine catalog: https://netray.co/agent/catalog.json
