BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
twildone
Pyrite | Level 9

Hi...I am trying to do a loop from one date to another but I am getting the following error message 22-322...any suggestions how to correct this...Thanks.

 

269 DATA K;

270 do date=&FROMYEAR7 to &TOYEAR7;

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

270 01JAN1900

_______

22

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

270 31DEC2100

_______

22

ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, *, **, +, ',', -,

/, <, <=, <>, =, >, ><, >=, AND, BY, EQ, GE, GT, IN, LE, LT, MAX, MIN, NE,

NG, NL, NOTIN, OR, ^=, |, ||, ~=.

271 if date= &FROMYEAR7 then do;

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

271 01JAN1900

_______

388

76

ERROR 388-185: Expecting an arithmetic operator.

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

 

1 ACCEPTED SOLUTION

Accepted Solutions
SASKiwi
PROC Star

Since your macro variables resolve to SAS dates you need to reference them as date strings like so (assuming the date variable is in fact a SAS date):

 

do date="&FROMYEAR7"d to "&TOYEAR7"d;

 

View solution in original post

4 REPLIES 4
DartRodrigo
Lapis Lazuli | Level 10

Hi mate, 

 

It is possible that you missed out some operator during your do loop. Checkout the syntax and paste the code here if possible

 

tks

SASKiwi
PROC Star

Since your macro variables resolve to SAS dates you need to reference them as date strings like so (assuming the date variable is in fact a SAS date):

 

do date="&FROMYEAR7"d to "&TOYEAR7"d;

 

twildone
Pyrite | Level 9
Hi...thanks....the double quotation marks rather than the single quotation marks resolved the problem and worked perfectly.
Cynthia_sas
SAS Super FREQ
Hi:
Without seeing more of your code, it looks to me like you need to specify date constants in your do loop:
do date="&FROMYEAR7"d to "&TOYEAR7"d;

Please review this example: http://support.sas.com/kb/24/573.html

When you are using Macro variables as the start and end variables, you need to enclose your macro variable values in double quotes (instead of single quotes), but the trailing D to indicate a date value is required. Otherwise, you get an error because this:

do date=01JAN1900 to 31DEC2100;

is not valid in code, but this would be:

data testit;
do date="01JAN1900"d to "31DEC2100"d;
put 'internal= ' date '~~~' 'formatted= ' date date9.;
end;
run;

cynthia

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

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
  • 4 replies
  • 3137 views
  • 4 likes
  • 4 in conversation