Nobody reads your program on the SAS advanced programming exam. A scoring macro does. You are handed a task, you write SAS code that solves it, and SAS runs its own macro against what you produced to decide whether the challenge was met. There is no examiner to admire a tidy join and no credit for knowing what a hash object is in theory. Either the output is right or it is not.
That single design choice explains most of what makes exam A00-232 different from the question banks many candidates still prepare for. It is why the paper is split between programming projects and standard questions, why SAS tests every one of its 13 main objectives on every sitting, and why the working time is 2 hours and 5 minutes even though the appointment runs to 2 hours and 30. This article walks through the format and scoring, the three weighted domains, the Base credential you must already hold, and a preparation order built around writing code that runs.
Table of Contents
- How Is the SAS Advanced Programming Exam Scored?
- What Does A00-232 Look Like in Numbers?
- How Are the Three A00-232 Domains Weighted?
- What Does the SQL Domain Expect You to Write?
- Where Do Marks Go Missing in Macro Processing?
- Arrays, Hash Objects, FCMP and PRX: The Last 30 Percent
- Do You Need the Base Programming Credential First?
- How Should You Prepare for a Performance-Based Paper?
- Frequently Asked Questions
- Conclusion
How Is the SAS Advanced Programming Exam Scored?
The SAS advanced programming exam, A00-232, is scored in two ways. Its 10 to 15 programming projects are assessed by a SAS scoring macro that checks whether your code solved the task, and its 10 to 15 standard questions are marked as ordinary exam items. The combined result is reported on a scale of 200 to 1,000, and 725 passes.

