IBM I PDM — Graphical PDM for VS Code
WRKMBRPDM inside VS Code
A modern, graphical reimagining of the classic AS/400 PDM — fully integrated with Code for IBM i.
Overview
IBM I PDM brings the classic IBM i Programming Development Manager experience into Visual Studio Code. It provides a retro green-on-black 5250-style interface for managing source members, objects, active jobs, and spooled files — all without leaving your editor.
Built on top of Code for IBM i, it leverages SQL services (QSYS2, SYSTOOLS) for fast, efficient data access.
Features
Work with Members (WRKMBRPDM)
Browse and manage source members across IBM i libraries with a familiar option-code interface.
| Option |
Action |
| 2 |
Edit — opens the member in VS Code (read/write) |
| 3 |
Copy — duplicates the member to another library/file/member |
| 4 |
Delete — removes the member (with confirmation) |
| 5 |
Display — opens the member in read-only mode |
| 7 |
Rename — renames the member with validation |
| 14 |
Compile — submits the appropriate compile command |
| T |
Change Type — modify the member source type inline |
| X |
Change Text — edit the member description (up to 50 chars) |
Additional capabilities:
- SQL-powered member list via
QSYS2.SYSPARTITIONSTAT (fast, no DSPFD)
- Position to — jump directly to a member by name prefix
- Pagination — configurable page size with "More…" indicator
- Click member name to edit (option 2)
- Inline edit buttons — hover on Type or Text columns to edit instantly
- Right-click context menu — quick access to edit type/text
- Recent Filters — last 10 searches saved in the sidebar with editable descriptions
- State persistence — remembers Library/File across sessions
Work with Objects (WRKOBJ)
Search and inspect library objects by name, library, and object type.
| Option |
Action |
| 8 |
Description — displays detailed object information |
- Wildcard support — use
* and ? in search fields
- Detail modal — shows creation info, last used date, size, compression, save/restore details
- Prompt mode — use
? suffix to open command prompter
- Data sourced from
QSYS2.OBJECT_STATISTICS
Work with Active Jobs (WRKACTJOB)
Monitor active jobs in real time, filtered by subsystem, job name, user, or status.
| Option |
Action |
| 5 |
Work with — displays full job details |
- CPU % displayed in the list view
- Detail modal with 6 sections: identification, status, performance, memory, timestamps
- Wildcard filters on subsystem, job name, user, and status fields
- Data sourced from
QSYS2.ACTIVE_JOB_INFO with DETAILED_INFO
Work with Spooled Files (WRKSPLF)
Browse and manage spooled files by user and output queue.
| Option |
Action |
| 4 |
Delete — removes the spooled file (with confirmation) |
| 5 |
Display — opens spooled file content in the editor |
- Default filter —
*CURRENT user
- Output queue filter — supports
LIB/QUEUE format
- ASA carriage control stripping for clean display
- Data sourced from
QSYS2.OUTPUT_QUEUE_ENTRIES_BASIC + SYSTOOLS.SPOOLED_FILE_DATA
CL Command Prompter
A graphical prompter for any CL command — triggered by typing a command with ? prefix or suffix.
- Dynamic form built from QCDRCMDD API metadata
- Required/optional fields clearly marked
- Choice dropdowns with predefined values and descriptions
- Default values pre-populated automatically
- Live command preview — updates as you type
- Visual indicators — teal border for pre-filled values, yellow for user edits
- Free-text area for additional/undocumented parameters
Command Line
Every panel includes a ===> command input area at the bottom:
- Execute arbitrary CL commands directly
- Quick-launch buttons for WRKOBJ, WRKACTJOB, WRKSPLF
- Use
? prefix/suffix to open the graphical command prompter (e.g., ? CRTLIB or CRTLIB?)
Keyboard Shortcuts
| Key |
Context |
Action |
| F3 |
All panels |
Exit / go back |
| F5 |
PDM |
Refresh member list |
| F12 |
PDM, Prompter, Modals |
Cancel / close |
| Enter |
Option field |
Execute PDM option |
| Enter |
Library/File/Pos field |
Refresh search |
| Enter |
Command input |
Execute CL command |
| Up/Down |
Option columns |
Navigate between rows |
| Escape |
Modal overlays |
Close modal |
Compile Support
The extension uses a two-stage compile strategy:
- Code for IBM i Actions — delegates to user-configured compile actions (preferred)
- CL Fallback — uses built-in command mapping when no action is available:
| Member Type |
CL Command |
| RPGLE |
CRTBNDRPG |
| SQLRPGLE |
CRTSQLRPGI (with COMMIT(*NONE)) |
| CLLE / CLP |
CRTBNDCL |
| DSPF |
CRTDSPF |
| PRTF |
CRTPRTF |
| LF |
CRTLF |
| PF |
CRTPF |
| CMD |
CRTCMD |
| SQLPRC / SQLTRIG / SQLPKG |
CRTSQLPKG |
Getting Started
- Install Code for IBM i and connect to your IBM i system.
- Open the IBM I PDM view from the Activity Bar (left sidebar).
- Click a recent filter or use the Command Palette → IBM PDM: Open PDM.
- Enter a Library and Source File, press Enter to load members.
- Type an option code in the Opz column and press Enter to execute.
You can also right-click a source file in the Code for IBM i Object Browser → Work with Members (PDM).
Requirements
| Requirement |
Version |
| Visual Studio Code |
≥ 1.85.0 |
| Code for IBM i |
Latest |
| Active IBM i connection |
— |
Extension Settings
| Setting |
Default |
Description |
ibmiPdm.defaultFile |
QRPGLESRC |
Default source file name |
ibmiPdm.defaultLibrary |
(empty) |
Default library (empty = current library) |
ibmiPdm.pageSize |
100 |
Number of members to load per page (10–5000) |
Integration with Code for IBM i
- Object Browser context menu — right-click a source file to open PDM directly
- Compile actions — delegates to user-configured Code for IBM i actions
- Member editing — uses
code-for-ibmi.openEditable for seamless editor integration
- Connection — all operations route through the active Code for IBM i connection
Development
npm install
npm run compile
# Press F5 to launch the Extension Development Host
License
MIT