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
- Install Java 8 or newer and Python 3.8 or newer (on a Mac:
xcode-select --install).
- Run DataStep Studio: Check Setup: it finds Java and Python and installs SASPy with one click.
- 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.
- 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
- What you need
- Install
- Connect to SAS
- The layout
- Run your code
- Read the log: SAS Log, Problems, Suspicious Log
- Work on the SAS server
- The data viewer
- Libraries, Variables, Options
- Write code faster: autocomplete, hover, parameter hints
- Smart code: step templates, values, your macros
- Debug a DATA step
- Debug a macro
- Keys
- Git on the SAS server
- Editions and license
- Settings
- 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).
- 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.
- 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.
- 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.