ビジネス・インテリジェンス[BI] のリーディング・カンパニー | SAS Japan SAS Japan
「THE POWER TO KNOW(知る力)」を提供するビジネス・インテリジェンス[BI]のリーディング・カンパニー | SAS Japan  トレーニング マニュアル ユーザー事例 パートナー ユーザー会 求人情報 資料請求・ダウンロード
Home News Products & Solutions Events & Seminer Customer Support Company www.sas.com
 

「ERROR: マクロ XXXXXXXX が CARDS ( データ行 ) を生成しました。」

[OS] ALL
[リリース] ALL
[キーワード] Base, MACRO, ERROR, message, CARDS

[質問]

下記のようなマクロプログラムを実行したとき、「ERROR: マクロ XXXXXXXX が CARDS ( データ行 ) を生成しました。」というエラーになりました。
マクロでCARDSステートメントは使用できないのでしょうか。

実行したプログラム


  %MACRO test; 

    DATA sample;
      INPUT name $;
    CARDS;
  X
  Y
  ;
    run;

  %MEND test;

  %test

エラーメッセージ


ERROR: マクロ TEST が CARDS ( データ行 ) を生成しました。 
不当な結果の原因になるかもしれません。 DATAステップとマクロ の実行を中止します。

[回答]

マクロの中でCARDSステートメントを使用することはできません。
マクロソースはマクロ定義テーブルに格納される際、ブランクが詰められてリフォーマットされますが、CARDSステートメントよりも後のデータは、リフォーマットされると改行位置がわからなくなるため、仕様上の制限として使用できません。

下記のいずれかの方法で対応してください。

1. データを外部ファイルに保存して、INFILEステートメントで入力する

   DATA sample; 
     INFILE 'c:¥sasdata¥sample.txt';
     INPUT name $; 
   RUN;

2. CARDSステートメントを使用しているDATAステップをマクロの外に出す
 

3. (データが少量の場合)割り当てステートメントで値をセットする

   DATA sample; 
     name='X'; OUTPUT;
     name='Y'; OUTPUT;
   RUN;

The Power to Know
   Contact Us     Terms of Use & Legal Information     Privacy Statement     個人情報の取り扱いについて   Copyright © 2008 SAS Institute Inc. All Rights Reserved