Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>Printer File DDS editNew to Visual Studio Code? Get it now.
Printer File DDS edit

Printer File DDS edit

Preview

Christian Larsen

|
152 installs
| (1) | Free
Extension that helps you create and modify your printer file DDS on IBM i
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

PRTF-edit

Visual Studio Marketplace Version Installs License: MIT

PRTF-edit brings a live structure view, a drag-and-drop print-layout preview, and guided DDS keyword editing to IBM i printer files — right inside VS Code. No more counting columns by hand, no more round-trips through STRRLU on a 5250 session, no more guessing how a SKIPB, an indicator condition, or an EDTCDE will actually print until you compile.

PRTF-edit doesn't replace your compiler — it closes the gap between writing DDS and seeing the report it produces, so what you preview lines up with what actually prints.


✨ Features

Definition tree

  • A dedicated PRTF Structure view in the Activity Bar lists the file itself, every record format, field, and constant in the open source, grouped and kept in sync automatically as you type.
  • The File node shows the source member's own name and its file-level attributes.
  • Click any item to jump straight to its line in the source.
  • Records, fields, and constants each show a short summary right in the tree (position, indicators, ...), with a distinct icon per kind so the structure reads at a glance.
  • Right-click menus let you create, rename, copy, and delete records, fields, and constants without hand-editing the source (see Editing from the tree below).

Page-layout preview

  • Click the preview icon on a record — in the tree, or the "Preview (PRTF-edit)" CodeLens above the record's own A spec line in the source (shown next to any other extension's own "Preview" CodeLens on the same line, so both stay available) — to open a print-style simulation of its layout, rendered on a character grid at the page size you choose (rows × columns, default 66×132).
  • Fields show as O or 6 placeholders (the familiar SDA/DFU convention) — hover one for its name and description. A numeric field with an edit code (EDTCDE) or an edit word (EDTWRD) is shown at its worst-case edited width (commas, sign, separators), not just its raw length — including the date-editing codes EDTCDE(W)/EDTCDE(Y).
  • COLOR, HIGHLIGHT, and UNDERLINE render visually, at both record and field level.
  • Drag a field or constant anywhere on the page to reposition it — the preview understands both records positioned with an explicit Line/Position and "flow" records positioned via SKIPB/SPACEB/SPACEA/SKIPA, adjusting whichever applies, including a file-level SKIPB/SKIPA cascading into every record the way real DDS applies it.
  • "+ Field" / "+ Constant": click the button, then click a spot on the page to place a new one there. A long constant automatically splits across DDS's own continuation convention.
  • Select a field or constant on the page to edit it right there: "🗑 Delete" removes it entirely, "🎨 Attributes" sets or clears TEXT/COLOR/HIGHLIGHT/UNDERLINE/EDTCDE/EDTWRD/FONT/CHRID from a simple picker, "✏️ Edit Field" / "✏️ Edit Text" changes a field's name, type and size (or a constant's text), "↕️ Spacing" sets or clears its own SKIPB/SPACEB/SPACEA/SKIPA — no need to open the tree or remember DDS keyword syntax. Clicking empty space clears the selection.
  • The selected field or constant's name, size, and position show right above the action buttons (e.g. PRSUBTOTAL (11,2) — Pos= 13, 113, or 1 constant selected — Pos= 13, 89, width 9) — a bare system-keyword constant (DATE/TIME/PAGNBR) shows its own name instead of the generic message.
  • Two or more fields/constants sharing the exact same position (e.g. each conditioned on a different indicator) are no longer hidden behind whichever one happens to render on top: hovering that cell shows a dashed outline, and clicking it again cycles through the rest — the selection square turns green instead of blue while what's selected is one of them.
  • Right-clicking a field or constant also opens the spacing editor directly, with the option to convert an explicit-Line record to flow positioning in one step.
  • "Overlay": show another record dimmed behind the one you're editing, to check alignment between them — e.g. a header against the detail line printed below it. Double-click anywhere from the row where the dimmed overlay starts, downward, to switch to it — it becomes the record you're editing, and the one you left becomes the overlay. A "🔁 Repeat" toggle tiles the overlay down the whole page, so it stays visible even after a totals record's own SKIPB pushes it far down.
  • "Compose sequence": preview several record formats together — each with its own repeat count — the way they'd actually print one after another (a header, several detail rows, a total line), with automatic page breaks once the content passes your configured page length, and optional repeating "standing" headers on every new page.
  • "Indicators": simulate which indicators are on or off, to see exactly which fields, constants, and keywords would print — including how a conditioned SKIPB/SPACEB/SPACEA/SKIPA shifts everything printed after it, and indicators used only on a record-, or file-level keyword with no field of its own. Only shown when the record you're viewing actually uses indicators.
  • Spacing at a glance: a field or constant with its own SKIPB/SPACEB/SPACEA/SKIPA shows a small arrow — ↑ spacing before, ↓ after, ↕ both — while you hover it (or always, if you turn on "Always show the spacing indicator" in the Configuration panel), even before you select it. Select it and its keyword(s) appear as toggle buttons right under Indicators — lit blue when their own indicator condition is currently satisfied — click one to change its value directly. The record and the file get the same treatment, written out in full: the record's own spacing and attributes (HIGHLIGHT, ENDPAGE, FONT) stacked beside the page (staying visible as you scroll a tall page), and the file's SKIPB/SKIPA in a row above the page — all clickable to edit. Attributes at a glance too: a selected field or constant also lists its COLOR, HIGHLIGHT, UNDERLINE, EDTCDE, FONT, CHRID and TEXT as buttons next to its spacing, separated by a vertical bar; removing a flag keyword (e.g. CHRID) by clicking it asks for confirmation first.
  • "📏 Ruler" for row/column numbers alongside the page, "🗖 Focus" to hide the source editor and concentrate on the preview, "🔍 Fit to Screen" to scale the whole page down (or up) so content placed far down a tall page is visible without scrolling, and a Zoom box (5–200%, in steps of 5) to pick the scale yourself when Fit to Screen leaves things too small.
  • "✏️ Edit Field" / "✏️ Edit Text" edits the selected item: a field's name, type and size from one small menu (with the size kept consistent with the type — e.g. no decimals on a character field), or a constant's text. The same "Edit Field..." is in the field's tree menu.
  • "⚙ Configuration": choose which levels' keywords the preview lists (file / record / field-constant), and the decimal/thousands-separator (US/European) and date-separator (US / / European -) conventions the preview edits numeric fields with — set by hand, fetched from a connected IBM i's QDECFMT/QDATSEP system values, or reset to default. Persists across sessions.
  • A record using an AFPDS-only keyword the preview can't draw (BOX, LINE, GDF, OVERLAY, PAGSEG, POSITION, AFPRSC, BARCODE — see To Do below) shows a warning banner instead of silently rendering as if that content weren't there. Whatever the preview does understand in the same record still renders normally underneath it.

