SAS Programming

DATA Step, Macro, Functions and more
BookmarkSubscribeRSS Feed
LMSSAS
Quartz | Level 8

hello - I continue to get the following error: ERROR 180-322: Statement is not valid or it is used out of proper order. I have been through this code for a day and can not correct this. The log is below, can someone please take a look and offer any insight. I an sending an email that loops through broker managers name, then their email address and sends that managers report to them. Thank you for your help

 

NOTE: Writing TAGSETS.SASREPORT13(EGSR) Body file: EGSR
33         
34         GOPTIONS ACCESSIBLE;
35         %macro hex2(n);
36                                         %local digits n1 n2;
37                                         %let digits = 0123456789ABCDEF;
38                                         %let n1 = %substr(&digits, &n / 16 + 1, 1);
39                                         %let n2 = %substr(&digits, &n - &n / 16 * 16 + 1, 1);
40                                         &n1&n2
41         %mend hex2;
42         %macro RGB(r,g,b);
43                                         %cmpres(CX%hex2(&r)%hex2(&g)%hex2(&b))
44         %mend RGB;
45         
46         proc sql;
47         select distinct brokermanager into: BrokerManager1 separated by " "
48         from brokermanageremail;
49         quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

50         
2                                                          The SAS System                                07:30 Tuesday, May 24, 2022

51         %macro reps1;
52         
53         %local i rep ;
54         %do i=1 %to %sysfunc(countw(&BrokerManager1));
55         %let rep = %scan(&BrokerManager1, &i);
56         
57         %put &BrokerManager1.;
58         %put &rep.;
59         
60         proc sql;
61         select distinct Email_Address into :Email_Address trimmed
62         from brokermanageremail
63         where BrokerManager = "&rep1."
64         ;quit;
65         
66         Filename myemail Clear;
67         FILENAME myemail EMAIL
68         sender=("")
69         from=("")
70         /*To = ("&rep_email.")*/
71         CC = ("")
72         bcc =("")
73         Subject = "Reports"
74         attach =("/u/&sysuserid./Agency Report_&rep..xlsx" content_type="application/vnd.ms-excel");
75         content_type="text/html";
76         /*ods msoffice2k file=myemail rs=none style=htmlblue;*/
77         /*options(pagebreak="no");*/
78         data _null_;
79         	file myemail;
80         	put '<body style=font-size:11pt;font-family:Times New Roman>';
81         	put     ' <p>Hello,';
82         	put    '</p> Please see the following attachment for an updated version of the Ready To Sell Broker Manager Report.' ;
83         	put      	'<p> This report is separated into 4 separate tabs.';
84         	put			'<p> 1. Agency Overview: A list of your sub-agencies that are populated with agents. If an agency has no agents,
84       ! that agency will not appear in this Overview.';
85         	put					'<p> a. Agency Name:';
86         	put          		'<p> b. AOR Code: of agency in column A.' ;
87         	put     			'<p> c. Level 3, Level 2 and TOH';
88         	put     					'<p> i. Indicates the level of the agency in relationship to the Top of Hierarchy agency';
89         	put					'<p> d. Agencies will have a line item row for each role in the agency (see column K) and possible a blank for
89       ! 2021';
90         	put					'<p> e. Columns O and P are contract completion and end dates';
91         	put     					'<p> i. Florida does not expire licenses, so more dates are pushed out to year 9999';
92         	put     					'<p> ii. This would be populated with a current date if the agent was terminated by request or due to
92       ! circumstances';
93         	put					'<p> g. L is the column that indicates if the agent has both AHIP and product certification training completed';
94         	put			'<p> 2. AHIP Needed: Agents for whom we have no AHIP transcripts in house, It is the receipt of these transcripts
94       ! that pushes the Product Certification training to the agents AHIP site';
95         	put     	'<p> 3. Ready to Train: Agents for whom we have AHIP on file, but they have not yet completed product
95       ! certification';
96         	put     	'<p> 4. Ready-to-Sell: Agents for whom we have received AHIP transcripts and who have successfully completed
96       ! product certification, These agents are fully certified and Read to Sell';
97         	put		'<p> If you have any questions, please reach out to the Agent Service Center at 800-267-3156, or the Florida Blue
97       ! Broker Agents mailbox at FBMBrokers@bcbsfl.com or your Local Broker Manager, based on the county you live in.';
98                    '<p> If you would like to add anyone to the distribution list for this report, please send an email to the
98       ! Florida Blue Broker Agents mailbox at FBMBrokers@bcbsfl.com and include Agency Name, Agency Code, and Email Address.';
99                    '<p> Thank you for your partnership with Florida Blue Medicare';
100        	
3                                                          The SAS System                                07:30 Tuesday, May 24, 2022

