<?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: how to read filenames of a directory into a file in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/802074#M315720</link>
    <description>&lt;P&gt;I usually add \ in front of a command to disable aliases.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;That way I don't need to know where in the search path the command actually lives.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;infile "\ls -A /mydir" pipe truncover ;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Mon, 14 Mar 2022 21:52:11 GMT</pubDate>
    <dc:creator>Tom</dc:creator>
    <dc:date>2022-03-14T21:52:11Z</dc:date>
    <item>
      <title>how to read filenames of a directory into a file</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/71496#M15471</link>
      <description>for example, there are many files in one directory, how can i read files' name into another file?&lt;BR /&gt;
thanks</description>
      <pubDate>Wed, 28 Jan 2009 03:12:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/71496#M15471</guid>
      <dc:creator>deleted_user</dc:creator>
      <dc:date>2009-01-28T03:12:16Z</dc:date>
    </item>
    <item>
      <title>Re: how to read filenames of a directory into a file</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/71497#M15472</link>
      <description>Is this a sas problem?&lt;BR /&gt;
&lt;BR /&gt;
Have a look at the &lt;I&gt;dopen&lt;/I&gt; function: &lt;A href="http://support.sas.com/onlinedoc/913/getDoc/de/lrdict.hlp/a000209538.htm" target="_blank"&gt;http://support.sas.com/onlinedoc/913/getDoc/de/lrdict.hlp/a000209538.htm&lt;/A&gt;</description>
      <pubDate>Wed, 28 Jan 2009 07:39:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/71497#M15472</guid>
      <dc:creator>andreas_lds</dc:creator>
      <dc:date>2009-01-28T07:39:57Z</dc:date>
    </item>
    <item>
      <title>Re: how to read filenames of a directory into a file</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/71498#M15473</link>
      <description>I don't think that DOPEN or any other directory SAS function will do the job. Here's a sample that uses FILENAME PIPE with an OS directory listing command (such as dir or ls).&lt;BR /&gt;
&lt;BR /&gt;
&lt;A href="http://support.sas.com/kb/24/820.html" target="_blank"&gt;http://support.sas.com/kb/24/820.html&lt;/A&gt;&lt;BR /&gt;
&lt;BR /&gt;
/Linus</description>
      <pubDate>Wed, 28 Jan 2009 12:25:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/71498#M15473</guid>
      <dc:creator>LinusH</dc:creator>
      <dc:date>2009-01-28T12:25:21Z</dc:date>
    </item>
    <item>
      <title>Re: how to read filenames of a directory into a file</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/71499#M15474</link>
      <description>&amp;gt; I don't think that DOPEN or any other directory SAS&lt;BR /&gt;
&amp;gt; function will do the job.&lt;BR /&gt;
&lt;BR /&gt;
You would need to combine DOPEN with DNUM DREAD and perhaps DINFO but it can be done with relative ease.&lt;BR /&gt;
&lt;BR /&gt;
I prefer the INFILE PIPE method you eluded to but find that on unix the FIND command is much better than LS as FIND provides many more options with regard to file info and format of returned output.&lt;BR /&gt;
&lt;BR /&gt;
Also also on UNIX always point directly to the command as /usr/bin/ls or where ever because an alias can cause unpleasant results.</description>
      <pubDate>Wed, 28 Jan 2009 14:55:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/71499#M15474</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2009-01-28T14:55:25Z</dc:date>
    </item>
    <item>
      <title>Re: how to read filenames of a directory into a file</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/71500#M15475</link>
      <description>i am using windows xp and only have sas and matlab.  i tried &lt;BR /&gt;
&lt;BR /&gt;
filename DIRLIST pipe 'dir "C:\Users\rong\Documents\high-frequency\2006\20061&lt;BR /&gt;
1\200611sh_csv\sh\20061107\" /s';&lt;BR /&gt;
&lt;BR /&gt;
data dirlist ;&lt;BR /&gt;
     length buffer $256 ;&lt;BR /&gt;
&lt;BR /&gt;
     infile dirlist length=reclen ;&lt;BR /&gt;
