SAS 9.2中的metadata_newobj函数有错误吗?

时间:2009-04-10 14:30:24

标签: sas sas-metadata

我有一个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代码中。

2 个答案:

答案 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

谢谢大家。