Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>DataStep StudioNew to Visual Studio Code? Get it now.
DataStep Studio

DataStep Studio

Preview

DataStep Labs

|
1 install
| (0) | Free
A development environment for SAS® programmers in VS Code: run with one key, a log that points back to your code, a data viewer, DATA step and macro debuggers. Independent product, not affiliated with SAS Institute Inc.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

DataStep Studio

A development environment for SAS® programmers in VS Code. Run your programs with one key, read a log that points back to your code, look at your data, and step through DATA steps and macros, on SAS OnDemand for Academics or a SAS 9.4 server of your company.

See it in two minutes: after installing, run DataStep Studio: Watch the 2-Minute Tour, or Watch the Macro Debugger Video for the macro debugger in one minute. The videos play in a VS Code tab. Help → Get Started → Get started with DataStep Studio shows the setup with pictures.

Community Early Access. All Professional features are available free of charge during Early Access. Early Access is temporary. Professional functionality may require a paid license following the Early Access period. Free Community functionality will remain available.

What it does

  • Run with one key. F4 runs the program or the selection; Run To Line, Run From Line, Run Step (the step or SQL statement at the cursor), Run in Template, Run As Macro, and Resolve Code (the code a macro call generates).
  • Run in Batch. Right-click programs or a folder: each program runs in a new SAS session, one after another, with program.log and program.lst next to it and a summary. Your own session stays free.
  • A log that points back to your code. ERRORs and data NOTEs appear in Problems at their line. The Suspicious Log collects only what needs a look: ERRORs, WARNINGs and the NOTEs a log check flags (uninitialized, remerging, missing values generated …); a click jumps to the statement.
  • Your data at a glance. A data viewer with WHERE, filters, sorting and frequencies; tick the values to keep (Ctrl+Alt+I) and the SAS condition is written for you.
  • The session in view. Libraries with variables and labels, macro variables, and every system option, changed in place.
  • Autocomplete that knows SAS. Procedures, statements, options, functions and formats, your librefs, data sets and columns, parameter hints, and the SAS 9.4 documentation one hover away.
  • Smart code. proc so + Enter writes the whole PROC SORT with DATA= and BY filled in; WHERE paramcd = ' lists the values in your data; your own macros are called with every parameter. Enlarge / Optimize Macro Call shows all parameters or only those that differ from their defaults.
  • Debuggers. Step through a DATA step with the PDV in view, or through a macro with its macro variables, nested calls, conditional breakpoints and code coverage.
  • Your files where SAS is. Open your SAS home as a folder and edit the programs there; or keep them on your computer: the changed files are copied to the server before each run, so %INCLUDE and LIBNAME with relative paths just work.

Get started

  1. Install Java 8 or newer and Python 3.8 or newer (on a Mac: xcode-select --install).
  2. Run DataStep Studio: Check Setup: it finds Java and Python and installs SASPy with one click.
  3. Run DataStep Studio: Add New Connection Profile: SAS OnDemand for Academics (home region and user ID) or a SAS 9.4 server (host, port, user). The password is asked once and kept in your system's keychain.
  4. Open a .sas file and press F4.

Help → Get Started → Get started with DataStep Studio walks through the same steps.

DataStep Studio: Open Manual and Open How-To Guide show the full manual and short recipes inside VS Code. Both are also on this page: the user manual and the how-to guide.

Editions

Community: always free Professional: free during Early Access
All run modes, Run in Batch, SAS Log, Suspicious Log, SAS Output DATA step debugger
Data viewer with filters and WHERE keys Macro debugger with code coverage
Libraries, Variables, Options, Created Files Smart code: step templates, value lists, your macro calls
SAS Server window, project sync Enlarge / Optimize macro calls
Autocomplete, hover documentation, parameter hints Git on the SAS server

DataStep Studio: License and Edition shows what is on.

Your data stays yours

DataStep Studio collects nothing. Your programs, data sets and logs go only to the SAS server you connect to; there is no telemetry and no license server.

Help

  • Manual and how-to guide: further down this page, and inside VS Code with pictures: DataStep Studio: Open Manual and Open How-To Guide (Command Palette: Shift+Cmd+P on a Mac, Ctrl+Shift+P on Windows and Linux).
  • Videos: DataStep Studio: Watch the Installation Video (every step from installing to both debuggers), Watch the 2-Minute Tour and Watch the Macro Debugger Video.
  • Questions: Q & A on this page, or the DataStep Studio thread in the SAS Community.
  • Something went wrong: DataStep Studio: Report a Problem copies the error message and the versions (home folders hidden), ready to paste into a question.