101        
102        
103        run;
104        
105        /*ods msoffice2k close;*/
106        %end;
107        %mend reps1;
108        %reps1;
Key Nguyen Sierra Sweat Theodore
Key
WARNING: Apparent symbolic reference REP1 not resolved.
NOTE: No rows were selected.
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

NOTE: Fileref MYEMAIL has been deassigned.
NOTE: Line generated by the invoked macro "REPS1".
108         = ("") bcc =("") Subject = "Broker Manager Reports" attach
108      ! =("/u/&sysuserid./Agency Report_&rep..xlsx" content_type="application/vnd.ms-excel"); content_type="text/html";   data
                                                                                                 ____________
                                                                                                 180
108      ! _null_;  file myemail;  put
ERROR 180-322: Statement is not valid or it is used out of proper order.

NOTE: Line generated by the invoked macro "REPS1".
108                    '<p> If you would like to add anyone to the distribution list for this report, please send an email to the
                       ___________________________________________________________________________________________________________
                       180
108      !  Agents mailbox at Testemail.com and include Agency Name, Agency Code, and Email Address.';
NOTE: Line generated by the invoked macro "REPS1".
108                    '<p> Thank you for your partnership';        run;
                       _______________________________________________________________
                       180

ERROR 180-322: Statement is not valid or it is used out of proper order.

NOTE: The SAS System stopped processing this step because of errors.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

Key Nguyen Sierra Sweat Theodore
Nguyen
WARNING: Apparent symbolic reference REP1 not resolved.
NOTE: No rows were selected.
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

NOTE: Fileref MYEMAIL has been deassigned.
NOTE: Line generated by the invoked macro "REPS1".
108         = ("") bcc =("") Subject = "Broker Manager Reports" attach
108      ! =("/u/&sysuserid./Agency Report_&rep..xlsx" content_type="application/vnd.ms-excel"); content_type="text/html";   data
                                                                                                 ____________
4                                                          The SAS System                                07:30 Tuesday, May 24, 2022

                                                                                                 180
108      ! _null_;  file myemail;  put
ERROR 180-322: Statement is not valid or it is used out of proper order.

NOTE: Line generated by the invoked macro "REPS1".
108                    '<p> If you would like to add anyone to the distribution list for this report, please send an email to the
                       ___________________________________________________________________________________________________________
                       180
108      !  Agents mailbox at testemail@bcbsfl.com and include Agency Name, Agency Code, and Email Address.';
NOTE: Line generated by the invoked macro "REPS1".
108                    '<p> Thank you for your partnership';        run;
                       _______________________________________________________________
                       180

ERROR 180-322: Statement is not valid or it is used out of proper order.

NOTE: The SAS System stopped processing this step because of errors.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

Key Nguyen Sierra Sweat Theodore
Sierra
WARNING: Apparent symbolic reference REP1 not resolved.
NOTE: No rows were selected.
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

NOTE: Fileref MYEMAIL has been deassigned.
NOTE: Line generated by the invoked macro "REPS1".
108         = ("") bcc =("") Subject = "Broker Manager Reports" attach
108      ! =("/u/&sysuserid./Agency Report_&rep..xlsx" content_type="application/vnd.ms-excel"); content_type="text/html";   data
                                                                                                 ____________
                                                                                                 180
108      ! _null_;  file myemail;  put
ERROR 180-322: Statement is not valid or it is used out of proper order.

NOTE: Line generated by the invoked macro "REPS1".
108                    '<p> If you would like to add anyone to the distribution list for this report, please send an email to the
                       ___________________________________________________________________________________________________________
                       180
108      ! Agents mailbox at Testemal@bcbsfl.com and include Agency Name, Agency Code, and Email Address.';
NOTE: Line generated by the invoked macro "REPS1".
108                    '<p> Thank you for your partnershi';        run;
                       _______________________________________________________________
                       180

