<?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 check time for each data set creation in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/check-time-for-each-data-set-creation/m-p/964157#M375517</link>
    <description>&lt;P&gt;Hello&lt;/P&gt;
&lt;P&gt;Lets say that I run a SAS program that create multiple data sets .&lt;/P&gt;
&lt;P&gt;I want to know how long time it take to create each data set and have this information in a data sets.&lt;/P&gt;
&lt;P&gt;This data set will have following columns:&lt;/P&gt;
&lt;P&gt;A-Data set name (The data set that we create)&lt;/P&gt;
&lt;P&gt;B-date+time start execute the creation of the data set&lt;/P&gt;
&lt;P&gt;C-date+time finish execute the creation of the data set&lt;/P&gt;
&lt;P&gt;D-Time in minutes or seconds&amp;nbsp; to create the data set(difference between C and B)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please note that id there are other procedures that dont create data set (such as proc print/proc means noprint and so on ) then no need to include them in this information&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>Sat, 12 Apr 2025 05:45:10 GMT</pubDate>
    <dc:creator>Ronein</dc:creator>
    <dc:date>2025-04-12T05:45:10Z</dc:date>
    <item>
      <title>check time for each data set creation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/check-time-for-each-data-set-creation/m-p/964157#M375517</link>
      <description>&lt;P&gt;Hello&lt;/P&gt;
&lt;P&gt;Lets say that I run a SAS program that create multiple data sets .&lt;/P&gt;
&lt;P&gt;I want to know how long time it take to create each data set and have this information in a data sets.&lt;/P&gt;
&lt;P&gt;This data set will have following columns:&lt;/P&gt;
&lt;P&gt;A-Data set name (The data set that we create)&lt;/P&gt;
&lt;P&gt;B-date+time start execute the creation of the data set&lt;/P&gt;
&lt;P&gt;C-date+time finish execute the creation of the data set&lt;/P&gt;
&lt;P&gt;D-Time in minutes or seconds&amp;nbsp; to create the data set(difference between C and B)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please note that id there are other procedures that dont create data set (such as proc print/proc means noprint and so on ) then no need to include them in this information&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>Sat, 12 Apr 2025 05:45:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/check-time-for-each-data-set-creation/m-p/964157#M375517</guid>
      <dc:creator>Ronein</dc:creator>
      <dc:date>2025-04-12T05:45:10Z</dc:date>
    </item>
    <item>
      <title>Re: check time for each data set creation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/check-time-for-each-data-set-creation/m-p/964158#M375518</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;1）&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;proc scaproc;
record 'c:\temp\temp.txt';
run;

data x;
set sashelp.demographics;
if ISONAME in ('JAPAN' 'CHINA');
run;

proc scaproc;
write;
run;&lt;/PRE&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;
&lt;P&gt;In the file c:\temp\temp.txt, you need to pull up the date value of starting and ending .&lt;/P&gt;
&lt;PRE&gt;/* JOBSPLIT:&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt; JOBSTARTTIME 12APR2025:14:47:20.78&lt;/STRONG&gt;&lt;/FONT&gt; */
/* JOBSPLIT: TASKSTARTTIME 12APR2025:14:47:20.79 */
/* JOBSPLIT: DATASET INPUT SEQ #C00007.DEMOGRAPHICS.DATA */
/* JOBSPLIT: LIBNAME #C00007 V9 'C:\Program Files\SASHome\SASFoundation\9.4\graph\sashelp' */
/* JOBSPLIT: CONCATMEM #C00007 SASHELP */
/* JOBSPLIT: LIBNAME SASHELP V9 '( 'C:\Program Files\SASHome\SASFoundation\9.4\nls\zh\SASCFG' 'C:\Program Files\SASHome\SASFoundation\9.4\nls\zh\sashelp' 'C:\Program Files\SASHome\SASFoundation\9.4\core\sashelp' 'C:\Program Files\SASHome\SASFoundation\9.4\aacomp\sashelp' 'C:\Program Files\SASHome\SASFoundation\9.4\cas\sashelp' 'C:\Program Files\SASHome\SASFoundation\9.4\cmp\sashelp' 'C:\Program Files\SASHome\SASFoundation\9.4\genetics\sashelp' 'C:\Program Files\SASHome\SASFoundation\9.4\graph\sashelp' 'C:\Program Files\SASHome\SASFoundation\9.4\iml\sashelp' 'C:\Program Files\SASHome\SASFoundation\9.4\mlearning\sashelp' 'C:\Program Files\SASHome\SASFoundation\9.4\spdsclient\sashelp' 'C:\Program Files\SASHome\SASFoundation\9.4\stat\sashelp' )' */
/* JOBSPLIT: DATASET OUTPUT SEQ WORK.X.DATA */
/* JOBSPLIT: LIBNAME WORK V9 'C:\Users\XIAKES~1\AppData\Local\Temp\SAS Temporary Files\_TD13460_LAPTOP-3FUEBKR4_' */
/* JOBSPLIT: FILE OUTPUT c:\temp\temp.txt */
/* JOBSPLIT: ELAPSED 44  */
/* JOBSPLIT: SYSSCP WIN */
/* JOBSPLIT: PROCNAME DATASTEP */
/* JOBSPLIT: STEP SOURCE FOLLOWS */

