<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: ERROR 117-185: There was 1 unclosed DO block. in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432192#M107004</link>
    <description>&lt;P&gt;Please post the code of macro %u_table. The ERROR is caused there.&lt;/P&gt;</description>
    <pubDate>Tue, 30 Jan 2018 14:07:29 GMT</pubDate>
    <dc:creator>Kurt_Bremser</dc:creator>
    <dc:date>2018-01-30T14:07:29Z</dc:date>
    <item>
      <title>ERROR 117-185: There was 1 unclosed DO block.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432182#M107001</link>
      <description>&lt;P&gt;I am writing following code.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;%let Category_Val =70 79;&lt;/P&gt;&lt;P&gt;data _null_;&lt;BR /&gt;array x ( %sysfunc(countw(&amp;amp;Category_Val)) ) _temporary_ (&amp;amp;Category_Val);&lt;BR /&gt;do i=1 to dim(x);&lt;BR /&gt;putlog x(i)= ;&lt;BR /&gt;%U_Table(Cat_ID=x[i]);&lt;BR /&gt;end;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%u_table code&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;%Macro U_Table(Cat_ID=);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/********************************************************************************************************************/&lt;BR /&gt;/* Product Details---TMG.CMI_PRODUCT*/&lt;BR /&gt;/***** TMG.DS_PRODUCT*****/&lt;BR /&gt;/********************************************************************************************************************/&lt;/P&gt;&lt;P&gt;/*Note:&lt;BR /&gt;This is to delete table structure and data from TMG table so we can edit and recreate this table*/&lt;/P&gt;&lt;P&gt;PROC SQL;&lt;BR /&gt;CONNECT TO TERADATA&lt;BR /&gt;( OVERRIDE_RESP_LEN=YES SERVER=DBC AUTHDOMAIN="TERADATAAUTH" MODE=TERADATA);&lt;BR /&gt;EXECUTE&lt;BR /&gt;(&lt;BR /&gt;DROP TABLE TMG.DS_PRODUCT;&lt;BR /&gt;)&lt;BR /&gt;BY TERADATA;&lt;BR /&gt;DISCONNECT FROM TERADATA;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;PROC SQL;&lt;BR /&gt;CONNECT TO TERADATA&lt;BR /&gt;( OVERRIDE_RESP_LEN=YES SERVER=DBC AUTHDOMAIN="TERADATAAUTH" MODE=TERADATA);&lt;BR /&gt;EXECUTE&lt;BR /&gt;(&lt;BR /&gt;CREATE MULTISET TABLE TMG.DS_PRODUCT ,NO FALLBACK ,&lt;BR /&gt;NO BEFORE JOURNAL,&lt;BR /&gt;NO AFTER JOURNAL,&lt;BR /&gt;CHECKSUM = DEFAULT,&lt;BR /&gt;DEFAULT MERGEBLOCKRATIO&lt;BR /&gt;(&lt;BR /&gt;LINE_DESC CHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;LINE_NUMBER CHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_CATEGORY_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_CATEGORY_ID INTEGER NOT NULL,&lt;BR /&gt;SH_DEPARTMENT_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_DEPARTMENT_ID INTEGER NOT NULL,&lt;BR /&gt;SH_DIVISION_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_DIVISION_ID INTEGER NOT NULL,&lt;BR /&gt;SH_LW_ALT_CATEGORY_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_LW_ALT_CATEGORY_ID INTEGER NOT NULL,&lt;BR /&gt;SH_LW_ALT_DEPARTMENT_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_LW_ALT_DEPARTMENT_ID INTEGER NOT NULL,&lt;BR /&gt;SH_PRODUCT_BRAND_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_PRODUCT_RANGE_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_PRODUCT_RANGE_ID INTEGER NOT NULL,&lt;BR /&gt;SH_PRODUCT_TYPE_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_SD_ALT_CATEGORY_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_SD_ALT_CATEGORY_ID INTEGER NOT NULL,&lt;BR /&gt;SH_SD_ALT_DEPARTMENT_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_SD_ALT_DEPARTMENT_ID INTEGER NOT NULL&lt;BR /&gt;)&lt;BR /&gt;PRIMARY INDEX ( LINE_NUMBER );&lt;/P&gt;&lt;P&gt;)&lt;BR /&gt;BY TERADATA;&lt;BR /&gt;DISCONNECT FROM TERADATA;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;PROC SQL;&lt;BR /&gt;CONNECT TO TERADATA&lt;BR /&gt;( OVERRIDE_RESP_LEN=YES SERVER=DBC AUTHDOMAIN="TERADATAAUTH" MODE=TERADATA);&lt;BR /&gt;EXECUTE&lt;BR /&gt;(&lt;BR /&gt;INSERT INTO TMG.DS_PRODUCT&lt;BR /&gt;SELECT&lt;BR /&gt;LINE_DESC,&lt;BR /&gt;LINE_NUMBER,&lt;BR /&gt;SH_CATEGORY_DESC,&lt;BR /&gt;SH_CATEGORY_ID,&lt;BR /&gt;SH_DEPARTMENT_DESC,&lt;BR /&gt;SH_DEPARTMENT_ID,&lt;BR /&gt;SH_DIVISION_DESC,&lt;BR /&gt;SH_DIVISION_ID,&lt;BR /&gt;SH_LW_ALT_CATEGORY_DESC,&lt;BR /&gt;SH_LW_ALT_CATEGORY_ID,&lt;BR /&gt;SH_LW_ALT_DEPARTMENT_DESC,&lt;BR /&gt;SH_LW_ALT_DEPARTMENT_ID,&lt;BR /&gt;SH_PRODUCT_BRAND_DESC,&lt;BR /&gt;SH_PRODUCT_RANGE_DESC,&lt;BR /&gt;SH_PRODUCT_RANGE_ID,&lt;BR /&gt;SH_PRODUCT_TYPE_DESC,&lt;BR /&gt;SH_SD_ALT_CATEGORY_DESC,&lt;BR /&gt;SH_SD_ALT_CATEGORY_ID,&lt;BR /&gt;SH_SD_ALT_DEPARTMENT_DESC,&lt;BR /&gt;SH_SD_ALT_DEPARTMENT_ID&lt;BR /&gt;&lt;BR /&gt;FROM CIS.CMI_PRODUCT&lt;BR /&gt;/**** TO REMOVE DUPLICATES FOR A LINE NUMBER. THERE SHOULDN’T HAVE BEEN ANY DUPLICATES IDEALLY, BUT THERE ARE***/&lt;BR /&gt;QUALIFY ROW_NUMBER() OVER(PARTITION BY LINE_NUMBER ORDER BY 1)=1&lt;BR /&gt;WHERE&lt;BR /&gt;SH_CATEGORY_ID IN (&amp;amp;Cat_ID.)&lt;BR /&gt;)&lt;BR /&gt;BY TERADATA;&lt;BR /&gt;DISCONNECT FROM TERADATA;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/**/&lt;BR /&gt;/*% U_Table("COOKWARE &amp;amp; KITCHEN");*/&lt;/P&gt;&lt;P&gt;/*************************************Cross join with the Calendar Date******************************************/&lt;/P&gt;&lt;P&gt;PROC SQL;&lt;BR /&gt;CONNECT TO TERADATA&lt;BR /&gt;( OVERRIDE_RESP_LEN=YES SERVER=DBC AUTHDOMAIN="TERADATAAUTH" MODE=TERADATA);&lt;BR /&gt;EXECUTE&lt;BR /&gt;(&lt;BR /&gt;DROP TABLE TMG.DS_PRODUCT_FINAL;&lt;BR /&gt;)&lt;BR /&gt;BY TERADATA;&lt;BR /&gt;DISCONNECT FROM TERADATA;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;PROC SQL;&lt;BR /&gt;CONNECT TO TERADATA&lt;BR /&gt;( OVERRIDE_RESP_LEN=YES SERVER=DBC AUTHDOMAIN="TERADATAAUTH" MODE=TERADATA);&lt;BR /&gt;EXECUTE&lt;BR /&gt;(&lt;BR /&gt;CREATE MULTISET TABLE TMG.DS_PRODUCT_FINAL ,NO FALLBACK ,&lt;BR /&gt;NO BEFORE JOURNAL,&lt;BR /&gt;NO AFTER JOURNAL,&lt;BR /&gt;CHECKSUM = DEFAULT,&lt;BR /&gt;DEFAULT MERGEBLOCKRATIO&lt;BR /&gt;(&lt;BR /&gt;LINE_DESC CHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;LINE_NUMBER CHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_CATEGORY_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_CATEGORY_ID INTEGER NOT NULL,&lt;BR /&gt;SH_DEPARTMENT_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_DEPARTMENT_ID INTEGER NOT NULL,&lt;BR /&gt;SH_DIVISION_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_DIVISION_ID INTEGER NOT NULL,&lt;BR /&gt;SH_LW_ALT_CATEGORY_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_LW_ALT_CATEGORY_ID INTEGER NOT NULL,&lt;BR /&gt;SH_LW_ALT_DEPARTMENT_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_LW_ALT_DEPARTMENT_ID INTEGER NOT NULL,&lt;BR /&gt;SH_PRODUCT_BRAND_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_PRODUCT_RANGE_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_PRODUCT_RANGE_ID INTEGER NOT NULL,&lt;BR /&gt;SH_PRODUCT_TYPE_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_SD_ALT_CATEGORY_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_SD_ALT_CATEGORY_ID INTEGER NOT NULL,&lt;BR /&gt;SH_SD_ALT_DEPARTMENT_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_SD_ALT_DEPARTMENT_ID INTEGER NOT NULL,&lt;BR /&gt;CALENDAR_DATE DATE FORMAT 'YYYY-MM-DD'&lt;BR /&gt;)&lt;BR /&gt;PRIMARY INDEX ( LINE_NUMBER );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;)&lt;BR /&gt;BY TERADATA;&lt;BR /&gt;DISCONNECT FROM TERADATA;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;PROC SQL;&lt;BR /&gt;CONNECT TO TERADATA&lt;BR /&gt;( OVERRIDE_RESP_LEN=YES SERVER=DBC AUTHDOMAIN="TERADATAAUTH" MODE=TERADATA);&lt;BR /&gt;EXECUTE&lt;BR /&gt;(&lt;BR /&gt;INSERT INTO TMG.DS_PRODUCT_FINAL&lt;BR /&gt;SELECT&lt;BR /&gt;LINE_DESC,&lt;BR /&gt;LINE_NUMBER,&lt;BR /&gt;SH_CATEGORY_DESC,&lt;BR /&gt;SH_CATEGORY_ID,&lt;BR /&gt;SH_DEPARTMENT_DESC,&lt;BR /&gt;SH_DEPARTMENT_ID,&lt;BR /&gt;SH_DIVISION_DESC,&lt;BR /&gt;SH_DIVISION_ID,&lt;BR /&gt;SH_LW_ALT_CATEGORY_DESC,&lt;BR /&gt;SH_LW_ALT_CATEGORY_ID,&lt;BR /&gt;SH_LW_ALT_DEPARTMENT_DESC,&lt;BR /&gt;SH_LW_ALT_DEPARTMENT_ID,&lt;BR /&gt;SH_PRODUCT_BRAND_DESC,&lt;BR /&gt;SH_PRODUCT_RANGE_DESC,&lt;BR /&gt;SH_PRODUCT_RANGE_ID,&lt;BR /&gt;SH_PRODUCT_TYPE_DESC,&lt;BR /&gt;SH_SD_ALT_CATEGORY_DESC,&lt;BR /&gt;SH_SD_ALT_CATEGORY_ID,&lt;BR /&gt;SH_SD_ALT_DEPARTMENT_DESC,&lt;BR /&gt;SH_SD_ALT_DEPARTMENT_ID,&lt;BR /&gt;B.CALENDAR_DATE&lt;BR /&gt;FROM TMG.DS_PRODUCT&lt;BR /&gt;CROSS JOIN TMG.DS_REQUESTED_DATE B&lt;/P&gt;&lt;P&gt;)&lt;BR /&gt;BY TERADATA;&lt;BR /&gt;DISCONNECT FROM TERADATA;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/*%SQUEEZE(TMG.DS_PRODUCT_FINAL,PDATA.DS_PRODUCT_U);*/&lt;/P&gt;&lt;P&gt;data PDATA.DS_PRODUCT_U;&lt;BR /&gt;set TMG.DS_PRODUCT_FINAL;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;PROC SORT DATA=PDATA.DS_PRODUCT_U;BY LINE_NUMBER CALENDAR_DATE;RUN;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/*Note:**************************************************************************************&lt;BR /&gt;This is creating the structure for the table Product Details, which consists details like department, category, product&lt;BR /&gt;range, desc etc.&lt;BR /&gt;Source table: CIS.CMI_PRODUCT&lt;BR /&gt;Output Table: TMG.DS_PRODUCT&lt;BR /&gt;****************************************************************************************End*/&lt;BR /&gt;proc sort data=PDATA.DS_PRODUCT_U;by line_number CALENDAR_DATE;run;&lt;/P&gt;&lt;P&gt;proc sort data=PDATA.DS_WEBSESSION_U;by line_number CALENDAR_DATE;run;&lt;BR /&gt;proc sort data=PDATA.DS_ABANDON_U;by line_number CALENDAR_DATE;run;&lt;BR /&gt;proc sort data=PDATA.DS_DEMAND_U;by line_number CALENDAR_DATE;run;&lt;BR /&gt;proc sort data=PDATA.DS_NETDISPATCH_U;by line_number CALENDAR_DATE;run;&lt;BR /&gt;proc sort data=PDATA.DS_RETURN_U;by line_number CALENDAR_DATE;run;&lt;BR /&gt;proc sort data=PDATA.DS_PRICE_U;by line_number CALENDAR_DATE;run;&lt;/P&gt;&lt;P&gt;proc sort data=PDATA.DS_WARRANTY_ITEM_U;by line_number;run;&lt;BR /&gt;proc sort data=PDATA.DS_INSRUANCE_FLAG_U;by line_number;run;&lt;BR /&gt;proc sort data=PDATA.DS_PRODUCT_OFFER_U;by line_number;run;&lt;BR /&gt;proc sort data=PDATA.DS_PRODUCT_ATTRIBUTE_U;by line_number;run;&lt;BR /&gt;proc sort data=PDATA.DS_PRODUCT_REVIEW_U;by line_number;run;&lt;BR /&gt;proc sort data=PDATA.DS_ASSOCIATED_PRODUCT_U;by line_number;run;&lt;/P&gt;&lt;P&gt;proc sort data=PDATA.DS_ATTRIBUTE_U;by line_number ;run;&lt;BR /&gt;proc sort data=PDATA.DS_PRODUCT_MINERVA_U;by line_number;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data PDATA.DS_ENDTOEND_1;&lt;BR /&gt;merge&lt;BR /&gt;PDATA.DS_PRODUCT_U(in=a)&lt;/P&gt;&lt;P&gt;PDATA.DS_WEBSESSION_U&lt;BR /&gt;PDATA.DS_ABANDON_U&lt;BR /&gt;PDATA.DS_DEMAND_U&lt;BR /&gt;PDATA.DS_NETDISPATCH_U&lt;BR /&gt;PDATA.DS_RETURN_U&lt;BR /&gt;PDATA.DS_PRICE_U;&lt;BR /&gt;by line_number CALENDAR_DATE;&lt;BR /&gt;if a=1;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/*data DS_ENDTOEND_1_sample;*/&lt;BR /&gt;/*set PDATA.DS_ENDTOEND(obs=100);*/&lt;BR /&gt;/*where n_view&amp;lt;&amp;gt;.;*/&lt;BR /&gt;/*run;*/&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;data PDATA.DS_ENDTOEND_2;&lt;BR /&gt;merge&lt;BR /&gt;PDATA.DS_PRODUCT_U(in=a)&lt;BR /&gt;PDATA.DS_PRODUCT_OFFER_U&lt;BR /&gt;PDATA.DS_WARRANTY_ITEM_U&lt;BR /&gt;PDATA.DS_INSRUANCE_FLAG_U&lt;BR /&gt;PDATA.DS_PRODUCT_REVIEW_U&lt;BR /&gt;PDATA.DS_ASSOCIATED_PRODUCT_U&lt;/P&gt;&lt;P&gt;PDATA.DS_PRODUCT_ATTRIBUTE_U&lt;BR /&gt;PDATA.DS_ATTRIBUTE_U;&lt;/P&gt;&lt;P&gt;by LINE_NUMBER;&lt;BR /&gt;if a=1;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;DATA PDATA.DS_ENDTOEND_ALL;&lt;BR /&gt;MERGE&lt;BR /&gt;PDATA.DS_PRODUCT_U(IN=A)&lt;BR /&gt;PDATA.DS_ENDTOEND_1&lt;BR /&gt;PDATA.DS_ENDTOEND_2&lt;BR /&gt;;BY LINE_NUMBER;&lt;BR /&gt;IF A=1;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;%Append_Create()&lt;/P&gt;&lt;P&gt;%Mend U_Table;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am passing value from Category_Val to my macro U_Table which actually create a table and update it. Macro is working with one parameter very well. Now my requirement is to pass the category value one by one in macro and keep appending the table from macro. My errors are&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;ERROR 117-185: There was 1 unclosed DO block.&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 14:43:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432182#M107001</guid>
      <dc:creator>Deepankar</dc:creator>
      <dc:date>2018-01-30T14:43:49Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR 117-185: There was 1 unclosed DO block.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432189#M107002</link>
      <description>&lt;P&gt;Can't tell from you post, post full code/log so we can see what is going on.&amp;nbsp; Also, I really would question why you need to pass a parameter into datastep, you create a generic array, with which to call a macro with that element.&amp;nbsp; Sounds like a total faff just to use some macro code.&amp;nbsp; A slight change to data structure or programming will make this very simple.&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 13:54:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432189#M107002</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2018-01-30T13:54:04Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR 117-185: There was 1 unclosed DO block.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432191#M107003</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/190171"&gt;@Deepankar&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;I am writing following code.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;%let Category_Val =70 79;&lt;/P&gt;
