data testdata;
input cost_mth $9. monyyyy $10.;
datalines;
20NOV2023 NOV2023
1NOV2023 DEC2023
30NOV2023 DEC2023
;
RUN;
proc print data=testdata;run;
* cost_mth=21JAN2009 MONYYYY=DEC2006
proc sql;
create table default_cnt as
select
intnx('month',cost_mth,0,'e') as default_mth format=date9.
from testdata;
quit;
proc print data=default_cnt;
run;
DATA result;
set testdata;
test1=PUT(monyyyy,MONYY7.);
test2=PUT(A.default_mth+1, MONYY7.);
run;
proc print data=result;
run;
why doesnt my code works, it says out of proper order for the intnx statement
please helo
When code doesn't work, please show us the ENTIRE log (not just the error messages)
There are a few changes needed for your program.
I would code the first DATA step to actually read the values as dates and not as character value, like so:
data testdata;
input cost_mth : date9. monyyyy : monyy7.;
format cost_mth monyyyy date9.;
datalines;
20NOV2023 NOV2023
1NOV2023 DEC2023
30NOV2023 DEC2023
;
Second you are missing the ";" in you comment statement
In your last DATA step you read the data from the first DATA step, this data set is missing the default_mth variable (in the DATA step you just use the name of a variable, so A.default_mth will not work). Your SQL creates a table with one variable.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.
Ready to level-up your skills? Choose your own adventure.