data x;
set sashelp.demographics;
if ISONAME in ('JAPAN' 'CHINA');
run;


/* JOBSPLIT: &lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;JOBENDTIME 12APR2025:14:47:20.84&lt;/STRONG&gt;&lt;/FONT&gt; */
/* JOBSPLIT: END */
&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;2）&lt;/P&gt;
&lt;P&gt;Or you could hard code to get this interval of time:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let start=%sysfunc(datetime());
data x;
set sashelp.demographics;
if ISONAME in ('JAPAN' 'CHINA');
call sleep(2,1);
run;
%let end=%sysfunc(datetime());

%let interval=%sysfunc(putn(%sysevalf(&amp;amp;end. - &amp;amp;start.), time14.2));
%put &amp;amp;interval.;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;123  %let end=%sysfunc(datetime());
124
125  %let interval=%sysfunc(putn(%sysevalf(&amp;amp;end. - &amp;amp;start.), time14.2));
126  %put &amp;amp;interval.;
&lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;0:00:04.08



&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;3）Or using PROC PRINTTO to save your log into a new file and pull out these start and end date:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc printto log='c:\temp\temp.txt' new;run;

data x;
set sashelp.demographics;
if ISONAME in ('JAPAN' 'CHINA');
call sleep(2,1);
run;

proc printto;run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;NOTE: “PROCEDURE PRINTTO”所用时间（总处理时间）:
      实际时间          0.00 秒
      CPU 时间          0.00 秒
      

14   
15   data x;
16   set sashelp.demographics;
17   if ISONAME in ('JAPAN' 'CHINA');
18   call sleep(2,1);
19   run;

NOTE: 从数据集 SASHELP.DEMOGRAPHICS. 读取了 197 个观测
NOTE: 数据集 WORK.X 有 2 个观测和 18 个变量。
NOTE: “DATA 语句”所用时间（总处理时间）:
      实际时间          &lt;FONT color="#FF0000"&gt;&lt;STRONG&gt;4.03 秒&lt;/STRONG&gt;&lt;/FONT&gt;
      CPU 时间          0.14 秒
      

20   
21   proc printto;run;

