DATAステップステートメント

Last-modified: 2010-01-13 (水) 14:12:09

DATAステップステートメントは,SASプログラムを構成する基本単位であるステートメントのうち,DATAステップを構成するステートメントをいいます.DATAステップでは,外部ファイルや他のSASデータセットなどを読み込み,さまざまなデータ処理を行った結果を新たなSASデータセットや外部ファイルに出力することができますが,その具体的な処理内容を,DATAステップステートメントを組み合わせて指示します.
機能や種類が豊富であるので,以下では,簡単な用途の説明にとどめた一覧を示します.詳細な説明については,個別のページか,SASのヘルプを見てください.

DATAステップの開始と終了

  • DATAステートメント?
    DATA SASデータセット名(データセットオプション指定) ;
    DATAステップの開始を表し,出力データセット名を定義する
  • RUNステートメント?
    RUN ;
    DATAステップの終了を示す.このステートメントグローバルステートメントに分類されている.
    DATAステップは,このRUNステートメント,データ行の終了を示すNullステートメント,もしくは,次のDATAステップやPROCステップの開始の手前で,終了位置が認識される.

データ行やウインドウ,外部ファイルとのデータの読み込み,書き込み

  • CARDSステートメント?
    CARDS4ステートメント?
    DATALINESステートメント?
    DATALINES4ステートメント?
    CARDS;
    CARDS4;
    DATALINE;
    DATALINE4;
    いずれも,データ行の開始を示す.CARD4または,DATALINE4は,データ中にセミコロンを含む場合に使用.
  • Nullステートメント?
    ;
    ;;;;
    データ行の終了を表す.「;;;;」は,CARDS4またはDATALINE4で始まるデータ行に対して使用.
  • INFILEステートメント?
    INFILE 外部ファイル指定 オプション;
    データを読み込む元の外部ファイル名を指定
    see also 複数の外部ファイルの読み込み
  • INPUTステートメント
    INPUT 入力指定 ;
    データ行や外部データファイルから,データをSASデータセットに読み込む.
  • FILEステートメント?
    FILE 外部ファイル指定 オプション;
    データを書き出す先の外部ファイル名を指定
  • PUTステートメント?
    PUT 出力指定 ;
    データを画面や外部データファイルへ書き出す.

SASデータセットからのデータの読み込みや結合処理

  • WHEREステートメント
    WHERE 条件式;
    条件を満たす入力SASデータセットからオブザベーションのみを読み込む
  • SETステートメント?
    SET SASデータセット名(データセットオプション指定) オプション;
    入力SASデータセットを指定する.また複数のSASデータセットを縦連結する
  • MERGEステートメント?
    MERGE SASデータセット名(データセットオプション指定) オプション;
    複数の入力SASデータセットをマージ(横連結)する
  • BYステートメント?
    BY 変数1 DESCENDING 変数2 NOTSORTED;
    SET,MERGE, MODIFY,UPDATEステートメントの処理において,グループ化する変数を指定する.

変数の値の操作

  • 割り当てステートメント
    変数=式;
    変数に値をセットする
  • 累計ステートメント
    変数+式;
    累積値をセットする
  • CALLステートメント
    CALL コールルーチン名(引数1,..);
    CALLルーチンを呼び出す.
  • RETAINステートメント
    RETAIN 変数1 変数2 ..<初期値1..> 変数3 変数4 ..<初期値2..> ;
    変数の値を初期化せずに次のオブザベーションに引き継ぐ
  • MISSINGステートメント
    MISSING 特殊欠損値1 特殊欠損値2 ..;
    特殊欠損値を定義する

変数の属性の操作

  • ATTRIBステートメント
    ATTRIB 変数1  変数2 .. 属性指定1 属性指定2 .. 変数3  変数4 .. 属性指定3 属性指定4 .. ;
    変数のフォーマット,インフォーマット,バイト数,変数ラベルを定義する
  • FORMATステートメント
    FORMAT 変数1  変数2 .. フォーマット <DEFAULT=フォーマット> ;
    変数のフォーマットを指定する
  • INFORMATステートメント
    INFORMAT 変数1  変数2 .. インフォーマット <DEFAULT=インフォーマット> ;
    変数のインフォーマットを指定する
  • LABELステートメント
    LABEL 変数1='ラベル1'  変数2='ラベル2' ..  ;
    変数に変数ラベルをつける
  • LENGTHステートメント
    LENGTH 変数1 変数2 .. <$> n <DEFAULT=n> ;
    変数のバイト数を定義する
  • KEEPステートメント
    KEEP 変数1  変数2 .. ;
    出力SASデータセットに残す変数を指定する
  • DROPステートメント
    DROP 変数1  変数2 .. ;
    出力SASデータセットから除外する変数を指定する
  • RENAMEステートメント
    RENAME 元変数名1=新変数名1  元変数名2=新変数名2 ..  ;
    変数名を変更する

オブザベーション毎の処理の制御

  • DELETEステートメント?
    DELETE;
    処理しているオブザベーションの削除.現在のオブザベーションの処理を終了し,オブザベーションをSASデータセットに出力しないで,次のオブザベーションの処理に移る.
  • OUTPUTステートメント?
    OUTPUT SASデータセット名;
    処理しているオブザベーションを出力SASデータセットに出力し,引き続くステートメントの実行を行う.
  • RETURNステートメント?
    RETURN;
    現在のオブザベーションの処理を終了し,次のオブザベーションの処理に移る.DATAステップ中に,OUTPUTステートメントが使われていなければ,ここでオブザベーションは出力され,逆にOUTPUTステートメントが使われていれば,ここでは出力されない.
    なお,途中でLINKステートメントが実行されていれば,最後に実行されたLINKステートメントの次に制御が移る.
    (Tip)DATAステップの最後には,暗黙にRETURNステートメントがあるものとみなされる.