Editing from the tree

Right-click any record, field, or constant in the Definition tree:

  • File — edit Spacing (SKIPB/SKIPA, the only two spacing keywords valid at file level), applied before/after every record format the way real DDS does.
  • Records — New, Rename, Copy, Delete, edit Attributes (HIGHLIGHT/ENDPAGE/FONT), edit Spacing (SKIPB/SPACEB/SPACEA/SKIPA).
  • Fields — Edit Field (name, type and size in one menu), Rename, Copy, Delete, edit Attributes, edit Indicators.
  • Constants — Edit Text (its own literal text), Fill to Width of... (pad it with spaces to match another field's or constant's printed width, anywhere in the file — handy for lining up a header label with the field printed below it), Copy, Delete, edit Attributes, edit Indicators.
  • Attributes: for a field/constant, TEXT, COLOR, HIGHLIGHT, UNDERLINE, FONT, and — for numeric fields and PAGNBR — EDTCDE (numeric fields also EDTWRD, which can't be combined with EDTCDE), plus CHRID for non-numeric fields, the same simple picker as the preview's own "🎨 Attributes" button; for a record, HIGHLIGHT, ENDPAGE, and FONT, the keywords the preview understands at record level. A graphic FONT name and CHRID can't apply to the same field per DDS — setting one while the other is already in effect (directly, or inherited from the record's own FONT) is blocked with an explanation, instead of silently writing a combination DDS would just ignore.
  • Spacing (records and file): the same SKIPB/SPACEB/SPACEA/SKIPA editor a field/constant already gets from the preview, for the record format or the whole file.
  • Indicators: condition a field, constant, or keyword — including a record's own attribute — on up to 9 ANDed indicators, or add an OR'd alternative — DDS's own continuation-line rules for indicators are handled for you automatically.
  • Copying a field or constant that carries its own SKIPB/SPACEB/SPACEA/SKIPA asks whether to bring that spacing along, since it describes where the item sits relative to whatever's before it, not a property of the item itself.

Diagnostics

  • The Problems panel flags a record format that mixes an explicit Line entry with SPACEA/SPACEB/SKIPA/SKIPB — DDS doesn't allow combining the two positioning styles in the same record, and this is caught before you ever try to compile it.

🚀 How to Use

  1. Open a DDS printer file source (language id dds.prtf) in VS Code.
  2. Click the PRTF Structure icon in the Activity Bar.
  3. The Definition view appears automatically, showing the file, its records, fields, and constants.
  4. Click any item to jump to it in the source, or use the preview icon on a record to open its Page-Layout Preview.

⚙️ Requirements

  • Visual Studio Code v1.75 or higher.
  • Recommended: the Code for IBM i extension, for source member access and the dds.prtf language id.

🐞 Known Issues

This extension is under active development — some DDS keywords aren't supported yet (see To Do below). Please open an issue if something isn't working as expected!


📝 To Do

  • Wider keyword coverage — most of what's left is the large AFPDS-only graphics/resource surface (AFPRSC, BOX, LINE, GDF, OVERLAY, PAGSEG, POSITION, barcodes, DBCS), which is out of scope for now.
  • Remaining printer-control keywords not yet editable from the tree: PRTQLTY, LPI, CPI, DUPLEX, DRAWER, OUTBIN, CDEFNT, CHRSIZ, DFNCHR, FNTCHRSET, FONTNAME, CCSID, and a handful of others.
  • Persisting STRRLU-style "compilation data" (DEVTYPE, PAGESIZE, lines/characters per inch, overflow line, ...) directly in the source, the way STRRLU itself does — RDi doesn't offer this either, so it'd be a genuine gap this extension could close.
  • Bug fixes as they turn up.
  • Many new features to come!

📦 Version History

See the full changelog here.

Latest

0.5.3 - 2026-09-23

  • Fixed the overlay's "🔁 Repeat" toggle doing nothing (only one copy ever showed) in a file with a file-level SKIPB/SKIPA — the preview no longer folds the file's own spacing into a record's layout, only the record's and its fields'/constants' own keywords.

⭐ Enjoying PRTF-edit?

If it's saving you trips to SEU or STRRLU, please consider leaving a rating on the Marketplace — it takes 10 seconds and is the single biggest thing that helps other IBM i developers find it.

💬 Feedback is welcome! Please leave a comment, open an issue, and enjoy using PRTF-edit.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft