这是背景资料。对不起,这太久了:
我为3个不同的项目做SAS编程。每个项目都有自己的主项目文件夹。每个主项目文件夹包含格式文件夹(包含格式目录),然后包含其他几个文件夹,每个文件夹包含程序和数据集。我以批处理模式完成大部分工作,因此SAS通常不会打开。但有时候,我想在SAS中打开一个数据集来特别查看某些内容。当我这样做时,SAS不知道在哪里寻找适当的格式目录,因为格式目录永远不会与数据集在同一个文件夹中。所以我目前使用autoexec.sas文件来指定nofmterr
选项,这样我的数据集就会打开。
但我真的希望能够使用适当的格式打开我的数据集。我写了一个不同的autoexec程序,它使用一个对话框窗口,询问我正在处理哪个项目,然后相应地设置fmtsearch
选项。如果我想首先打开SAS,然后打开数据集,这非常有用。但是如果SAS尚未启动并运行,并且我尝试通过双击打开数据集,则会发生以下情况:autoexec文件开始运行,然后SAS尝试在autoexec文件运行完毕之前打开数据集。因此,如果我设置nofmterr
,数据集将在没有格式的情况下打开,或者如果我没有设置nofmterr
,则数据集将根本不会打开。
所以这是我的问题:有没有办法让SAS等到autoexec文件在尝试打开数据集之前完成运行?或者,还有另一种解决问题的方法吗? (我不想将所有3个格式文件添加到fmtsearch
选项,因为不同的项目可能具有相同名称的不同格式。)
答案 0 :(得分:1)
由于数据集在没有任何代码运行之前打开,因此变得很安静。是否可以将数据集作为代码的参数打开。我设想这样的事情:
commandline:/sas ./opends.sas -sysparm "/this/is/the/dataset/location_and_name"
您的代码“opends.sas”将包含项目的所有相关格式信息。
您甚至可以编写具有上述所有预定义的脚本(bash或批量,具体取决于操作系统),您可以使用数据集作为参数调用脚本。
我知道这看起来很麻烦,但这是我根据你的描述提出的第一个解决方案。
- 已添加20090218
opends.sas脚本应该接受一个sysparm变量,并且根据操作系统,它应该打印数据集或发出命令来打开数据集。