<?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: IF THEN DO ISSUES in SAS Enterprise Guide</title>
    <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/IF-THEN-DO-ISSUES/m-p/957020#M45798</link>
    <description>&lt;P&gt;&lt;SPAN&gt;To resolve the week numbering issues for the 2025 season in the&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;ip2&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;dataset, add the following code within the data step for&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;ip2&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;under the "2025 adjustments" section. This will correct the week labels by adjusting&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;wk1&lt;/CODE&gt;&lt;SPAN&gt;,&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;wk2&lt;/CODE&gt;&lt;SPAN&gt;,&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;year&lt;/CODE&gt;&lt;SPAN&gt;, and&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;mth2&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;based on the specified conditions:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data ip2;  
  set ip;  
  format season_yr $20.;  
  
  /* Determine season year */  
  if '202009' &amp;lt;= month3 &amp;lt;= '202108' then season_yr = "Yr_20_21";  
  else if '202109' &amp;lt;= month3 &amp;lt;= '202208' then season_yr = "Yr_21_22";  
  else if '202209' &amp;lt;= month3 &amp;lt;= '202308' then season_yr = "Yr_22_23";  
  else if '202309' &amp;lt;= month3 &amp;lt;= '202408' then season_yr = "Yr_23_24";  
  else if '202409' &amp;lt;= month3 &amp;lt;= '202508' then season_yr = "Yr_24_25";  
  else season_yr = 'Other';  

  /* ... existing code ... */

  /* 2025 Adjustments */
  if season_yr = "Yr_24_25" then do;
      /* Adjust weeks spanning into 2025 (wk53 from 2024 becomes 25_wk01) */
      if wk1 in ("wk53", "wk00") then do;
          wk1 = "wk01";
          wk2 = "25_wk01";
          year = "2025";
          mth2 = "01";  /* Set to January */
      end
      /* Increment subsequent weeks by 1 (wk01 becomes 25_wk02) */
      else if wk1 = "wk01" then do;
          wk1 = "wk02";
          wk2 = "25_wk02";
          year = "2025";
          mth2 = "01";
      end;
  end;

  month = year || mth2; 
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;STRONG&gt;Explanation:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Condition on&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;season_yr&lt;/CODE&gt;:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Targets only the "Yr_24_25" season.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Handling&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;wk53&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;wk00&lt;/CODE&gt;:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Converts both to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;wk01&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;(2025) with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;wk2&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;set to "25_wk01".&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Adjusting&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;wk01&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;wk02&lt;/CODE&gt;:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Ensures the following week is incremented correctly.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Updates&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;year&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;mth2&lt;/CODE&gt;:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Ensures consistency with the new week assignments (January 2025).&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This adjustment ensures weeks crossing into 2025 are labeled correctly, eliminating invalid week numbers (e.g.,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;24_wk53&lt;/CODE&gt;,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;25_wk00&lt;/CODE&gt;) and aligns with the desired output structure.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Alternative (Less Hardcoded) Approach:&lt;/H3&gt;
&lt;P&gt;To reduce hardcoding, you could:&lt;/P&gt;
&lt;OL start="1"&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Derive the target year&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;from&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;wbeg&lt;/CODE&gt;/&lt;CODE&gt;wend&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;dates instead of hardcoding&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;2025&lt;/CODE&gt;.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Use date functions&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to calculate week numbers dynamically.&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Example snippet:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* 2025 Adjustments (Less Hardcoded) */
if season_yr = "Yr_24_25" then do;
  /* Calculate target year based on the week's end date */
  target_year = year(wend);
  target_week = week(wend);  /* SAS week function */

  if wk1 in ("wk53", "wk00") then do;
    wk1 = "wk01";
    wk2 = catx("_", put(target_year, z2.), "wk01");
    year = put(target_year, 4.);
    mth2 = "01";
  end
  else if wk1 = "wk01" then do;
    wk1 = "wk02";
    wk2 = catx("_", put(target_year, z2.), "wk02");
    year = put(target_year, 4.);
    mth2 = "01";
  end;