Feedback

Early Access lives from your feedback: what works, what is missing, what got in your way. Use Rating & Review and Q & A on this page, the SAS Community thread, or DataStep Studio: Send Feedback in VS Code.

Requirements

VS Code 1.85 or newer (Cursor and other VS Code builds work too), Java 8+, Python 3.8+ with SASPy 5.102 to 5.109 (Check Setup installs it), and SAS OnDemand for Academics or SAS 9.4 with IOM. If you also have the SAS extension for VS Code, disable it in the folders where you use DataStep Studio, or every suggestion appears twice.


DataStep Studio is an independent product and is not affiliated with, sponsored by or endorsed by SAS Institute Inc. SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration.


User manual

The same manual with pictures is inside VS Code: DataStep Studio: Open Manual.

Contents

  1. What you need
  2. Install
  3. Connect to SAS
  4. The layout
  5. Run your code
  6. Read the log: SAS Log, Problems, Suspicious Log
  7. Work on the SAS server
  8. The data viewer
  9. Libraries, Variables, Options
  10. Write code faster: autocomplete, hover, parameter hints
  11. Smart code: step templates, values, your macros
  12. Debug a DATA step
  13. Debug a macro
  14. Keys
  15. Git on the SAS server
  16. Editions and license
  17. Settings
  18. Troubleshooting

1. What you need

Editor Visual Studio Code 1.85 or newer (Cursor and other VS Code builds: install the .vsix file from the Marketplace page, Download Extension)
SAS A free SAS OnDemand for Academics account, or a SAS 9.4 server of your company that SAS Enterprise Guide connects to (IOM)
Java Java 8 or newer
Python Python 3.8 or newer

DataStep Studio talks to SAS through SASPy, SAS's Python package, and SASPy uses Java. You install Java and Python once; DataStep Studio: Check Setup finds them and installs SASPy for you. You never edit a configuration file, and your password is kept in your system's keychain, as with the SAS extension for VS Code.

2. Install

Plan 10 minutes for the first installation; steps 2.1 and 2.2 are skipped when Java and Python are already there.

2.1 Java

Check in a terminal (macOS: Terminal; Windows: Command Prompt) with java -version. Any answer with version 1.8 or higher (or 11, 17, 21 …) is fine. Otherwise install Eclipse Temurin from adoptium.net (on Windows tick Add to PATH; on macOS brew install --cask temurin works too).

2.2 Python

