Cover for the SAS Viya programming exam A00-415: SAS 9 code on the left, the CAS version on the right

 

The SAS Viya programming exam, A00-415, checks one thing above all: whether you can take SAS code you already know and make it run in CAS, the in-memory engine of SAS Viya. It has 50 to 55 questions, you get 95 minutes, and you need 68% to pass. If you have written SAS 9 code for years, your biggest risk is not new syntax. It is old habits.

 

That is the angle of this entry. Each section below names one habit that works fine on a single SAS 9 session and quietly breaks, or slows down, in CAS. For each one you get the fix, the exam area it belongs to, and how much of the exam that area carries. After the seven habits there is a worked example, a five-week plan, a pacing note and five short answers. Every exam figure was read on SAS's own pages on 4 November 2026.

What is the SAS Viya programming exam?

A00-415 is the exam ID for the SAS Viya Fundamentals of Programming exam. Passing it gives you the SAS Certified Associate: Programming Fundamentals Using SAS Viya credential, which SAS also calls SAS Viya Programming Associate. SAS and Pearson VUE run it, and the fee is $180, charged in US dollars in every country.

 

The format, as the SAS Viya Programming Associate credential page lists it:

  • 50 to 55 multiple choice and short-answer questions
  • 95 minutes
  • Passing score of 68%
  • The credential expires after five years

SAS sums up the skills in three lines: work with CAS tables and data sources, use CAS-enabled procedures, and change DATA step and SQL programs so they run in CAS. Notice the verb in that last line. The exam assumes you can already program; it asks whether you can convert.

 

The AnalyticsExam channel has a three-minute video on how to approach this exam, worth watching before you open the official guide.

 

How is the A00-415 exam weighted?

Five areas make up the exam. The weights below come from the credential page, with one difference noted.

  • Programming in SAS Viya concepts: 10-15%
  • Managing data in CAS: 25-30%
  • DATA step and SQL programming in CAS: 25-30% on the credential page, 20-25% in the exam content guide
  • CAS-enabled procedures and user-defined formats: 20-25%
  • CAS language (CASL) programming: 10-15%

The two SAS documents disagree on the DATA step and SQL area, so plan for the higher figure. The A00-415 exam content guide also makes a promise that shapes how you study: all 16 main objectives are tested on every exam. You cannot skip a small objective and hope it does not come up.

 

Square infographic: seven SAS 9 habits mapped to the five A00-415 exam areas and their weights

Habit 1: Do you assume every DATA step runs in CAS?

In SAS 9 you never had to ask where a step ran. In Viya you must, because the same DATA step can run in CAS on many threads or fall back to the SAS client on one.

 

A SAS Technical Support post on when a DATA step on CAS tables really runs in CAS gives the rule. The input and output tables must both be CAS tables, and every language element in the step must be available in CAS. If one element is not, SAS sends the code and the data back to the client, runs it there, and moves the result back. It does all of this in the background.

 

The fix is to read the log on purpose:

  • A step that ran in CAS always writes the note "Running DATA step in Cloud Analytic Services."
  • Setting the MSGLEVEL=I system option adds a note that says when the step could not run in CAS and ran in the SAS client instead.
  • Adding SESSREF= to the DATA statement ties the step to a CAS session, and if the step cannot run there, you get an error that names the element at fault.

The same post makes a point the exam likes: CAS is not always faster. In its example a 5,000-row table ran faster in SAS, and a 10-million-row table ran faster in CAS. Size of data is one of the two things the content guide lists for deciding when to use CAS; the other is the type of procedure. This habit sits in the concepts area and the DATA step area, so it touches up to 45% of the exam.

Habit 2: Do you reach for functions CAS does not support?

Many SAS 9 programs lean on functions that CAS does not have. When one of them appears, the step leaves CAS without telling you, which is habit 1 again.

 

The content guide names examples: RANBIN, RANUNI, SYMGET, FILEREF and the Git functions. A SAS blog on Base SAS functions that do not run in CAS puts the number at about 200 and sorts them into groups that are easy to remember:

  • Old random-number functions such as RANUNI and RANNOR. Replace them with the RAND function, for example RAND("UNIFORM").
  • Macro functions such as SYMPUT and SYMGET. The blog's reminder is short: there are no macro variables in CAS.
  • Functions that depend on row order, such as LAG and DIF, because a CAS table has no inherent order.
  • English-language functions such as SOUNDEX and SPEDIS, and the US state and ZIP code functions.