&lt;/PRE&gt;</description>
      <pubDate>Sun, 13 Apr 2025 06:39:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/check-time-for-each-data-set-creation/m-p/964158#M375518</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2025-04-13T06:39:04Z</dc:date>
    </item>
    <item>
      <title>Re: check time for each data set creation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/check-time-for-each-data-set-creation/m-p/964178#M375530</link>
      <description>&lt;P&gt;I found this to be an interesting exercise and wanted to give it a whirl.&amp;nbsp; I'm working in a UNIX environment so I wondered what happened with the file information and compare that to the SAS Data Set metadata information.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;I have a macro called %UNIX_STAT that runs a stat command on a given file and writes the results to a named SAS data set.&amp;nbsp; Details include atime (last access date-time), mtime (last modified date-time), and ctime (last change date-time).&amp;nbsp; I rename those to ACCESS_DATE, MODIFY_DATE, and CHANGE_DATE.&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;The results were interesting.&amp;nbsp;&amp;nbsp;In my case, I noticed that the unix file data matched the START TIME of the data step, where the SAS metadata for CRDTE and MODTE marked the END TIME of the data step.&amp;nbsp; One could use this information to develop further the process of recording and measuring start time, end time, and run time of a data step.&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;However, those times would only reflect "real time" and not necessarily point to efficiency in a shared environment:&amp;nbsp; cpu usage, swap, and other measures could come in to play.&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;The results on a windows or other environment may vary.&lt;BR /&gt;&lt;BR /&gt;Here's my test:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;31 *test data set ;&lt;BR /&gt;32 %put DATETIME=%sysfunc(datetime(), datetime.) ;&lt;BR /&gt;DATETIME=12APR25:23:39:36&lt;BR /&gt;33 data mydata ;&lt;BR /&gt;34 do i = 1 to 10 ;&lt;BR /&gt;35 sleep = sleep (5, 1) ;&lt;BR /&gt;36 output ;&lt;BR /&gt;37 end ;&lt;BR /&gt;38 run ;&lt;/P&gt;&lt;P&gt;NOTE: The data set WORK.MYDATA has 10 observations and 2 variables.&lt;BR /&gt;NOTE: DATA statement used (Total process time):&lt;BR /&gt;real time 50.02 seconds&lt;BR /&gt;cpu time 0.02 seconds&lt;/P&gt;&lt;P&gt;39 %put DATETIME=%sysfunc(datetime(), datetime.) ;&lt;BR /&gt;DATETIME=12APR25:23:40:26&lt;BR /&gt;40&lt;BR /&gt;41 %macro datatimer (data) ;&lt;BR /&gt;42 %local data dsid crdte modte rc ;&lt;BR /&gt;43 %let dsid = %sysfunc(open(&amp;amp;data)) ;&lt;BR /&gt;44&lt;BR /&gt;45 %if &amp;amp;dsid %then %do ;&lt;BR /&gt;46 %let crdte = %sysfunc(attrn(&amp;amp;dsid, crdte), datetime.) ;&lt;BR /&gt;47 %let modte = %sysfunc(attrn(&amp;amp;dsid, modte), datetime.) ;&lt;BR /&gt;2 The SAS System 22:19 Saturday, April 12, 2025&lt;/P&gt;&lt;P&gt;48 %let rc = %sysfunc(close(&amp;amp;dsid)) ;&lt;BR /&gt;49 %end ;&lt;BR /&gt;50&lt;BR /&gt;51 %put &amp;amp;=crdte &amp;amp;=modte ;&lt;BR /&gt;52 %mend datatimer ;&lt;BR /&gt;53&lt;BR /&gt;54 %datatimer (mydata) ;&lt;BR /&gt;CRDTE=12APR25:23:39:36 MODTE=12APR25:23:39:36&lt;BR /&gt;55&lt;BR /&gt;56 %unix_stat (file=%sysfunc(pathname(work))/mydata.sas7bdat, out=stat) ;&lt;BR /&gt;NOTE: The data set WORK.STAT has 1 observations and 13 variables.&lt;BR /&gt;NOTE: MACRO %UNIX_STAT used:&lt;BR /&gt;real time 00:00.14&lt;BR /&gt;cpu time unknown&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;57&lt;BR /&gt;58 data _null_ ;&lt;BR /&gt;59 set stat ;&lt;BR /&gt;60 put access_date= modify_date= change_date= ;&lt;BR /&gt;61 run ;&lt;/P&gt;&lt;P&gt;access_date=12APR25:23:40:26 modify_date=12APR25:23:40:26 change_date=12APR25:23:40:26&lt;/P&gt;</description>
      <pubDate>Sun, 13 Apr 2025 04:48:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/check-time-for-each-data-set-creation/m-p/964178#M375530</guid>
      <dc:creator>PaulMcDonald-AZ</dc:creator>
      <dc:date>2025-04-13T04:48:57Z</dc:date>
    </item>
  </channel>
</rss>

