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.
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
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.