ERP Migration & SelectionFree worksheetPDF, Excel, Word exportOracle JD Edwards World

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.

Download:
ProgramLanguageLines of codeFiles usedPrograms calledComplexity scorePlanBusiness ownerLast run date
34.5
20.5
15.7
10.4
41.5
13.1
Total lines of code
6,420
Total complexity
135.7
Programs listed
6
Average complexity per program
22.6167
Average lines per program
1,070

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.