Check with python3 --version (Windows: py --version). If it is missing:

  • macOS: run xcode-select --install in Terminal (Apple's developer tools include Python 3), or install it from python.org.
  • Windows: install it from python.org and tick Add python.exe to PATH.

You do not need to install SASPy yourself.

2.3 The extension

DataStep Studio: Watch the Installation Video shows the steps of this chapter and the next, from installing to the first run and both debuggers (also in Help → Get Started).

  1. In VS Code open the Extensions view (Shift+Cmd+X on macOS, Shift+Ctrl+X on Windows and Linux), search for DataStep Studio and click Install. The first time, VS Code asks Do you trust the publisher "DataStep Labs"?: click Trust Publisher & Install. Updates come by themselves.
  2. Without access to the Marketplace (some company networks): get the file datastep-studio-<version>.vsix, then Extensions view → ⋯ → Install from VSIX…, or in a terminal code --install-extension datastep-studio-<version>.vsix.
  3. Reload VS Code when it asks.

2.4 Check Setup

Open the Command Palette (Shift+Cmd+P / Shift+Ctrl+P) and run DataStep Studio: Check Setup. It finds Java and Python (also when VS Code was started from the Dock and does not see your shell's settings) and reports, for example:

Java 17 ✓ · Python 3.12 with SASPy 5.109.3 ✓ · no connection profile

When SASPy is missing it offers Install SASPy: DataStep Studio creates its own small Python environment and installs SASPy there (a few seconds to a minute); your own Python stays as it is. When Java or Python is missing it says what to install and links to the download.

Help → Get Started → Get started with DataStep Studio walks through the same steps.

2.5 Next to the official SAS extension

SAS Institute's own SAS extension for VS Code (SAS.sas-lsp) can stay installed, but both extensions give .sas files their autocomplete, hover and outline, so every suggestion would appear twice. In the folders where you use SAS Workbench, disable the other one for the workspace only: Extensions view → SAS → Disable (Workspace). Its run keys (F3, F8) and DataStep Studio's (F4) do not overlap.

3. Connect to SAS

3.1 Add a connection profile

Run DataStep Studio: Add New Connection Profile and answer its questions, as in the SAS extension for VS Code:

You choose You enter
SAS OnDemand for Academics your home region, your user ID (or the e-mail address you sign in with)
SAS 9.4 server (IOM) host, port (usually 8591), user; the application server only if your administrator named one
From the SAS extension: … shown when the SAS extension for VS Code has SAS 9.4 (IOM) profiles: they are filled in
My own SASPy configuration the name of a configuration in your sascfg_personal.py (see 3.3)

Your SAS OnDemand home region. Sign in at welcome.oda.sas.com and open SAS Studio: its web address contains the region code.

Region code in the address Home region
usw2 United States 1
usw2-2 United States 2
euw1 Europe 1
apse1 Asia Pacific 1
apse1-2 Asia Pacific 2

Then press Connect Now (or F4 in a .sas file). The first connect asks for the password once and keeps it in your system's keychain (macOS Keychain, Windows Credential Manager), never in a file. A wrong password? The error offers Enter Password Again; DataStep Studio: Forget Saved Password does the same at any time.

DataStep Studio: Switch Connection Profile changes between profiles (the next run connects with the new one), DataStep Studio: Delete Connection Profile removes one. The profiles are in the setting datastepStudio.connectionProfiles; the status bar names the active one.

DataStep Studio is tested with SAS OnDemand for Academics. A company SAS 9.4 server uses the same IOM connection; site settings such as single sign-on can need your administrator's help. Not supported in this version: SAS Viya and SAS 9.4 through SSH or COM (the debuggers need an IOM session).

3.2 Settings that can matter

Setting Default When to change
datastepStudio.java (found) Java is in an unusual place: the full path to java / java.exe
datastepStudio.python (found) You want a particular Python with SASPy: its full path

3.3 Advanced: your own SASPy configuration

If you already use SASPy with a sascfg_personal.py and an authinfo file, DataStep Studio can use them: choose My own SASPy configuration in Add New Connection Profile, or add no profile at all (then the configuration named in datastepStudio.cfgname, default oda, is used). SASPy's own configuration guide and SAS OnDemand page describe both files. A SAS OnDemand or IOM profile can also take its credentials from your authinfo file: set "authkey": "oda" in the profile in the settings.

3.4 The session

  • The status bar shows SAS when connected and SAS running 0:12 while a program runs.
  • Idle sessions. While you work, DataStep Studio keeps the session alive; after 30 minutes without activity it closes it itself, so no session is held for nothing. The next run connects again.
  • Each DataStep Studio window has its own SAS session (WORK, macro variables, options).

4. The layout

When SAS connects, the SAS tabs open in their places:

  • Right side bar: Libraries, Keys, Variables, Options
  • Bottom panel: SAS Log, Suspicious Log, SAS Output, Created Files

Drag any tab where you like: VS Code remembers the place. WSAVE ALL in the SAS command box (Ctrl+Alt+C), or DataStep Studio: Save Layout (WSAVE ALL) in the Command Palette, saves which SAS tabs are showing; they open again on the next connect, as in the SAS Enhanced Editor.

5. Run your code

Run mode Key What runs
Run F4, Cmd/Ctrl+Enter the selection, else the whole program
Run To Line Ctrl+F4, Ctrl+Alt+Up from the top to the cursor line (a step is never cut in half)
Run From Line Ctrl+Alt+Down from the step at the cursor to the end
Run Step editor title bar ▷ menu the step, SQL statement, macro definition or macro call at the cursor — a dialog offers innermost to outermost
Run in Template Command Palette the step wrapped in a code template with ${CODE} (setting datastepStudio.templates; ODS_RTF built in)
Run As Macro Command Palette %DO/%IF code selected inside a macro: asks for the macro's parameters
Resolve Code Ctrl+Alt+R shows the code a macro call generates (MPRINT), formatted, beside the program
SAS command Ctrl+Alt+C one line of SAS from a command box with history; WSAVE ALL saves the layout
Open Last Data Set F12 the data set the last step created (&SYSLAST)
Clear Log and Output F2 empties SAS Log, Suspicious Log and SAS Output

Run in Batch

Right-click one or more programs or a folder in the Explorer → Run in Batch (also in the editor's Run menu and the Command Palette, for the program in the editor). A folder runs its .sas files, not those of its subfolders.

  • The programs run one after another, in the order of their paths, numbers by value (2_adae.sas before 10_adlb.sas): name them 01_adsl.sas, 02_adae.sas, … to set the order.
  • Each program gets a new SAS session: an empty WORK library, no macro variables of the program before or of your own session, the autoexec of the setting datastepStudio.autoexec. A program that works in batch does not depend on what you happened to run before. Your own session is not touched; you keep working while the batch runs.
  • program.log and, when there is output, program.lst are written next to each program. The log starts with the program, the connection, the start time and the duration. A changed program is saved before it runs.
  • ERRORs and WARNINGs appear in Problems at their lines and each log in the SAS Log tab. At the end a message says how the batch went; Show Summary opens the table in the output SAS Batch, the second button opens the first log with errors.
  • Cancel in the progress message stops after the running program. Programs selected while a batch runs join it.
  • Project files are synced and %INCLUDE works exactly as with F4; a program in the SAS Server window runs in its folder on the server.

A new SAS session takes a few seconds per program on SAS OnDemand.

6. Read the log: SAS Log, Problems, Suspicious Log

  • SAS Log — coloured (ERROR red, WARNING yellow, NOTE blue). ▲ Error / Error ▼ jump between problems; a click on an ERROR or on an echoed line number jumps to that line of your program.
  • Problems — every ERROR, WARNING and data NOTE (uninitialized, missing values generated, repeats of BY values, …) is a red or yellow squiggle at its line and column in the program.
  • Suspicious Log — only the lines that need a look, from every run: all ERRORs and WARNINGs (your own messages too) and the NOTEs a clinical log check flags: remerging summary statistics, uninitialized, Missing values were generated, repeats of BY values, converted to numeric/character, Invalid data, Division by zero, W.D format was too small, SAS went to a new line, 0 observations, 0 rows, LOST CARD … The tab's badge counts errors and warnings; Errors / Warnings / Notes show or hide each kind; a click jumps to the program line.

Your own rules: datastepStudio.log.suspiciousNotes adds patterns (for example Table WORK\.\w+ created, with 0 rows), datastepStudio.log.suspiciousIgnore leaves known harmless messages out.

7. Work on the SAS server

DataStep Studio: Open SAS Server Folder (Command Palette Shift+Cmd+P / Ctrl+Shift+P, or the button in an empty Explorer) opens a second window whose folder is your SAS OnDemand home: open, edit, save, create, rename and delete server files as if they were local. A program there runs with SAS in its own server folder (%INCLUDE "macros/x.sas" works relative to it); nothing is copied.

Workspace Trust. VS Code asks whether you trust the authors of a folder before it runs tasks, debuggers and the folder's own settings. The first SAS Server window is new to VS Code, so it starts in Restricted Mode:

  • You can open, edit, save and run programs as usual.
  • The DATA step and macro debuggers, and the folder settings that run code or write on their own (Python, SASPy configuration, autoexec, templates, auto push, keyboard shortcuts, hidden files), wait until you trust the window.

DataStep Studio says so in a message with a Trust… button. It opens VS Code's Workspace Trust page: click Trust. The SAS Server window always uses the same workspace file (~/.datastep-studio/SAS Server (ODA).code-workspace), so you do this only once; every later SAS Server window is trusted. Workspaces: Manage Workspace Trust in the Command Palette shows the page again and lists what you trust.

Local programs: the project goes to the server by itself. Keep your files on your computer and use Git and GitHub as usual there. Before each run DataStep Studio copies the files of the project (the Git repository around the program, else its workspace folder) that changed since the last run to a folder of your SAS home, ~/datastep-studio/<project>-<id>, and runs the program there. A run without changes costs a few milliseconds and no SAS call. Files SAS writes in the project come back to your computer; data sets and catalogs stay on the server. Only an unusually large project (more than 2000 files or 200 MB) makes DataStep Studio ask once which folder to copy; DataStep Studio: Choose Upload Folder changes the choice, datastepStudio.sync.excludeDirs and excludeFiles leave things out.

The status bar shows where the project is on the server, for example ☁ study-3f2a9c1e. A click opens that folder in the SAS Server window.

Copy files to the server by hand. In the SAS Server window, drag files or folders from Finder or Windows Explorer onto a folder in the Explorer: they are copied to the server, with their subfolders.

%INCLUDE with relative paths. SAS resolves every path on the computer where SAS runs, not where the editor is. DataStep Studio therefore runs each program with SAS's working folder set to the program's folder on the server: a server program in its own folder, a local program in its copy on the server. So %INCLUDE "macros/setup.sas", LIBNAME adam "data/adam"; and FILENAME with relative paths work as with a SAS on your own computer.

8. The data viewer

Double-click a data set in Libraries, press F12 for the last one created, or Ctrl+Alt+D on a data set name in your program.

  • Move with the arrow keys, PageUp/PageDown; g goes to an observation number.
  • Filter: type a WHERE clause (w), search all columns (/), or use the filter row (t) per column (>13, 1-5, a,b,c, !a, A*, . for missing, dates like 01JAN2020).
  • Keep a value: Enter on a cell keeps rows with that value; Shift+Enter excludes it.
  • WHERE keys: Ctrl+Alt+E adds column = value of the cell to the WHERE box; Ctrl+Alt+I opens the value picker: tick the values to keep, the SAS condition is shown as you tick, Enter adds column IN (…); Ctrl+Alt+R shows all rows again (the sort stays).
  • Frequencies (f), sort (s, a, d), hide / choose columns (h, c), labels (l), raw / formatted values (v). ? lists every key.

9. Libraries, Variables, Options

  • Libraries — librefs and their members; expand a data set (▸) for its variables with type and label; a click on a variable opens the data set at that column.
  • Variables — the macro variables of the session (global and automatic), filter and add name=value.
  • Options — every system option by group. Click an option to change it (on/off options offer the other setting, numbers and text open an input box); 🔍 finds an option by name or description; changed options show (changed, was …) and ↺ puts the old value back; 🔒 marks options SAS only sets at startup.

10. Write code faster: autocomplete, hover, parameter hints

Suggestions open as you type (or with Ctrl+Space): procedure names after PROC, the statements of the step you are in, the options of a statement (NODUPKEY, OUT=), functions, formats, data set options, system options after OPTIONS, librefs and members after DATA=/SET/FROM, the columns of the data sets the step reads, macro variables after & (inserted as &name.), macros after %.

  • Hover a function, procedure, statement or option: description, syntax and Open the SAS documentation (SAS 9.4). Hover a data set: rows, columns and label; a column: type, format and label.
  • Parameter hints inside a function call show its arguments.

Nothing waits for SAS while you type: the syntax data ships with the extension and the session part comes from a cache filled while SAS is idle. A suggestion list takes about 10–20 ms on a 5000 line program.

11. Smart code: step templates, values, your macros

(Professional)

Step templates. proc so + Enter writes the whole step in house style; DATA= offers the data sets your program made above (the newest first), BY is filled with the BY you used for that data set before or with its key variables (USUBJID, PARAMCD, AVISITN …). Tab moves to the next place to fill. Hand-written templates for SORT, PRINT, MEANS, SUMMARY, FREQ, SQL, TRANSPOSE, CONTENTS, DATASETS, REPORT, TABULATE, UNIVARIATE, SGPLOT, IMPORT, EXPORT, FORMAT, APPEND, COMPARE; every other procedure gets a generic step (QUIT; where it needs it). da offers DATA (SET) and, after two data sets sorted the same way, DATA (MERGE a b).

Values in quotes. WHERE trt01p = ' lists the values of the column in your data, the most frequent first (data sets up to a million rows, columns with up to 200 values).

Your macros. DataStep Studio knows the %MACRO definitions of your workspace. In the SAS Server window it looks them up on the server as soon as a program calls a macro: in the program's folder, the folders above it, their macros folders and SASAUTOS. Here report.sas calls %derive_vars_dtm, defined in macros/derive_vars_dtm.sas.

Enlarge and Optimize macro calls — on the call at the cursor, or right-click in the editor:

Enlarge Macro Call Ctrl+Shift+E every parameter of the definition: the values you gave, the others at their default
Optimize Macro Call Ctrl+Shift+O parameters at their default left out; once more: the call on one line

%deri + Enter writes a new call with every parameter, comma first, the defaults filled in; Tab moves from value to value. The parameter hint and the hover show the parameters too.

12. Debug a DATA step

(Professional)

Put the cursor in a DATA step and press F5 (or DataStep Studio: Debug DATA Step). The step runs with SAS's DATA step debugger: Step Over (F10) through the statements, Continue (F5) to the next breakpoint, breakpoints in the gutter with conditions (age > 14), Jump to Cursor, the PDV in the Variables view, hover a variable for its value, change a value in the Variables view.

13. Debug a macro

(Professional)

DataStep Studio: Watch the Macro Debugger Video shows this chapter in one minute, inside VS Code.

The example: %sum_of_squares(n) adds 1² + 2² + … + n² and calls %square for each number.

%MACRO square(n);
  %LOCAL result;
  %LET result = %EVAL(&n. * &n.);
  &result.
%MEND square;

%MACRO sum_of_squares(n);
  %LOCAL total i;
  %LET total = 0;
  %DO i = 1 %TO &n.;
    %LET total = %EVAL(&total. + %square(&i.));
  %END;
  &total.
%MEND sum_of_squares;

1. The call. Put the cursor in %sum_of_squares and click the blue Debug Macro button in the title bar: a call pane opens above the definition with the call prefilled, every parameter by name. Fill in n = 4.

2. A breakpoint with a condition. Click in the gutter of the loop line, right-click the red dot → Edit Condition → &i. = 3: the loop stops only in its third pass.

3. Start. Click the blue Start Debug button of the call pane (or F5 there). The debugger stops at the first statement; the Variables tab shows the macro variables of each macro.

4. Continue (F5) runs to the breakpoint: i = 3, total = 1 + 4 = 5.

5. Step Into (F11) goes into %square: the call stack shows both macros, n = 3. Step Over (F10) runs one statement: result = 9. Step Out (Shift+F11) returns to %sum_of_squares.

6. The end. Remove the breakpoint and Continue: RESULT=30 in the SAS Log, and every macro line shows how often it ran (×4 in the loop); lines never reached are marked.

More while paused:

  • Hover &name. for its value; the Debug Console evaluates macro expressions (%EVAL(&n. * 2)) and runs SAS code inside the paused macro.
  • Open a data set the macro has created so far (Libraries, or Open Data Set): it is read inside the paused macro.
  • Global and Automatic in the Variables view load those macro variables on request.
  • Set a value in the Variables view to try another path through the macro.

14. Keys

F9 opens the Keys tab: every DataStep Studio command with its keys, the data viewer's keys in their own section. + and press the keys to add one (a key another command has moves over), × removes one, ↺ back to the default. Your keys are kept in the setting datastepStudio.keys.

Key Command
F4, Cmd/Ctrl+Enter Run
Ctrl+F4 / Ctrl+Alt+Down Run To Line / Run From Line
F2 Clear Log and Output
F12 Open Last Data Set Created
F9 Show Keys
F3 Close the data set tab
Ctrl+Alt+R Resolve Code (in a program) / Show All Rows (in a data set)
Ctrl+Alt+E / Ctrl+Alt+I WHERE: this value / pick values (data set)
Ctrl+Shift+E / Ctrl+Shift+O Enlarge / Optimize Macro Call
Ctrl+Alt+D Open Data Set at Cursor
Ctrl+Alt+C SAS command
Ctrl+Alt+L / Ctrl+Alt+O / Ctrl+Alt+T Show SAS Log / SAS Output / SAS Data

15. Git on the SAS server

(Professional)

Git on the SAS server. In the SAS Server window, Pull from GitHub and Commit and Push to GitHub work on repositories cloned on the server (through SAS's Git functions); with datastepStudio.server.autoPush every save becomes a commit and is pushed a moment later.

16. Editions and license

Community — always free Professional
Run modes, SAS Log, Suspicious Log, SAS Output ✓ ✓
Data viewer with filters and WHERE keys ✓ ✓
Libraries, Variables, Options (change values), Created Files ✓ ✓
SAS Server window, project sync ✓ ✓
Autocomplete, hover documentation, parameter hints ✓ ✓
Keys tab, layouts (WSAVE ALL) ✓ ✓
DATA step debugger ✓
Macro debugger with call pane and code coverage ✓
Smart code: step templates, MERGE, value lists, your macro calls ✓
Enlarge / Optimize macro calls ✓
Git on the SAS server (pull, commit and push, auto push) ✓

Community Early Access. All Professional features are available free of charge during Early Access. Early Access is temporary. Professional functionality may require a paid license following the Early Access period. Free Community functionality will remain available.

You do not need to sign up or enter anything: every copy of DataStep Studio comes with the Early Access entitlement. DataStep Studio: License and Edition lists the edition, its date and every feature: ✓ where it is on, 🔒 for a Professional feature after Early Access.

The extension carries a cryptographically signed entitlement (Ed25519) that says edition = EARLY_ACCESS_PRO, expires = 2026-12-31; it checks the signature with the public key it ships with. DataStep Studio: License and Edition shows the edition in effect, DataStep Studio: Enter License… takes a license you received. After Early Access, the Community features stay free.

17. Settings

Setting Default
datastepStudio.connectionProfiles connection profiles (Add New Connection Profile writes them; passwords are in the keychain)
datastepStudio.java / datastepStudio.python found Java and Python with SASPy, when they are in an unusual place
datastepStudio.cfgname oda your own SASPy configuration, used when there is no profile
datastepStudio.autoexec OPTIONS NOTES; code run after connecting
datastepStudio.keepAliveMinutes / idleCloseMinutes 5 / 30 keep the session alive while you work; close it when idle
datastepStudio.layout.showOnConnect on open the SAS tabs when SAS connects
datastepStudio.data.openIn editor data sets as editor tabs or in the SAS Data panel
datastepStudio.templates Run in Template templates (${CODE})
datastepStudio.log.suspiciousNotes / suspiciousIgnore your Suspicious Log rules
datastepStudio.keys your keys (the Keys tab writes it)
datastepStudio.sync.askFolder on ask which folder to copy to SAS OnDemand
datastepStudio.server.autoPush off Git: commit and push each save (Professional)

18. Troubleshooting

  • Check Setup says Java or Python is missing although it is installed — set datastepStudio.java or datastepStudio.python to its full path (which java / where java in a terminal shows it).
  • The connect fails — the error offers what can fix it: Enter Password Again (wrong or changed password), Check Setup. Wrong home region: run Add New Connection Profile again with the right one (same name replaces it).
  • "The application could not log on to the server … configuration is invalid" — SAS OnDemand refused the session: wrong user or password, or too many sessions of the same account at once (another DataStep Studio window, SAS Studio, a script). Close the others and connect again.
  • The DATA step debugger says it needs SASPy 5.102 to 5.109 — run DataStep Studio: Check Setup and choose Install SASPy (DataStep Studio's own environment gets a supported version), then DataStep Studio: Restart SAS Session.
  • The SAS Server window shows a "!" on its folder, or no DataStep Studio commands — the window is in Restricted Mode and DataStep Studio is older than 0.2.3. Update the extension, or trust the window: Workspaces: Manage Workspace Trust → Trust (see Work on the SAS server).
  • "Failed to start the server" — SAS OnDemand refuses new sessions for a while after many starts or a crash. Wait a few minutes; do not retry in a loop.
  • The list of suggestions does not open with Ctrl+Space on a Mac — macOS uses Control+Space to switch the keyboard input source; use Cmd+I, or turn off Select the previous input source in System Settings → Keyboard → Keyboard Shortcuts → Input Sources.
  • A key does nothing — another extension may own it: the Keys tab shows the keys in effect, and SAS: Make SAS Workbench Shortcuts Win in SAS Files puts DataStep Studio's keys first.
  • Enlarge Macro Call says the definition is not known — open the file that defines the macro, or keep it in the program's folder, a folder above it, a macros folder next to one of them, or a SASAUTOS folder.
  • WORK is full — SAS OnDemand limits the WORK space; delete large data sets you no longer need (PROC DATASETS LIBRARY=WORK KILL NOLIST; QUIT;).

The SAS syntax data for autocomplete and hover comes from the SAS Extension for Visual Studio Code by SAS Institute Inc., and a modified SASPy class (both Apache License 2.0; see THIRD_PARTY_NOTICES.txt). SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. DataStep Studio is an independent project and is not affiliated with or endorsed by SAS Institute Inc.


How-to guide

Short recipes for everyday SAS work. The user manual explains every feature in full.


Connect for the first time

DataStep Studio: Check Setup → it finds Java and Python; if SASPy is missing, click Install SASPy. Then DataStep Studio: Add New Connection Profile → SAS OnDemand for Academics → your home region (the code in the web address of SAS Studio, e.g. euw1 = Europe 1) → your user ID → Connect Now → your password (asked once, kept in the keychain). Open a .sas file and press F4.

Switch between SAS OnDemand and the company server

Add a second profile (SAS 9.4 server (IOM): host, port, user), then DataStep Studio: Switch Connection Profile. The status bar names the active profile; the next run connects with it.

Run only the step I am in

Put the cursor in the step and use Run Step in the editor's title bar (or the Command Palette). The dialog offers what surrounds the cursor, innermost first: a single SQL statement (wrapped in PROC SQL; … QUIT;), the PROC or DATA step, the macro call, the %MACRO definition. Press its digit or Enter.

Run everything up to here

Ctrl+F4: from the top of the program to the cursor line. A step that contains the line runs completely.

Find out why the log is not clean

Open the Suspicious Log tab (next to the SAS Log). It lists only ERRORs, WARNINGs and the NOTEs that matter (uninitialized variables, remerging, missing values generated, repeats of BY values, conversions …), from every run. Click a line: the cursor jumps to the statement that caused it. Errors / Warnings / Notes show or hide each kind.

Flag a NOTE our team does not accept

Settings → datastepStudio.log.suspiciousNotes → Add Item → a regular expression, for example Table WORK\.\w+ created, with 0 rows. A known harmless message goes into datastepStudio.log.suspiciousIgnore.

Look at the data set I just made

F12 opens the last data set created (&SYSLAST). Or double-click it in Libraries, or press Ctrl+Alt+D with the cursor on its name in the program.

Keep only two treatment arms in the data viewer

Click a cell in the treatment column, press Ctrl+Alt+I, tick the two values with Space, press Enter: the WHERE box now holds trt01p IN ('Drug 10 mg', 'Drug 20 mg'). Ctrl+Alt+E keeps only the value of the cell, Ctrl+Alt+R shows all rows again.

Write a PROC SORT in five seconds

Type proc so, press Enter on SORT (step). DATA= offers the data sets your program just made; press Tab to go to BY, which already holds the keys (or the BY you used for that data set before). Tab again, done.

Type a WHERE value without looking it up

Type WHERE paramcd = ' — the values of PARAMCD in your data appear, the most frequent first.

Call my macro with all its parameters

Type % and the first letters of your macro (%deri for %derive_vars_dtm), press Enter: the call is written with every parameter, comma first, the defaults filled in. Fill in the values with Tab. In the SAS Server window a macro is offered once a program calls it; its definition is looked up on the server (the program's folder, the folders above, their macros folders, SASAUTOS).

Clean up a long macro call

Cursor in the call, Ctrl+Shift+O: parameters at their default disappear. Ctrl+Shift+O again: the call goes on one line. Ctrl+Shift+E shows every parameter again. Both are also in the editor's right-click menu.

Debug a macro loop

Open the program with the macro, click the blue Debug Macro button in the title bar. In the call pane above the definition fill in the parameters and click Start Debug. Click in the gutter of the %LET inside the loop to set a breakpoint; right-click it → Edit Condition → &i. = 5. F5 runs to it; the Variables tab shows the macro variables. After the run every line shows how often it ran.

Watch a DATA step work

Cursor in the DATA step, F5. F10 steps statement by statement; the Variables view shows the PDV. Hover a variable for its value; a breakpoint with a condition (age > 14) stops only where it matters.

Change LINESIZE (or any system option)

Options tab → 🔍 → type linesize → Enter → type the new value → Enter. The row shows (changed, was 132); ↺ puts the old value back.

Give a command my own key

F9 opens Keys. Click + next to the command and press the keys. A key another command had moves to this one. ↺ puts the default back.

Keep my layout

Arrange the SAS tabs as you like (drag them), then type WSAVE ALL in the SAS command box (Ctrl+Alt+C). The same tabs open the next time SAS connects.

Keep my programs on my computer and run them on SAS OnDemand

Nothing to do: open the folder (or Git repository) in VS Code and press F4. The project's changed files go to ~/datastep-studio/<project>-<id> on the server before each run, and the program runs there, so %INCLUDE and LIBNAME with relative paths work. Commit and push with Git as usual on your computer. The status bar shows the server folder; a click opens it.

Copy a folder to the SAS server

Open the SAS Server window (DataStep Studio: Open SAS Server Folder) and drag the folder from Finder or Windows Explorer onto a folder in its Explorer.

Work directly on files on SAS OnDemand

DataStep Studio: Open SAS Server Folder opens a window on your SAS OnDemand home. Open, edit and save server programs as if they were local; a program runs with SAS in its own folder, so %INCLUDE "macros/setup.sas" works.

See which edition I have

DataStep Studio: License and Edition. During Early Access it says Community Early Access and that all Professional features are available free of charge.

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