&lt;BR /&gt;
     input buffer $varying256. reclen ;&lt;BR /&gt;
run ;&lt;BR /&gt;
&lt;BR /&gt;
but only get a file which contains "volume in C has no drive" and "volume series num is***"&lt;BR /&gt;
&lt;BR /&gt;
can anyone write a easy program for me?</description>
      <pubDate>Wed, 28 Jan 2009 18:55:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/71500#M15475</guid>
      <dc:creator>deleted_user</dc:creator>
      <dc:date>2009-01-28T18:55:21Z</dc:date>
    </item>
    <item>
      <title>Re: how to read filenames of a directory into a file</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/71501#M15476</link>
      <description>Do you also see&lt;BR /&gt;
&lt;BR /&gt;
[pre]&lt;BR /&gt;
Stderr output:&lt;BR /&gt;
File Not Found&lt;BR /&gt;
[/pre]&lt;BR /&gt;
&lt;BR /&gt;
in the log.  Your program looks OK I suspect an error in the path.</description>
      <pubDate>Wed, 28 Jan 2009 19:20:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/71501#M15476</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2009-01-28T19:20:38Z</dc:date>
    </item>
    <item>
      <title>Re: how to read filenames of a directory into a file</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/71502#M15477</link>
      <description>i used above program again, then this time, it works!!!&lt;BR /&gt;
interesting&lt;BR /&gt;
:)))&lt;BR /&gt;
thanks for all</description>
      <pubDate>Wed, 28 Jan 2009 19:30:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/71502#M15477</guid>
      <dc:creator>deleted_user</dc:creator>
      <dc:date>2009-01-28T19:30:45Z</dc:date>
    </item>
    <item>
      <title>Re: how to read filenames of a directory into a file</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/71503#M15478</link>
      <description>I have a macro that does exactly what you need.  Just pass the folder name ending with '/' and a data set name and the entire contents of the folder will be outputted to your data set&lt;BR /&gt;
&lt;BR /&gt;
Darryl&lt;BR /&gt;
&lt;BR /&gt;
/*******************************************************************************************************************************************************/&lt;BR /&gt;
/* Program Name: get_folder_info (macro of the same name)                                                                                              */&lt;BR /&gt;
/*                                                                                                                                                     */&lt;BR /&gt;
/* Description: SAS Utility:                                                                                                                           */&lt;BR /&gt;
/*              Dump the contents of folder into a SAS data set (user defined)                                                                         */&lt;BR /&gt;
/*              Output data set  contains the input folder name, all the files inside the folder, and                                                  */&lt;BR /&gt;
/*              whether those files are a directory or file.                                                                                           */&lt;BR /&gt;
/*                                                                                                                                                     */&lt;BR /&gt;
/*              If a file is inputted the program stops with a message in the log stating that the input                                               */ &lt;BR /&gt;
/*              directory is not a directory.                                                                                                          */&lt;BR /&gt;
/*                                                                                                                                                     */  &lt;BR /&gt;
/*                                                                                                                                                     */  &lt;BR /&gt;
/* Macro Input Parameters: dir = Unquoted Full Directory Path ending in \.                                                                             */&lt;BR /&gt;
/*                         foldercontents_dataset = SAS data set containing the directory information.                                                 */&lt;BR /&gt;
/*                                                                                                                                                     */ &lt;BR /&gt;
/*******************************************************************************************************************************************************/&lt;BR /&gt;
&lt;BR /&gt;
%macro get_folder_info(dir=,output_ds=);                                                                                                                  &lt;BR /&gt;
                        &lt;BR /&gt;
