by Sébastien Julliand
Today, I want to share some of my hidden gems in VS Code for IBM i. These aren’t exactly “secret” features, but rather gems: useful, practical, and sometimes not well documented, but they’ve saved me many times.
I’m Sébastien Julliand, Tech Lead & IBM i Advocate at ARCAD Software, and also one of the top contributors to the Code for IBM i project (second most active, actually, which earned me a nice “champion” badge – thanks IBM 😉).
1. VS Code Settings Sync
I absolutely love this feature. With a GitHub or Microsoft account, all my settings are automatically synced to the cloud.
- I can retrieve everything if I change my machine.
- I even get a history of changes: if I mess something up, I can roll back.
- Plus, it serves as a backup solution.
Good to know: Of course, passwords stay local (but honestly, who doesn’t use KeePass, right?). 😉

2. Profiles: Switch Contexts with One Click
With profiles, I can easily switch between my dev, test, and production environments without creating new connections.
- Filters (objects, IFS), current library, working directory—everything stays intact.
- Even my custom variables are saved.
No need to reconnect every time. It’s a huge time saver.

3. Custom Variables
These little guys are super powerful.
They’re saved in profiles and allow actions to behave differently depending on the context.
For example, I use a file_attr variable in an action for “Print File Definition”, and its value changes depending on whether I’m in dev or test. This allows me to use a single script with different behaviors.

4. Custom Actions
This is probably one of the most used features for me.
With actions, I can run:
- 5250 commands, Shell, QShell,
- on members, objects, stream files, or even local files.
I can also:
- refresh the explorer automatically after execution,
- write the output to an IFS file (super useful for keeping a history).
Quick tip: Ctrl + E to execute an action right away.

5. Action Prompts
Instead of typing everything manually, I can use smart prompts:
- Put a ? in front of the command for a simple prompt.
- But I prefer custom prompts: dropdowns, text fields, predefined options.
Example: for a DSPPGM, I get a dropdown with possible parameters (*PRINT, *OUTFILE). Much nicer than a plain text prompt.


6. Run Actions on Multiple Objects
Previously, I had to run an action on one object at a time. Now, I can select multiple objects (Ctrl+click or Shift+click) and execute the action with one prompt.
I tested it live: on 3 programs, 2 failed, but the results were still neatly accessible. Very useful for batch processing.


7. Protected Mode (Avoiding Mistakes in Prod)
Who hasn’t accidentally broken production? 😅
With Protected Mode, I can lock down a whole connection, a directory (QSYS, IFS), or just a filter.
This way, nothing can be deleted or modified by mistake. A nice 🔒 icon shows up to remind me that things are locked down. Trust me, it saves lives (or at least jobs).


8. Global System Settings (/etc/vscode/settings.json)
Here’s a cool new feature: you can define global settings that apply to everyone on a partition.
Example: force saving source dates to prevent losing them.
Once set, these settings can’t be disabled by users, and content assist in VS Code helps you view available parameters.

9. Upload / Download Files
Simple and effective:
- Download a member or an entire source file.
- Download IFS files or directories.
- Upload a local file to a member or the IFS.
In a demo, I even uploaded a “Jurassic Park” file just for fun. And yes, it works 😁

10. Drag & Drop Between Local and IFS
Even more intuitive: I can drag a file from my local explorer (Windows/Mac) and drop it directly into the IFS Explorer in VS Code.
This works in this direction, but not the other way around (limitation of the VS Code API).

11. Standard VS Code Compare
VS Code has built-in compare functionality:
- Compare two open files (Ctrl+click → Compare selected),
- Compare the active version with the saved version,
- Compare with clipboard content.
Personally, I use this a lot to double-check my changes before saving a member.


12. IBM i-Specific Compare
If you want to go further, the IBM i extension allows you to compare:
- two members,
- a member and a stream file,
- a local file with an IBM i file,
- or even an object with the active editor.
This is way more than what the standard VS Code compare can do.

13. DB2 Query History
How many times have you written a great query… and forgot to save it?
No worries—VS Code keeps a history of DB2 queries per partition (LPAR), sorted by week, month, or older.
Just reopen your query and run it again. Huge time saver.

14. SQL Processors
By prefixing your SQL query, you can change how it behaves:
- json → output in JSON,
- csv → output in CSV,
- update → make the result editable directly,
- cl → run a CL command,
- rpg → generate an RPG data structure for SELECT results.
I showed this live: transforming a query into JSON or CSV is instant.
15. DB2 Notebooks
This is one of my favorite features.
A .inb file can mix SQL, CL, Shell, and Markdown, and show the results in a table or as a graph (pie chart, bar chart).
You can even export it to HTML → perfect for quickly creating reports for your manager without complex BI tools.
Personally, I also use them to create interactive tutorials. It’s educational and visual.


Bonus: GitHub Gists & Sandbox
Get the Gist : I use the GistPad extension to store my snippets and DB2 queries on GitHub. Example: Scott Forstie shares a lot of useful DB2 queries as Gists, which are directly accessible from VS Code.

IBM i Sandbox : an online shared environment for testing Code for IBM i for free for one day. Perfect for experimenting without any risk.

Conclusion
So there you have it, my 15 favorite features of VS Code for IBM i.
They might not all seem revolutionary, but trust me: they save a ton of time, make your work more secure, and make your workflow way smoother.
So go ahead—try them out, customize them, and most importantly… have fun with VS Code and IBM i!

Sébastien Julliand
Tech Lead & IBM i Advocate
Sébastien Julliand, Tech Lead and IBM i Advocate at ARCAD Software, has been working for over 10 years to bridge IBM i with open systems. An expert in multi-language development (RPGLE, Java, TypeScript), he is a functional and technical lead within the R&D department. Involved in the development of several ARCAD products, he is the product manager for ARCAD CodeChecker and the ARCAD extensions for VS Code, where he brings his DevOps expertise on a daily basis. A speaker at IBM i conferences and open-source contributor, particularly on Code for IBM i, he was recognized as an IBM Champion in 2024 and 2025.

REQUEST A DEMO
Let’s talk about your project!
Speak with an expert