end;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This still assumes some structure (e.g.,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;target_year&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;is derived from&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;wend&lt;/CODE&gt;), but reduces reliance on fixed values like&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;"2025"&lt;/CODE&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If the week numbering issue is specific to the 2024-2025 transition and not a recurring pattern, the original hardcoded solution is&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;practical and valid&lt;/STRONG&gt;. For future-proofing, consider a dynamic approach.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hope this helps.&lt;/P&gt;</description>
    <pubDate>Thu, 23 Jan 2025 22:02:20 GMT</pubDate>
    <dc:creator>webart999ARM</dc:creator>
    <dc:date>2025-01-23T22:02:20Z</dc:date>
    <item>
      <title>IF THEN DO ISSUES</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/IF-THEN-DO-ISSUES/m-p/956623#M45766</link>
      <description>&lt;P&gt;This section (table ip) defines formats and calculates month and week limits.&amp;nbsp; When doing a proc freq on ip table this is what I get:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;proc freq data=ip; tables wbeg*wend/list missing; run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Season_yr&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Wbeg&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Wend&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Wk2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Wk1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Year&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Year3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Month3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Month33&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;freq&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Yr_24_25&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;29DEC24&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;04JAN25&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;24_wk53&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Wk53&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2024&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2025&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;202501&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;JAN&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;30726&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Yr_24_25&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;29DEC24&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;04JAN25&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;25_wk00&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Wk00&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2025&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2025&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;202501&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;JAN&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;41000&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Yr_24_25&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;05JAN25&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;11JAN25&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;25_wk01&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Wk01&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2025&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2025&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;202501&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;JAN&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;72588&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;The issue I’m having is in the next step in table ip2 where I adjust for special cases where the weeks aren’t named properly.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For example, in the above image, the first row should be 25_wk01 NOT 24_wk53 (there should only be 52 weeks for each season_yr).&lt;/P&gt;&lt;P&gt;The second row should go in the 25_wk01 bucket as well (there shouldn’t be wk00 in the data).&amp;nbsp; The third row should go into 25_wk02.&amp;nbsp;&lt;/P&gt;&lt;P&gt;So, it should look like this:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Season_yr&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Wbeg&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Wend&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Wk2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Wk1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Year&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Year3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Month3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Month33&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;freq&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Yr_24_25&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;29DEC24&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;04JAN25&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;25_wk01&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;wk01&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2025&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2025&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;202501&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;JAN&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;71276&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Yr_24_25&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;05JAN25&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;11JAN25&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;25_wk02&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;wk02&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2025&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2025&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;202501&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;JAN&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;72588&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;Here are the tables producing the above (the 2025 adjustments section is where I need to do the if then do statements; the others before it are not giving any issues and have always been in the program and do not apply to 2025):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;data _null_;
format dt date9.;
dt='16JAN2025'D;
call symput('currmo', compress(put(year(dt),z4.))||compress(put(month(dt),z2.)));
run;
%put CURRMO = &amp;amp;currmo.;


data ip;

  options compress=yes;  
  set mixed;  
  
  /* Define formats */  
  format wbeg wend mbeg mend date8.;  
  format AdmitDt  mmddyy10.; 
 
  
  /* Calculate month and week  */  
  mbeg = intnx('month', AdmitDt, 0, 'b');  
  mend = intnx('month', AdmitDt, 0, 'e');  
  wbeg = intnx('week', AdmitDt, 0, 'b');  
  wend = intnx('week', AdmitDt, 0, 'e');  
  madm = month(AdmitDt);  
  mwbeg = month(wbeg);  
  mwend = month(wend);  
  
  /* Determine the month3 value */  
if month(wbeg) = month(wend) then do;
                                  month3 = put(year(AdmitDt),4.)||put(month(AdmitDt),z2.);
                                  end;
else if mend - wbeg &amp;lt; 7 then do;
                                if mend - wbeg &amp;lt; 3 then do;
							                            if month(AdmitDt) = 12 then month3 = put(year(AdmitDt)+1,4.)||"01";
													    else month3 = put(year(AdmitDt),4.)||put(month(AdmitDt)+1,z2.);
													    end;
							    else month3 = put(year(AdmitDt),4.)||put(month(AdmitDt),z2.);
							    end;
else if wend - mbeg &amp;lt; 7 then do;
                             if wend - mbeg &amp;lt; 3 then do;
                                                     if month(AdmitDt) = 1 then month3 = put(year(AdmitDt) - 1,4.) || "12";
                                                        else month3 = put(year(AdmitDt),4.)||put(month(AdmitDt)-1,z2.);
													 end;
							 else month3 = put(year(AdmitDt),4.)||put(month(AdmitDt),z2.);
							 end;
  
  mth3 = substr(month3, 5, 2);  
  month33 = put(mth3, $mth.);  
  year3 = substr(month3, 1, 4);  
  

	  /* Additional processing  */  
  length wk2 $8.;  
  format year $4.;  
    

    
  mth2 = put(month(AdmitDt), z2.);  
  year = put(year(AdmitDt), 4.);  
    
  wk1 = compress('wk' || put(week(AdmitDt), z2.));  
  wk2 = compress(substr(year, 3, 2) || '_' || wk1);   
run;  


