1

这是背景。对不起,时间太长了:
我为 3 个不同的项目进行 SAS 编程。每个项目都有自己的主项目文件夹。每个主项目文件夹都包含一个格式文件夹(其中包含格式目录),然后是其他几个文件夹,每个文件夹都包含程序和数据集。我的大部分工作都是在批处理模式下完成的,所以 SAS 通常是不开放的。不过,有时我想在 SAS 中打开一个数据集来查看特定的内容。当我这样做时,SAS 不知道在哪里寻找合适的格式目录,因为格式目录从不与数据集位于同一文件夹中。所以我目前使用一个指定nofmterr选项的 autoexec.sas 文件,这样我的数据集就会打开。

不过,我真的很希望能够以适当的格式打开我的数据集。我编写了一个不同的 autoexec 程序,它使用一个对话框窗口询问我正在处理哪个项目,然后fmtsearch相应地设置选项。如果我想先打开 SAS,然后打开数据集,这非常有用。但是,如果 SAS 尚未启动并运行,并且我尝试通过双击打开数据集,则会发生以下情况:autoexec 文件开始运行,然后 SAS 尝试在 autoexec 文件完成运行之前打开数据集。因此,如果我nofmterr设置了,数据集将在没有格式的情况下打开,或者如果我没有nofmterr设置,数据集将根本无法打开。

所以这是我的问题:有没有办法让 SAS 等到 autoexec 文件完成运行后再尝试打开数据集?或者,有没有其他方法可以解决这个问题?(我不想将所有 3 个格式文件都添加到该fmtsearch选项中,因为不同的项目可能具有相同名称的不同格式。)

4

1 回答 1

1

由于数据集是在没有任何代码运行的情况下打开的,这变得非常困难。是否可以将数据集作为代码的参数打开。我设想这样的事情:

commandline:/sas ./opends.sas -sysparm "/this/is/the/dataset/location_and_name"

您的代码“opends.sas”将包含您项目的所有相关格式信息。

您甚至可以编写一个预定义所有上述内容的脚本(bash 或批处理,取决于操作系统),并且您可以使用数据集作为参数调用该脚本。

我知道这看起来很麻烦,但这是我根据您的描述想出的第一个解决方案。

--增加20090218

opends.sas 脚本应该接受一个 sysparm 变量,并且根据操作系统,它应该打印数据集或发出打开数据集的命令。

于 2009-02-12T16:42:30.723 回答