Most of the 200 have no CAS replacement, so the real skill is spotting them, not memorising substitutes. The content guide also lists DATA step features to change: the DESCENDING keyword, the WHERE= option, INFILE, INPUT and DATALINES, MODIFY, REMOVE and REPLACE, and the DATALIMIT= option.

Habit 3: Do you trust _N_ and running totals?

On one thread, a retained running total is simple: the last row holds the grand total. In CAS the DATA step runs in many threads, and each thread works through only its own share of the rows.

 

That changes two things. First, a row counter is no longer a count of the whole table, because each thread counts only the rows it sees. The content guide names the two automatic variables to know: _THREADID_, which tells you which thread handled a row, and _NTHREADS_, the number of threads. Second, a whole-table total built with RETAIN gives you one subtotal per thread, not one total. The fix is a second step that adds the subtotals, and the SINGLE= DATA step option lets that second step run on a single thread.

 

BY groups follow their own rule. The guide asks you to explain how threads relate to BY variables, and how BY-group processing and sorting work in a CAS-enabled step. Learn it from the documentation, then test it on your own table: run a BY-group step and look at which thread handled each group.

Habit 4: Do you paste PROC SQL into CAS unchanged?

PROC SQL does not run in CAS. The CAS route for SQL is PROC FEDSQL, and the content guide gives a checklist of differences to learn: data types, supported statements, mnemonics versus operators, SESSREF=, remerging, the CALCULATED keyword, set operations, correlated subqueries, dictionary tables, views and the LIMIT clause.

 

Two points on that list catch SAS 9 programmers most often. Remerging summary statistics back onto detail rows, and the CALCULATED keyword, are both PROC SQL conveniences, and the guide lists both as things to check when you convert. The last item, FORMAT and LABEL, points to a different tool: in CAS you set them on the in-memory table with the ALTERTABLE statement of PROC CASUTIL.

 

Practise this by taking three of your own PROC SQL queries, one with a summary, one with a subquery and one with a join, and rewriting each for FedSQL with SESSREF= until it runs in CAS.

Habit 5: Do you treat a loaded table as saved?

In SAS 9 a data set in a permanent library stays there. A CAS table lives in memory, and by default only for your session. This is the largest exam area, managing data in CAS, at 25-30%.

 

The guide expects you to know the whole life of a table:

  • Start a session with the CAS statement and know the caslib attributes: session, local, active and personal. The casuser caslib is your personal one.
  • Assign session-scope caslibs with the CASLIB statement, and give a caslib a libref with the LIBNAME statement and the CAS engine.
  • Load client-side files with the LOAD DATA= statement of PROC CASUTIL, and server-side sources with LOAD CASDATA=.
  • Promote a table to global scope when other sessions need it.
  • Save it as a SASHDAT file with the SAVE statement, and remove it with DROPTABLE, including how to suppress the error when the table is not there.

Column types belong here too. CAS has CHAR and VARCHAR for text and DOUBLE, INT32 and INT64 for numbers, and you create a VARCHAR column with the LENGTH statement. Be ready to choose the right type for sample data.

Habit 6: Do you use only the procedures you know from SAS 9?

Procedures split three ways in Viya, and the exam tests the split.

  • Compute Server only: PROC FREQ, PROC UNIVARIATE and the SG graphics procedures.
  • Both CAS and Compute Server: PROC MEANS and PROC SUMMARY, and PROC TRANSPOSE. For MEANS and SUMMARY the guide lists the common supported statistics (N, NMISS, MIN, MAX, RANGE, MEAN, SUM, STDERR, VAR) and the common unsupported ones (MEDIAN, MODE and percentiles).
  • CAS only: PROC FREQTAB, with its TABLE and BY statements, and PROC MDSUMMARY, with VAR, OUTPUT and GROUPBY.

So asking PROC MEANS for a median is a habit worth breaking before exam day. User-defined formats also sit in this area, at 20-25% together with the procedures. Learn where CAS stores formats, the CASFMTLIB= option that saves them to a caslib, saving and reading them as SASHDAT files with the CAS statement, and assigning them to in-memory tables.

Habit 7: Do you skip CASL because it is "only" 10-15%?