SAS calls this a performance-based exam, and the label is literal. The credential it leads to, SAS Certified Professional: Advanced Programming Using SAS 9.4, replaced an older multiple choice paper in 2019, when SAS moved its programming certifications into a live coding format. The reasoning was set out by the certification team when the first of those exams launched.
“The credential would be more valuable if you knew that candidates actually coded in SAS during their exam.”
What a scoring macro changes
A human marker can give you the benefit of the doubt. A macro compares results. That shifts the skill being tested from recognising correct syntax to producing a correct outcome, which is a different habit. A query with the right clauses in the wrong order, a macro variable that resolves one step too late, or a lookup that silently drops unmatched keys all look plausible on the page and all fail when the output is checked.
The same design gives you room. When SAS introduced the format on its Base Programming exam, the certification team said it was measuring the outcome of the code and allowing candidates some freedom in how they solved the challenge. If a task can be solved with a join or with a hash lookup and the objective does not force one of them, either route that yields the right result is a right answer.
What SAS does not publish
SAS states the passing score and the score range. It does not publish how the marks divide between projects and standard questions, and it does not say whether a partly working project earns anything. Treat every project as something to finish cleanly and verify before you move on, because that is the only assumption the published rules support.
What Does A00-232 Look Like in Numbers?
A00-232, the SAS 9.4 Advanced Programming Performance-Based Exam, contains 10 to 15 programming projects and 10 to 15 standard exam questions. You have 2 hours and 5 minutes to complete it inside a Pearson VUE appointment of 2 hours and 30 minutes. The passing score is 725 on a scale of 200 to 1,000, and the fee is 180 USD.
| Exam detail | A00-232 |
|---|---|
| Exam name | SAS 9.4 Advanced Programming Performance-Based Exam |
| Credential awarded | SAS Certified Professional: Advanced Programming Using SAS 9.4 |
| Items | 10 to 15 programming projects and 10 to 15 standard exam questions |
| Time to complete the exam | 2 hours and 5 minutes |
| Total appointment | 2 hours and 30 minutes |
| Passing score | 725 on a scale of 200 to 1,000 |
| Exam fee | 180 USD |
| Delivery | SAS and Pearson VUE |
| Prerequisite credential | A current SAS Base Programming credential |
125 minutes of work inside a 150 minute appointment
Many study pages give the duration as 150 minutes. That figure is the appointment, not the exam. The official SAS credential page says you have 2 hours and 5 minutes to complete the exam, and that the Pearson appointment is 2 hours and 30 minutes to allow for introductory material. Pace yourself against 125 minutes. With 20 to 30 items in total, and a project asking for a working program where a standard question asks for an answer, the 25 minutes you thought you had are not there to spend.
Fees and retakes
SAS charges the 180 USD fee in US dollars for all countries, and students and educators can apply for academic discounts before they register. The SAS certification FAQ allows up to five attempts at an exam in any 12 month period, with at least 14 days between attempts, and every attempt is charged. Once you have passed, you cannot sit the same exam again to improve the score.
Booking
The exam is administered by SAS and Pearson VUE, and registration runs through the Pearson VUE SAS page using the exam ID A00-232. SAS also publishes a short video of the exam experience on the credential page and describes it as a must-watch. Watch it before you book, because the layout of a project item is not something to meet for the first time with the clock running.
How Are the Three A00-232 Domains Weighted?
The A00-232 exam has three domains. Accessing Data Using SQL carries 35 percent, Macro Processing carries 35 percent, and Advanced Techniques carries 30 percent. Between them they hold 13 main objectives, and the SAS exam content guide states that all 13 are tested on every exam, so no objective can be left out of your preparation.
| Domain | Weight | Main objectives |
|---|---|---|
| Accessing Data Using SQL | 35% | Detail reports from one table, joins or set operators; summary reports; subqueries and in-line views; SAS SQL procedure enhancements |
| Macro Processing | 35% | User-defined and automatic macro variables; defining and calling macros; macro functions; debugging macros; data-driven programs |
| Advanced Techniques | 30% | One and two dimensional arrays; hash objects; SAS utility procedures; advanced functions |
Why “all 13 on every exam” matters
Most certification blueprints describe a pool that each form samples from, which tempts candidates to skip the topic they like least. This one closes that door. Four SQL objectives, five macro objectives and four advanced technique objectives will each appear on your form in some shape. The detail bullets under each objective define what could be asked, and SAS notes that they describe the whole domain that may be tested.
The even 35, 35 and 30 split also means there is no dominant domain to lean on. A candidate who writes PROC SQL every day but has never built a hash object is exposed on nearly a third of the paper. Working through the A00-232 sample questions early is a quick way to find which of the 13 you can already do under time pressure and which you only recognise.
The reference aid
Two topics come with help. For picture formats and for regular expressions, the content guide says a reference aid is provided during the exam covering the directives and the metacharacters. You still need to know what a picture template or a pattern is for and how to assemble one, but you are not expected to recite every directive from memory.
What Does the SQL Domain Expect You to Write?
The SQL domain of the A00-232 exam is worth 35 percent and expects you to write working PROC SQL steps: detail and summary reports from one or several tables, joins, set operators, non-correlated subqueries, in-line views, and the SAS extensions to SQL such as data set options, invocation options, DICTIONARY tables and the CALCULATED keyword.
PROC SQL is the SAS implementation of Structured Query Language, the database language standardised internationally in the ISO SQL standard. Anyone who has written SQL elsewhere will recognise SELECT, FROM, WHERE, GROUP BY, HAVING and ORDER BY. The exam leans on the places where SAS differs or adds to that base, and those are where experienced database developers get caught.
Joins and set operators
The objectives name inner, left, right and full joins, and pair the full join with the COALESCE function, because a full join leaves key columns missing on whichever side had no match. They also name four set operators: UNION, OUTER UNION, EXCEPT and INTERSECT. Know how each treats duplicate rows and how each lines columns up, since OUTER UNION behaves differently from the other three on both counts.
Summaries, subqueries and in-line views
Summary reports use AVG, COUNT, MAX, MIN and SUM, across and down columns, with GROUP BY to form groups, HAVING to filter them and DISTINCT to remove duplicates. Subqueries on the paper are non-correlated, meaning the inner query runs once and hands its result to the outer one. In-line views put a query in the FROM clause and join it to other tables or views.
The SAS enhancements
- Data set options inside PROC SQL: KEEP=, DROP=, RENAME= and OBS=.
- Invocation options on the PROC SQL statement: INOBS=, OUTOBS=, NOPRINT and NUMBER.
- SAS functions in queries: SCAN, SUBSTR and LENGTH.
- DICTIONARY tables for system information: members, tables and columns.
- The CALCULATED keyword, which lets you reuse a column you computed earlier in the same query.
DICTIONARY tables deserve extra time. They reappear in the macro domain as the source for data-driven programs, so one hour spent querying dictionary.columns pays off in two domains.
Where Do Marks Go Missing in Macro Processing?
Macro Processing is 35 percent of the A00-232 exam and covers five objectives: creating macro variables, defining and calling macros, macro functions, debugging, and data-driven programs. Marks are usually lost on timing and scope, when a macro variable is created in one place and referenced before it exists or outside the symbol table that holds it.

