BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Q1983
Lapis Lazuli | Level 10

data _null_;

LMTE=intnx('Month',&pbd_date,-1,'b');

 CALL SYMPUT('BegDate', PUT( LMTE,date9.));

run;

%put &BegDate;

 

This date macro resolves to 01NOV2015 which is the first day of last month.  Note &pbd_date is a calendar defined variable that assigns the current date, in this case -1 month

 

Now when I use &BegDate in the script such as

 

data Decisioned_In_Time_  (keep = ln_no

                                                d_lm_workout_type

                                               

                                                lm_referral_cd

                                                ln_lol_msg_xx

                                                lol_rec_chng_dt

                                                bkr_status_cd

                                                bkr_setup_dt

                                                bkr_removal_dt

                                                _385_to_Decision

/*                                              Trial_Doc_Prep_to_Street*/

/*                                              Final_Doc_Prep_to_Street*/

/*                                              Tri_or_Fin_Doc_to_Str_3pl_days*/

                                                d_lm_reject_fail_dt

                                                lm_removal_dt

                                                lm_status_cd)

                                                ;

     retain ln_no

                Critical_Step

                Critical_nm

               

                lm_removal_dt;

     merge      Dors_Mtg_daily (where = (d_lm_negotiation_dt ne .

                                                                and not(index(d_lm_workout_status,'NEGOTIATION'))

                                                                and (d_lm_rp_fb_to_doc_prep_dt >= &BegDate.

                                                                     or d_lm_qa_trial_dt >= &BegDate.

                                                                      or d_lm_workout_approved_dt >= &BegDate.

                                                                     or d_lm_trial_doc_prep_qa_dt >= &BegDate.

                                                                     or d_lm_trial_on_street_dt >= &BegDate.

                                                                     or d_lm_verbal_accept_dt >= &BegDate.

                                                                     or d_lm_workout_trial_start_dt >= &BegDate.

                                                                     or d_lm_final_review_dt >= &BegDate.

                                                                     or d_lm_qa_final_dt >= &BegDate.

                                                                     or d_lm_final_approved_dt >= &BegDate.

                                                                     or d_lm_final_doc_prep_qa_dt >= &BegDate.

                                                                     or d_lm_final_on_street_dt >= &BegDate.

                                                                     or d_lm_settled_pend_funds_dt >= &BegDate.

                                                                     or d_lm_workout_fulfill_dt >= &BegDate.

                                                                     or d_lm_reject_fail_dt >= &BegDate.

                                                                     or lm_removal_dt >= &BegDate.)

run;

NOTE: Line generated by the macro variable "BEGDATE".

01NOV2015

         -------

         22

         76

ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, *, **, +, -, /, <, <=, <>, =, >, >=, AND, EQ, GE, GT, LE, LT, NE, OR, ^=,

              |, ||, ~=. 

 

ERROR 76-322: Syntax error, statement will be ignored.

 

It appears sas is attempting to convert the date into a character.  I have no idea why

1 ACCEPTED SOLUTION

Accepted Solutions
JoshB
Quartz | Level 8

You either want to store the date value in the macro variable BEGDATE as the numeric representation instead of DATE9 format, or, what I would do is just tell SAS that you're resolving a date with the macro variable. e.g.

 

"&BegDate."d

View solution in original post

3 REPLIES 3
JoshB
Quartz | Level 8

You either want to store the date value in the macro variable BEGDATE as the numeric representation instead of DATE9 format, or, what I would do is just tell SAS that you're resolving a date with the macro variable. e.g.

 

"&BegDate."d

Reeza
Super User

The other option is to change how you create the macro variable, but it won't look like a date anymore.

 

 

data _null_;

LMTE=intnx('Month',&pbd_date,-1,'b');

 CALL SYMPUT('BegDate', LMTE);

run;

 

%put &BegDate;

hbi
Quartz | Level 8 hbi
Quartz | Level 8

Give this a try: 

 

data _null_;
  LMTE            = intnx('Month',&pbd_date,-1,'b');
  LMTE_cats_date9 = CATS('"', PUT(LMTE,date9.), '"', 'd');
  CALL SYMPUT('BegDate', LMTE_cats_date9);
run;
%PUT &BegDate;

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

How to Concatenate Values

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 3 replies
  • 1741 views
  • 2 likes
  • 4 in conversation