I switched from SAS to R years ago. However, someone recently gave me a SAS file I hope to translate to R. I have discovered SAS has changed so much over the years that I cannot even figure out how to display the results of a print statement.
Here is a simple SAS file:
data a;
input group x;
cards;
1 12
1 14
1 16
2 11
2 13
2 15
;
proc print;
var group x;
run;
If I copy and paste the above code into SAS 9.4 on a Windows desktop nothing appears in the Log window, nothing appears in the Output window and nothing appears in the Results window.
By the way, I have clicked the Create Listings option under: Tools> Options> Preferences> Results>
I suspect the current version of SAS requires that I provide some sort of code in addition to checking the box next to Create Listings before SAS will display results in the Output window, but I do not know what that line of code must be.
How can I view the results in the Output window like I used to do with SAS years ago? Thank you for any advice. I cannot imagine a more basic question and apologize if this is a duplicate.
Try explicitly telling SAS to use the listing Window.
ods listing;
If you are using SAS Enterprise Guide you need to run your code via F8, this will then display your results in the results page
Related
I got it by chance.
Submit this to SAS:
proc toolbar;
quit;
The Log says:ERROR: Unable to open ..., I think it indicates proc toolbar is some kind of procedure but I just didn't use correct syntax. Because if there is not a procedure named toolbar it would be another kind of hint: ERROR: PROCEDURE XXX not find. You can validate it using the following example.
proc XXX;
quit;
I dont't find any documents about proc toolbar. How do you know about it? could you please share with me?
Currently, custom toolbars for SAS display manager sessions are created using the display manager command TOOLDEF and loaded (or attached) to a window using command TOOLLOAD.
Proc TOOLBAR may be a deprecated or an abandoned experimental procedure that is for programmatically creating custom toolbars.
As for
ERROR: Unable to open ...
The mystery of what ... is remains.
Attempts to specify a procedure option produces a log message
ERROR 22-322: Expecting ;.
So maybe the procedure does not allow options.
The procedure does process an ITEM statement that was likely the syntax for associating an entry with a command and icon
item <name> command="<command>" icon=<icon-number>
Every attempt to run Proc TOOLBAR will create a new temporary catalog in the WORK folder.
proc toolbar cat=work.play.one;
item work command="dir work" icon="123";
item view command='viewtable &syslast';
quit;
Aside for icons
The SAS display manager command regedit raises the SAS registry editor window. Icon numbers for various classifier mnemonic can be seen in the drill path SAS_REGISTRY/CORE/CLASSIFIERS and for SAS explorer at SAS_REGISTRY/CORE/EXPLORER/ICONS. The SAS registry editor does not display the icon image that corresponds to the icon number.
Example:
Classifier 100 is named COPYITEM and will show icon #173 in the display manager UI. The datatype of the names are strings as shown by the preceding [ab] icon.
However, you can download and run an improved registry viewer application built with SAS/AF that does show icon images adjacent to icon numbers.
See page "SAS/AF Registry Browser" for information about the viewer application. The viewer can be installed and run by submitting
LIBNAME EXAMPLE "%sysfunc(pathname(WORK))";
filename INSTALL
URL "https://www.devenezia.com:443/downloads/sas/af/example/registry-browser/registry-browser.xpt"
;
PROC CIMPORT LIB=EXAMPLE FILE=INSTALL;
RUN;
filename INSTALL;
proc display cat=EXAMPLE.REGISTRY.BROWSER.FRAME;
run;
Other interesting artifacts from bygone days
Proc PMENU
SAS Explorer use and customization
There are a number of procs in SAS that are dead/defunct. They are normally very hard to find info on. A few years ago, with some sleuthing, I got proc explode to work. An old procedure to write large letters on greenbar back in the mainframe printer days. I am sure there are many, many more. I think I remember proc toolbar but has been 20+ years. Maybe an AF proc when SAS was on the old editor.
Honestly, I would ignore it as having any value. I suspect dozens of abandoned procs in the code base.
When using R markdown for making statistical reports, I have the ability to echo the R code in my output document. I'm learning SAS and I was wondering if it was possible to highlight or echo the SAS code in my final ODS report ? I'm using a dirty hack right know to display the code in my document, which is using "ods text = ", but it seems quite redundant. Plus it doesn't add syntax highlighting.
That feature does not exist in the SAS language right now, but it has been mentioned in several talks by Amy Peters, principal product manager of the SAS programing environments, as a planned feature for a near-future SAS release (with no specific date yet, but hopefully in the next 2 years). It would likely be implemented in a similar fashion to Jupyter Notebooks, in that you write your code and get your output inline.
That said, SAS does support Jupyter Notebooks, which is the best current (third party) solution. Contact your SAS administrator for more information.
I have an idea here, I'm the type of guy who dosent take no for answer and find a way to fiddle and get it done... but i think this is abit far fetch... you can try still I think it will work with mostly evrything but may have a hard time to play with quotes when you have multiple semi colomns....
Check:
I started by creating a dumbass dataset :
data tata;
x=1;
run;
then we do the following:
%let code= select * from tata;
proc sql;
create table report as
&code.;
quit;
proc print data=report;
footnote "&code.";
run;
The rationale:
I think it you put your code in macrovariables and then execute those macro variables you would be able to print show the code after by printing the macrovariable following your text...
See the sample
When I searched, all the results came up for SAS 9.3. That suggested I use the commands:
ods html close; *STOPS WRITING TO THE CURRENT RESULTS VIEWER;
ods html; *OPENS A NEW RESULTS VIEWER;
I'm running SAS 9.4 (Base SAS) and this doesn't work for me, which leads me to the conclusion that the way to clear the results viewer has changed from SAS 9.3 to SAS 9.4.
What to do?
I believe you need to run the following:
dm 'odsresults; clear';
or just type odsresults;clear in the SAS command box. This works for me in 9.3, can't see why it would be different in 9.4.
For further info - http://support.sas.com/kb/4/159.html
If you're in Enterprise Guide, the default results viewer corresponds to the ODS destination 'SASREPORT', so closing and re-opening the HTML destination won't do what you're expecting. Look at the very top of your log in EG, and find the ODS statement that is automatically included there. You can do an ODS _ALL_ CLOSE; later in your program, and then copy-paste that ODS statement from the top of your log... that should then effectively throw away whatever output was generated up the that point, and you'll only see whatever came after you re-opened the SASREPORT destination.
If this works, you will probably then want to examine the copy-pasted ODS statement and remove any unnecessary options etc.
EDIT: after reading your follow-ups, and still assuming that you're in EG ('Base SAS' is just a language and doesn't have a results viewer of its own) then go to Tools -> Options -> Results General and update your Replace Results setting to either 'prompt without replacing' or 'prompt before replacing'.
I recently switched computers at work and now when I output the results of procedures such as proc means, the data looks like plain text and it has weird behavior. I'm using SAS 9.3.
For instance, it won't display the title I defined and it doesn't clearly mark the results for the different values of the by variable.
Has anyone ever run across this? I have gone into preferences and ods graphics/enable html are checked.
Tools->Options->Preferences->Results
I have a large SAS dataset and I would like to make a series of tables and charts using by value processing. I am outputing these to a PDF.
Is there any way to get SAS to alternate between the table and the chart as it goes through the data? Right now, I have to print all of the tables first and then print the charts. If it were just 4 tables/charts, then I would be ok writing
Here is a simple example:
data sample;
input byval $ item $ amount;
datalines;
A X 15
A Y 16
A Z 12
B X 25
B Y 10
B Z 18
;
run;
symbol1 i=j;
proc print data=sample;
by byval;
var item amount;
run;
proc gplot uniform data=sample;
by byval;
plot amount*item;
run;
This prints 2 tables, followed by 2 charts.
I would like the Chart for "A" to come after the table for "A" so that the reader can flip through the pdf and always see the associated charts and tables together.
I could write separate procs for each one, but then the gplot won't have a uniform axis (and it gets messy if I have 100 different groups instead of 2).
I thought about pumping them into greplay but then you can't use titles with "#BYVAL1".
Is there any easy way to do this?
I've never used it, but it may be worth checking out ODS DOCUMENT. This allows you to store the output of all your procedures and then reference specific items from them using PROC DOCUMENT.
Below is a link to the SAS website with useful information about this, in particular the paper by Cynthia Zender for the SAS Global Forum 2009.
http://support.sas.com/rnd/base/ods/odsdocument/index.html
Cynthia also regularly contributes to the SAS Support Communities website (https://communities.sas.com/community/support-communities), so it may be worth asking on there if you are still stuck.
Good luck
I don't know of any way to do what you ask directly. GREPLAY is probably the closest you'll come; the primary problem is that SAS processes the PROCs linearly, first processing the entire PROC PRINT, then the entire PROC GPLOT. GREPLAY would allow you to redisplay the output, but if that doesn't work for your needs due to the #BYVAL issue, I'm not sure there's a better solution. Perhaps you can modify the title afterwards (not sure if GREPLAY allows this)?
You could try using ODS LAYOUT, but I don't think that would be any better. The one way it could be better is if you can work out having two columns on a 'page', one column being the PROC PRINT outputs, one the PROC GPLOT, and then print the columns one page than the other. I don't think this is possible, but it might be worth exploring.
You might also try setting up a macro to do each BYVAL separately, defining the axis in a uniform manner manually (ie, defining it based on your own calculation of the correct axis parameters, as an argument to the macro). That is probably the easiest solution that might still allow #BYVAL to work properly.
You might also try browsing about Richard DeVenezia's site (http://www.devenezia.com/downloads/sas/samples/ ) which has a lot of examples of SAS/GRAPH solutions. He also posts on SAS-L (sasl#listserv.uga.edu) sometimes, not sure if I've seen him on StackOverflow. He's probably the person most likely to be able to answer the question that I know of.