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ステップオブジェクトのインスタンス生成