【问题标题】:How do I get PC SAS to read a list from a text file and perform an action on each element in the list如何让 PC SAS 从文本文件中读取列表并对列表中的每个元素执行操作
【发布时间】:2021-07-18 21:08:11
【问题描述】:

我有一个 PowerShell 程序,可以在我的 PC 上的文件夹中搜索多个文本文件。如果文件不在文件夹中,它会将文件名写入另一个文本文件。该过程完成后,我有一个文本文件,其中包含文件夹中缺少的文件列表(一列)。

接下来,我希望 PC SAS 从文本文件中读取列表并启动我已经编写的相应 SAS 程序,该程序从我们的 FTP 服务器中检索每个文件。

我不确定如何让 SAS 读取文件名并启动我的 FTP 程序。有关如何完成此任务的任何建议?

【问题讨论】:

  • 当前程序如何得知要检索的文件是什么?例如,您是否创建了一个将文件名作为输入参数的 SAS 宏?
  • 文件名在 SAS FTP 程序中被硬编码,并在末尾添加了一个日期。 . File1_20220718.txt、File2_20210719.txt...我想用前面提到的 PowerShell 脚本中的文件名列表替换这一段。基本上,我们的大型机作业每天产生大约 50 个文件。不幸的是,我们为 MF 处理器时间而苦苦挣扎,因此文件经常被延迟。我的 PS 程序确定哪些文件尚未下载并将列表存储在文本文件中。我希望 SAS 获取列表并在以后运行时检索文件。

标签: sas


【解决方案1】:

听起来第一个问题是您需要修改 SAS 程序以使用包含要处理的文件名列表的数据集。一种简单的方法是创建一个宏来下载一个文件并将文件名作为输入参数。因此,将下载文件的代码转换为宏。

%macro mf_download(file);
    * Code that downloads &FILE from mainframe. ;
%mend ;

然后很容易编写一个程序,从文件中读取名称并为文件中的每个名称调用宏。因此,如果命名为 filelist.txt 的文件带有名称列表,那么程序的该部分可能如下所示:

data names;
   infile 'filelist.txt' truncover ;
   input filename :$256. ;
   call execute(cats('%nrstr(%mf_download)(',filename,')'));
run;

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多