Problem Note 65310: An error message occurs when you use %IF-%THEN/%ELSE and %DO macro statements in open code
When you use %IF-%THEN/%ELSE and %DO macro statements in open code to conditionally build statements, an error can occur.
Here is an example of code that generates an error:
data _null_;
attrib
a length=3
%if 0 %then %do;
b length=4
%end;
%else %do;
c length=5
%end;;
run;
For example, the following error message can appear because of the %ELSE %DO; portion of the code:
ERROR 180-322: Statement is not valid or it is used out of proper order.
A workaround is to build complete statements, for example:
data _null_;
attrib a length=3;
%if 0 %then %do;
attrib b length=4;
%end;
%else %do;
attrib c length=5;
%end;
run;
Operating System and Release Information
SAS System | Base SAS | Windows 7 Ultimate 32 bit | 9.4 TS1M5 | 9.4 TS1M8 |
Windows 7 Ultimate x64 | 9.4 TS1M5 | 9.4 TS1M8 |
64-bit Enabled Solaris | 9.4 TS1M5 | 9.4 TS1M8 |
64-bit Enabled AIX | 9.4 TS1M5 | 9.4 TS1M8 |
Windows 7 Home Premium x64 | 9.4 TS1M5 | 9.4 TS1M8 |
Windows 7 Professional 32 bit | 9.4 TS1M5 | 9.4 TS1M8 |
Windows 7 Professional x64 | 9.4 TS1M5 | 9.4 TS1M8 |
Windows 7 Home Premium 32 bit | 9.4 TS1M5 | 9.4 TS1M8 |
Windows 7 Enterprise x64 | 9.4 TS1M5 | 9.4 TS1M8 |
Windows 7 Enterprise 32 bit | 9.4 TS1M5 | 9.4 TS1M8 |
Microsoft Windows Server 2016 | 9.4 TS1M5 | 9.4 TS1M8 |
Microsoft Windows Server 2012 Std | 9.4 TS1M5 | 9.4 TS1M8 |
Microsoft Windows Server 2012 R2 Std | 9.4 TS1M5 | 9.4 TS1M8 |
Microsoft Windows Server 2012 R2 Datacenter | 9.4 TS1M5 | 9.4 TS1M8 |
Microsoft Windows Server 2012 Datacenter | 9.4 TS1M5 | 9.4 TS1M8 |
Microsoft Windows Server 2008 for x64 | 9.4 TS1M5 | 9.4 TS1M8 |
Microsoft Windows Server 2008 R2 | 9.4 TS1M5 | 9.4 TS1M8 |
Microsoft Windows Server 2008 | 9.4 TS1M5 | 9.4 TS1M8 |
Microsoft Windows 10 | 9.4 TS1M5 | 9.4 TS1M8 |
Microsoft Windows 8.1 Pro x64 | 9.4 TS1M5 | 9.4 TS1M8 |
Microsoft Windows 8.1 Pro 32-bit | 9.4 TS1M5 | 9.4 TS1M8 |
Microsoft Windows 8.1 Enterprise x64 | 9.4 TS1M5 | 9.4 TS1M8 |
Microsoft Windows 8.1 Enterprise 32-bit | 9.4 TS1M5 | 9.4 TS1M8 |
Microsoft Windows 8 Pro x64 | 9.4 TS1M5 | 9.4 TS1M8 |
Microsoft Windows 8 Pro 32-bit | 9.4 TS1M5 | 9.4 TS1M8 |
Microsoft Windows 8 Enterprise x64 | 9.4 TS1M5 | 9.4 TS1M8 |
Microsoft Windows 8 Enterprise 32-bit | 9.4 TS1M5 | 9.4 TS1M8 |
Microsoft® Windows® for x64 | 9.4 TS1M5 | 9.4 TS1M8 |
z/OS 64-bit | 9.4 TS1M5 | 9.4 TS1M8 |
z/OS | 9.4 TS1M5 | 9.4 TS1M8 |
HP-UX IPF | 9.4 TS1M5 | 9.4 TS1M8 |
Linux for x64 | 9.4 TS1M5 | 9.4 TS1M8 |
Solaris for x64 | 9.4 TS1M5 | 9.4 TS1M8 |
*
For software releases that are not yet generally available, the Fixed
Release is the software release in which the problem is planned to be
fixed.
Generating a partial statement in open code with an %IF-%THEN/%ELSE macro statement might cause an error.
Type: | Problem Note |
Priority: | low |
Date Modified: | 2023-03-27 09:38:00 |
Date Created: | 2020-01-07 10:30:16 |