ERROR 180-322: Statement is not valid or it is used out of proper order.

NOTE: The SAS System stopped processing this step because of errors.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

5                                                          The SAS System                                07:30 Tuesday, May 24, 2022

Key Nguyen Sierra Sweat Theodore
Sweat
WARNING: Apparent symbolic reference REP1 not resolved.
NOTE: No rows were selected.
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

NOTE: Fileref MYEMAIL has been deassigned.
NOTE: Line generated by the invoked macro "REPS1".
108         = ("") bcc =("") Subject = "Broker Manager Reports" attach
108      ! =("/u/&sysuserid./Agency Report_&rep..xlsx" content_type="application/vnd.ms-excel"); content_type="text/html";   data
                                                                                                 ____________
                                                                                                 180
108      ! _null_;  file myemail;  put
ERROR 180-322: Statement is not valid or it is used out of proper order.

NOTE: Line generated by the invoked macro "REPS1".
108                    '<p> If you would like to add anyone to the distribution list for this report, please send an email to the
                       ___________________________________________________________________________________________________________
                       180
108      ! Agents mailbox at testemail@bcbsfl.com and include Agency Name, Agency Code, and Email Address.';
NOTE: Line generated by the invoked macro "REPS1".
108                    '<p> Thank you for your partnership';        run;
                       _______________________________________________________________
                       180

ERROR 180-322: Statement is not valid or it is used out of proper order.

NOTE: The SAS System stopped processing this step because of errors.
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

Key Nguyen Sierra Sweat Theodore
Theodore
WARNING: Apparent symbolic reference REP1 not resolved.
NOTE: No rows were selected.
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      

NOTE: Fileref MYEMAIL has been deassigned.
NOTE: Line generated by the invoked macro "REPS1".
108         = ("") bcc =("") Subject = "Broker Manager Reports" attach
108      ! =("/u/&sysuserid./Agency Report_&rep..xlsx" content_type="application/vnd.ms-excel"); content_type="text/html";   data
                                                                                                 ____________
                                                                                                 180
108      ! _null_;  file myemail;  put
ERROR 180-322: Statement is not valid or it is used out of proper order.

NOTE: Line generated by the invoked macro "REPS1".
108                    '<p> If you would like to add anyone to the distribution list for this report, please send an email to the
                       ___________________________________________________________________________________________________________
                       180
6                                                          The SAS System                                07:30 Tuesday, May 24, 2022

108      ! Agents mailbox at Testemail@bcbsfl.com and include Agency Name, Agency Code, and Email Address.';
NOTE: Line generated by the invoked macro "REPS1".
108                    '<p> Thank you for your partnership';        run;
                       _______________________________________________________________
                       180

ERROR 180-322: Statement is not valid or it is used out of proper order.
2 REPLIES 2
PaigeMiller
Diamond | Level 26

Maybe the problem is this:

 

73         Subject = "Reports"
74         attach =("/u/&sysuserid./Agency Report_&rep..xlsx" content_type="application/vnd.ms-excel");
75         content_type="text/html";

You have an extra semi-colon.

 

From now on, when you have errors in a macro, turn on the macro debugging by running this command

 

options mprint;

and then run the macro again, and show us the LOG. We need to see the ENTIRE log, not selected parts.

--
Paige Miller
ballardw
Super User

Let's look at some of your code:

    %let rep = %scan(&BrokerManager1, &i);
56         
57         %put &BrokerManager1.;
58         %put &rep.;
59         
60         proc sql;
61         select distinct Email_Address into :Email_Address trimmed
62         from brokermanageremail
63         where BrokerManager = "&rep1."

 You define a macro variable REP. You use %put with macro variable REP. You attempt to select values of a variable from the data set with a macro variable REP1 that does not show a definition or value set anywhere. 

Suspect you mean to use BrokerManager= "&rep."

sas-innovate-white.png

Our biggest data and AI event of the year.

Don’t miss the livestream kicking off May 7. It’s free. It’s easy. And it’s the best seat in the house.

Join us virtually with our complimentary SAS Innovate Digital Pass. Watch live or on-demand in multiple languages, with translations available to help you get the most out of every session.

 

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 649 views
  • 0 likes
  • 3 in conversation