I'll begin by saying that the code I'm about to share is undocumented for recent releases of SAS, and therefore not officially supported. Read on for pure nostalgia or to learn trivia for your next SAS-themed cocktail party.
Decades ago, before web pages, computer program results were shared on reams of wide green-striped paper, affectionately known as "green bar paper." In my undergrad days as a computer science student, I didn't know for certain whether my program worked properly until I retrieved my green-bar printout from the compute center. (It was a minimum-wage student worker's job to separate/sort/distribute all of the output -- alas, an occupation that no longer exists.)
A feature of any green-bar printout is the heading: a paper-wasting ASCII-art banner of the output name and maybe the account that produced it. SAS has a language feature that allows you to produce banners like this: it's called PROC EXPLODE. Try running this in your SAS for Windows or SAS Enterprise Guide session:
options ps=132 nonumber nodate;
ods listing;
FILENAME FT15F001 temp;
proc explode;
parmcards;
1 KICKING IT
2 OLD SCHOOL!
;
run;
The PARMCARDS statement is a relic from the punch card days, and the FT15F001 fileref is the spooling source that feeds it, a leftover from Fortran integration/compatibility.
If you use SAS University Edition (or SAS Studio in general), the LISTING (text) destination isn't visible. However, you can route the PROC EXPLODE output to a file, which you can then open and enjoy.
options ps=132 nonumber nodate;
ods listing file='/folders/myfolders/oldschool.lst';
FILENAME FT15F001 temp;
proc explode;
parmcards;
1 KICKING IT
2 OLD SCHOOL!
;
run;
ods listing close;
I remember PROC EXPLODE.
Any idea why it is no longer supported? 😉
But @ChrisHemedinger, if I go to http://documentation.sas.com/?cdcId=pgmmvacdc&cdcVersion=9.4&docsetId=allprodsproc&docsetTarget=proc... I see this:
Doesn't this imply it's still supported? And documented?
Well, I guess it is still supported. My cursory search didn't turn it up.
So...EXPLODE on, with impunity! Thanks @PaigeMiller!
If you click the link, you get a PDF from 2004, from the SAS 9.1 documentation.
I think I may have a use for this! Now all I need is "reams of wide green-striped paper"
Don't forget the tractor drive printer to go through all of those folded pages of output.
Options linesize=132; I believe was very common with the green bar as well...
Of course the real fun "header" pages used the letter to create the banner text instead of using a single character like *.
Something like:
KK KK KK KK KK KK KKKK KK KK KK KK KK KK KK KK KK KK
(too lazy to go much further though the I should be easy enough)
Alphabet style, @ballardw!
K K III CCC K K III N N GGG III TTTTTT K K I C K K I NN N G I TT KK I C KK I N N N G GG I TT K K I C K K I N NN G G I TT K K III CCC K K III N N GGG III TT OOO L DDD SSS CCC H H OOO OOO L O O L D D S C H H O O O O L O O L D D SSS C HHHH O O O O L O O L D D S C H H O O O O L OOO LLLL DDD SSSS CCC H H OOO OOO LLLL
Online generators are plentiful on the nostalgic web.
Coincidentally, I had just looked up PROC EXPLODE earlier today because I had a possible use for it, for the first time in 2 decades.
But alas, it won't do what I want because it writes to the listing destination, and what I want is for BIG LETTERS to appear in the SAS log.
This isn't the first time I've wanted to do something like
ods saslog;
to duplicate listing output to the log.
In this case, I suspect that PROC EXPLODE isn't ODS-aware anyway.
@JackHamilton - I got you.
filename bigmsg temp;
options ps=132 nonumber nodate;
ods listing file=bigmsg;
FILENAME FT15F001 temp;
proc explode;
parmcards;
1 KICKING IT
2 OLD SCHOOL!
;
run;
ods listing close;
data _null_;
infile bigmsg;
input;
put _infile_;
run;
Oh, and if you want it ERROR-red? Change that PUT line.
data _null_;
infile bigmsg;
input;
put "ERROR-" _infile_;
run;
I remember those green-striped sheets well, boxes of them coming up from the print room only to find there was an error in the code and the whole lot was useless!
I also remember the COBOL coding sheets we had to hand write our programs on before sending them off to the punch room, how different things are today!
@ChrisHemedinger: If you want to write an article about a "really" undocumented, yet even more (methinks) useful procedure, do one on proc spell. It has the same listing problem for SAS UE, but easy to get around:
options caps;
filename bigmsg temp;
ods listing file=bigmsg;
filename temp temp;
data _null_;
file temp;
informat sentence $100.;
input sentence &;
put sentence;
cards;
Let's see if sas spell procdure can be used
to verify whether tha seperate words in
this, uhm, flie are, uhm, valid against a
stantard internal dictionary and let’s see
how versatile it is
;
proc spell in=temp nomaster;
run;
proc spell in=temp verify;
run;
proc spell in=temp suggest;
run;
ods listing close;
data _null_;
infile bigmsg;
input;
put _infile_;
run;
Art, CEO, AnalystFinder.com
The neat thing about the step with the "ERROR-"? Enterprise Guide immediately thinks the step has failed!
Really neat - but what about the newest kid on the block ?? This seems to be done using some clever placement while writing to the log - I noticed it while opening a cas sesssion log (now, is that a good thing or a bad thing 🙂 ?
Aww, it doesn't rotate 90 degrees, like Print Shop did.
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.
Data Literacy is for all, even absolute beginners. Jump on board with this free e-learning and boost your career prospects.