&lt;P&gt;data _null_;&lt;BR /&gt;array x ( %sysfunc(countw(&amp;amp;Category_Val)) ) _temporary_ (&amp;amp;Category_Val);&lt;BR /&gt;do i=1 to dim(x);&lt;BR /&gt;putlog x(i)= ;&lt;BR /&gt;%U_Table(Cat_ID=x[i]);&lt;BR /&gt;end;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am passing value from Category_Val to my macro U_Table which actually create a table and update it. Macro is working with one parameter very well. Now my requirement is to pass the category value one by one in macro and keep appending the table from macro. My errors are&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;ERROR 117-185: There was 1 unclosed DO block.&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The problem is caused by the code coming from %U_Table. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;27         %let Category_Val =70 79;
28         data _null_;
29            array x ( %sysfunc(countw(&amp;amp;Category_Val)) ) _temporary_ (&amp;amp;Category_Val);
30            do i=1 to dim(x);
31               putlog x(i)= ;
32               /*%U_Table(Cat_ID=x[i]);*/
33               end;
34            run;

x[1]=70
x[2]=79&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 30 Jan 2018 14:03:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432191#M107003</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2018-01-30T14:03:49Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR 117-185: There was 1 unclosed DO block.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432192#M107004</link>
      <description>&lt;P&gt;Please post the code of macro %u_table. The ERROR is caused there.&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 14:07:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432192#M107004</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2018-01-30T14:07:29Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR 117-185: There was 1 unclosed DO block.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432198#M107007</link>
      <description>&lt;P&gt;Your macro must generate a data or proc step.&amp;nbsp; You cannot nest steps. Once SAS sees another data step or proc step starting it knows you are done defining the current step and tries to run it.&amp;nbsp; Hence the missing END statement.&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 14:26:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432198#M107007</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2018-01-30T14:26:16Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR 117-185: There was 1 unclosed DO block.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432201#M107008</link>
      <description>&lt;P&gt;Are you asking me to run this inside a macro like&lt;/P&gt;&lt;P&gt;&amp;nbsp;%let Category_Val =70 79;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%macro abc();&lt;BR /&gt;array x ( %sysfunc(countw(&amp;amp;Category_Val)) ) _temporary_ (&amp;amp;Category_Val);&lt;BR /&gt;do i=1 to dim(x);&lt;BR /&gt;putlog x[i]= ;&lt;BR /&gt;%U_Table(Cat_ID=x[i]);&lt;BR /&gt;end;&lt;BR /&gt;%mend abc;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;this is also showing error&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;array x ( %sysfunc(countw(&amp;amp;Category_Val)) ) _temporary_ (&amp;amp;Category_Val);&lt;BR /&gt;_____&lt;BR /&gt;180&lt;BR /&gt;MPRINT(ABC): array x ( 2 ) _temporary_ (70 79);&lt;/P&gt;&lt;P&gt;ERROR 180-322: Statement is not valid or it is used out of proper order.&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 14:27:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432201#M107008</guid>
      <dc:creator>Deepankar</dc:creator>
      <dc:date>2018-01-30T14:27:55Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR 117-185: There was 1 unclosed DO block.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432202#M107009</link>
      <description>&lt;P&gt;I know, but when I run u_table separate&amp;nbsp;it runs fine.&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 14:29:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432202#M107009</guid>
      <dc:creator>Deepankar</dc:creator>
      <dc:date>2018-01-30T14:29:40Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR 117-185: There was 1 unclosed DO block.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432203#M107010</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/190171"&gt;@Deepankar&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;Are you asking me to run this inside a macro like&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;We are asking you to show us the code for the u_table macro.&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 14:30:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432203#M107010</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2018-01-30T14:30:02Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR 117-185: There was 1 unclosed DO block.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432206#M107011</link>
      <description>&lt;P&gt;can you give me an example how to do it.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My purpose is to run macro u_table while i want to pass the parameter from an array.&lt;/P&gt;&lt;P&gt;I dont&amp;nbsp;know the array size.it can be anything.&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 14:31:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432206#M107011</guid>
      <dc:creator>Deepankar</dc:creator>
      <dc:date>2018-01-30T14:31:35Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR 117-185: There was 1 unclosed DO block.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432209#M107013</link>
      <description>&lt;P&gt;&lt;STRONG&gt;SHOW.THE.CODE.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Can you understand it now?&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 14:35:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432209#M107013</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2018-01-30T14:35:35Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR 117-185: There was 1 unclosed DO block.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432212#M107015</link>
      <description>&lt;P&gt;U_Table Macro&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;%Macro U_Table(Cat_ID=);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/********************************************************************************************************************/&lt;BR /&gt;/* Product Details---TMG.CMI_PRODUCT*/&lt;BR /&gt;/***** TMG.DS_PRODUCT*****/&lt;BR /&gt;/********************************************************************************************************************/&lt;/P&gt;&lt;P&gt;/*Note:&lt;BR /&gt;This is to delete table structure and data from TMG table so we can edit and recreate this table*/&lt;/P&gt;&lt;P&gt;PROC SQL;&lt;BR /&gt;CONNECT TO TERADATA&lt;BR /&gt;( OVERRIDE_RESP_LEN=YES SERVER=DBC AUTHDOMAIN="TERADATAAUTH" MODE=TERADATA);&lt;BR /&gt;EXECUTE&lt;BR /&gt;(&lt;BR /&gt;DROP TABLE TMG.DS_PRODUCT;&lt;BR /&gt;)&lt;BR /&gt;BY TERADATA;&lt;BR /&gt;DISCONNECT FROM TERADATA;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;PROC SQL;&lt;BR /&gt;CONNECT TO TERADATA&lt;BR /&gt;( OVERRIDE_RESP_LEN=YES SERVER=DBC AUTHDOMAIN="TERADATAAUTH" MODE=TERADATA);&lt;BR /&gt;EXECUTE&lt;BR /&gt;(&lt;BR /&gt;CREATE MULTISET TABLE TMG.DS_PRODUCT ,NO FALLBACK ,&lt;BR /&gt;NO BEFORE JOURNAL,&lt;BR /&gt;NO AFTER JOURNAL,&lt;BR /&gt;CHECKSUM = DEFAULT,&lt;BR /&gt;DEFAULT MERGEBLOCKRATIO&lt;BR /&gt;(&lt;BR /&gt;LINE_DESC CHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;LINE_NUMBER CHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_CATEGORY_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_CATEGORY_ID INTEGER NOT NULL,&lt;BR /&gt;SH_DEPARTMENT_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_DEPARTMENT_ID INTEGER NOT NULL,&lt;BR /&gt;SH_DIVISION_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_DIVISION_ID INTEGER NOT NULL,&lt;BR /&gt;SH_LW_ALT_CATEGORY_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_LW_ALT_CATEGORY_ID INTEGER NOT NULL,&lt;BR /&gt;SH_LW_ALT_DEPARTMENT_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_LW_ALT_DEPARTMENT_ID INTEGER NOT NULL,&lt;BR /&gt;SH_PRODUCT_BRAND_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_PRODUCT_RANGE_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_PRODUCT_RANGE_ID INTEGER NOT NULL,&lt;BR /&gt;SH_PRODUCT_TYPE_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_SD_ALT_CATEGORY_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_SD_ALT_CATEGORY_ID INTEGER NOT NULL,&lt;BR /&gt;SH_SD_ALT_DEPARTMENT_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_SD_ALT_DEPARTMENT_ID INTEGER NOT NULL&lt;BR /&gt;)&lt;BR /&gt;PRIMARY INDEX ( LINE_NUMBER );&lt;/P&gt;&lt;P&gt;)&lt;BR /&gt;BY TERADATA;&lt;BR /&gt;DISCONNECT FROM TERADATA;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;PROC SQL;&lt;BR /&gt;CONNECT TO TERADATA&lt;BR /&gt;( OVERRIDE_RESP_LEN=YES SERVER=DBC AUTHDOMAIN="TERADATAAUTH" MODE=TERADATA);&lt;BR /&gt;EXECUTE&lt;BR /&gt;(&lt;BR /&gt;INSERT INTO TMG.DS_PRODUCT&lt;BR /&gt;SELECT&lt;BR /&gt;LINE_DESC,&lt;BR /&gt;LINE_NUMBER,&lt;BR /&gt;SH_CATEGORY_DESC,&lt;BR /&gt;SH_CATEGORY_ID,&lt;BR /&gt;SH_DEPARTMENT_DESC,&lt;BR /&gt;SH_DEPARTMENT_ID,&lt;BR /&gt;SH_DIVISION_DESC,&lt;BR /&gt;SH_DIVISION_ID,&lt;BR /&gt;SH_LW_ALT_CATEGORY_DESC,&lt;BR /&gt;SH_LW_ALT_CATEGORY_ID,&lt;BR /&gt;SH_LW_ALT_DEPARTMENT_DESC,&lt;BR /&gt;SH_LW_ALT_DEPARTMENT_ID,&lt;BR /&gt;SH_PRODUCT_BRAND_DESC,&lt;BR /&gt;SH_PRODUCT_RANGE_DESC,&lt;BR /&gt;SH_PRODUCT_RANGE_ID,&lt;BR /&gt;SH_PRODUCT_TYPE_DESC,&lt;BR /&gt;SH_SD_ALT_CATEGORY_DESC,&lt;BR /&gt;SH_SD_ALT_CATEGORY_ID,&lt;BR /&gt;SH_SD_ALT_DEPARTMENT_DESC,&lt;BR /&gt;SH_SD_ALT_DEPARTMENT_ID&lt;BR /&gt;&lt;BR /&gt;FROM CIS.CMI_PRODUCT&lt;BR /&gt;/**** TO REMOVE DUPLICATES FOR A LINE NUMBER. THERE SHOULDN’T HAVE BEEN ANY DUPLICATES IDEALLY, BUT THERE ARE***/&lt;BR /&gt;QUALIFY ROW_NUMBER() OVER(PARTITION BY LINE_NUMBER ORDER BY 1)=1&lt;BR /&gt;WHERE&lt;BR /&gt;SH_CATEGORY_ID IN (&amp;amp;Cat_ID.)&lt;BR /&gt;)&lt;BR /&gt;BY TERADATA;&lt;BR /&gt;DISCONNECT FROM TERADATA;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/**/&lt;BR /&gt;/*% U_Table("COOKWARE &amp;amp; KITCHEN");*/&lt;/P&gt;&lt;P&gt;/*************************************Cross join with the Calendar Date******************************************/&lt;/P&gt;&lt;P&gt;PROC SQL;&lt;BR /&gt;CONNECT TO TERADATA&lt;BR /&gt;( OVERRIDE_RESP_LEN=YES SERVER=DBC AUTHDOMAIN="TERADATAAUTH" MODE=TERADATA);&lt;BR /&gt;EXECUTE&lt;BR /&gt;(&lt;BR /&gt;DROP TABLE TMG.DS_PRODUCT_FINAL;&lt;BR /&gt;)&lt;BR /&gt;BY TERADATA;&lt;BR /&gt;DISCONNECT FROM TERADATA;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;PROC SQL;&lt;BR /&gt;CONNECT TO TERADATA&lt;BR /&gt;( OVERRIDE_RESP_LEN=YES SERVER=DBC AUTHDOMAIN="TERADATAAUTH" MODE=TERADATA);&lt;BR /&gt;EXECUTE&lt;BR /&gt;(&lt;BR /&gt;CREATE MULTISET TABLE TMG.DS_PRODUCT_FINAL ,NO FALLBACK ,&lt;BR /&gt;NO BEFORE JOURNAL,&lt;BR /&gt;NO AFTER JOURNAL,&lt;BR /&gt;CHECKSUM = DEFAULT,&lt;BR /&gt;DEFAULT MERGEBLOCKRATIO&lt;BR /&gt;(&lt;BR /&gt;LINE_DESC CHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;LINE_NUMBER CHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_CATEGORY_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_CATEGORY_ID INTEGER NOT NULL,&lt;BR /&gt;SH_DEPARTMENT_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_DEPARTMENT_ID INTEGER NOT NULL,&lt;BR /&gt;SH_DIVISION_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_DIVISION_ID INTEGER NOT NULL,&lt;BR /&gt;SH_LW_ALT_CATEGORY_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_LW_ALT_CATEGORY_ID INTEGER NOT NULL,&lt;BR /&gt;SH_LW_ALT_DEPARTMENT_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_LW_ALT_DEPARTMENT_ID INTEGER NOT NULL,&lt;BR /&gt;SH_PRODUCT_BRAND_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_PRODUCT_RANGE_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_PRODUCT_RANGE_ID INTEGER NOT NULL,&lt;BR /&gt;SH_PRODUCT_TYPE_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_SD_ALT_CATEGORY_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_SD_ALT_CATEGORY_ID INTEGER NOT NULL,&lt;BR /&gt;SH_SD_ALT_DEPARTMENT_DESC VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,&lt;BR /&gt;SH_SD_ALT_DEPARTMENT_ID INTEGER NOT NULL,&lt;BR /&gt;CALENDAR_DATE DATE FORMAT 'YYYY-MM-DD'&lt;BR /&gt;)&lt;BR /&gt;PRIMARY INDEX ( LINE_NUMBER );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;)&lt;BR /&gt;BY TERADATA;&lt;BR /&gt;DISCONNECT FROM TERADATA;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;PROC SQL;&lt;BR /&gt;CONNECT TO TERADATA&lt;BR /&gt;( OVERRIDE_RESP_LEN=YES SERVER=DBC AUTHDOMAIN="TERADATAAUTH" MODE=TERADATA);&lt;BR /&gt;EXECUTE&lt;BR /&gt;(&lt;BR /&gt;INSERT INTO TMG.DS_PRODUCT_FINAL&lt;BR /&gt;SELECT&lt;BR /&gt;LINE_DESC,&lt;BR /&gt;LINE_NUMBER,&lt;BR /&gt;SH_CATEGORY_DESC,&lt;BR /&gt;SH_CATEGORY_ID,&lt;BR /&gt;SH_DEPARTMENT_DESC,&lt;BR /&gt;SH_DEPARTMENT_ID,&lt;BR /&gt;SH_DIVISION_DESC,&lt;BR /&gt;SH_DIVISION_ID,&lt;BR /&gt;SH_LW_ALT_CATEGORY_DESC,&lt;BR /&gt;SH_LW_ALT_CATEGORY_ID,&lt;BR /&gt;SH_LW_ALT_DEPARTMENT_DESC,&lt;BR /&gt;SH_LW_ALT_DEPARTMENT_ID,&lt;BR /&gt;SH_PRODUCT_BRAND_DESC,&lt;BR /&gt;SH_PRODUCT_RANGE_DESC,&lt;BR /&gt;SH_PRODUCT_RANGE_ID,&lt;BR /&gt;SH_PRODUCT_TYPE_DESC,&lt;BR /&gt;SH_SD_ALT_CATEGORY_DESC,&lt;BR /&gt;SH_SD_ALT_CATEGORY_ID,&lt;BR /&gt;SH_SD_ALT_DEPARTMENT_DESC,&lt;BR /&gt;SH_SD_ALT_DEPARTMENT_ID,&lt;BR /&gt;B.CALENDAR_DATE&lt;BR /&gt;FROM TMG.DS_PRODUCT&lt;BR /&gt;CROSS JOIN TMG.DS_REQUESTED_DATE B&lt;/P&gt;&lt;P&gt;)&lt;BR /&gt;BY TERADATA;&lt;BR /&gt;DISCONNECT FROM TERADATA;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/*%SQUEEZE(TMG.DS_PRODUCT_FINAL,PDATA.DS_PRODUCT_U);*/&lt;/P&gt;&lt;P&gt;data PDATA.DS_PRODUCT_U;&lt;BR /&gt;set TMG.DS_PRODUCT_FINAL;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;PROC SORT DATA=PDATA.DS_PRODUCT_U;BY LINE_NUMBER CALENDAR_DATE;RUN;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/*Note:**************************************************************************************&lt;BR /&gt;This is creating the structure for the table Product Details, which consists details like department, category, product&lt;BR /&gt;range, desc etc.&lt;BR /&gt;Source table: CIS.CMI_PRODUCT&lt;BR /&gt;Output Table: TMG.DS_PRODUCT&lt;BR /&gt;****************************************************************************************End*/&lt;BR /&gt;proc sort data=PDATA.DS_PRODUCT_U;by line_number CALENDAR_DATE;run;&lt;/P&gt;&lt;P&gt;proc sort data=PDATA.DS_WEBSESSION_U;by line_number CALENDAR_DATE;run;&lt;BR /&gt;proc sort data=PDATA.DS_ABANDON_U;by line_number CALENDAR_DATE;run;&lt;BR /&gt;proc sort data=PDATA.DS_DEMAND_U;by line_number CALENDAR_DATE;run;&lt;BR /&gt;proc sort data=PDATA.DS_NETDISPATCH_U;by line_number CALENDAR_DATE;run;&lt;BR /&gt;proc sort data=PDATA.DS_RETURN_U;by line_number CALENDAR_DATE;run;&lt;BR /&gt;proc sort data=PDATA.DS_PRICE_U;by line_number CALENDAR_DATE;run;&lt;/P&gt;&lt;P&gt;proc sort data=PDATA.DS_WARRANTY_ITEM_U;by line_number;run;&lt;BR /&gt;proc sort data=PDATA.DS_INSRUANCE_FLAG_U;by line_number;run;&lt;BR /&gt;proc sort data=PDATA.DS_PRODUCT_OFFER_U;by line_number;run;&lt;BR /&gt;proc sort data=PDATA.DS_PRODUCT_ATTRIBUTE_U;by line_number;run;&lt;BR /&gt;proc sort data=PDATA.DS_PRODUCT_REVIEW_U;by line_number;run;&lt;BR /&gt;proc sort data=PDATA.DS_ASSOCIATED_PRODUCT_U;by line_number;run;&lt;/P&gt;&lt;P&gt;proc sort data=PDATA.DS_ATTRIBUTE_U;by line_number ;run;&lt;BR /&gt;proc sort data=PDATA.DS_PRODUCT_MINERVA_U;by line_number;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data PDATA.DS_ENDTOEND_1;&lt;BR /&gt;merge&lt;BR /&gt;PDATA.DS_PRODUCT_U(in=a)&lt;/P&gt;&lt;P&gt;PDATA.DS_WEBSESSION_U&lt;BR /&gt;PDATA.DS_ABANDON_U&lt;BR /&gt;PDATA.DS_DEMAND_U&lt;BR /&gt;PDATA.DS_NETDISPATCH_U&lt;BR /&gt;PDATA.DS_RETURN_U&lt;BR /&gt;PDATA.DS_PRICE_U;&lt;BR /&gt;by line_number CALENDAR_DATE;&lt;BR /&gt;if a=1;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/*data DS_ENDTOEND_1_sample;*/&lt;BR /&gt;/*set PDATA.DS_ENDTOEND(obs=100);*/&lt;BR /&gt;/*where n_view&amp;lt;&amp;gt;.;*/&lt;BR /&gt;/*run;*/&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;data PDATA.DS_ENDTOEND_2;&lt;BR /&gt;merge&lt;BR /&gt;PDATA.DS_PRODUCT_U(in=a)&lt;BR /&gt;PDATA.DS_PRODUCT_OFFER_U&lt;BR /&gt;PDATA.DS_WARRANTY_ITEM_U&lt;BR /&gt;PDATA.DS_INSRUANCE_FLAG_U&lt;BR /&gt;PDATA.DS_PRODUCT_REVIEW_U&lt;BR /&gt;PDATA.DS_ASSOCIATED_PRODUCT_U&lt;/P&gt;&lt;P&gt;PDATA.DS_PRODUCT_ATTRIBUTE_U&lt;BR /&gt;PDATA.DS_ATTRIBUTE_U;&lt;/P&gt;&lt;P&gt;by LINE_NUMBER;&lt;BR /&gt;if a=1;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;DATA PDATA.DS_ENDTOEND_ALL;&lt;BR /&gt;MERGE&lt;BR /&gt;PDATA.DS_PRODUCT_U(IN=A)&lt;BR /&gt;PDATA.DS_ENDTOEND_1&lt;BR /&gt;PDATA.DS_ENDTOEND_2&lt;BR /&gt;;BY LINE_NUMBER;&lt;BR /&gt;IF A=1;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*this is to append the table*/&lt;/P&gt;&lt;P&gt;%Append_Create()&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%Mend U_Table;&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 14:40:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432212#M107015</guid>
      <dc:creator>Deepankar</dc:creator>
      <dc:date>2018-01-30T14:40:18Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR 117-185: There was 1 unclosed DO block.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432213#M107016</link>
      <description>&lt;P&gt;code posted below&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 14:41:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432213#M107016</guid>
      <dc:creator>Deepankar</dc:creator>
      <dc:date>2018-01-30T14:41:10Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR 117-185: There was 1 unclosed DO block.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432214#M107017</link>
      <description>&lt;P&gt;pasted below&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 14:41:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432214#M107017</guid>
      <dc:creator>Deepankar</dc:creator>
      <dc:date>2018-01-30T14:41:49Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR 117-185: There was 1 unclosed DO block.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432219#M107019</link>
      <description>&lt;P&gt;Your macro contains procedure steps of its own, so you cannot use it to create code inside a data step. Contact the author of the macro, so he/she can tell you how to use it.&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 14:43:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432219#M107019</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2018-01-30T14:43:48Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR 117-185: There was 1 unclosed DO block.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432221#M107020</link>
      <description>&lt;P&gt;I am the author of all macros here &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt; Tell me what to do&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 14:46:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432221#M107020</guid>
      <dc:creator>Deepankar</dc:creator>
      <dc:date>2018-01-30T14:46:31Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR 117-185: There was 1 unclosed DO block.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432226#M107023</link>
      <description>&lt;P&gt;Just call the macro multiple times.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%U_Table(Cat_ID=70)
