RPG and CL Program Inventory Worksheet for Modernization
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.
| Program | Language | Lines of code | Files used | Programs called | Complexity score | Plan | Business owner | Last run date | |
|---|---|---|---|---|---|---|---|---|---|
34.5 | |||||||||
20.5 | |||||||||
15.7 | |||||||||
10.4 | |||||||||
41.5 | |||||||||
13.1 |
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.
Legacy code analysis with a private model
Optional: discuss summarising your RPG and CL estate with an on-premise model so source stays in-house.
Optional. The tool and every export work without this. No spam.
How to use it
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
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.
- 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
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
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.
Frequently Asked Questions
How do I get a list of programs from the IBM i?
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?
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?
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?
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.
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.
Related Tools
RPG and IBM i Skills Succession Risk Assessment
Score how exposed your IBM i and RPG environment is to retirements, single points of knowledge and missing documentation.
OracleIBM i CL Command Cheat Sheet
A searchable lookup of the CL commands operators and JDE World support staff use daily, grouped by task with a short note on each.
Developer ToolsDb2 for i SQL Services Query Generator
Fill in a library, object type and subsystem and get a set of QSYS2 SQL services queries for sizes, row counts, jobs, locks and user profiles.
OracleJD Edwards Julian Date (CYYDDD) SQL Converter
Build SQL that converts the CYYDDD Julian dates stored in JD Edwards files into real dates, converts a date back, and filters by date range.
More ERP Migration & Selection tools
See all- JDE World to E1 Migration Readiness Assessment
- ERP Cutover and Go-Live Plan Template for IBM i Migrations
- JD Edwards World Parallel Run Cost Calculator
- ERP TCO Comparison Calculator (5-Year)
- ERP Migration Risk Assessment
- Data Migration Effort Calculator
- ERP Selection Scorecard for Manufacturers
- ERP Go-Live Readiness Checklist
- ERP Change Management Readiness Assessment