Creating macro variables three ways
The objectives list three routes: a direct definition, the INTO clause of a PROC SQL SELECT statement, and the SYMPUTX routine in a DATA step. Each can create a single variable or a whole list. Scope is controlled with the %GLOBAL and %LOCAL statements and with the scope parameter of SYMPUTX. The name delimiter, a full stop after a macro variable reference, is also named, and it is the detail behind most “library reference lost its dot” errors.
Macros that generate code
You define a macro with %MACRO and %MEND, call it with or without parameters, and use %IF, %THEN and %ELSE or an iterative %DO to generate SAS code conditionally. Commenting the macro is itself an objective, as is storing macros permanently through the autocall facility. The macro functions on the list are short: %SCAN, %SUBSTR and %UPCASE, the quoting functions %STR and %NRSTR, the evaluation function %SYSEVALF, and %SYSFUNC to run DATA step functions from macro code.
Three options, three different views of a failure
Debugging is a named objective, which on a performance-based paper is a gift: the tools that are examined are the tools that rescue a broken project. MLOGIC traces the flow of execution, MPRINT shows the SAS statements the macro generated, and SYMBOLGEN shows what each macro variable resolved to. The %PUT statement writes your own messages to the log.
Data-driven programs
The last macro objective combines everything: create a series of macro variables, reference them indirectly with multiple ampersands, pull the driving values from DICTIONARY tables, and generate repeated macro calls. This is where SQL and macro meet, and it is the objective most worth building a small project around rather than reading about.
Arrays, Hash Objects, FCMP and PRX: The Last 30 Percent
Advanced Techniques is 30 percent of the A00-232 exam and holds four objectives: processing data with one and two dimensional arrays, processing data with hash objects, using the FORMAT and FCMP utility procedures, and using advanced functions including the PRX regular expression functions. It is the domain working programmers most often underestimate.
Arrays
Expect character and numeric arrays, arrays that create new variables, references inside a DO loop, the DIM function to find the dimension, temporary arrays, and loading initial values for an array from a SAS data set. Two dimensional arrays are in scope, so practise a lookup grid as well as a simple list.
Hash objects
The hash objective is the most detailed in the guide. It names the dataset, ordered and multidata arguments, the methods definekey, definedata, definedone, find, add and output, and the hash iterator with first, next, last and prev. It then names three uses: a lookup table, creating a sorted data set, and reading data in forward or reverse key order. If you have always merged after sorting, this is new ground, and it needs hands on the keyboard.
Picture formats and custom functions
Under utility procedures, the PICTURE statement of PROC FORMAT builds templates for dates, times and datetimes with directives and for numbers with digit selectors, using the options round, default, datatype, multiplier and prefix. PROC FCMP creates your own character and numeric functions, including ones built on conditional logic, and the CMPLIB= global option tells SAS where to find them.
Advanced functions and regular expressions
The final objective lists FINDC and FINDW, COUNT, COUNTC and COUNTW, the LAG function, and pattern matching with PRXMATCH, PRXPARSE and PRXCHANGE. The PRX functions use Perl regular expression syntax, so the Perl regular expression reference is the right place to learn what the listed metacharacters mean. Remember that a reference aid for those metacharacters is supplied in the exam, so spend your effort on building and testing patterns, not on memorising symbols.
Do You Need the Base Programming Credential First?
Yes. Passing A00-232 alone does not award the credential. SAS grants SAS Certified Professional: Advanced Programming Using SAS 9.4 only to candidates who pass the exam and also hold a current Base Programming credential, either SAS Certified Base Programmer for SAS 9 or SAS Certified Specialist: Base Programming Using SAS 9.4.
SAS answers this directly in its FAQ: sit the advanced exam without a Base credential and you will not earn the advanced credential. Either Base credential counts, the older multiple choice one or the current performance-based one. If you hold neither, the Base exam comes first, and this site’s A00-231 exam companion covers that paper.
Does the credential expire?
SAS says some of its credentials expire and that, where one does, the expiry is stated in the exam details on the credential page. It adds that the absence of an expiry statement means the certificate does not currently expire. The page for this credential carries no expiry statement. SAS also notes that exams may be retired as software develops, which is a separate matter from a credential you already hold.
Who the exam suits
SAS describes the credential as proof of three skills: using advanced DATA step programming statements to solve complex problems, writing and interpreting SAS SQL code, and creating and using SAS macros. That is the profile of a programmer who already produces data sets and reports for other people and now needs to automate and scale that work. It is a programming credential, and nothing on the blueprint concerns statistical modelling.
How Should You Prepare for a Performance-Based Paper?
Prepare for the A00-232 exam by writing and running code against all 13 objectives, not by reading about them. The scoring macro only rewards output that is correct, so every study session should end with a program that ran, a log you read, and a result you checked against what you expected.
Training that maps to the domains
Three SAS courses line up with the three domains: SAS SQL 1: Essentials for the SQL domain, SAS Macro Language 1: Essentials for macro processing, and SAS Programming 3: Advanced Techniques for arrays, hash objects, utility procedures and advanced functions. Practice exams can be bought through SAS and Pearson VUE, and SAS gathers its courses, content guide and sample questions in one certification pathway.
A preparation order that follows the paper
- Print the exam content guide and mark each of the 13 main objectives as fluent, shaky or new, being honest about anything you have read about but never typed.
- Rebuild your SQL first, writing one query for every bullet in the domain, including each join type, each set operator and each PROC SQL option.
- Write macros that fail on purpose, then turn on MLOGIC, MPRINT and SYMBOLGEN one at a time until you can say which option exposes which kind of fault.
- Build one data-driven program that reads DICTIONARY tables, creates a series of macro variables and generates repeated macro calls from them.
- Replace a sort and merge you already use with a hash object lookup, then extend it with a hash iterator to read the keys in reverse order.
- Create one picture format for a date and one for a number, and one FCMP function you call through the CMPLIB= option.
- Sit a full timed run of 125 minutes, and treat every project you could not finish as a topic to rebuild from scratch.
Use the documentation as you practise
Get used to finding syntax quickly in the product documentation, starting from the SAS documentation library. Looking up the argument order of a hash method or a PROC FCMP option is normal working practice, and the faster you can do it the less each small gap costs you.
For a broader view of the credential, including its place in a SAS career, the earlier article on this site about the SAS advanced programming certification is a useful companion to this exam-focused guide.
Frequently Asked Questions
How many questions are on the SAS advanced programming exam?
A00-232 has 20 to 30 items in total: 10 to 15 programming projects and 10 to 15 standard exam questions. SAS publishes the ranges, not a fixed count, so the exact mix on your form can fall anywhere inside them.
How long is the A00-232 exam?
You have 2 hours and 5 minutes to complete the exam. The Pearson VUE appointment is 2 hours and 30 minutes, with the extra time set aside for introductory material. The 150 minute figure quoted on many study pages is the appointment length.
What is the passing score for A00-232?
The passing score is 725 on a scale that runs from 200 to 1,000. It is a scaled score, so it is not a percentage of items answered correctly, and SAS does not publish how marks are divided between projects and standard questions.
How are the programming projects marked?
SAS states that the programming projects are assessed by a SAS scoring macro. The macro checks whether your code solved the task, so a program that looks right but produces the wrong output does not score.
Can I take the advanced exam without the Base Programming credential?
You can sit it, but you will not earn the credential. SAS requires a current Base Programming credential, either SAS Certified Base Programmer for SAS 9 or SAS Certified Specialist: Base Programming Using SAS 9.4, before it awards the advanced one.
How much does the SAS advanced programming exam cost?
The exam fee is 180 USD, charged in US dollars for all countries. Each attempt is charged separately, and students and educators can request an academic discount voucher before they register.
Does the SAS advanced programming certification expire?
The credential page carries no expiry statement, and SAS says the absence of one means the certificate does not currently expire. SAS does retire exams as software changes, which does not remove a credential already earned.
How many times can I retake A00-232?
SAS allows up to five attempts at an exam in a 12 month period, with a minimum of 14 days between attempts. After a passing score, no further attempts at that exam are allowed.
Which topics are tested on every A00-232 exam?
All of them. The SAS exam content guide states that all 13 main objectives are tested on every exam: four in Accessing Data Using SQL, five in Macro Processing and four in Advanced Techniques.
Conclusion
The SAS advanced programming exam rewards one thing: code that produces the right result. A00-232 gives you 125 minutes for 10 to 15 projects and 10 to 15 standard questions, marks the projects with a scoring macro, and passes you at 725 out of 1,000. SQL and macro processing carry 35 percent each, advanced techniques carries 30, and all 13 main objectives appear on every form.
Check first that you hold a Base Programming credential, because the advanced one is not awarded without it. Then grade yourself against the 13 objectives, write a working program for each, and finish with a timed run. If a topic only feels familiar, treat it as unlearned until you have made it run.
