We’re smarter together. Learn from this collection of community knowledge and add your expertise.

PROC EXPLODE: The SAS procedure that time forgot

by Community Manager 4 weeks ago - edited 4 weeks ago (1,796 Views)

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;

explode.png

 

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; 

 

Comments
by Respected Advisor
4 weeks ago - last edited 4 weeks ago

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:

 

Capture.PNG

 

Doesn't this imply it's still supported? And documented?

by Community Manager
4 weeks ago

Well, I guess it is still supported.  My cursory search didn't turn it up.

 

So...EXPLODE on, with impunity!  Thanks @PaigeMiller!

by Frequent Contributor
4 weeks ago

If you click the link, you get a PDF from 2004, from the SAS 9.1 documentation.

by Respected Advisor
4 weeks ago

I think I may have a use for this! Now all I need is "reams of wide green-striped paper"

by Super User
4 weeks ago

@PaigeMiller

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)

 

by Community Manager
4 weeks ago

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.

by Frequent Contributor
4 weeks ago

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.

by Community Manager
4 weeks ago - last edited 4 weeks ago

@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;

kickingit.png

 

by Valued Guide
4 weeks ago

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!

by PROC Star
4 weeks ago

@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

 

by Super User
3 weeks ago

@ChrisHemedinger

The neat thing about the step with the "ERROR-"? Enterprise Guide immediately thinks the step has failed!

by Contributor SundareshS
3 weeks ago

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 :) ?

 

 

image.png

Contributors
Your turn
Sign In!

Want to write an article? Sign in with your profile.


Looking for the Ask the Expert series? Find it in its new home: communities.sas.com/askexpert.