%put &amp;amp;dir; &lt;BR /&gt;
  /* Check for Existence of directory path */&lt;BR /&gt;
  %if %sysfunc(fileexist(&amp;amp;dir)) %then %do; &lt;BR /&gt;
 &lt;BR /&gt;
    /* Assigns the fileref of mydir to the directory and opens the directory */&lt;BR /&gt;
    /* Assigns the fileref of myfile to the directory and opens the file */&lt;BR /&gt;
    /* Assign using file i/o functions and directory i/o functions, will then compare the output of the functions */ &lt;BR /&gt;
    %let dirrf=md;      &lt;BR /&gt;
    %let filrf=mf;      &lt;BR /&gt;
    %let dc=%sysfunc(filename(dirrf,&amp;amp;dir)); &lt;BR /&gt;
    %let fc=%sysfunc(filename(filrf,&amp;amp;dir)); &lt;BR /&gt;
    %let did=%sysfunc(dopen(&amp;amp;dirrf)); /* opens as a directory, 0 means could not be opened&lt;BR /&gt;
	                                     note: unable to open a file with dopen */&lt;BR /&gt;
    %let fid=%sysfunc(fopen(&amp;amp;filrf)); /* opens as a file, 0 means could not be opened&lt;BR /&gt;
                                         note: unable to open a directory with fopen */                                                                                  &lt;BR /&gt;
    /* Returns the number of members in the directory,  */                                                                   &lt;BR /&gt;
    %if &amp;amp;did &amp;gt; 0 %then %do; &lt;BR /&gt;
      %let memcnt=%sysfunc(dnum(&amp;amp;did));                                                                                                      &lt;BR /&gt;
      %put memcnt=&amp;amp;memcnt;&lt;BR /&gt;
	%end;&lt;BR /&gt;
&lt;BR /&gt;
	%* QA: put macro variable values into log;&lt;BR /&gt;
    %put QA: dc=&amp;amp;dc fc=&amp;amp;fc did=&amp;amp;did fid=&amp;amp;fid;&lt;BR /&gt;
&lt;BR /&gt;
	%if &amp;amp;fid&amp;gt;0 and &amp;amp;did=0 %then %put &amp;amp;dir is file not a directory;&lt;BR /&gt;
	&lt;BR /&gt;
    %if &amp;amp;did &amp;gt; 0 %then %do;&lt;BR /&gt;
&lt;BR /&gt;
	  %do i=1 %to &amp;amp;memcnt;&lt;BR /&gt;
        %let dir&amp;amp;i=&amp;amp;dir.%qsysfunc(dread(&amp;amp;did,&amp;amp;i)); %* create full path of directory/file;&lt;BR /&gt;
		%let mem&amp;amp;i=%qsysfunc(dread(&amp;amp;did,&amp;amp;i));&lt;BR /&gt;
		&lt;BR /&gt;
		%* Assign filerefs;&lt;BR /&gt;
        %let dirrf&amp;amp;i=md&amp;amp;i;      &lt;BR /&gt;
        %let filrf&amp;amp;i=mf&amp;amp;i;      &lt;BR /&gt;
        %let dc&amp;amp;i=%sysfunc(filename(dirrf&amp;amp;i,&amp;amp;&amp;amp;dir&amp;amp;i)); &lt;BR /&gt;
        %let fc&amp;amp;i=%sysfunc(filename(filrf&amp;amp;i,&amp;amp;&amp;amp;dir&amp;amp;i));&lt;BR /&gt;
	    &lt;BR /&gt;
        %* open files; &lt;BR /&gt;
        %let did&amp;amp;i=%sysfunc(dopen(&amp;amp;&amp;amp;dirrf&amp;amp;i)); &lt;BR /&gt;
        %let fid&amp;amp;i=%sysfunc(fopen(&amp;amp;&amp;amp;filrf&amp;amp;i)); &lt;BR /&gt;
&lt;BR /&gt;
	    %* QA: put macro variable values into log;&lt;BR /&gt;
		%put QA: dirrf=&amp;amp;&amp;amp;dirrf&amp;amp;i filrf=&amp;amp;&amp;amp;filrf&amp;amp;i did=&amp;amp;&amp;amp;did&amp;amp;i fid=&amp;amp;&amp;amp;fid&amp;amp;i name=&amp;amp;&amp;amp;dir&amp;amp;i;&lt;BR /&gt;
		                        &lt;BR /&gt;
        %* close files; &lt;BR /&gt;
        %let dc&amp;amp;i=%sysfunc(dclose(&amp;amp;&amp;amp;did&amp;amp;i));                                                                                                        &lt;BR /&gt;
        %let fc&amp;amp;i=%sysfunc(fclose(&amp;amp;&amp;amp;fid&amp;amp;i));  &lt;BR /&gt;