CASL, the CAS language, carries the smallest weight, but it is still one of the 16 objectives on every exam, and it explains everything above. Each CAS-enabled procedure turns into CAS actions behind the scenes.

 

The guide keeps the scope tight. Know what action sets, actions and parameters are. Then know two action sets: the table action set, with loadTable, tableInfo, columnInfo and fetch, and the simple action set, with distinct, freq and summary, plus their table, input, subset and casOut parameters. A short PROC CAS session that loads a table, checks its columns and summarises one variable covers most of it.

What does a habit fix look like in practice?

Here is a worked example in my own words, not an exam item. Suppose a SAS 9 program reads a CAS table of sales rows, adds a random sample flag with RANUNI, keeps a running total with RETAIN, and writes the result back to CAS.

 

Ask the habit questions in order:

  1. Where will it run? Input and output are CAS tables, so it could run in CAS.
  2. Any unsupported element? Yes, RANUNI. The step would quietly run on the client. Change it to RAND("UNIFORM").
  3. Any running total? Yes. In CAS each thread now ends with its own subtotal. Keep the subtotals, then add a second small step with SINGLE=YES to sum them.
  4. Check the log for the "Running DATA step in Cloud Analytic Services" note, and add SESSREF= so any remaining problem raises an error instead of a silent fallback.

Four questions, four exam objectives. That is how most A00-415 items feel: short code, and one detail that decides where it runs or what it returns.

How should you plan five weeks for A00-415?

This plan assumes you already write SAS 9 code and can spend about an hour on most days. You need a SAS Viya environment to practise in.

  1. Week 1: concepts and sessions. Compute Server versus CAS, starting sessions, caslibs, casuser, LIBNAME with the CAS engine.
  2. Week 2: managing data. LOAD DATA= and LOAD CASDATA=, promote, SAVE, DROPTABLE, column types. This is the heaviest area, so give it the full week.
  3. Week 3: DATA step in CAS. The log notes, MSGLEVEL=, SESSREF=, unsupported functions, threads, SINGLE= and BY groups. Convert three of your old programs.
  4. Week 4: FedSQL, procedures and formats. Rewrite PROC SQL as FedSQL, then work through the three procedure groups and CASFMTLIB=.
  5. Week 5: CASL and review. The table and simple action sets, then a timed pass through every objective in the content guide.

How much time do you have per question?

At 95 minutes for 50 to 55 questions, you have about 1 minute 44 seconds per question at the top end and 1 minute 54 seconds at the low end. That is enough to read a short block of code twice, but not enough to trace a long program line by line. Spend the first read on one question: where does this code run?

 

On scoring, as a rough guide only, 68% of 50 questions is 34 and 68% of 55 is about 38. SAS does not say the score is a simple count of correct items, so treat these as targets, not rules.

Which mistakes cost the most marks?

  • Studying only the SAS 9 side. The exam is about conversion, so every topic needs its CAS version.
  • Ignoring the log. Several objectives ask you to use the log to see where code executed.
  • Assuming CAS is always faster. Data size and procedure type decide it.
  • Forgetting table scope. A session table is gone when the session ends unless you promote or save it.
  • Leaving CASL to the last day because of its weight.

If you also work on the reporting side of Viya, my earlier notes on the A00-470 Visual Analytics exam objectives cover the point-and-click half of the same platform.

Frequently asked questions

1. How many questions are on the SAS Viya programming exam?

The A00-415 exam has 50 to 55 multiple choice and short-answer questions. You get 95 minutes, and the passing score is 68%.

2. How much does the A00-415 exam cost?

The fee is $180, charged in US dollars in every country. SAS offers academic discounts for students and educators.

3. Is the SAS Viya programming exam hard for SAS 9 programmers?

The syntax is familiar, so the difficulty is in the habits. Questions turn on where code runs, unsupported functions, threads, FedSQL differences and table scope, which SAS 9 work never asks about.

4. Which A00-415 topic carries the most weight?

Managing data in CAS is 25-30%. DATA step and SQL programming in CAS is also 25-30% on the credential page, while the content guide lists it at 20-25%.

5. Where can I see the full A00-415 syllabus?

SAS publishes an exam content guide with all 16 objectives, and every one is tested on every exam. AnalyticsExam's A00-415 syllabus page lists the same five areas with the exam details on one page.