代码之家  ›  专栏  ›  技术社区  ›  moodymudskipper

是否将mymacro/源复制到另一个库?

  •  0
  • moodymudskipper  · 技术社区  · 7 年前

    options mstored sasmstore=FOO;
    %macro hello_world() / STORE SOURCE DES='hello world';
      %put hello world;
    %mend;
    

    现在我想从库中复制这个宏 FOO 去图书馆 BAR

    %copy hello_world /source LIB = BAR;
    

    options mstored sasmstore=BAR;
    %macro hello_world() / STORE SOURCE DES='hello world';
      %put hello world;
    %mend;
    

    目标是方便地将宏从开发库复制到生产库。我该怎么做?

    2 回复  |  直到 7 年前
        1
  •  2
  •   Richard    7 年前

    Proc CATALOG 用于将条目从一个成员复制到另一个成员

    %macro One;
    %put ONE;
    %mend;
    
    proc catalog catalog=work.sasmacr;
      copy out=work.holdmacr;
      select one / et=macro;
    run;
    

    复制条目的另一种方法是使用自动提供的连接功能 LIBNAME .

    示例3:连接SAS目录

    此示例通过指定 每个的物理文件名,并将libref ALLMINE分配给 连接库:

    libname allmine ('file-1' 'file-2' 'file-3');

    ALLMINE.MYCAT作为libref.catref提供对目录条目的访问 陈述

    如果同名目录包含相同的命名条目,则使用最早的库中的条目。

    这在单元测试期间非常方便,因为在证明更新没有破坏性之前,不必修改原始版本。您有集成单元测试,对吗?;-)

        2
  •  1
  •   Joe    7 年前

    PROC CATALOG 这是正确的方法。

    *define foo;
    libname foo "c:\temp";
    
    *create the stored macro;
    options mstored sasmstore=FOO;
    %macro hello_world() / STORE SOURCE DES='hello world';
      %put hello world;
    %mend;
    
    *define bar;
    libname bar "c:\otherdir";
    
    *proc catalog to copy it over;
    PROC Catalog catalog = foo.sasmacr;
                 copy out=bar.sasmacr;
    run;
    
    ***reset SAS session before continuing to clear libname foo***;
    
    
    *now redirect SAS to BAR;
    libname bar "c:\otherdir";
    options mstored sasmstore=bar;
    
    *and run hello_World- see it works!;
    %hello_world;
    

    推荐文章