Carpenter's Complete Guide to the SAS Macro Language, Second Edition Reviews

"Art Carpenter has been hard at work since his first edition was published in 1998. He has added enough new material to double the size of his original work. Many more complex ideas of macro usage are illustrated here, with diverse topics brought together and discussed as whole concepts. I would recommend this book to beginners as well as advanced programmers who wish to be proficient in their usage of the simple yet powerful SAS macro language."

Ronald Fehd
Centers for Disease Control and Prevention

"Art has once again written a fantastic SAS book. It is very complete in its coverage of the macro language, covering everything from the basics to advanced topics. It makes an excellent reference book with its clear layout. I would highly recommend it particularly to experienced SAS programmers who want a complete macro reference which extends to cover advanced topics. I wrote the "Advanced Macro Programming" course for SAS UK, and this would make a perfect companion to that course. In short, it's a fantastic book and contains plenty of new material compared to his first. It will surely pay for itself in no time."

Philip Mason
Wood Street Consultants

"Having used SAS for 25 plus years, I can honestly say I am always amazed at what I learn from reading SAS Press titles and the little things I may have overlooked or forgotten. Art did an excellent job writing this book with plenty of good examples and well-documented bullets and callouts of each step within his examples. He has also included a number of good macros that could be used by any SAS developer and incorporate them into their library of tools. This is a must-have book for the serious SAS developer who wishes to use and learn the SAS macro language."

Charles Patridge
The Hartford Financial Service

"Mastering the skills in Chapter 9, 'Writing Dynamic Code,' will certainly boost your career as a programmer. The author introduces all the necessary components of writing a dynamic program. Initially dynamic code can look esoteric, but the author has detailed complete examples including resolved values for double-ampersand macro variables and macro arrays. Being able to see what the macro variable resolves to throughout each step will help any user grasp this concept. PROC SQL is also used in Chapter 9 as a macro variable list-generating tool, which is prevalent in most of the programs I've written. Overall Chapter 9 will convey an important message to the SAS user--that your code can have more than one dimension and can adapt dynamically to the data you are using. Until now I have not seen formal documentation to such detail on dynamic programming, and the author does a successful job of presenting this topic. "

Kenneth Moore
Lockheed Martin