Sometimes I need to "disassemble" a SAS data set into a DATA step program. It's kind of like creating a "freeze-dried" version of the data that you can carry around and use anywhere, re-hydrating it in the SAS session where you next need it. Some example uses for this: Build
Author
I'm now into my 20th year of working for SAS. This year in November I'll have my 20th "SAS-iversary" and thus mark the beginning of my third decade here. I've worked here since the Clinton administration. I've met SAS employees who were actually not yet born when I attended my
I'm always looking for ways to make my job sound more relevant to people who ask me, "so what does SAS do?" SAS does so much that I can't possibly list it all, so I need some umbrella terms that can capture the essence of it (and still keep the
Most people try to hide the evidence of their bad decisions. But this weekend I decided to share mine to social media. I hope that it's not a career-limiting move. Actually, I made quite a few good decisions as well, outnumbering the bad ones. Still, I had many missed opportunities,
I've bragged about how easy it is to install custom tasks for SAS Enterprise Guide. It's simple: you copy the .NET assembly (usually a single DLL file) into one of the designated folders in your SAS Enterprise Guide installation, and your task just shows up in the menu. Since I
Many of my blogging colleagues are taking this week to reflect on their top posts in 2012. Some are using the visitor statistics to rank the posts, but as Andy Ratcliffe points out, that gives short-shrift to the late-season articles. This year, I'm going to use this space to recap
Look at what arrived in the mail room this morning! Of course, I was expecting it sometime in January...but not first thing! Here's to early deliveries...perhaps this will set the tone for all of my projects in the new year.
I used "Dropbox" in the title for this post, but these techniques can be used for other cloud-based file sharing services, such as GitHub and Google Drive. Using PROC HTTP (added in SAS 9.2), you can easily access any "cloud-based" file as long as you have a public link to
There are two activities which, when taken in combination, have occupied the vast majority of my working hours for the past 20 years: writing computer programs and writing...well, just writing. During my college years I completed my degree with a double-major: Computer Science and English. (My English degree has a
Most custom tasks need to access SAS data in some way. Since custom tasks are built using Microsoft .NET, and the .NET Framework is object-oriented, it would be convenient if we had an object-oriented method for navigating SAS data sources. That was the thinking behind the "SasData"-namespace classes within the
We are careening towards the holiday season, and this year more than ever before it's going to mean one thing: Online Shopping. As you enter your credit card number over and over to complete your many purchases, you might occasionally transpose or mistype your account number. Does it surprise you
I work on a variety of projects at SAS, most of which require some level of team collaboration in source management systems. Due to the many technologies that we work with, SAS developers use different source management tools for different purposes. I've got projects in CVS, Subversion, and Git. When
According to the Daily Writing Tips blog, describing a thing as "somewhat unique" is bad form. Unique means "one of a kind", so either it is or it is not. The famous example (which the style police will use to chide you) is that you can't have something as "somewhat
I've been finishing up just a bit of the "boilerplate" content for my forthcoming book about custom tasks. One of the final tasks is to write the introduction, also known as the "About this Book" section. SAS Press offers a template with examples of a few essential topics to address
You might know about the many automatic macro variables that are available in SAS. They provide plenty of information about the SAS environment, such as the current user (SYSUSERID), the SAS version (SYSVER and SASVLONG), and the operating system where SAS is running (SYSCP and SYSCPL). That information is often
Milestone achieved: I've completed the final chapter of Creating Custom Tasks for SAS Enterprise Guide using Microsoft .NET and turned it over to SAS Press for editing and production. It's scheduled to be available in early 2013. I committed to writing this book nearly 5 years ago. I'll engage in
The following is an excerpt from my forthcoming book: Creating Custom Tasks for SAS Enterprise Guide using Microsoft .NET. If your custom task generates a SAS program, the chances are pretty high that your program will reference one or more variables within a SAS data set. Despite our best efforts,
Last week I attended a meeting of the Toronto Area SAS Society. (Okay, I didn't just attend; I was a presenter as well.) This user group meeting contained a feature that I had never seen before: "Solutions to the Posed Problem". Weeks before the meeting, an "open problem" was posted
One of the often-cited side effects of moving from "Base SAS" (SAS on your PC, or Display Manager) to SAS Enterprise Guide is the loss of "X" command privileges -- that is, the ability for your SAS programs to invoke other programs via the operating system shell. We call this
Regular expressions provide a powerful method to find patterns in a string of text. However, the syntax for regular expressions is somewhat cryptic and difficult to devise. This is why, by my reckoning, approximately 97% of the regular expressions used in code today were copied and pasted from somewhere else.
The project that I'm currently working on requires several input data tables, and those tables must have a specific schema. That is, each input table must contain columns of a specific name, type, and length in order for the rest of the system to function correctly. The schema requirements aren't
I'm working on a SAS programming project with a large team. Each team member is responsible for a piece of the overall system, and the "contract" for how it all fits together is The Data. For example, I've got a piece that performs some data manipulation and produces several output
When the Western Users of SAS Software gather in Long Beach, CA this September, I'll be proud to be counted among the WUSSers. (You can learn more about WUSS here; don't look here.) The WUSS organizers must have some serious clout, because the line-up of presenters reads like a "Who's
If you need to calculate the mean, sum, standard deviation, or frequency count for a variable, you'll find it pretty easy to accomplish in SAS Enterprise Guide. The corresponding tasks in the menus have names like "Summary Statistics" or "One-way Frequencies". Obvious, right? Often, researchers or students have a quest
With the London 2012 Olympics around the corner, there are sure to be reports or rumors of performance-enhancing drug use among some athletes. It turns out that using manufactured chemicals to give yourself an edge is frowned upon in the athletic community. However, as a SAS user you should avail
If you've heard anything from SAS in recent months, then you've heard about high-performance analytics and the new SAS Visual Analytics offering. SAS has taken the high-performance analytics message around the world in a series of recent "road shows". From the start, this project has enjoyed a different development process
A SAS Professionals attendee and Twitter follower named Marco asks for help: ..struggling to find a method with custom tasks in EG to be able to list the datasets in a library, can you help please? Sure, no problem. This is easy-peasy-lemon-squeezy. First, make sure that you have a reference
"Welcome to the English summer." "In the US you have climate. In England we have Weather." These are just two of the familiar phrases I heard yesterday during the SAS Professionals Convention held at SAS UK in Marlow. The weather changed from sun to dark clouds to rain and even
Update 24Nov2015: The methods in this post no longer work for Twitter, as Twitter has discontinued support for its "share count" API that was used within the Twitter share buttons. But the Facebook method still works, and I've described a method for counting LinkedIn shares on another post. As of
A colleague was recently working with a web service that supplies some datetime values using the Microsoft Windows internal representation. He called the web service to retrieve those values (along with other data) from SAS, and he needed convert these values to SAS date-time values. The Microsoft definition for a