ラベル プロシジャ: CATALOG の投稿を表示しています。 すべての投稿を表示
ラベル プロシジャ: CATALOG の投稿を表示しています。 すべての投稿を表示

2019年11月1日金曜日

カタログからフォーマットを削除する方法






フォーマットを削除する方法1

PROC CATALOG  CAT=ライブラリ名.カタログ名;
     DELETE  フォーマット名1  フォーマット名2 ・・・ / ET=フォーマットの種類;
RUN;


  • 「DELETEステートメント」に削除したいフォーマットを列挙します。
  • 「ET=オプション」に削除する「フォーマットの種類」を指定します。
  • 「フォーマットの種類」には以下があります。
    • FORMAT   ...  数値フォーマット
    • FORMATC ...  文字フォーマット
    • INFMT       ...  数値インフォーマット
    • INFMTC    ...  文字インフォーマット



例
/* Sample */
proc format;
   value     a      1      = "aaa" ;
   value     $b   "aaa" = "bbb" ;
   invalue   c     "aaa" = 1 ;
   invalue   $d   "aaa" = "bbb" ;
run;

/* フォーマットの種類ごとに削除 */
proc catalog cat=work.formats;
    delete a / et=format;
    delete b / et=formatc;
    delete c / et=infmt;
    delete d / et=infmtc;
quit;



ちなみに、以下のように書くことも可能です。

proc catalog cat=work.formats;
    delete a (et=format)  b (et=formatc) c (et=infmt) d (et=infmtc);
quit;






フォーマットを削除する方法2  (注意事項あり)

PROC CATALOG  CAT=ライブラリ名.カタログ名  KILL FORCE;
RUN;


  • カタログ内の「全エントリー」を削除します。
  • 「全エントリー」とはフォーマットだけでなくマクロなどのあらゆるエントリーを含みます。
  • 「KILL」オプションは PROC CATALOG 内の他のオプションやステートメントより先に動作します。たとえばDELETEステートメントで削除するフォーマットを指定していても意味はなく、カタログ内の全エントリーを削除してしまいます。



2018年11月28日水曜日

コンパイルしたマクロを削除する





マクロを削除する方法1

%SYSMACDELETE  マクロ名 ;

  • 「WORK.SASMACR」内にあるマクロを削除することが出来ます
  • サイドセッションを使用するアプリケーションやプログラムでは、マクロが「WORK.SASMACn」(nは一意の整数)に格納されるため、該当セッションの「WORK.SASMACn」内のマクロが削除対象になる


例
%sysmacdelete test1;






マクロを削除する方法2

PROC CATALOG  CAT=ライブラリ名.カタログ名  ET=MACRO;
     DELETE  マクロ名1  マクロ名2 ・・・ ;
RUN;
QUIT;

  • 対象のライブラリとカタログ名を指定することが出来ます。
  • 削除したいマクロ名を列挙します。


例
proc catalog cat=mymac.sasmacr et=macro;
   delete test1 test2 test3;
run;
quit;






マクロを削除する方法3  (注意事項あり)

PROC CATALOG  CAT=ライブラリ名.カタログ名  KILL FORCE;
RUN;
QUIT;

  • カタログ内の「全エントリー」を削除します。
  • 「全エントリー」とはマクロだけでなくフォーマットなどのあらゆるエントリーを含みます。
  • 「KILL」オプションは PROC CATALOG 内の他のオプションやステートメントより先に動作します。たとえばDELETEステートメントで削除するマクロを指定していても意味はなく、カタログ内の全エントリーを削除してしまいます。


2015年5月26日火曜日

「PROC CATALOG」でフォーマット名を取得する方法と、「PROC FORMAT」でコードの中身を取得する方法


「フォーマット名を取得したい」 とか 「ある特定のフォーマットにどんなコードがあるのか見てみたいんだけど」 という質問を度々頂くので、解説したいと思います。

* サンプルフォーマット ;
proc format;
  value A_
    1="aaa"
    2="bbb"
  ;
  value $B_
    "xx"="aaa"
    "yy"="bbb"
  ;
  invalue C_
    "ccc"=1
    "ddd"=2
  ;
run;



フォーマット名を取得したい

サンプルで作成したフォーマットカタログから「フォーマット名」を出力する例。
proc catalog cat=work.formats;
   contents;
run;
quit;



青字部分は「cat=ライブラリ名.フォーマットカタログ名」という感じで適宜変えてください。

データセット化したい場合は、「OUT=」を使います。
proc catalog cat=work.formats;
   contents out=OUT1;
run;
quit;



中身のコードを取得する

サンプルで作成したフォーマットカタログから「フォーマットの中身」を出力する例。
「フォーマットの中身」の文字数が多くて枠のなかに収まらない文字は切られて表示されるので注意

proc format lib=work.formats  fmtlib;
run;



これも青字部分を 「lib=ライブラリ名.フォーマットカタログ名  fmtlib」 という感じで適宜変えてください。


出力するフォーマットを絞りたい場合は、SELECTを使います。
INFORMATの場合は、以下のように、頭に@を付けるのを忘れずに!
proc format lib=work.formats  fmtlib;
   select  A_  $B_  @C_;
run;

データセットに出力したい場合は、「CNTLOUT=」を使います。
proc format lib=work.formats cntlout=OUT2;
run;