data _null_;
format dt date9.;
 dt='16JAN2025'D;
 cut_dt=intnx('month','16JAN2025'D,-23);
 CALL symput('currmo', compress(put(year(dt),z4.))||compress(put(month(dt),z2.)));
 CALL symput('cutmo', compress(put(year(cut_dt),z4.))||compress(put(month(cut_dt),z2.)));
 run;

%put &amp;amp;currmo.;
%put &amp;amp;cutmo.;

data _null_;
  td='16JAN2025'D;
  format cutdt date9. cutdt2 date9.;
  cutdt=intnx('month','16JAN2025'D,0); 
  cutdt2=intnx('month','16JAN2025'D,0);
  cutmth=compress(put(year(cutdt), 4.)||put((month(cutdt)), z2.));
  call symput('cutmth', cutmth);
  
run;

%put &amp;amp;cutmth.;

data ip2;  
  set ip;  
  format season_yr $20.;  
  
  /* Determine season year */  
  if '202009' &amp;lt;= month3 &amp;lt;= '202108' then season_yr = "Yr_20_21";  
  else if '202109' &amp;lt;= month3 &amp;lt;= '202208' then season_yr = "Yr_21_22";  
  else if '202209' &amp;lt;= month3 &amp;lt;= '202308' then season_yr = "Yr_22_23";  
  else if '202309' &amp;lt;= month3 &amp;lt;= '202408' then season_yr = "Yr_23_24";  
  else if '202409' &amp;lt;= month3 &amp;lt;= '202508' then season_yr = "Yr_24_25";  
  else season_yr = 'Other';  
  
  /* Standardize weeks  */  
  if year = "2020" then do;  
    wk1 = compress('wk' || put(week(AdmitDt) + 1, z2.));  
    wk2 = compress(substr(year, 3, 2) || '_' || wk1);  
  end;  
  else if year in ("2021", "2022", "2023", "2025") then do;  
    wk1 = compress('wk' || put(week(AdmitDt), z2.));  
    wk2 = compress(substr(year, 3, 2) || '_' || wk1);  
  end;  
  else if year = "2024" then do;  
    wk1 = compress('wk' || put(week(AdmitDt) + 1, z2.));  
    wk2 = compress(substr(year, 3, 2) || '_' || wk1);  
  end;  

  
  /* Adjust for special cases */  
  if season_yr = "Yr_21_22" and wk1 = "wk35" and year = "2021" then season_yr = "Yr_20_21";  

  if year = "2021" and wk1 = "wk00" then do;  
    wk1 = "wk53";  
    wk2 = "20_wk53";  
    year = "2020";  
    mth2 = "12";  
  end;  
  if year = "2022" and wk1 = "wk00" then do;  
    wk1 = "wk52";  
    wk2 = "21_wk52";  
    year = "2021";  
    mth2 = "12";  
  end;  

  if year = "2020" and wk1 = "wk53" then delete;  

  if year = "2023" and wk1 = "wk53" then do;  
    wk1 = "wk01";  
    wk2 = "24_wk01";  
    year = "2024";  
    mth2 = "01";  
  end;  

