Hello,
I have the following data:
data have;
input condition $ 1. _6 _5 _4 _3 _2 _1;
datalines;
A 14 14 8 0 0 0
B 3904 3918 3926 3926 3926 3926
C 910 917 917 917 918 922
D 1821 1816 1824 1825 1837 1824
E 5 2 2 2 3 3
F 1.8 1.8 1 0 0 0
;
run;
I then create dates formats:
DATA _NULL_;
CALL SYMPUT ('_6Day',PUT(today() - 6,DATE9.));
CALL SYMPUT ('_5Day',PUT(today() - 5,DATE9.));
CALL SYMPUT ('_4Day',PUT(today() - 4,DATE9.));
CALL SYMPUT ('_3Day',PUT(today() - 3,DATE9.));
CALL SYMPUT ('_2Day',PUT(today() - 2,DATE9.));
CALL SYMPUT ('_1Day',PUT(today() - 1,DATE9.));
RUN;
Then I create the report:
PROC REPORT DATA= have ;
define _6 / display "&_6Day";
define _5 / display "&_5Day";
define _4 / display "&_4Day";
define _3 / display "&_3Day";
define _2 / display "&_2Day";
define _1 / display "&_1Day";
run;
However, when I change the dates formats then I don't get the desired output:
DATA _NULL_;
CALL SYMPUT ('_6Day',PUT(today() - 6,DDMMYY10.));
CALL SYMPUT ('_5Day',PUT(today() - 5,DDMMYY10.));
CALL SYMPUT ('_4Day',PUT(today() - 4,DDMMYY10.));
CALL SYMPUT ('_3Day',PUT(today() - 3,DDMMYY10.));
CALL SYMPUT ('_2Day',PUT(today() - 2,DDMMYY10.));
CALL SYMPUT ('_1Day',PUT(today() - 1,DDMMYY10.));
RUN;
PROC REPORT DATA= have ;
define _6 / display "&_6Day";
define _5 / display "&_5Day";
define _4 / display "&_4Day";
define _3 / display "&_3Day";
define _2 / display "&_2Day";
define _1 / display "&_1Day";
run;
I get this:
while I want to get the below:
Condition | 30/12/2020 | 31/12/2020 | 01/01/2021 | 02/01/2021 | 03/01/2021 | 04/01/2021 |
A | 14 | 14 | 8 | 0 | 0 | 0 |
B | 3904 | 3918 | 3926 | 3926 | 3926 | 3926 |
C | 910 | 917 | 917 | 917 | 918 | 922 |
D | 1821 | 1816 | 1824 | 1825 | 1837 | 1824 |
E | 5 | 2 | 2 | 2 | 3 | 3 |
F | 1.8 | 1.8 | 1 | 0 | 0 | 0 |
It seems that the format DDMMYY10.
changes how the report is displayed. Is there any way to fix it?
Thanks.
The default SPLIT character for PROC REPORT is a slash. Just tell it to use some other character to mark where you want it to insert line breaks.
PROC REPORT DATA= have split='ff'x;
define _6 / display "&_6Day";
define _5 / display "&_5Day";
define _4 / display "&_4Day";
define _3 / display "&_3Day";
define _2 / display "&_2Day";
define _1 / display "&_1Day";
run;
Excel doesn't like the / character, it means line break in Excel. If you use a format with dashes or other separators, the problem goes away.
The default SPLIT character for PROC REPORT is a slash. Just tell it to use some other character to mark where you want it to insert line breaks.
PROC REPORT DATA= have split='ff'x;
define _6 / display "&_6Day";
define _5 / display "&_5Day";
define _4 / display "&_4Day";
define _3 / display "&_3Day";
define _2 / display "&_2Day";
define _1 / display "&_1Day";
run;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.