0

我有一个 SAS 应用程序,我正在使用新发布的 SAS 9.2 进行测试。我调用了 metadat_newobj 函数来在 SAS 元数据存储库中创建一个新的库对象:

rc = metadata_newobj( "SASLibrary", URI, Name );

在 9.1.3 中,当函数成功执行 (rc = 0) 时,URI 变量将填充新创建的库对象的 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 代码中。

4

2 回答 2

1

它对我有用。根据您提供的示例,我建议在 NAME 周围加上引号。也可以在运行 metadata_newobj 之前使用长度语句来设置 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
于 2009-04-13T17:57:25.353 回答
0

我没有发现任何表明 metadata_newobj 在新版本中发生了变化。但是,它只是拒绝为我工作。所以我将我的函数转换为使用PROC METADATA,现在它可以在 SAS 9.1.3SAS 9.2中使用

谢谢大家。

于 2009-04-15T18:35:17.803 回答