我有一个SAS应用程序,我正在使用新发布的SAS 9.2进行测试。我调用metadat_newobj函数在SAS元数据存储库中创建一个新的Library对象:
rc = metadata_newobj( "SASLibrary", URI, Name );
在9.1.3中,当函数执行成功(rc = 0)时,URI变量填充了新创建的Library对象的URI。
在SAS 9.2中,虽然返回值为0(成功)并且创建了库对象(我使用管理控制台手动检查),但URI变量保持空白,因此任何后续设置属性等操作都会失败。
两个版本的文档都将URI列为此函数的输出参数。
有没有人知道这个?
编辑:我使用的代码如下:
put libraryName=;
rc = metadata_newobj("SASLibrary", libraryUri, libraryName);
if rc ne 0 then do;
/* Error handler */
return;
end;
put libraryUri=;
和输出:
libraryName=HRLIB10
libraryUri=
我正在尝试使用PROC METADATA
解决此问题,这似乎正在起作用。 :\
编辑#2:我刚才意识到我没有提到这是在SCL代码中。
答案 0 :(得分:1)
它对我有用。基于你给出的例子,我建议在NAME周围加上引号。也可以在运行metadata_newobj之前使用length语句来设置uri。否则,为了分享,请告诉我们您是否通过其他技术解决了这个问题。
这是我跑的:
data _null_;
length uri $256;
rc=0;
rc=metadata_newobj("SASLibrary",
uri,
"testlib");
put uri=;
run;
这是我的日志:
NOTE: Variable uri is uninitialized.
uri=OMSOBJ:SASLibrary\A5M6IOB0.AZ000007
NOTE: DATA statement used (Total process time):
real time 0.07 seconds
cpu time 0.01 seconds
答案 1 :(得分:0)
我没有发现任何暗示在新版本中metadata_newobj已更改的内容。但是,它只是拒绝为我工作。所以我将我的函数转换为使用PROC METADATA
,现在它适用于SAS 9.1.3 和 SAS 9.2
谢谢大家。