%U_Table(Cat_ID=79)&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If your really need make the list of values dynamic then put them into a data step and use the data step to generate the code to call the macro.&amp;nbsp; So if you had a dataset with a variable named CAT_ID your could use with the CALL EXECUTE() function to generate one macro call for each observation.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data _null_;
  set category_list ;
  call execute(cats('%nrstr(%U_Table)(Cat_ID=',cat_id,')'));
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 30 Jan 2018 14:53:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432226#M107023</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2018-01-30T14:53:16Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR 117-185: There was 1 unclosed DO block.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432227#M107024</link>
      <description>&lt;P&gt;The first thing the macro inserts in your code is a proc sql statement. That causes a step boundary for the data step, which has the unclosed do block at this moment, leading to the ERROR message.&lt;/P&gt;
&lt;P&gt;I repeat: you cannot use this macro in a data step. But you can call it from the data step with call execute.&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 14:52:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432227#M107024</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2018-01-30T14:52:38Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR 117-185: There was 1 unclosed DO block.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432232#M107028</link>
      <description>&lt;P&gt;Aaargh, my eyes bleed from unformatted code shouted at me.&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 15:03:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432232#M107028</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2018-01-30T15:03:48Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR 117-185: There was 1 unclosed DO block.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432248#M107041</link>
      <description>&lt;P&gt;This worked. i don't&amp;nbsp;want to run it separate as in your first example.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;in the second example if you can confirm that macro is running one by one.&lt;/P&gt;&lt;P&gt;means value for 70 first then&lt;/P&gt;&lt;P&gt;value for&amp;nbsp;79 second.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;how the loop is running here for two different value.&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 15:23:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432248#M107041</guid>
      <dc:creator>Deepankar</dc:creator>
      <dc:date>2018-01-30T15:23:04Z</dc:date>
    </item>
    <item>
      <title>Re: ERROR 117-185: There was 1 unclosed DO block.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432267#M107048</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/190171"&gt;@Deepankar&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;This worked. i don't&amp;nbsp;want to run it separate as in your first example.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;in the second example if you can confirm that macro is running one by one.&lt;/P&gt;
&lt;P&gt;means value for 70 first then&lt;/P&gt;
&lt;P&gt;value for&amp;nbsp;79 second.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;how the loop is running here for two different value.&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Yes.&amp;nbsp; It will call/execute the macro once for each value of CAT_ID.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If the macro uses the parameter value you passed in to create a table with a fixed name without producing any report or other output then calling it twice will just overwrite the first output with the second. However if the output table name is built dynamically from the parameter value passed in then you could call it twice and it would just create two different tables.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I did not look at the definition of the macro at all so I do not know if it can (or if it is even reasonable for to be able to ) handle more than one category code at a time.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Describe in words what the macro does and what output you want to create.&amp;nbsp; What is the meaning of the list of codes that you are starting with?&amp;nbsp; Do they represent separate things you want to do?&amp;nbsp; Or are they a set of categories that you want to group together somehow?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2018 15:48:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/ERROR-117-185-There-was-1-unclosed-DO-block/m-p/432267#M107048</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2018-01-30T15:48:35Z</dc:date>
    </item>
  </channel>
</rss>

