<?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 Split Years data into 3 months( Data can be for more than 12 months but need to split it in 3 months in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Split-Years-data-into-3-months-Data-can-be-for-more-than-12/m-p/832603#M329102</link>
    <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;Please find the below code and help get the datasets for every 3 months. i have tried many things but i am not able to stop at the third month(i.e. the begin and end date the macro variable to should capture the 3rd month&lt;BR /&gt;but im creating a new value for every i. i have tried Max (&amp;amp;I.)).&lt;BR /&gt;In "MY CODE" below i am not able to iterate (i++) when the its the 4th month.&lt;BR /&gt;for ex : Jan Feb and Mar months. im trying to end the procesing at mar and start or pick a new month from april, may or june.&lt;BR /&gt;the below Original Code we are only extracting for every 3 months but now i am trying to get for every 3rd month in a year.(q1,q2,q3,and q4).&lt;BR /&gt;&lt;BR /&gt;Kindly Suggest!!!!&lt;BR /&gt;

/*ORIGINAL CODE*/

DATA _NULL_;
TDY = MDY(MONTH(TODAY()),1,YEAR(TODAY()));
ENDATE = TDY - 1;
STDATE = MDY(MONTH(ENDATE),1,YEAR(ENDATE));
/*CREATE CURRENT START DATE AND END DATE OF THE MONTHS 1ST &amp;amp; LAST DAY OF THE MONTH*/
CALL SYMPUTX('MNSTRT',PUT(STDATE ,YYMMDD10.));
CALL SYMPUTX('MNENDT',PUT(ENDATE,YYMMDD10.));
CALL SYMPUTX('DATE1',PUT(STDATE,YYMMN6.));
/*PRIOR MONTHS -1 MONTH*/
CURR_DTE_2 = INTNX('MONTH',STDATE,-1,'S');
CALL SYMPUTX ('DATE2',PUT(CURR_DTE_2 ,YYMMN6.));
CALL SYMPUTX ('TXNDATE1',PUT(CURR_DTE_2 ,YYMMN6.));

/*PRIOR MONTHS -2 MONTH*/
CURR_DTE_3 = INTNX('MONTH',STDATE,-2,'S');
CALL SYMPUTX ('DATE3',PUT(CURR_DTE_3 ,YYMMN6.));
CALL SYMPUTX ('TXNDATE2',PUT(CURR_DTE_3 ,YYMMN6.));
CALL SYMPUTX ('QTRNDATE',PUT(CURR_DTE_3 ,YYMMDD10.)); /*THIS WILL END FOR THE QTR*/

/*3 MONTHS PRIOR*/
CURR_DTE_4 = INTNX('MONTH',STDATE,-3,'S');
CALL SYMPUTX ('TXNDATE3',PUT(CURR_DTE_4 ,YYMMN6.));

/*TO CREATE THE NUMBER OF DAYS(SAS DAYS)*/
CALL SYMPUTX('BGDTE',CURR_DTE_3);
CALL SYMPUTX('endt',ENDATE);
PUT CURR_DTE_4  = YYMMDD10. CURR_DTE_3  = YYMMDD10. CURR_DTE_2  = YYMMDD10.  STDATE=YYMMDD10.  ENDATE = YYMMDD10.;
RUN;

%put date1====&amp;gt;&amp;gt; &amp;amp;date1.  date2====&amp;gt;&amp;gt; &amp;amp;date2.  date3====&amp;gt;&amp;gt;  &amp;amp;date3.;
%put TXNDATE1====&amp;gt;&amp;gt; &amp;amp;TXNDATE1. TXNDATE2====&amp;gt;&amp;gt; &amp;amp;TXNDATE2.  TXNDATE3====&amp;gt;&amp;gt;  &amp;amp;TXNDATE3.; /*atmdates*/
%PUT BGNDTE ==&amp;gt;&amp;gt; &amp;amp;BGDTE. ; 
%PUT endDTE ==&amp;gt;&amp;gt; &amp;amp;endt.;

/*-----------------------------------------------------------------------------------*/




/*programmatically obtain dates*/
/*MY CODE*/
/*INITIALLY I WAS PLANNING TO GET ALL THE MONTHS FOR AN YEAR AND BREAK THEM INTO QTRS, BUT I FAILED TO. SO USED THE ORIGINAL CODE ABOVE */
DATA _NULL_;
	YR_START_DATE=INTNX('MONTH', DATE(), -1, 'B');
	YR_END_DATE=INTNX('MONTH', DATE(), -12, 'E');

	DO UNTIL(YR_END_DATE&amp;gt;YR_START_DATE);
		i+1;
		MNTH_START_DATE=YR_START_DATE;
		MNTH_END_DATE=INTNX('MONTH', MNTH_START_DATE, 0, 'S');
		PREVDTE=INTNX('MONTH', MNTH_START_DATE, -1, 'S');

		/*PREVIOUS MONTHS DATE*/
		PUT MNTH_START_DATE=YYMMDD10. MNTH_END_DATE=YYMMDD10.  PREVDTE=YYMMDD10.;
		CALL SYMPUT(CATS('MNTH', I), PUT(MNTH_START_DATE, YYMMN6.));
		CALL SYMPUT(CATS('MNTHSTDT', I), PUT(MNTH_START_DATE, YYMMN6.));
		CALL SYMPUT(CATS('MNTHENDDT', I), PUT(MNTH_END_DATE, YYMMN6.));
		CALL SYMPUT(CATS('DATE', I), PUT(MNTH_END_DATE, YYMMN6.));

		/*FIRST MONTHS DATE YYMM AS TRANSACTION DATE*/
		CALL SYMPUT(CATS('ATMDATE', I), PUT(PREVDTE, YYMMN6.));

		/*PREVIOUS MONTHS DATE YYMM AS TRANSACTION DATE*/
		CALL SYMPUT(CATS('PREVDTE', I), PUT(INTNX('MONTH', MNTH_START_DATE, -1, 'S'), 
			YYMMDD10.));

		/*PREVIOUS MONTHS DATE YYMMDD AS TRANSACTION DATE*/
		YR_START_DATE=INTNX('MONTH', YR_START_DATE, -1);
	END;
	PUT YR_START_DATE YR_END_DATE;
RUN;

/* I AM TRYING TO ARRANGE THE DATASETS FOR EVERY QUARTER WHICH CAN BE HELPFUL FOR ANALYSIS AND SPACE */
%MACRO QTRS();
	%DO i=1 %TO 3;/*TRYING FOR THE 1ST QTR*/
 %LET K = %EVAL(&amp;amp;i.+1);
		/* TO GET THE PREVIOUS DATES FOR THE PREVIOUS MONTHS  */
%LET CURR_DATE_&amp;amp;K. = &amp;amp;&amp;amp;PREVDTE&amp;amp;i.;
%PUT &amp;amp;&amp;amp;CURR_DATE_&amp;amp;K.;

		 		%LET ATMDATE&amp;amp;i. =  %SYSFUNC(INPUTN(&amp;amp;&amp;amp;CURR_DATE_&amp;amp;K., YYMMDD10.), YYMMN6.); 
				%PUT ATM&amp;amp;i.===&amp;gt;&amp;gt; &amp;amp;&amp;amp;ATMDATE&amp;amp;i.;
				%LET DATE_&amp;amp;K. =  %SYSFUNC(INPUTN(&amp;amp;&amp;amp;CURR_DATE_&amp;amp;K., YYMMDD10.), YYMMN6.); 
				%PUT DATE&amp;amp;K.===&amp;gt;&amp;gt; &amp;amp;&amp;amp;dATE_&amp;amp;K.;
				
				/* 		TO GET THE LAST QTR DATE - NOT SURE WHY AM I NOT ABLE TO GET IT */
				%IF &amp;amp;i.= %EVAL(%SYSFUNC(MAX(&amp;amp;i.))) %THEN %DO;
					%PUT &amp;amp;I.;
		 			%LET BGNDTE = %SYSFUNC(INPUTN(&amp;amp;&amp;amp;PREVDTE&amp;amp;i., YYMMDD10.), 6.); 
		 		%PUT BGNDTE ==&amp;gt;&amp;gt; &amp;amp;BGNDTE. ; 
		 					%LET PDSTART = %SYSFUNC(INPUTN(&amp;amp;&amp;amp;PREVDTE&amp;amp;i., YYMMDD10.), YYMMN6.);
		 					%PUT PDSTART===&amp;gt;&amp;gt; &amp;amp;PDSTART.;
		%END;

	%END;
%MEND;

%QTRS;

/*LOGS*/&lt;BR /&gt;&lt;BR /&gt; &lt;BR /&gt;1 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;&lt;BR /&gt;68 &lt;BR /&gt;69 /*programmatically obtain dates*/&lt;BR /&gt;70 /*MY CODE*/&lt;BR /&gt;71 /*INITALLY I WAS PLANNING TO GET ALL THE MONTHS FOR AN YEAR AND BREAK THEM INTO QTRS, BUT I FAILED TO. SO USED ORIGINAL&lt;BR /&gt;71 ! CODE ABOVE */&lt;BR /&gt;72 DATA _NULL_;&lt;BR /&gt;73 YR_START_DATE=INTNX('MONTH', DATE(), -1, 'B');&lt;BR /&gt;74 YR_END_DATE=INTNX('MONTH', DATE(), -12, 'E');&lt;BR /&gt;75 &lt;BR /&gt;76 DO UNTIL(YR_END_DATE&amp;gt;YR_START_DATE);&lt;BR /&gt;77 i+1;&lt;BR /&gt;78 MNTH_START_DATE=YR_START_DATE;&lt;BR /&gt;79 MNTH_END_DATE=INTNX('MONTH', MNTH_START_DATE, 0, 'S');&lt;BR /&gt;80 PREVDTE=INTNX('MONTH', MNTH_START_DATE, -1, 'S');&lt;BR /&gt;81 &lt;BR /&gt;82 /*PREVIOUS MONTHS DATE*/&lt;BR /&gt;83 PUT MNTH_START_DATE=YYMMDD10. MNTH_END_DATE=YYMMDD10. PREVDTE=YYMMDD10.;&lt;BR /&gt;84 CALL SYMPUT(CATS('MNTH', I), PUT(MNTH_START_DATE, YYMMN6.));&lt;BR /&gt;85 CALL SYMPUT(CATS('MNTHSTDT', I), PUT(MNTH_START_DATE, YYMMN6.));&lt;BR /&gt;86 CALL SYMPUT(CATS('MNTHENDDT', I), PUT(MNTH_END_DATE, YYMMN6.));&lt;BR /&gt;87 CALL SYMPUT(CATS('DATE', I), PUT(MNTH_END_DATE, YYMMN6.));&lt;BR /&gt;88 &lt;BR /&gt;89 /*FIRST MONTHS DATE YYMM AS TRANSACTION DATE*/&lt;BR /&gt;90 CALL SYMPUT(CATS('ATMDATE', I), PUT(PREVDTE, YYMMN6.));&lt;BR /&gt;91 &lt;BR /&gt;92 /*PRIVOUS MONTHS DATE YYMM AS TRANSACTION DATE*/&lt;BR /&gt;93 CALL SYMPUT(CATS('PREVDTE', I), PUT(INTNX('MONTH', MNTH_START_DATE, -1, 'S'),&lt;BR /&gt;94 YYMMDD10.));&lt;BR /&gt;95 &lt;BR /&gt;96 /*PRIVOUS MONTHS DATE YYMMDD AS TRANSACTION DATE*/&lt;BR /&gt;97 YR_START_DATE=INTNX('MONTH', YR_START_DATE, -1);&lt;BR /&gt;98 END;&lt;BR /&gt;99 PUT YR_START_DATE YR_END_DATE;&lt;BR /&gt;100 RUN;&lt;BR /&gt;&lt;BR /&gt;MNTH_START_DATE=2022-08-01 MNTH_END_DATE=2022-08-01 PREVDTE=2022-07-01&lt;BR /&gt;MNTH_START_DATE=2022-07-01 MNTH_END_DATE=2022-07-01 PREVDTE=2022-06-01&lt;BR /&gt;MNTH_START_DATE=2022-06-01 MNTH_END_DATE=2022-06-01 PREVDTE=2022-05-01&lt;BR /&gt;MNTH_START_DATE=2022-05-01 MNTH_END_DATE=2022-05-01 PREVDTE=2022-04-01&lt;BR /&gt;MNTH_START_DATE=2022-04-01 MNTH_END_DATE=2022-04-01 PREVDTE=2022-03-01&lt;BR /&gt;MNTH_START_DATE=2022-03-01 MNTH_END_DATE=2022-03-01 PREVDTE=2022-02-01&lt;BR /&gt;MNTH_START_DATE=2022-02-01 MNTH_END_DATE=2022-02-01 PREVDTE=2022-01-01&lt;BR /&gt;MNTH_START_DATE=2022-01-01 MNTH_END_DATE=2022-01-01 PREVDTE=2021-12-01&lt;BR /&gt;MNTH_START_DATE=2021-12-01 MNTH_END_DATE=2021-12-01 PREVDTE=2021-11-01&lt;BR /&gt;MNTH_START_DATE=2021-11-01 MNTH_END_DATE=2021-11-01 PREVDTE=2021-10-01&lt;BR /&gt;MNTH_START_DATE=2021-10-01 MNTH_END_DATE=2021-10-01 PREVDTE=2021-09-01&lt;BR /&gt;22524 22553&lt;BR /&gt;NOTE: DATA statement used (Total process time):&lt;BR /&gt;real time 0.00 seconds&lt;BR /&gt;user cpu time 0.01 seconds&lt;BR /&gt;system cpu time 0.00 seconds&lt;BR /&gt;memory 606.50k&lt;BR /&gt;OS Memory 23716.00k&lt;BR /&gt;Timestamp 09/10/2022 04:42:54 AM&lt;BR /&gt;Step Count 277 Switch Count 0&lt;BR /&gt;Page Faults 0&lt;BR /&gt;Page Reclaims 91&lt;BR /&gt;Page Swaps 0&lt;BR /&gt;Voluntary Context Switches 0&lt;BR /&gt;Involuntary Context Switches 0&lt;BR /&gt;Block Input Operations 0&lt;BR /&gt;Block Output Operations 0&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;101 &lt;BR /&gt;102 /* I AM TRYING TO ARRANGE THE DATASETS FOR EVERY QUARTER WHICH CAN BE HELPFUL FOR ANALYSIS AND SPACE */&lt;BR /&gt;103 %MACRO QTRS();&lt;BR /&gt;104 %DO i=1 %TO 3;/*TRYING FOR THE 1ST QTR*/&lt;BR /&gt;105 %LET K = %EVAL(&amp;amp;i.+1);&lt;BR /&gt;106 /* TO GET THE PREVIOUS DATES FOR THE PREVIOUS MONTHS */&lt;BR /&gt;107 %LET CURR_DATE_&amp;amp;K. = &amp;amp;&amp;amp;PREVDTE&amp;amp;i.;&lt;BR /&gt;108 %PUT &amp;amp;&amp;amp;CURR_DATE_&amp;amp;K.;&lt;BR /&gt;109 &lt;BR /&gt;110 %LET ATMDATE&amp;amp;i. = %SYSFUNC(INPUTN(&amp;amp;&amp;amp;CURR_DATE_&amp;amp;K., YYMMDD10.), YYMMN6.);&lt;BR /&gt;111 %PUT ATM&amp;amp;i.===&amp;gt;&amp;gt; &amp;amp;&amp;amp;ATMDATE&amp;amp;i.;&lt;BR /&gt;112 %LET DATE_&amp;amp;K. = %SYSFUNC(INPUTN(&amp;amp;&amp;amp;CURR_DATE_&amp;amp;K., YYMMDD10.), YYMMN6.);&lt;BR /&gt;113 %PUT DATE&amp;amp;K.===&amp;gt;&amp;gt; &amp;amp;&amp;amp;dATE_&amp;amp;K.;&lt;BR /&gt;114 &lt;BR /&gt;115 /* TO GET THE LAST QTR DATE - NOT SURE WHY AM I NOT ABLE TO GET IT */&lt;BR /&gt;116 %IF &amp;amp;i.= %EVAL(%SYSFUNC(MAX(&amp;amp;i.))) %THEN %DO;&lt;BR /&gt;117 %PUT &amp;amp;I.;&lt;BR /&gt;118 %LET BGNDTE = %SYSFUNC(INPUTN(&amp;amp;&amp;amp;PREVDTE&amp;amp;i., YYMMDD10.), 6.);&lt;BR /&gt;119 %PUT BGNDTE ==&amp;gt;&amp;gt; &amp;amp;BGNDTE. ;&lt;BR /&gt;120 %LET PDSTART = %SYSFUNC(INPUTN(&amp;amp;&amp;amp;PREVDTE&amp;amp;i., YYMMDD10.), YYMMN6.);&lt;BR /&gt;121 %PUT PDSTART===&amp;gt;&amp;gt; &amp;amp;PDSTART.;&lt;BR /&gt;122 %END;&lt;BR /&gt;123 &lt;BR /&gt;124 %END;&lt;BR /&gt;125 %MEND;&lt;BR /&gt;126 &lt;BR /&gt;127 %QTRS;&lt;BR /&gt;2022-07-01&lt;BR /&gt;ATM1===&amp;gt;&amp;gt; 202207&lt;BR /&gt;DATE2===&amp;gt;&amp;gt; 202207&lt;BR /&gt;1&lt;BR /&gt;BGNDTE ==&amp;gt;&amp;gt; 22827&lt;BR /&gt;PDSTART===&amp;gt;&amp;gt; 202207&lt;BR /&gt;2022-06-01&lt;BR /&gt;ATM2===&amp;gt;&amp;gt; 202206&lt;BR /&gt;DATE3===&amp;gt;&amp;gt; 202206&lt;BR /&gt;2&lt;BR /&gt;BGNDTE ==&amp;gt;&amp;gt; 22797&lt;BR /&gt;PDSTART===&amp;gt;&amp;gt; 202206&lt;BR /&gt;2022-05-01&lt;BR /&gt;ATM3===&amp;gt;&amp;gt; 202205&lt;BR /&gt;DATE4===&amp;gt;&amp;gt; 202205&lt;BR /&gt;3&lt;BR /&gt;BGNDTE ==&amp;gt;&amp;gt; 22766&lt;BR /&gt;PDSTART===&amp;gt;&amp;gt; 202205&lt;BR /&gt;128 &lt;BR /&gt;129 &lt;BR /&gt;130 &lt;BR /&gt;131 &lt;BR /&gt;132 &lt;BR /&gt;133 /*ORIGINAL CODE*/&lt;BR /&gt;134 &lt;BR /&gt;135 DATA _NULL_;&lt;BR /&gt;136 TDY = MDY(MONTH(TODAY()),1,YEAR(TODAY()));&lt;BR /&gt;137 ENDATE = TDY - 1;&lt;BR /&gt;138 STDATE = MDY(MONTH(ENDATE),1,YEAR(ENDATE));&lt;BR /&gt;139 /*CREATE CURRENT START DATE AND END DATE OF THE MONTHS 1ST &amp;amp; LAST DAY OF THE MONTH*/&lt;BR /&gt;140 CALL SYMPUTX('MNSTRT',PUT(STDATE ,YYMMDD10.));&lt;BR /&gt;141 CALL SYMPUTX('MNENDT',PUT(ENDATE,YYMMDD10.));&lt;BR /&gt;142 CALL SYMPUTX('DATE1',PUT(STDATE,YYMMN6.));&lt;BR /&gt;143 /*PRIOR MONTHS -1 MONTH*/&lt;BR /&gt;144 CURR_DTE_2 = INTNX('MONTH',STDATE,-1,'S');&lt;BR /&gt;145 CALL SYMPUTX ('DATE2',PUT(CURR_DTE_2 ,YYMMN6.));&lt;BR /&gt;146 CALL SYMPUTX ('TXNDATE1',PUT(CURR_DTE_2 ,YYMMN6.));&lt;BR /&gt;147 &lt;BR /&gt;148 /*PRIOR MONTHS -2 MONTH*/&lt;BR /&gt;149 CURR_DTE_3 = INTNX('MONTH',STDATE,-2,'S');&lt;BR /&gt;150 CALL SYMPUTX ('DATE3',PUT(CURR_DTE_3 ,YYMMN6.));&lt;BR /&gt;151 CALL SYMPUTX ('TXNDATE2',PUT(CURR_DTE_3 ,YYMMN6.));&lt;BR /&gt;152 CALL SYMPUTX ('QTRNDATE',PUT(CURR_DTE_3 ,YYMMDD10.)); /*THIS WILL END FOR THE QTR*/&lt;BR /&gt;153 &lt;BR /&gt;154 /*3 MONTHS PRIOR*/&lt;BR /&gt;155 CURR_DTE_4 = INTNX('MONTH',STDATE,-3,'S');&lt;BR /&gt;156 CALL SYMPUTX ('TXNDATE3',PUT(CURR_DTE_4 ,YYMMN6.));&lt;BR /&gt;157 &lt;BR /&gt;158 /*TO CREATE THE NUMBER OF DAYS(SAS DAYS)*/&lt;BR /&gt;159 CALL SYMPUTX('BGDTE',CURR_DTE_3);&lt;BR /&gt;160 CALL SYMPUTX('endt',ENDATE);&lt;BR /&gt;161 PUT CURR_DTE_4 = YYMMDD10. CURR_DTE_3 = YYMMDD10. CURR_DTE_2 = YYMMDD10. STDATE=YYMMDD10. ENDATE = YYMMDD10.;&lt;BR /&gt;162 RUN;&lt;BR /&gt;&lt;BR /&gt;CURR_DTE_4=2022-05-01 CURR_DTE_3=2022-06-01 CURR_DTE_2=2022-07-01 STDATE=2022-08-01 ENDATE=2022-08-31&lt;BR /&gt;NOTE: DATA statement used (Total process time):&lt;BR /&gt;real time 0.00 seconds&lt;BR /&gt;user cpu time 0.00 seconds&lt;BR /&gt;system cpu time 0.00 seconds&lt;BR /&gt;memory 561.25k&lt;BR /&gt;OS Memory 23716.00k&lt;BR /&gt;Timestamp 09/10/2022 04:42:54 AM&lt;BR /&gt;Step Count 278 Switch Count 0&lt;BR /&gt;Page Faults 0&lt;BR /&gt;Page Reclaims 32&lt;BR /&gt;Page Swaps 0&lt;BR /&gt;Voluntary Context Switches 0&lt;BR /&gt;Involuntary Context Switches 0&lt;BR /&gt;Block Input Operations 0&lt;BR /&gt;Block Output Operations 8&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;163 &lt;BR /&gt;164 %put date1====&amp;gt;&amp;gt; &amp;amp;date1. date2====&amp;gt;&amp;gt; &amp;amp;date2. date3====&amp;gt;&amp;gt; &amp;amp;date3.;&lt;BR /&gt;date1====&amp;gt;&amp;gt; 202208 date2====&amp;gt;&amp;gt; 202207 date3====&amp;gt;&amp;gt; 202206&lt;BR /&gt;165 %put TXNDATE1====&amp;gt;&amp;gt; &amp;amp;TXNDATE1. TXNDATE2====&amp;gt;&amp;gt; &amp;amp;TXNDATE2. TXNDATE3====&amp;gt;&amp;gt; &amp;amp;TXNDATE3.; /*atmdates*/&lt;BR /&gt;TXNDATE1====&amp;gt;&amp;gt; 202207 TXNDATE2====&amp;gt;&amp;gt; 202206 TXNDATE3====&amp;gt;&amp;gt; 202205&lt;BR /&gt;166 %PUT BGNDTE ==&amp;gt;&amp;gt; &amp;amp;BGDTE. ;&lt;BR /&gt;BGNDTE ==&amp;gt;&amp;gt; 22797&lt;BR /&gt;167 %PUT endDTE ==&amp;gt;&amp;gt; &amp;amp;endt.;&lt;BR /&gt;endDTE ==&amp;gt;&amp;gt; 22888&lt;BR /&gt;168 &lt;BR /&gt;169 &lt;BR /&gt;170 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;&lt;BR /&gt;180 &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;

&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Sat, 10 Sep 2022 05:06:48 GMT</pubDate>
    <dc:creator>Santt0sh</dc:creator>
    <dc:date>2022-09-10T05:06:48Z</dc:date>
    <item>
      <title>Split Years data into 3 months( Data can be for more than 12 months but need to split it in 3 months</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Split-Years-data-into-3-months-Data-can-be-for-more-than-12/m-p/832603#M329102</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;Please find the below code and help get the datasets for every 3 months. i have tried many things but i am not able to stop at the third month(i.e. the begin and end date the macro variable to should capture the 3rd month&lt;BR /&gt;but im creating a new value for every i. i have tried Max (&amp;amp;I.)).&lt;BR /&gt;In "MY CODE" below i am not able to iterate (i++) when the its the 4th month.&lt;BR /&gt;for ex : Jan Feb and Mar months. im trying to end the procesing at mar and start or pick a new month from april, may or june.&lt;BR /&gt;the below Original Code we are only extracting for every 3 months but now i am trying to get for every 3rd month in a year.(q1,q2,q3,and q4).&lt;BR /&gt;&lt;BR /&gt;Kindly Suggest!!!!&lt;BR /&gt;

/*ORIGINAL CODE*/

DATA _NULL_;
TDY = MDY(MONTH(TODAY()),1,YEAR(TODAY()));
ENDATE = TDY - 1;
STDATE = MDY(MONTH(ENDATE),1,YEAR(ENDATE));
/*CREATE CURRENT START DATE AND END DATE OF THE MONTHS 1ST &amp;amp; LAST DAY OF THE MONTH*/
CALL SYMPUTX('MNSTRT',PUT(STDATE ,YYMMDD10.));
CALL SYMPUTX('MNENDT',PUT(ENDATE,YYMMDD10.));
CALL SYMPUTX('DATE1',PUT(STDATE,YYMMN6.));
/*PRIOR MONTHS -1 MONTH*/
CURR_DTE_2 = INTNX('MONTH',STDATE,-1,'S');
CALL SYMPUTX ('DATE2',PUT(CURR_DTE_2 ,YYMMN6.));
CALL SYMPUTX ('TXNDATE1',PUT(CURR_DTE_2 ,YYMMN6.));

/*PRIOR MONTHS -2 MONTH*/
CURR_DTE_3 = INTNX('MONTH',STDATE,-2,'S');
CALL SYMPUTX ('DATE3',PUT(CURR_DTE_3 ,YYMMN6.));
CALL SYMPUTX ('TXNDATE2',PUT(CURR_DTE_3 ,YYMMN6.));
CALL SYMPUTX ('QTRNDATE',PUT(CURR_DTE_3 ,YYMMDD10.)); /*THIS WILL END FOR THE QTR*/

/*3 MONTHS PRIOR*/
CURR_DTE_4 = INTNX('MONTH',STDATE,-3,'S');
CALL SYMPUTX ('TXNDATE3',PUT(CURR_DTE_4 ,YYMMN6.));

/*TO CREATE THE NUMBER OF DAYS(SAS DAYS)*/
CALL SYMPUTX('BGDTE',CURR_DTE_3);
CALL SYMPUTX('endt',ENDATE);
PUT CURR_DTE_4  = YYMMDD10. CURR_DTE_3  = YYMMDD10. CURR_DTE_2  = YYMMDD10.  STDATE=YYMMDD10.  ENDATE = YYMMDD10.;
RUN;

%put date1====&amp;gt;&amp;gt; &amp;amp;date1.  date2====&amp;gt;&amp;gt; &amp;amp;date2.  date3====&amp;gt;&amp;gt;  &amp;amp;date3.;
%put TXNDATE1====&amp;gt;&amp;gt; &amp;amp;TXNDATE1. TXNDATE2====&amp;gt;&amp;gt; &amp;amp;TXNDATE2.  TXNDATE3====&amp;gt;&amp;gt;  &amp;amp;TXNDATE3.; /*atmdates*/
%PUT BGNDTE ==&amp;gt;&amp;gt; &amp;amp;BGDTE. ; 
%PUT endDTE ==&amp;gt;&amp;gt; &amp;amp;endt.;

/*-----------------------------------------------------------------------------------*/




/*programmatically obtain dates*/
/*MY CODE*/
/*INITIALLY I WAS PLANNING TO GET ALL THE MONTHS FOR AN YEAR AND BREAK THEM INTO QTRS, BUT I FAILED TO. SO USED THE ORIGINAL CODE ABOVE */
DATA _NULL_;
	YR_START_DATE=INTNX('MONTH', DATE(), -1, 'B');
	YR_END_DATE=INTNX('MONTH', DATE(), -12, 'E');

	DO UNTIL(YR_END_DATE&amp;gt;YR_START_DATE);
		i+1;
		MNTH_START_DATE=YR_START_DATE;
		MNTH_END_DATE=INTNX('MONTH', MNTH_START_DATE, 0, 'S');
		PREVDTE=INTNX('MONTH', MNTH_START_DATE, -1, 'S');

		/*PREVIOUS MONTHS DATE*/
		PUT MNTH_START_DATE=YYMMDD10. MNTH_END_DATE=YYMMDD10.  PREVDTE=YYMMDD10.;
		CALL SYMPUT(CATS('MNTH', I), PUT(MNTH_START_DATE, YYMMN6.));
		CALL SYMPUT(CATS('MNTHSTDT', I), PUT(MNTH_START_DATE, YYMMN6.));
		CALL SYMPUT(CATS('MNTHENDDT', I), PUT(MNTH_END_DATE, YYMMN6.));
		CALL SYMPUT(CATS('DATE', I), PUT(MNTH_END_DATE, YYMMN6.));

		/*FIRST MONTHS DATE YYMM AS TRANSACTION DATE*/
		CALL SYMPUT(CATS('ATMDATE', I), PUT(PREVDTE, YYMMN6.));

		/*PREVIOUS MONTHS DATE YYMM AS TRANSACTION DATE*/
		CALL SYMPUT(CATS('PREVDTE', I), PUT(INTNX('MONTH', MNTH_START_DATE, -1, 'S'), 
			YYMMDD10.));

		/*PREVIOUS MONTHS DATE YYMMDD AS TRANSACTION DATE*/
		YR_START_DATE=INTNX('MONTH', YR_START_DATE, -1);
	END;
	PUT YR_START_DATE YR_END_DATE;
RUN;

/* I AM TRYING TO ARRANGE THE DATASETS FOR EVERY QUARTER WHICH CAN BE HELPFUL FOR ANALYSIS AND SPACE */
%MACRO QTRS();
	%DO i=1 %TO 3;/*TRYING FOR THE 1ST QTR*/
 %LET K = %EVAL(&amp;amp;i.+1);
		/* TO GET THE PREVIOUS DATES FOR THE PREVIOUS MONTHS  */
%LET CURR_DATE_&amp;amp;K. = &amp;amp;&amp;amp;PREVDTE&amp;amp;i.;
%PUT &amp;amp;&amp;amp;CURR_DATE_&amp;amp;K.;

		 		%LET ATMDATE&amp;amp;i. =  %SYSFUNC(INPUTN(&amp;amp;&amp;amp;CURR_DATE_&amp;amp;K., YYMMDD10.), YYMMN6.); 
				%PUT ATM&amp;amp;i.===&amp;gt;&amp;gt; &amp;amp;&amp;amp;ATMDATE&amp;amp;i.;
				%LET DATE_&amp;amp;K. =  %SYSFUNC(INPUTN(&amp;amp;&amp;amp;CURR_DATE_&amp;amp;K., YYMMDD10.), YYMMN6.); 
				%PUT DATE&amp;amp;K.===&amp;gt;&amp;gt; &amp;amp;&amp;amp;dATE_&amp;amp;K.;
				
				/* 		TO GET THE LAST QTR DATE - NOT SURE WHY AM I NOT ABLE TO GET IT */
				%IF &amp;amp;i.= %EVAL(%SYSFUNC(MAX(&amp;amp;i.))) %THEN %DO;
					%PUT &amp;amp;I.;
		 			%LET BGNDTE = %SYSFUNC(INPUTN(&amp;amp;&amp;amp;PREVDTE&amp;amp;i., YYMMDD10.), 6.); 
		 		%PUT BGNDTE ==&amp;gt;&amp;gt; &amp;amp;BGNDTE. ; 
		 					%LET PDSTART = %SYSFUNC(INPUTN(&amp;amp;&amp;amp;PREVDTE&amp;amp;i., YYMMDD10.), YYMMN6.);
		 					%PUT PDSTART===&amp;gt;&amp;gt; &amp;amp;PDSTART.;
		%END;

	%END;
%MEND;

%QTRS;

/*LOGS*/&lt;BR /&gt;&lt;BR /&gt; &lt;BR /&gt;1 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;&lt;BR /&gt;68 &lt;BR /&gt;69 /*programmatically obtain dates*/&lt;BR /&gt;70 /*MY CODE*/&lt;BR /&gt;71 /*INITALLY I WAS PLANNING TO GET ALL THE MONTHS FOR AN YEAR AND BREAK THEM INTO QTRS, BUT I FAILED TO. SO USED ORIGINAL&lt;BR /&gt;71 ! CODE ABOVE */&lt;BR /&gt;72 DATA _NULL_;&lt;BR /&gt;73 YR_START_DATE=INTNX('MONTH', DATE(), -1, 'B');&lt;BR /&gt;74 YR_END_DATE=INTNX('MONTH', DATE(), -12, 'E');&lt;BR /&gt;75 &lt;BR /&gt;76 DO UNTIL(YR_END_DATE&amp;gt;YR_START_DATE);&lt;BR /&gt;77 i+1;&lt;BR /&gt;78 MNTH_START_DATE=YR_START_DATE;&lt;BR /&gt;79 MNTH_END_DATE=INTNX('MONTH', MNTH_START_DATE, 0, 'S');&lt;BR /&gt;80 PREVDTE=INTNX('MONTH', MNTH_START_DATE, -1, 'S');&lt;BR /&gt;81 &lt;BR /&gt;82 /*PREVIOUS MONTHS DATE*/&lt;BR /&gt;83 PUT MNTH_START_DATE=YYMMDD10. MNTH_END_DATE=YYMMDD10. PREVDTE=YYMMDD10.;&lt;BR /&gt;84 CALL SYMPUT(CATS('MNTH', I), PUT(MNTH_START_DATE, YYMMN6.));&lt;BR /&gt;85 CALL SYMPUT(CATS('MNTHSTDT', I), PUT(MNTH_START_DATE, YYMMN6.));&lt;BR /&gt;86 CALL SYMPUT(CATS('MNTHENDDT', I), PUT(MNTH_END_DATE, YYMMN6.));&lt;BR /&gt;87 CALL SYMPUT(CATS('DATE', I), PUT(MNTH_END_DATE, YYMMN6.));&lt;BR /&gt;88 &lt;BR /&gt;89 /*FIRST MONTHS DATE YYMM AS TRANSACTION DATE*/&lt;BR /&gt;90 CALL SYMPUT(CATS('ATMDATE', I), PUT(PREVDTE, YYMMN6.));&lt;BR /&gt;91 &lt;BR /&gt;92 /*PRIVOUS MONTHS DATE YYMM AS TRANSACTION DATE*/&lt;BR /&gt;93 CALL SYMPUT(CATS('PREVDTE', I), PUT(INTNX('MONTH', MNTH_START_DATE, -1, 'S'),&lt;BR /&gt;94 YYMMDD10.));&lt;BR /&gt;95 &lt;BR /&gt;96 /*PRIVOUS MONTHS DATE YYMMDD AS TRANSACTION DATE*/&lt;BR /&gt;97 YR_START_DATE=INTNX('MONTH', YR_START_DATE, -1);&lt;BR /&gt;98 END;&lt;BR /&gt;99 PUT YR_START_DATE YR_END_DATE;&lt;BR /&gt;100 RUN;&lt;BR /&gt;&lt;BR /&gt;MNTH_START_DATE=2022-08-01 MNTH_END_DATE=2022-08-01 PREVDTE=2022-07-01&lt;BR /&gt;MNTH_START_DATE=2022-07-01 MNTH_END_DATE=2022-07-01 PREVDTE=2022-06-01&lt;BR /&gt;MNTH_START_DATE=2022-06-01 MNTH_END_DATE=2022-06-01 PREVDTE=2022-05-01&lt;BR /&gt;MNTH_START_DATE=2022-05-01 MNTH_END_DATE=2022-05-01 PREVDTE=2022-04-01&lt;BR /&gt;MNTH_START_DATE=2022-04-01 MNTH_END_DATE=2022-04-01 PREVDTE=2022-03-01&lt;BR /&gt;MNTH_START_DATE=2022-03-01 MNTH_END_DATE=2022-03-01 PREVDTE=2022-02-01&lt;BR /&gt;MNTH_START_DATE=2022-02-01 MNTH_END_DATE=2022-02-01 PREVDTE=2022-01-01&lt;BR /&gt;MNTH_START_DATE=2022-01-01 MNTH_END_DATE=2022-01-01 PREVDTE=2021-12-01&lt;BR /&gt;MNTH_START_DATE=2021-12-01 MNTH_END_DATE=2021-12-01 PREVDTE=2021-11-01&lt;BR /&gt;MNTH_START_DATE=2021-11-01 MNTH_END_DATE=2021-11-01 PREVDTE=2021-10-01&lt;BR /&gt;MNTH_START_DATE=2021-10-01 MNTH_END_DATE=2021-10-01 PREVDTE=2021-09-01&lt;BR /&gt;22524 22553&lt;BR /&gt;NOTE: DATA statement used (Total process time):&lt;BR /&gt;real time 0.00 seconds&lt;BR /&gt;user cpu time 0.01 seconds&lt;BR /&gt;system cpu time 0.00 seconds&lt;BR /&gt;memory 606.50k&lt;BR /&gt;OS Memory 23716.00k&lt;BR /&gt;Timestamp 09/10/2022 04:42:54 AM&lt;BR /&gt;Step Count 277 Switch Count 0&lt;BR /&gt;Page Faults 0&lt;BR /&gt;Page Reclaims 91&lt;BR /&gt;Page Swaps 0&lt;BR /&gt;Voluntary Context Switches 0&lt;BR /&gt;Involuntary Context Switches 0&lt;BR /&gt;Block Input Operations 0&lt;BR /&gt;Block Output Operations 0&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;101 &lt;BR /&gt;102 /* I AM TRYING TO ARRANGE THE DATASETS FOR EVERY QUARTER WHICH CAN BE HELPFUL FOR ANALYSIS AND SPACE */&lt;BR /&gt;103 %MACRO QTRS();&lt;BR /&gt;104 %DO i=1 %TO 3;/*TRYING FOR THE 1ST QTR*/&lt;BR /&gt;105 %LET K = %EVAL(&amp;amp;i.+1);&lt;BR /&gt;106 /* TO GET THE PREVIOUS DATES FOR THE PREVIOUS MONTHS */&lt;BR /&gt;107 %LET CURR_DATE_&amp;amp;K. = &amp;amp;&amp;amp;PREVDTE&amp;amp;i.;&lt;BR /&gt;108 %PUT &amp;amp;&amp;amp;CURR_DATE_&amp;amp;K.;&lt;BR /&gt;109 &lt;BR /&gt;110 %LET ATMDATE&amp;amp;i. = %SYSFUNC(INPUTN(&amp;amp;&amp;amp;CURR_DATE_&amp;amp;K., YYMMDD10.), YYMMN6.);&lt;BR /&gt;111 %PUT ATM&amp;amp;i.===&amp;gt;&amp;gt; &amp;amp;&amp;amp;ATMDATE&amp;amp;i.;&lt;BR /&gt;112 %LET DATE_&amp;amp;K. = %SYSFUNC(INPUTN(&amp;amp;&amp;amp;CURR_DATE_&amp;amp;K., YYMMDD10.), YYMMN6.);&lt;BR /&gt;113 %PUT DATE&amp;amp;K.===&amp;gt;&amp;gt; &amp;amp;&amp;amp;dATE_&amp;amp;K.;&lt;BR /&gt;114 &lt;BR /&gt;115 /* TO GET THE LAST QTR DATE - NOT SURE WHY AM I NOT ABLE TO GET IT */&lt;BR /&gt;116 %IF &amp;amp;i.= %EVAL(%SYSFUNC(MAX(&amp;amp;i.))) %THEN %DO;&lt;BR /&gt;117 %PUT &amp;amp;I.;&lt;BR /&gt;118 %LET BGNDTE = %SYSFUNC(INPUTN(&amp;amp;&amp;amp;PREVDTE&amp;amp;i., YYMMDD10.), 6.);&lt;BR /&gt;119 %PUT BGNDTE ==&amp;gt;&amp;gt; &amp;amp;BGNDTE. ;&lt;BR /&gt;120 %LET PDSTART = %SYSFUNC(INPUTN(&amp;amp;&amp;amp;PREVDTE&amp;amp;i., YYMMDD10.), YYMMN6.);&lt;BR /&gt;121 %PUT PDSTART===&amp;gt;&amp;gt; &amp;amp;PDSTART.;&lt;BR /&gt;122 %END;&lt;BR /&gt;123 &lt;BR /&gt;124 %END;&lt;BR /&gt;125 %MEND;&lt;BR /&gt;126 &lt;BR /&gt;127 %QTRS;&lt;BR /&gt;2022-07-01&lt;BR /&gt;ATM1===&amp;gt;&amp;gt; 202207&lt;BR /&gt;DATE2===&amp;gt;&amp;gt; 202207&lt;BR /&gt;1&lt;BR /&gt;BGNDTE ==&amp;gt;&amp;gt; 22827&lt;BR /&gt;PDSTART===&amp;gt;&amp;gt; 202207&lt;BR /&gt;2022-06-01&lt;BR /&gt;ATM2===&amp;gt;&amp;gt; 202206&lt;BR /&gt;DATE3===&amp;gt;&amp;gt; 202206&lt;BR /&gt;2&lt;BR /&gt;BGNDTE ==&amp;gt;&amp;gt; 22797&lt;BR /&gt;PDSTART===&amp;gt;&amp;gt; 202206&lt;BR /&gt;2022-05-01&lt;BR /&gt;ATM3===&amp;gt;&amp;gt; 202205&lt;BR /&gt;DATE4===&amp;gt;&amp;gt; 202205&lt;BR /&gt;3&lt;BR /&gt;BGNDTE ==&amp;gt;&amp;gt; 22766&lt;BR /&gt;PDSTART===&amp;gt;&amp;gt; 202205&lt;BR /&gt;128 &lt;BR /&gt;129 &lt;BR /&gt;130 &lt;BR /&gt;131 &lt;BR /&gt;132 &lt;BR /&gt;133 /*ORIGINAL CODE*/&lt;BR /&gt;134 &lt;BR /&gt;135 DATA _NULL_;&lt;BR /&gt;136 TDY = MDY(MONTH(TODAY()),1,YEAR(TODAY()));&lt;BR /&gt;137 ENDATE = TDY - 1;&lt;BR /&gt;138 STDATE = MDY(MONTH(ENDATE),1,YEAR(ENDATE));&lt;BR /&gt;139 /*CREATE CURRENT START DATE AND END DATE OF THE MONTHS 1ST &amp;amp; LAST DAY OF THE MONTH*/&lt;BR /&gt;140 CALL SYMPUTX('MNSTRT',PUT(STDATE ,YYMMDD10.));&lt;BR /&gt;141 CALL SYMPUTX('MNENDT',PUT(ENDATE,YYMMDD10.));&lt;BR /&gt;142 CALL SYMPUTX('DATE1',PUT(STDATE,YYMMN6.));&lt;BR /&gt;143 /*PRIOR MONTHS -1 MONTH*/&lt;BR /&gt;144 CURR_DTE_2 = INTNX('MONTH',STDATE,-1,'S');&lt;BR /&gt;145 CALL SYMPUTX ('DATE2',PUT(CURR_DTE_2 ,YYMMN6.));&lt;BR /&gt;146 CALL SYMPUTX ('TXNDATE1',PUT(CURR_DTE_2 ,YYMMN6.));&lt;BR /&gt;147 &lt;BR /&gt;148 /*PRIOR MONTHS -2 MONTH*/&lt;BR /&gt;149 CURR_DTE_3 = INTNX('MONTH',STDATE,-2,'S');&lt;BR /&gt;150 CALL SYMPUTX ('DATE3',PUT(CURR_DTE_3 ,YYMMN6.));&lt;BR /&gt;151 CALL SYMPUTX ('TXNDATE2',PUT(CURR_DTE_3 ,YYMMN6.));&lt;BR /&gt;152 CALL SYMPUTX ('QTRNDATE',PUT(CURR_DTE_3 ,YYMMDD10.)); /*THIS WILL END FOR THE QTR*/&lt;BR /&gt;153 &lt;BR /&gt;154 /*3 MONTHS PRIOR*/&lt;BR /&gt;155 CURR_DTE_4 = INTNX('MONTH',STDATE,-3,'S');&lt;BR /&gt;156 CALL SYMPUTX ('TXNDATE3',PUT(CURR_DTE_4 ,YYMMN6.));&lt;BR /&gt;157 &lt;BR /&gt;158 /*TO CREATE THE NUMBER OF DAYS(SAS DAYS)*/&lt;BR /&gt;159 CALL SYMPUTX('BGDTE',CURR_DTE_3);&lt;BR /&gt;160 CALL SYMPUTX('endt',ENDATE);&lt;BR /&gt;161 PUT CURR_DTE_4 = YYMMDD10. CURR_DTE_3 = YYMMDD10. CURR_DTE_2 = YYMMDD10. STDATE=YYMMDD10. ENDATE = YYMMDD10.;&lt;BR /&gt;162 RUN;&lt;BR /&gt;&lt;BR /&gt;CURR_DTE_4=2022-05-01 CURR_DTE_3=2022-06-01 CURR_DTE_2=2022-07-01 STDATE=2022-08-01 ENDATE=2022-08-31&lt;BR /&gt;NOTE: DATA statement used (Total process time):&lt;BR /&gt;real time 0.00 seconds&lt;BR /&gt;user cpu time 0.00 seconds&lt;BR /&gt;system cpu time 0.00 seconds&lt;BR /&gt;memory 561.25k&lt;BR /&gt;OS Memory 23716.00k&lt;BR /&gt;Timestamp 09/10/2022 04:42:54 AM&lt;BR /&gt;Step Count 278 Switch Count 0&lt;BR /&gt;Page Faults 0&lt;BR /&gt;Page Reclaims 32&lt;BR /&gt;Page Swaps 0&lt;BR /&gt;Voluntary Context Switches 0&lt;BR /&gt;Involuntary Context Switches 0&lt;BR /&gt;Block Input Operations 0&lt;BR /&gt;Block Output Operations 8&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;163 &lt;BR /&gt;164 %put date1====&amp;gt;&amp;gt; &amp;amp;date1. date2====&amp;gt;&amp;gt; &amp;amp;date2. date3====&amp;gt;&amp;gt; &amp;amp;date3.;&lt;BR /&gt;date1====&amp;gt;&amp;gt; 202208 date2====&amp;gt;&amp;gt; 202207 date3====&amp;gt;&amp;gt; 202206&lt;BR /&gt;165 %put TXNDATE1====&amp;gt;&amp;gt; &amp;amp;TXNDATE1. TXNDATE2====&amp;gt;&amp;gt; &amp;amp;TXNDATE2. TXNDATE3====&amp;gt;&amp;gt; &amp;amp;TXNDATE3.; /*atmdates*/&lt;BR /&gt;TXNDATE1====&amp;gt;&amp;gt; 202207 TXNDATE2====&amp;gt;&amp;gt; 202206 TXNDATE3====&amp;gt;&amp;gt; 202205&lt;BR /&gt;166 %PUT BGNDTE ==&amp;gt;&amp;gt; &amp;amp;BGDTE. ;&lt;BR /&gt;BGNDTE ==&amp;gt;&amp;gt; 22797&lt;BR /&gt;167 %PUT endDTE ==&amp;gt;&amp;gt; &amp;amp;endt.;&lt;BR /&gt;endDTE ==&amp;gt;&amp;gt; 22888&lt;BR /&gt;168 &lt;BR /&gt;169 &lt;BR /&gt;170 OPTIONS NONOTES NOSTIMER NOSOURCE NOSYNTAXCHECK;&lt;BR /&gt;180 &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;

&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 10 Sep 2022 05:06:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Split-Years-data-into-3-months-Data-can-be-for-more-than-12/m-p/832603#M329102</guid>
      <dc:creator>Santt0sh</dc:creator>
      <dc:date>2022-09-10T05:06:48Z</dc:date>
    </item>
    <item>
      <title>Re: Split Years data into 3 months( Data can be for more than 12 months but need to split it in 3 mo</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Split-Years-data-into-3-months-Data-can-be-for-more-than-12/m-p/832608#M329104</link>
      <description>&lt;P&gt;Use the&amp;nbsp;&lt;A href="https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/leforinforref/n02xxe6d9bgflsn18ee7qaachzaw.htm" target="_blank" rel="noopener"&gt;YYQ Format&lt;/A&gt;&amp;nbsp;for your dates, and base your further actions on the formatted value.&lt;/P&gt;
&lt;P&gt;Statistical procedures will use the formatted values for grouping, and splitting datasets is rarely needed for analysis. What are you trying to do with the splits?&lt;/P&gt;</description>
      <pubDate>Sat, 10 Sep 2022 08:03:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Split-Years-data-into-3-months-Data-can-be-for-more-than-12/m-p/832608#M329104</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2022-09-10T08:03:55Z</dc:date>
    </item>
  </channel>
</rss>

