Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>iSDANew to Visual Studio Code? Get it now.
iSDA

iSDA

Manojkumar-IBMi

|
2 installs
| (0) | Free
Interactive visual designer for IBM i DDS display files (DSPF) — preview, click, drag, and edit fields with changes written straight back into the DDS source.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

iSDA — Interactive Screen Design Aid

iSDA logo

A VS Code extension that replaces IBM i's traditional 5250 Screen Design Aid (STRSDA) with a modern, file-backed, fully interactive DDS display-file editor: parse the fixed-column DDS source, preview it as a live 5250-style screen, click and drag fields around, edit their properties, and write changes straight back into the original source — all inside VS Code.

Status

Early but functional. The parser, screen resolver, and interactive editor have been verified against IBM's own published DDS examples and round-trip tested (edit → regenerate source lines → re-parse → confirm nothing else changed).

Architecture

Piece File Responsibility
Parser src/dspfParser.ts / src/dspfModel.ts Fixed-column DDS source → structured model (records, fields, keywords, conditioning indicators, continuation lines)
Resolver / renderer src/dspfEngine.js Model + active indicators → resolved screen layout → HTML grid
Writer src/dspfWriter.js Edited field, record, or help-entry data → regenerated fixed-column source lines, spliced back into the original text with everything else untouched
Extension host src/extension.ts Opens the webview, keeps it in sync with the real document in both directions via WorkspaceEdit
Webview src/buildWebviewTemplate.js → src/webviewTemplate.ts (generated) Bakes the engine/writer/parser into one self-contained webview HTML string

The parser is TypeScript (compiled twice: once to CommonJS for Node/tests, once bundled to a browser IIFE via esbuild for the webview). The engine/writer are plain dependency-free JS so the exact same code runs in Node (for testing) and in the webview (no bundler needed for those two).

Getting started

npm install
npm run compile   # regenerates src/webviewTemplate.ts, src/fixtures/sample.dspf, and dist/

Then open this folder in VS Code and press F5 to launch an Extension Development Host. Either:

  • Open an existing .dspf/.dspf38 file (local, or a remote IBM i source member/streamfile via Code for i) containing DDS display-file source, and run "iSDA: Open Screen Design Preview" from the command palette or click the preview icon in the editor title bar, or
  • Run "iSDA: Create New Display File" from the command palette (or right-click a folder in the Explorer) to generate a starter display file and open it directly in the designer.

See vsc-extension-quickstart.md for more on the extension dev loop.

Known limitations (v0.6)

  • WINDOW positions that depend on a runtime value - *DFT (system positions it relative to the cursor) or a program-to-system field name - can't be known at design time by definition, so they render at a placeholder position with a dashed border and a "position set at runtime" label rather than their real runtime position. WINDOW(record-format-name) (inheriting another record's geometry) is fully resolved, including through the inherited record's own *DFT/field-name cases.
  • The pulldown-overlay preview (menu bar → clicked choice → dropdown) is read-only: you can't drag or edit fields while a pulldown is showing. Switch to previewing the PULLDOWN record directly to edit it.
  • CHCCTL (per-choice runtime field-setting logic within a pulldown) has no visual representation, since it's a logic construct rather than a layout one.
  • Whole-row subfile drag moves every named field of the row together; unnamed constants within a subfile row template stay put (they can't be reliably re-located by name across the sequential per-field edits a batch move applies).
  • Record renaming isn't supported (other keywords like SFLCTL(name), MNUBARCHC(id name text), WINDOW(record-format-name) reference records by name in plain text and wouldn't be updated) - the record name field is intentionally read-only.
  • Display-length rules for signed/edited numerics are approximated.

License

MIT — see LICENSE.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft