Docs

WND Terminal for VS Code

Mainframe, IBM i and UNIX sessions in a VS Code panel, next to your code.

In short

The WND Terminal extension (wndsoftware.wnd-terminal) runs on Windows, Mac and Linux in VS Code 1.90 or later. It opens sessions from .wnd files in your workspace or from your Zowe profiles, submits the JCL you’re editing and opens its output, and explains the code under the cursor from the built-in reference. It uses your WND Terminal license and your organization’s policy.

The WND Terminal extension puts WND Terminal in a VS Code panel. Mainframe (3270), IBM i (5250) and UNIX sessions sit next to your code, with the same screen, keyboard, macros, file transfer, Explain and Ask WND as the desktop app. Four commands tie the editor to the host. They open a session from your project’s connections or your Zowe profiles, submit the JCL you’re editing and show its output, explain the abend or message under the cursor, and ask WND Terminal about the session.

It runs on Windows, Mac and Linux, in VS Code 1.90 or later. Its name in VS Code is wndsoftware.wnd-terminal.

Installing it

In VS Code, open the Extensions view, click … at its top, choose Install from VSIX… and pick wnd-terminal.vsix. There is one file for each platform (Windows, Mac, Linux), because each carries WND Terminal’s engine for that platform.

Opening a session

WND: Open session (Ctrl+Shift+P, then type "WND Terminal") lists:

  • the connections in .wnd files anywhere in your workspace, and
  • each z/OS system in your Zowe profiles, twice: on port 992 with TLS and on port 23.

Pick one and it connects in the WND Terminal panel. WND Terminal at the top of the list opens the panel to choose or type a host there, as in the desktop app.

.wnd files

A .wnd file is JSON, so it can be checked in with the code that runs on that system:

{
  "name": "Production",
  "host": "mvs.example.com",
  "port": 992,
  "secure": true,
  "model": 2,
  "codePage": 1047,
  "ftp": { "user": "IBMUSER" }
}

Only host is needed. port is 23 when left out (992 with secure, 22 for SSH). hostType is 3270 (the default), 5250 for IBM i, or ssh or telnet for UNIX and Linux. lu is the terminal (LU) name or the IBM i device name. A file can hold a list of connections, or {"connections": [...]}, and comments are allowed. ftp says where Submit JCL sends jobs (below). VS Code checks the file as you type it.

Never put a password in a .wnd file. WND Terminal asks for it when it connects.

Zowe profiles

The extension reads zowe.config.json and zowe.config.user.json in ~/.zowe (or in ZOWE_CLI_HOME, or the folder in the wndTerminal.zoweConfigFolder setting), and in the root of each workspace folder. Each zosmf and tso profile’s host becomes a 3270 connection. Nested profiles take their parent’s host, and a profile without one uses the base profile’s, as Zowe does. The z/OSMF port isn’t used. 3270 is on port 23 or 992. A zftp profile for the same host says which FTP port Submit JCL uses.

Submitting JCL

WND: Submit JCL and show output submits the JCL in the editor (or just the selected lines) and opens the job’s output beside it when the job ends. It’s also on the editor’s right-click menu for .jcl, .cntl and .job files.

  1. Choose the z/OS system. The one you used last is first. Another host… takes a host name, with :port when its FTP server isn’t on 21.
  2. Type your user ID (once per host, or set ftp.user in the .wnd file) and your password. The password is never saved.
  3. WND Terminal sends the job to JES through the host’s FTP server, waits for it to end (up to wndTerminal.jobWaitSeconds, 120 seconds), and opens its output (JESMSGLG, JESJCL, JESYSMSG and the steps' output) in a read-only editor. The first line says how it ended, such as JOB00042 ended: RC=0000. or ABEND=S0C7.

Jobs go over FTP with TLS on port 21 unless the .wnd file’s ftp says otherwise ("secure": false for plain FTP, "port" and "host" for another server). Your organization’s file transfer rules apply, as in the desktop app’s file transfer.

Explain code under cursor

Put the cursor on an abend (S0C7, ABEND=S806, U4038), a CICS abend (ASRA), a message ID (IKJ56421I, IEF450I, CPF9801) or an SQLCODE (-805) anywhere, in JCL, a job log or your program’s comments, and run WND: Explain code under cursor (also on the right-click menu). The explanation opens beside the editor: what it means and what to do. When the word alone isn’t a code, the whole line is looked at, so ABEND 0C7 and SQLCODE = -811 work too.

It’s WND Terminal’s built-in reference, the same as the code hints under the screen. Nothing leaves your computer and no AI is used.

Ask WND

WND: Ask WND asks a question about the session in front of you in the panel, such as "Why did my job end with S0C7?". Ask WND looks at the screens, pages through the job log and answers in the panel, as in the desktop app. Selected text in the editor goes into the question to start with.

It uses the AI service in the panel’s AI settings (your own, such as Ollama on your computer, or your organization’s when its policy sets one). Your organization’s rules for Ask WND apply. It’s read-only by default, and sensitive values are masked before anything is sent.

Your license

The extension uses your WND Terminal license, the same one as the desktop app. It finds it in the same places: the one you added in the desktop app, your organization’s (policy or the computer’s folder), or WND_TERMINAL_LICENSE. Add a license in the panel saves it where the desktop app keeps it, so both use it.

WND Terminal Free works here, on your own computer, with its usual limits (see WND Terminal Free). It doesn’t count on a computer an organization manages, exactly as in the desktop app. The panel says so and offers a trial for your team.

How it runs

The panel isn’t a web page from the internet. The extension starts WND Terminal’s engine on your computer (the wnd-gateway program, in local mode) and shows its screen in the panel:

  • The engine listens only on 127.0.0.1, on a port it picks. It answers only requests for 127.0.0.1 or localhost by name.
  • Nobody signs in. Each time the extension starts the engine, it makes a new random token and gives it only to the engine and the panel. Without it, the engine shows nothing and runs nothing.
  • Only the VS Code panel can show the engine’s page. A web site that tries to show it in a frame gets nothing.
  • The engine reads your computer’s WND Terminal policy (Group Policy, a configuration profile, or /etc/wnd-terminal/policy.json), so your organization’s rules hold in VS Code as in the desktop app.
  • It stops when VS Code closes, and closes its sessions.

Its audit and usage logs, guides and session recordings (when your policy records sessions) are in the extension’s own folder in VS Code’s storage, and the WND Terminal output panel shows its log.

To use another copy of the engine, set wndTerminal.gatewayPath to the wnd-gateway program. It needs local mode (wnd-gateway --help lists wnd-gateway local).

The extension doesn’t connect to the desktop app when that’s open. The desktop app’s automation API gives a program the screen’s text and fields, not the screen itself, so the panel runs its own engine on the same license and policy.

What’s different from the desktop app

  • Certificates. A host whose TLS certificate your computer doesn’t trust is refused, unless your organization trusts it in the policy (TrustedCertificates). The panel can’t trust one for you.
  • Smart cards and certificate files for signing in to hosts aren’t available in the panel. Use the desktop app for those.
  • Files you send from the panel (file transfer, Fill from Excel) come from the file picker, as in WND Terminal in a browser.
  • Connections saved in the panel stay with the panel. To keep connections with your project, put them in a .wnd file.

Settings

On a small screen, swipe the table to read all columns.

Setting What it does
wndTerminal.gatewayPath The engine program to use instead of the one that comes with the extension.
wndTerminal.jobWaitSeconds How long Submit JCL waits for a job to end (120). After that it shows the output so far.
wndTerminal.zoweConfigFolder The folder with your Zowe configuration, when it isn’t ZOWE_CLI_HOME or ~/.zowe.

Questions

Does the extension need the desktop app?

No. It starts WND Terminal’s engine on your computer, listening only on 127.0.0.1 with a new random token each time, and uses the same license and policy as the desktop app.

Does WND Terminal Free work in VS Code?

Yes, on your own computer, with its usual limits. It doesn’t count on a computer an organization manages.

Is my mainframe password saved?

No. Submit JCL asks for it and never saves it. Never put a password in a .wnd file.

See it on your own mainframe.

Install WND Terminal on a handful of PCs or Macs, import your sessions and keymaps, and let a real team use it next to what you run today. Free, two to four weeks.