&lt;BR /&gt;
		%* clear filerefs;&lt;BR /&gt;
		filename md&amp;amp;i clear;&lt;BR /&gt;
        filename mf&amp;amp;i clear;&lt;BR /&gt;
&lt;BR /&gt;
	  %end;&lt;BR /&gt;
&lt;BR /&gt;
	  %* create output table;&lt;BR /&gt;
	  data &amp;amp;output_ds;&lt;BR /&gt;
		attrib DirName length=$512 label='Name of Input Directory'&lt;BR /&gt;
		       FileName length=$1024 label='Full File Name with Path of Directory Member'&lt;BR /&gt;
			   MemberName length=$512 label='File Name of Directory Member'&lt;BR /&gt;
			   FileType length=$9 label='Directory Member: File or Directory';&lt;BR /&gt;
&lt;BR /&gt;
	    %do i=1 %to &amp;amp;memcnt;&lt;BR /&gt;
		  DirName="&amp;amp;dir";&lt;BR /&gt;
          FileName="&amp;amp;&amp;amp;dir&amp;amp;i";&lt;BR /&gt;
		  MemberName="&amp;amp;&amp;amp;mem&amp;amp;i";&lt;BR /&gt;
		  if (&amp;amp;&amp;amp;did&amp;amp;i=0 and &amp;amp;&amp;amp;fid&amp;amp;i&amp;gt;0) then FileType='File';&lt;BR /&gt;
            else FileType='Directory';&lt;BR /&gt;
		  output;&lt;BR /&gt;
		%end;&lt;BR /&gt;
	  run;&lt;BR /&gt;
&lt;BR /&gt;
	  title "Contents of &amp;amp;dir";&lt;BR /&gt;
	  proc print data=FolderContents;&lt;BR /&gt;
	  run;&lt;BR /&gt;
	  title;&lt;BR /&gt;
&lt;BR /&gt;
    %end;&lt;BR /&gt;
    /* Closes the input directory/file.  All opened files must be closed. */                                                                                                            &lt;BR /&gt;
    %let dc=%sysfunc(dclose(&amp;amp;did));                                                                                                        &lt;BR /&gt;
    %let fc=%sysfunc(fclose(&amp;amp;fid));  &lt;BR /&gt;
&lt;BR /&gt;
	%* clear filerefs;&lt;BR /&gt;
	filename md clear;&lt;BR /&gt;
    filename mf clear;&lt;BR /&gt;
&lt;BR /&gt;
  %end;&lt;BR /&gt;
  %else %do;&lt;BR /&gt;
    %put ERROR: Folder &amp;amp;dir Not Found;&lt;BR /&gt;
  %end;&lt;BR /&gt;
                                                                                                                                        &lt;BR /&gt;
