RPGLE Analyzer
VS Code extension for RPGLE structural analysis — Outline, Go to Definition, Hover tooltips, DDS resolution, and indicator tracking. Supports fixed, free, and mixed RPGLE sources.
Version 0.12.9 — Indicator tracking in Outline, record format navigation, Select/Omit DDS conditions, DS subfields in mixed sources, comment detection fixes.
Features
| Feature |
Description |
| 🔍 Outline |
Structural tree grouped by type: Procedures, Files (with record format sub-nodes), Variables (with DS fields), Subroutines, Prototypes, Indicators (with R/W counts), KLISTs |
| 🧭 Go to Definition |
Ctrl+Click navigation: symbols, /COPY members, F-spec → DDS file, record format name → DDS line |
| 💬 Hover Tooltips |
Symbol info including data flow. F-spec hover shows DDS record format fields. Record format hover shows declaring file + key fields + S/O conditions |
| 📁 DDS Resolution |
PF/LF/DSPF/PRTF parsing — Ctrl+Click on F-spec opens DDS, auto-discovers QDDSSRC, resolves PFILE chains, handles RENAME |
| 🩺 Diagnostics |
Unused variables, unclosed blocks, unresolved prototypes (on save + debounced on type) |
| ✨ Code Completion |
40+ keywords, 8 snippets, scope-aware variables/subfields/procedures |
| 📊 Indicator Tracking |
Detects SETON/SETOF, EVAL *IN, IF/WHEN *IN, MOVE to *IN array, C-spec conditioning/resulting indicators. Shown in Outline with read/write counts |
| 🔎 Select/Omit |
LF S/O conditions parsed and shown in DDS hover |
| 📂 /COPY & /INCLUDE |
Recursive resolution up to 10 levels, hover shows member summary, Ctrl+Click opens member |
| 📐 Smart Preview |
Color-coded indented structural preview |
| 🔃 Folding & CodeLens |
Block folding + parent IF navigation |
Supported Kinds
Procedures, parameters, subroutines, prototypes, variables, DS fields (named + anonymous), constants, indicators (*IN01-*IN99, *INLR), KLIST/KFLD, files, SQL cursors, H/I/O specs. Anonymous DS detected as DS@L<line> with nested subfields.
DDS Features
- Ctrl+Click on F-spec/DCL-F file name → opens DDS source (PF/LF/DSPF/PRTF)
- Ctrl+Click on record format name (
SEBLIH in chain (...) SEBLIH) → navigates to R FORMATNAME line in DDS
- Hover on F-spec → table of record format fields with types and keys
- Hover on record format name → declaring file, DDS path, key fields, S/O conditions
- Outline for DDS files → record formats + fields tree
- Outline file enrichment → each File shows
R: FORMATNAME sub-nodes
- LF→PF tracing via
PFILE() keyword
- RENAME resolution:
RENAME(orig:new) maps format names
Configuration
{
"rpgleOutline.enableDSpecVariables": true,
"rpgleOutline.enableKListFields": true,
"rpgleOutline.showReferencesInOutline": true,
"rpgleOutline.maxReferencesPerSymbol": 20,
"rpgleOutline.outlineSortMode": "alphabetical",
"rpgleOutline.sourceDirectories": [
"./QDDSSRC",
"D:/Proyectos/financiero/fuentes"
],
"rpgleOutline.ddsResolution.enabled": true
}
Installation
code --install-extension rpgle-analyzer-0.12.9.vsix
Or install from VS Code Marketplace / OpenVSX.
Links
| |