Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sas 从库中加载用户生成的格式_Sas - Fatal编程技术网

Sas 从库中加载用户生成的格式

Sas 从库中加载用户生成的格式,sas,Sas,我正在尝试创建一个用户生成的格式,将其保存到库中,然后使用该格式。出于某种原因,当我将格式保存到库中时,当我稍后尝试在proc print语句中使用它时,它似乎不起作用 每当我运行这段代码时,它不会抛出错误,但是varName的打印输出并没有按照我定义的方式格式化 libname fmtLib'/FILEPATH1'; 数据格式数据; 填充'/FILEPATH2'dsd; 保留fmtname“$fname”; 输入start$label$; 跑 PROC format cntlin=格式数据库

我正在尝试创建一个用户生成的格式,将其保存到库中,然后使用该格式。出于某种原因,当我将格式保存到库中时,当我稍后尝试在proc print语句中使用它时,它似乎不起作用

每当我运行这段代码时,它不会抛出错误,但是varName的打印输出并没有按照我定义的方式格式化

libname fmtLib'/FILEPATH1';
数据格式数据;
填充'/FILEPATH2'dsd;
保留fmtname“$fname”;
输入start$label$;
跑
PROC format cntlin=格式数据库fmtLib;
跑
过程打印数据=数据集(obs=50);
设置varName$fname的格式。;

运行确保告诉SAS在哪里可以找到新格式。使用
FMTSEARCH
选项

让我们在两个不同的格式目录中制作相同格式的两个不同版本

proc format lib=work.formcat1 ;
  value status 1='Good' 2='Bad' 3='Ugly';
run;

proc format lib=work.formcat2 ;
  value status 1='1 Good' 2='2 Bad' 3='3 Ugly';
run;
因此,如果我只是将FMTSEARCH选项设置保留为默认值并设置
NOFMTERR
,那么如果我打印样本数据

options nofmterr ;
proc print data=test;
 title "%sysfunc(getoption(fmtsearch,keyword))";
 format status status. ;
run;
它找不到任何
状态。
格式,因此我可以看到原始值

FMTSEARCH=(WORK LIBRARY)

Obs    status

 1       1
 2       2
 3       3
但是如果我们在使用新的
状态打印时将FMTSEARCH设置为seach FORMCAT1,然后设置为FORMCAT2。
格式

options fmtsearch=(work.formcat1 work.formcat2);

proc print data=test;
 title "%sysfunc(getoption(fmtsearch,keyword))";
 format status status. ;
run;
看起来是这样的:

FMTSEARCH=(WORK.FORMCAT1 WORK.FORMCAT2)

Obs    status
 1      Good
 2      Bad
 3      Ugly
如果我们颠倒搜索顺序,它会找到另一个版本的
状态。
格式,因此输出如下所示

FMTSEARCH=(WORK.FORMCAT2 WORK.FORMCAT1)

Obs    status
 1     1 Good
 2     2 Bad
 3     3 Ugly

在第二个示例中它起作用的原因是您正在将格式加载到工作(或者可能是用户,但可能是工作)库中。这将自动成为格式搜索路径的一部分


将其加载到工作中很好,或者您可以使用Tom的建议来定义FMTSEARCH。这主要取决于您是在重复会话中使用此选项,还是仅在当前会话中使用此选项。

您对
FMTSEARCH
选项的设置是什么?非常感谢!!