09-11-2017 05:17 AM - edited 09-11-2017 05:26 AM
I have SAS 9.4 on a Windows environment.
We have been using DDE to print multiple output onto a worksheet where the output is placed side by side across the worksheet. However we would like to move away from DDE as it seems to be slow on the latest Windows version to the point of being unusable.
I don't believe ods tagsets.ExcelXP permits side-by-side layout
Does ODS Excel within 9.4 permit side-by-side layout, and if so how is this specified please?
09-11-2017 05:54 AM
An example might help. Why can you not create the output files, and join them together? Quite simple you could even use Excel nomencalture, eg:
dataset1 ROWNO A B C D
dataset2 ROWNO E F G H
ROWNO A B C D E F G H
You could also try the option;
|PAGE_ORDER_ACROSS||no||If set to yes, the worksheet page order will be set to print across, then down|
Look in the guidance:
09-11-2017 06:15 AM
Thanks RW9. I am trying to mimic the level of output location control that DDE provides.
I had considered joining the output together and using proc report styling hacks to make it appear as two outputs. But this might not always work as we have many reports that have been built using DDE over the years.
The tagset option PAGE_ORDER_ACROSS creates one output per worksheet, whereas I am trying to control multiple SAS outputs within one worksheet e.g. the audience wants to compare tables side by side when printed on paper.
09-11-2017 06:27 AM
Not with tagset. You can try this:
Never used it myself. If it was me, I would change the whole process, never seen the point in multiple outputs on one sheet, or big Excel files. Excel is really not a reporting environment, not a data transfer file format etc.
09-11-2017 09:38 AM
09-11-2017 06:38 PM
Maybe not ideal but this shows a combined data set split across by the data set name. Use of IN= options in the Work.All would allow conditional assignment of better text than the data set name. To compare data the two sets should be sorted the same.
data work.one; input grp x y; datalines; 1 3 28 1 2 56 1 5 33 ; run; data work.two; input grp x y; datalines; 1 3 28 1 2 56 1 5 23 ; run; data work.all; length source $42.; set work.one work.two indsname=temp; source = temp; run; proc report data=work.all; column source,(grp x y); define source /across; run; quit;