/*THIS SECTION NEEDS FIXING: 2025 adjustments - this is where I need to do the if then do for current dates; i commented out the ones below because they didn't work*/&lt;/CODE&gt;&lt;/PRE&gt;&lt;PRE&gt;/* if year = "2025" and wk1 = "wk00" then do; */&lt;BR /&gt;/*                                        wk1 = "wk01";  */&lt;BR /&gt;/*                                        wk2 = "25_wk01"; */&lt;BR /&gt;/* 									   year = "2025"; */&lt;BR /&gt;/* 									   mth2 = "01"; */&lt;BR /&gt;/* 									   end; */&lt;BR /&gt;/*  */&lt;BR /&gt;/* if year = "2025" and wk1 = "wk01" then do; */&lt;BR /&gt;/*                                        wk1 = "wk02";  */&lt;BR /&gt;/*                                        wk2 = "25_wk02"; */&lt;BR /&gt;/* 									   year = "2025"; */&lt;BR /&gt;/* 									   mth2 = "01"; */&lt;BR /&gt;/* 									   end; */&lt;BR /&gt;&lt;BR /&gt;  &lt;/PRE&gt;&lt;PRE&gt;&lt;CODE class=""&gt;month = year || mth2; run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;There are no errors or anything just a matter of bucketing using if then do statements.&amp;nbsp; Any help is appreciated. I've just been stuck on this for days.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 20 Jan 2025 02:58:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/IF-THEN-DO-ISSUES/m-p/956623#M45766</guid>
      <dc:creator>Deesee</dc:creator>
      <dc:date>2025-01-20T02:58:00Z</dc:date>
    </item>
    <item>
      <title>Re: IF THEN DO ISSUES</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/IF-THEN-DO-ISSUES/m-p/957020#M45798</link>
      <description>&lt;P&gt;&lt;SPAN&gt;To resolve the week numbering issues for the 2025 season in the&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;ip2&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;dataset, add the following code within the data step for&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;ip2&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;under the "2025 adjustments" section. This will correct the week labels by adjusting&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;wk1&lt;/CODE&gt;&lt;SPAN&gt;,&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;wk2&lt;/CODE&gt;&lt;SPAN&gt;,&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;year&lt;/CODE&gt;&lt;SPAN&gt;, and&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;mth2&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;based on the specified conditions:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data ip2;  
  set ip;  
  format season_yr $20.;  
  
  /* Determine season year */  
  if '202009' &amp;lt;= month3 &amp;lt;= '202108' then season_yr = "Yr_20_21";  
  else if '202109' &amp;lt;= month3 &amp;lt;= '202208' then season_yr = "Yr_21_22";  
  else if '202209' &amp;lt;= month3 &amp;lt;= '202308' then season_yr = "Yr_22_23";  
  else if '202309' &amp;lt;= month3 &amp;lt;= '202408' then season_yr = "Yr_23_24";  
  else if '202409' &amp;lt;= month3 &amp;lt;= '202508' then season_yr = "Yr_24_25";  
  else season_yr = 'Other';  

  /* ... existing code ... */

  /* 2025 Adjustments */
  if season_yr = "Yr_24_25" then do;
      /* Adjust weeks spanning into 2025 (wk53 from 2024 becomes 25_wk01) */
      if wk1 in ("wk53", "wk00") then do;
          wk1 = "wk01";
          wk2 = "25_wk01";
          year = "2025";
          mth2 = "01";  /* Set to January */
      end
      /* Increment subsequent weeks by 1 (wk01 becomes 25_wk02) */
      else if wk1 = "wk01" then do;
          wk1 = "wk02";
          wk2 = "25_wk02";
          year = "2025";
          mth2 = "01";
      end;
  end;

  month = year || mth2; 
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;STRONG&gt;Explanation:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Condition on&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;season_yr&lt;/CODE&gt;:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Targets only the "Yr_24_25" season.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Handling&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;wk53&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;wk00&lt;/CODE&gt;:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Converts both to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;wk01&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;(2025) with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;wk2&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;set to "25_wk01".&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Adjusting&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;wk01&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;wk02&lt;/CODE&gt;:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Ensures the following week is incremented correctly.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Updates&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;year&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;mth2&lt;/CODE&gt;:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Ensures consistency with the new week assignments (January 2025).&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This adjustment ensures weeks crossing into 2025 are labeled correctly, eliminating invalid week numbers (e.g.,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;24_wk53&lt;/CODE&gt;,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;25_wk00&lt;/CODE&gt;) and aligns with the desired output structure.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Alternative (Less Hardcoded) Approach:&lt;/H3&gt;
&lt;P&gt;To reduce hardcoding, you could:&lt;/P&gt;
&lt;OL start="1"&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Derive the target year&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;from&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;wbeg&lt;/CODE&gt;/&lt;CODE&gt;wend&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;dates instead of hardcoding&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;2025&lt;/CODE&gt;.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Use date functions&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to calculate week numbers dynamically.&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Example snippet:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* 2025 Adjustments (Less Hardcoded) */
if season_yr = "Yr_24_25" then do;
  /* Calculate target year based on the week's end date */
  target_year = year(wend);
  target_week = week(wend);  /* SAS week function */

  if wk1 in ("wk53", "wk00") then do;
    wk1 = "wk01";
    wk2 = catx("_", put(target_year, z2.), "wk01");
    year = put(target_year, 4.);
    mth2 = "01";
  end
  else if wk1 = "wk01" then do;
    wk1 = "wk02";
    wk2 = catx("_", put(target_year, z2.), "wk02");
    year = put(target_year, 4.);
    mth2 = "01";
  end;
end;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This still assumes some structure (e.g.,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;target_year&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;is derived from&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;wend&lt;/CODE&gt;), but reduces reliance on fixed values like&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;"2025"&lt;/CODE&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If the week numbering issue is specific to the 2024-2025 transition and not a recurring pattern, the original hardcoded solution is&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;practical and valid&lt;/STRONG&gt;. For future-proofing, consider a dynamic approach.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hope this helps.&lt;/P&gt;</description>
      <pubDate>Thu, 23 Jan 2025 22:02:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/IF-THEN-DO-ISSUES/m-p/957020#M45798</guid>
      <dc:creator>webart999ARM</dc:creator>
      <dc:date>2025-01-23T22:02:20Z</dc:date>
    </item>
  </channel>
</rss>