%mend get_folder_info;                               &lt;BR /&gt;
* END OF SAS PGM;</description>
      <pubDate>Fri, 30 Jan 2009 14:32:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/71503#M15478</guid>
      <dc:creator>darrylovia</dc:creator>
      <dc:date>2009-01-30T14:32:46Z</dc:date>
    </item>
    <item>
      <title>Re: how to read filenames of a directory into a file</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/71504#M15479</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Darryl - I just found your macro get_folder_info and I really liked it. However, I wanted file size too, so I tweaked it...&lt;/P&gt;&lt;P&gt;...I hope you don't mind.&amp;nbsp; I really like the fact that exactly the same code runs on my AIX box and Windows box.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Tim&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*******************************************************************************************************************************************************/&lt;/P&gt;&lt;P&gt;/* Program Name: get_folder_info (macro of the same name)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;/* Description: SAS Utility:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dump the contents of folder into a SAS data set (user defined)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Output data set&amp;nbsp; contains the input folder name, all the files inside the folder, and&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; whether those files are a directory or file.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If a file is input, the program stops with a message in the log stating that the input&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; directory is not a directory.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */ &lt;/P&gt;&lt;P&gt;/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */ &lt;/P&gt;&lt;P&gt;/* Macro Input Parameters: dir = Unquoted Full Directory Path ending in \ or /.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output_ds = SAS data set containing the directory information.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;/*******************************************************************************************************************************************************/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro get_folder_info(dir=,output_ds=);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;%*put &amp;amp;dir;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ** Check for Existence of directory path ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %if %sysfunc(fileexist(&amp;amp;dir)) %then %do;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * create output table;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data &amp;amp;output_ds (drop=t_:);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attrib DirName&amp;nbsp;&amp;nbsp;&amp;nbsp; length=$512.&amp;nbsp; label='Name of Input Directory'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileName&amp;nbsp;&amp;nbsp; length=$1024. label='Full File Name with Path of Directory Member'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MemberName length=$512.&amp;nbsp; label='File Name of Directory Member'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileType&amp;nbsp;&amp;nbsp; length=$9.&amp;nbsp;&amp;nbsp;&amp;nbsp; label='Directory Member: File or Directory'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileSize&amp;nbsp;&amp;nbsp; length=8.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; label='File Size (Bytes)' format=COMMA14.;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Try to open the input directory;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t_rc = filename('dref',"&amp;amp;dir.");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t_topdir = dopen('dref');&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if t_topdir &amp;gt; 0 then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Top directory was opened, so get number of members;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t_memct = dnum(t_topdir);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do t_i=1 to t_memct;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DirName="&amp;amp;dir.";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MemberName=dread(t_topdir,t_i);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileName=cats("&amp;amp;dir.",MemberName);&amp;nbsp; * create full path of directory/file;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Get fileref;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t_ref=filename('ref',FileName);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * open file/folder;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t_did=dopen('ref');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t_fid=fopen('ref');&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Get the size;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if t_fid&amp;gt;0 then FileSize=finfo(t_fid,'File Size (bytes)');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else FileSize=.;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (t_did=0 and t_fid&amp;gt;0) then FileType='File';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else FileType='Directory';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * close files;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t_dc=dclose(t_did);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t_fc=fclose(t_fid); &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else put "Folder &amp;amp;dir. could not be opened";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %else %do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %put "Folder &amp;amp;dir. does not exist";&lt;/P&gt;&lt;P&gt;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%mend get_folder_info;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Nov 2012 14:41:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/71504#M15479</guid>
      <dc:creator>TimArm</dc:creator>
      <dc:date>2012-11-21T14:41:37Z</dc:date>
    </item>
    <item>
      <title>Re: how to read filenames of a directory into a file</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/802059#M315709</link>
      <description>&lt;P&gt;TimArm, Thanks for this. I made some modifications to get file modified and the file created times, which was working well in SAS 9.4 TS Level 1M3 X64_DSRV12 platform. Now I'm in SAS 9.4 TS Level 1M7 X64_10PRO platform and this macro no longer pulls the file size, modified, and created dates. Any ideas on what is causing the finfo-derived information to no longer work?&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;/* Program Name: get_folder_info (macro of the same name)                                                                           
/* Description: SAS Utility:                                                                                
/*              Dump the contents of folder into a SAS data set (user defined)                                                                     
/*              Output data set  contains the input folder name, all the files inside the folder, and                                                
/*              whether those files are a directory or file.                                                                              
/*                                                                               
/*              If a file is input, the program stops with a message in the log stating that the input                                         
/*              directory is not a directory.                                                                              
/* Macro Input Parameters: dir = Unquoted Full Directory Path ending in \ or /.                                                                        
/*                         output_ds = Desired name for SAS data set containing the directory information.                                           
/*****************************************************************************************************/

%macro get_folder_info(dir=,output_ds=);                                                                              

%*put &amp;amp;dir;
  ** Check for Existence of directory path ;
  %if %sysfunc(fileexist(&amp;amp;dir)) %then %do;
    * create output table;
    data &amp;amp;output_ds (drop = t_:);
         attrib DirName    length=$512.  label='Name of Input Directory'
		 		FileName   length=$1024. label='Full File Name with Path of Directory Member'
                MemberName length=$512.  label='File Name of Directory Member'
				FileCr     length=8.     label='Create Time' format = DATETIME16.
 				FileMod    length=8.     label='Last Modified' format = DATETIME16.
                FileType   length=$9.    label='Directory Member: File or Directory' 
                FileEx     length=$20.   label='File Extension' 
				FileSize   length=8.     label='File Size (bytes)' format=COMMA14.;
      * Try to open the input directory;
      t_rc = filename('dref',"&amp;amp;dir.");
      t_topdir = dopen('dref');
      if t_topdir &amp;gt; 0 then do;
        * Top directory was opened, so get number of members;
        t_memct = dnum(t_topdir);
        do t_i=1 to t_memct;
          DirName="&amp;amp;dir.";
          MemberName=dread(t_topdir,t_i);
          FileName=cats("&amp;amp;dir.",MemberName);  * create full path of directory/file;  
		  FileEx = scan(MemberName, -1, .); * find extension of file 
          * Get fileref;
          t_ref=filename('ref',FileName);       
          * open file/folder;
          t_did=dopen('ref');
          t_fid=fopen('ref');
		  * Get the modified date;
          if t_fid&amp;gt;0 then FileMod = input(finfo(t_fid,'Last Modified'), ANYDTDTM.);
          else FileMod=.;
		  * Get the created date;
          if t_fid&amp;gt;0 then FileCr = input(finfo(t_fid,'Create Time'), ANYDTDTM.);
          else FileCr=.;
          * Get the size;
          if t_fid&amp;gt;0 then FileSize=finfo(t_fid,'File Size (bytes)');
          else FileSize=.;
		  * Directory or file;
          if (t_did=0 and t_fid&amp;gt;0) then FileType='File';
          else FileType='Directory';
          output;
		  * close files;
          t_dc=dclose(t_did);                                                                              
          t_fc=fclose(t_fid);
        end;
      end;
      else put "Folder &amp;amp;dir. could not be opened";
    run;
  %end;
  %else %do;
      %put "Folder &amp;amp;dir. does not exist";
  %end;
%mend get_folder_info;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 14 Mar 2022 20:42:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/802059#M315709</guid>
      <dc:creator>htalbott</dc:creator>
      <dc:date>2022-03-14T20:42:43Z</dc:date>
    </item>
    <item>
      <title>Re: how to read filenames of a directory into a file</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/802064#M315711</link>
      <description>&lt;P&gt;In your code change from...&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Patrick_0-1647291871926.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/69456i95357B154663F755/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Patrick_0-1647291871926.png" alt="Patrick_0-1647291871926.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;to...&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Patrick_1-1647291922971.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/69457iD6B1FB12CF0E564A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Patrick_1-1647291922971.png" alt="Patrick_1-1647291922971.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Not sure how this code would have worked in your previous environment without this backslash.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Btw: Suggest in the future to not add to old discussions but to create a new question instead where you then reference the old discussion. This will help to keep this forum more useful and easier to search (ideally: a single question and then an answer marked as solution).&lt;/P&gt;</description>
      <pubDate>Mon, 14 Mar 2022 21:08:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/802064#M315711</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2022-03-14T21:08:53Z</dc:date>
    </item>
    <item>
      <title>Re: how to read filenames of a directory into a file</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/802073#M315719</link>
      <description>&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/12447"&gt;@Patrick&lt;/a&gt; Thanks for your help! I'll be sure to make a new post next time, I'm still a beginner SAS user.</description>
      <pubDate>Mon, 14 Mar 2022 21:51:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/802073#M315719</guid>
      <dc:creator>htalbott</dc:creator>
      <dc:date>2022-03-14T21:51:18Z</dc:date>
    </item>
    <item>
      <title>Re: how to read filenames of a directory into a file</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/802074#M315720</link>
      <description>&lt;P&gt;I usually add \ in front of a command to disable aliases.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;That way I don't need to know where in the search path the command actually lives.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;infile "\ls -A /mydir" pipe truncover ;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 14 Mar 2022 21:52:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-read-filenames-of-a-directory-into-a-file/m-p/802074#M315720</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2022-03-14T21:52:11Z</dc:date>
    </item>
  </channel>
</rss>

