ラベル 関数: LIBNAME の投稿を表示しています。 すべての投稿を表示
ラベル 関数: LIBNAME の投稿を表示しています。 すべての投稿を表示

2014年10月1日水曜日

ライブラリをいっぺんに割り当てる方法




ライブラリをいっぺんに取り消す方法とは逆に、いっぺんに割り当てる方法を紹介。


たとえば、「C:\TEST」というパスに 「A」「B」「C」というフォルダがあったとします。
これらにライブラリを割り当てたいとします。



① LIBNAMEステートメント


ライブラリを割り当てる構文
LIBNAME ライブラリ参照名 "割り当てるパス";

* ライブラリを割り当て ;
libname mylib1 "C:\TEST\A";
libname mylib2 "C:\TEST\B";
libname mylib3 "C:\TEST\C";



② LIBNAME関数


データステップ内でもLIBNAME関数でライブラリの割り当てが出来ます。


ライブラリを割り当てる構文
リターンコードを格納する変数 = LIBNAME( "ライブラリ参照名", "割り当てるパス" );

    • 割り当てが成功したか失敗したか、などの情報はログに表示してくれません。
    • その代わり、LIBNAME関数のリターンコードには以下が格納される。
      • 割り当てが成功した場合「0」
      • なんらかのERROR、WARNING、NOTEなど特記事項がある場合は「0以外」(特記事項はSYSMSGという関数で取得できる)


    * ライブラリを割り当てる ;
    data _null_;
            length msg $2000.;

            rc = libname( "mylib1", "C:\TEST\A" );
            if rc^=0 then do;
               msg=sysmsg();
               put msg;
            end;
            rc = libname( "mylib2", "C:\TEST\B" );
            if rc^=0 then do;
               msg=sysmsg();
               put msg;
            end;
            rc = libname( "mylib3", "C:\TEST\C" );
            if rc^=0 then do;
               msg=sysmsg();
               put msg;
            end;
    run;



    以下のようにDOループなどを使っていっぺんに割り当てたり、色々工夫の余地があります。

    * ライブラリを割り当てる ;
    data _null_;
          length x msg $2000.;
          do  x = "A", "B", "C";
               i + 1;
               rc = libname( cats( "mylib", i ) , cats( "C:\TEST\", x ) );
               if rc^=0 then do;
                   msg=sysmsg();
                   put msg;
               end;
          end;
    run;




    2014年8月25日月曜日

    ライブラリをいっぺんに取り消す方法



    1つまたはすべてのライブラリを取り消す方法を紹介します。



    ① LIBNAMEステートメント


    ライブラリを取り消す構文
    LIBNAME ライブラリ参照名 CLEAR;

      すべてのライブラリを取り消す構文
      LIBNAME _ALL_ CLEAR;


        * 適当にライブラリを割り当て ;
        libname test1 "適当なパス1";
        libname test2 "適当なパス2";

        * ライブラリ「TEST2」のみ取り消す ;
        libname test2 clear;




        ② LIBNAME関数


        データステップ内でもLIBNAME関数でライブラリの取り消しが出来ます。


        ライブラリを取り消す構文
        リターンコードを格納する変数 = LIBNAME( "ライブラリ参照名" );

          • 取り消しが成功したか失敗したか、などの情報はログに表示してくれません。
          • その代わり、LIBNAME関数のリターンコードには以下が格納される。
            • 取り消せた場合「0」
            • なんらかのERROR、WARNINGなど特記事項がある場合は「0以外」(特記事項はSYSMSGという関数で取得できる)


          * 適当にライブラリを割り当て ;
          libname test1 "適当なパス1";
          libname test2 "適当なパス2";

          * ライブラリ「TEST1」「TEST2」を取り消す ;
          data _null_;
                  length msg $2000.;

                  rc = libname( "test1" );
                  if rc^=0 then do;
                     msg=sysmsg();
                     put msg;
                  end;

                  rc = libname( "test2" );
                  if rc^=0 then do;
                     msg=sysmsg();
                     put msg;
                  end;
          run;



          以下のようにDOループなどを使ってドカッと取り消したり、色々工夫の余地があります。

          * 適当にライブラリを割り当て ;
          libname test1 "適当なパス1";
          libname test2 "適当なパス2";
          libname test3 "適当なパス3";

          * ライブラリ「TEST1」~「TEST3」を取り消し ;
          data _null_;
                length msg $2000.;
                do i = 1 to 3;
                     rc = libname( cats( "test", i ) );
                     if rc^=0 then do;
                         msg=sysmsg();
                         put msg;
                     end;
                end;
          run;

          上の例を簡単に説明しておくと、
          • DOループで変数 i の値を1~3まで変化させながら、
          • CATS関数で "test" という文字と変数 i の値を結合します。
          • その結合した文字が表すライブラリ参照をLIBNAME関数で取り消しています。