DATA Step, Macro, Functions and more

Syntax Help

Accepted Solution Solved
Reply
Regular Contributor
Posts: 212
Accepted Solution

Syntax Help

Hi. I have two WHEN statements within my Case statement and I'm attempting to enclose part of the When statement in parentheses using SAS contatentation bars, but I'm getting syntax errors:

 

		proc sql;
		create table QueryData&ZIP5._&RULE_ORDER_CHAR as
		select DISTINCT %unquote(%str(%')&ANALYSIS_DESC.%str(%')) as rule_nm length = 58, 
					a.actual_dlvry_date as ad_dt, 
					a.imb_code length = 31, 
					&RULE_ORDER as rule_order,
					a.imb_dlvry_zip_5,
					CASE 
						WHEN "("||%scan(&rule_list, 1,#)||")" AND a.RULEFLAG = "-" THEN "&RULE_ORDER"
						WHEN "("||%scan(&rule_list, 2,#)||")" AND a.RULEFLAG = "-" THEN "&RULE_ORDER"
					END as RuleFlag
		from QueryData&ZIP5 as a 
		inner join QueryData&ZIP5 as b 
		on a.imb_code=b.imb_code 
		where a.source="A" and b.source="B" 
220                       &RULE_ORDER as rule_order,                     a.imb_dlvry_zip_5,                     CASE
220!               WHEN "("||%scan(&rule_list, 1,#)||")" AND a.RULEFLAG = "-" THEN "&RULE_ORDER"                         WHEN
                                                   --
                                                   22
                                                   76
220! "("||%scan
ERROR 22-322: Syntax error, expecting one of the following: !, &, AND, OR, THEN, |.

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

Can anyone help me to resolve this error?


Accepted Solutions
Solution
‎08-22-2016 03:57 PM
Trusted Advisor
Posts: 1,356

Re: Syntax Help

There is no need to do concatenation.

You may write:

    CASE WHEN (%scan(&rule_list, 1,#)) and ...

View solution in original post


All Replies
Solution
‎08-22-2016 03:57 PM
Trusted Advisor
Posts: 1,356

Re: Syntax Help

There is no need to do concatenation.

You may write:

    CASE WHEN (%scan(&rule_list, 1,#)) and ...

Regular Contributor
Posts: 212

Re: Syntax Help

Thanks for your insight!
Super User
Posts: 17,750

Re: Syntax Help

I'm not sure I see the need for macro code at all:

 

WHEN (scan("&rule_list", 1, "#") AND a.RULEFLAG = "-" THEN "&RULE_ORDER"
☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 208 views
  • 2 likes
  • 3 in conversation