In the IBM Z space all of the major players have either already released VS Code extensions or are actively working on extensions for it. IBM, Broadcom, and BMC all offer extensions for VS Code, and I have personally talked to other vendors that have confirmed they are working on providing VS Code offerings as well. IBM Z Xplore teaches the next generation of mainframers to use VS Code, so many young people are used to working on the mainframe through VS Code. It's safe to say VS Code for the mainframe is not just part of part of the future, but already here.
VS Code isn't just for developers either, I use VS Code as a sysprog every single day to edit and submit JCL, make Rexx scripts, view and manipulate files, upload software to the mainframe, and pull logs so I can send them to vendors. VS Code also comes with extensions for Db2, so it's relevant for nearly everyone on the mainframe platform.
I personally use VS Code in harmony with my terminal emulator, I usually have VS Code on one monitor and my emulator on the other. VS Code for the mainframe isn't about being scared of ISPF or about being unable to use it.
If you want to implement VS Code for mainframe work or have questions about how it actually communicates with the mainframe this is the article for you. I won't cover every single little thing because it's a big topic, but I will cover the most commonly asked questions I have seen and the things that confuse people.
On the z/OS side you will need an access method for VS Code, currently there's two methods to access the mainframe which is z/OSMF and FTP. z/OSMF is the ideal method for accessing the mainframe as it's more reliable than FTP as of writing. This article will assume you are going to be using z/OSMF. You do not need Zowe installed on the mainframe to use the Zowe Explorer, this is a big thing that a lot of people get wrong and makes people think they can't use Zowe Explorer when they actually can.
I also highly recommend you install IBM Z Open Editor which itself requires IBM Semeru. IBM Z Open Editor comes with syntax highlighting for mainframe languages such as JCL, Rexx, HLASM, COBOL and PL/I. Code4z from Broadcom is a viable alternative, which comes with some of the same functionality.
If you are going to be installing the Zowe CLI make sure to install Node.js on your workstation first.
Visual Studio Code is a free lightweight code editor from Microsoft, not to be confused with Visual Studio which is a much heavier IDE and an entirely different product. Visual Studio Code is one of the most popular editors according to many different surveys. It easily allows you to install extensions, seamlessly integrates with modern technology like Git and it gets updated frequently.
Zowe Explorer is a VS Code extension that is part of the Zowe family of projects, which is managed by The Open Mainframe Project. Zowe Explorer allows you to manipulate files, submit JCL, and look at job output from VS Code.
The Zowe CLI allows you to manipulate files on the mainframe among other things from a regular terminal window, it is also part of the same project as Zowe Explorer. The Zowe CLI is not designed for VS Code but can be opened inside of a terminal inside of VS Code, which provides a very nice experience.
OpenSSH is entirely optional but if you install it on your mainframe you can connect to the USS portion of your mainframe through a VS Code terminal, which is quite useful as it means you can get an OMVS-like experience from VS Code.
Before you can connect to the mainframe using your brand new editor you will need to make sure you have access to IZUUSER (z/OSMF access), otherwise VS Code won't be able to communicate with your mainframe. In RACF this is done using:
CONNECT (youruserid) GROUP(IZUUSER)
CONNECT (youruserid) GROUP(IZUUSER)
Replace "youruserid" with your mainframe user.
Zowe.org has more information on this in case you use Top Secret or ACF2.
You won't be able to access data that you wouldn't be able to access using ISPF, this is something I've seen people worry about. If you have let's say access to view USS directories but not the contents of the files themselves, then Zowe Explorer will list the files and directories but will give you an error if you try to open the files. So there's no security concerns here.
Once you have installed your tools and setup permissions head to the little icon with the Z on the bar to the left. You can move icons around if the location bothers you, it might not be in the exact same location in your editor if you have installed other extensions previously or moved the icon around.
Click on the little "+" icon.
Click "Create a new team configuration file".
Now a json file will open up, this is where you configure your connection to your mainframe.
Now that you have configured your connection you can filter for datasets by pressing the little magnifier icon, you might need to press the little "+" icon first and select your profile.
Similarly to ISPF you can filter using stars (*), as well as searching for datasets with wildly different names by using commas.
If you want to exit one of the floating dialogue windows like the filter one show in the screenshot above simply press escape.
Up in the top bar you can go to "terminal" -> "new terminal", this will open a standard terminal that you can use for the Zowe CLI. Similarly you can also use the terminals for connecting to the mainframe through SSH, if you opted to open up SSH on your system.
Zowe.org has this useful diagram of the Zowe architecture. The diagram also contains information you don't need to know so I've marked the relevant parts for this article with a red rectangle. For the base part of Zowe it communicates with the mainframe using REST calls to z/OSMF which then does what the client requested (this can be everything from uploading/downloading files to submitting jobs). You can get some of the same functionality using FTP, but this doesn't quite work as well currently. The plugins for Zowe have different methods for communicating with the mainframe.
If a file is outdated or you want to be absolutely sure it is up to date you can update the cache by right clicking on a file/dataset and pressing "pull from mainframe". Zowe Explorer caches what it retrieves using the REST calls, this is more efficient than pulling data from the mainframe all every single second.
If you are able to connect and retrieve files but see partial or no job output in the jobs section after setting up a filter then it's possible you are running something like $avrs on the mainframe. Zowe Explorer can currently only look in the job spool, it has no support for job output archival tools like $avrs. How do I automate the installation of VS Code?
I have previously written an article on the subject with some advice:
Automating the Installation of VS Code With Mainframe Extensions