SAS日付値の処理におけるNOTEについて

[OS] ALL
[リリース] ALL
[キーワード] BASE, DATA, DATE, NOTE, MESSAGE

[質問]

DATAステップでSAS日付を得るために関数を利用すると、無効な入力に対してNOTEが表示されます。
NOTEが発生しないよう、事前に妥当性を確認するような関数はありませんか。

[回答]

ご質問のような場合を想定した関数は用意されていないため、関数を利用する前に、妥当性を確認する処理を実行することになります。
下記のプログラム例では、入力された年・月・日のデータから、それぞれの範囲が特定の範囲にあるかどうかを確認し、エラーの場合は欠損値を返す処理を行なっています。


DATA _NULL_ ;
  INPUT yy mm dd ;
                                          /* データが指定範囲以外は欠損値を設定 */
  IF yy >= 1960 AND mm >= 1 AND mm <= 12 AND dd >= 1 THEN DO;
    t = DAY(INTNX('MONTH', MDY(mm, 1, yy), 0, 'END')) ;
    IF dd <= t THEN date1 = MDY(mm, dd, yy) ;
  END;
  ELSE date1 = . ;

  PUT date1= YYMMDDS10. ;
                                             /* 入力データ 3件目以外は範囲外   */
CARDS;
2003  2 29
2004  4 31
2004  4 30
RUN;