例外処理など

  • ABORTステートメント
    ABORT <ABEND | RETURN> <n> ;
    実行中のDATAステップやSAS実行環境を終了する
  • STOPステートメント
    STOP;
    実行中のDATAステップを終了する
  • ERRORステートメント
    ERROR <'メッセージ文字列'>;
    特殊変数_ERROR_に値1を設定する.
  • LISTステートメント
    LIST;
    処理中のオブザベーションに対する入力レコードの内容をログに出力
  • LOSTCARDステートメント
    LOSTCARD;
    1オブザベーションを複数行から読む処理中に不整合が生じた時,データ行を破棄する
  • PUTLOGステートメント
    PUTLOG 'メッセージ文字列';
    ログにメッセージを出力

マスター更新処理

  • UPDATEステートメント
    UPDATE マスターSASデータセット トランザクションSASデータセット <オプション> ;
    マスターとなるSASデータセットに,トランザクションSASデータセットの内容を反映させる.
  • MODIFYステートメント
    MODIFY マスターSASデータセット トランザクションSASデータセット <オプション> ;
    既存のSASデータセットに対し,直接,オブザベーションの置換,削除,追加を行う.
  • REMOVEステートメント
    REMOVE <SASデータセット名>;
    オブザベーションを消去する
  • REPLACEステートメント
    REPLACE <SASデータセット名>;
    オブザベーションを置換する

実行順序の制御と配列

  • ARRAYステートメント
    ARRAY 行列名(添字指定) <$> <n> 変数1 変数2 .. <(初期値指定)>;
    行列を定義する
  • DOステートメント
    DO;
    DOからENDまでをひとつの複合ステートメントとして扱う
  • 反復DOステートメント
    DO 添え字変数=開始値 to 終了値 <by 増分>;
    インデックス変数をカウントアップしながら一連のステートメントを繰り返す
  • DO UNTILステートメント
    DO UNTIL(条件式);
    UNTIL条件が満たされるまで一連のステートメントを繰り返す.条件式はループの最後に評価される.
  • DO WHILEステートメント
    DO WHILE(条件式);
    WHILE条件が満たされている間一連のステートメントを繰り返す.条件式はループの最初に評価される.
  • CONTINUEステートメント
    CONTINUE;
    DOステートメントに先頭に制御を移す
  • LEAVEステートメント
    LEAVE;
    DOループを終了する
  • ENDステートメント
    END;
    DOステートメント,IFステートメントまたはSELECTステートメントから開始される複合ステートメント最後を表す.
  • IFステートメント
    IF 条件式 ステートメント;
    条件を満たすときのみオブザベーションの処理が続けられ出力SASデータセットに記録される
  • ELSEステートメント
    ELSE ステートメント;
    条件に一致した場合,ステートメントを実行する
  • SELECTステートメント;
    SELECT <(式)>;
    SELECTステートメントからENDステートメントまでが条件分岐制御となる.
  • WHENステートメント;
    WHEN (式 | 条件式) ステートメント;
    条件に一致した場合,ステートメントを実行する
  • OTHERWISEステートメント;
    OTHERWISE ステートメント;
    条件に一致しなかった場合,ステートメントを実行する
  • ラベルつきステートメント
    ラベル: ステートメント;
    GO TOステートメントなどのとび先となるステートメント
  • GO TOステートメント
    GO TO ラベル;
    指定したラベルへ制御を移す
  • LINKステートメント
    LINK ラベル;
    指定したラベルへ制御を移す.RETURNステートメントの戻り先に影響する.

ウインドウ定義

  • WINDOWステートメント
    WINDOW ウインドウ名 <オプション> 領域定義;
    ユーザ定義ウインドウを定義する
  • DISPLAYステートメント
    DISPLAY ウインドウ名;
    ユーザ定義のウインドウを表示する

ストアドプログラム

  • DESCRIBEステートメント
    DESCRIBE;
    コンパイル済みDATAステッププログラムやDATAステップビューのコードを表示する
  • EXECUTEステートメント
    EXECUTE;
    コンパイル済みDATAステッププログラムを実行する
  • REDIRECTステートメント
    REDIRECT INPUT | OUTPUT 元SASデータセット名1=新SASデータセット名1 元SASデータセット名2=新SASデータセット名2 ..;
    コンパイル済みDATAステッププログラムを実行する際,アサインするSASデータセットを指定する

ODS

  • FILE ODSステートメント
    FILE PRINT ODS オプション;
    データをODSで書き出すオプションを指定
  • PUT ODSステートメント
    PUT 出力指定 _ODS_ ;
    データをODSで書き出す

オブジェクト(ハッシュオブジェクト,ハッシュ反復子ハッシュオブジェクト)

  • DECLAREステートメント
    DECLARE オブジェクト名 インスタンス名
    DATAステップオブジェクトの宣言
  • _NEW_ステートメント
    インスタンス名=_NEW_ オブジェクト名(引数タグ1:値1,引数タグ2:値2, ..)
    DATAステップオブジェクトのインスタンス生成