OPTIONSプロシジャをつかうと、特定のオプションの
・設定方法
・現在の設定値
をログに表示することが出来ます。
構文
PROC OPTIONS OPTION=確認したいオプション名 表示内容; RUN; |
表示内容は以下に示す通り、DEFINE, LONG, SHORT などがあります。
DEFINE … オプションの詳細な説明と現在の設定値を表示
LONG … オプションの簡単な説明と現在の設定値を表示
カッコで囲んで複数のオプションを指定することもできます。
PROC OPTIONS OPTION=確認したいオプション名 表示内容; RUN; |
他の形式で今回のプログラムを流用すると、重要なオプションが効かなかったり、そもそも動作しない等の可能性あり
例えば、変数値にセル内改行があると、出力したテキストファイルにも改行が入っておかしな出力結果になったり、
変数値に含まれる先頭の半角スペースが出力したテキストでは削除されてしまったり、
稀ですが、1レコードに書き込み可能な文字の長さの制限を超えると、超えた部分の変数値が出力されなかったりとか、とにかく色々な失敗例を聞きます。
PROC EXPORT
DATA = 出力データセット OUTFILE = "作成するテキストファイル" /* パスが長いと実行失敗します */ DBMS = CSV | TAB | DLM /* ファイル種類 */ REPLACE /* 既存のテキストファイルを上書く */ LABEL /* ヘッダーに変数名ではなく変数ラベルを適用 */ ; DELIMITER = "区切り文字"; /* DBMS=DLMの場合に指定 */ RUN ; |
指定 | 設定内容 |
CSV | カンマ区切り |
TAB | タブ区切り |
DLM | 自分で「DELIMITER=オプション」に区切り文字(シングルバイト1文字)を指定 |
proc export
data=SASHELP.CLASS outfile="C:\TEST\TEST.csv" dbms=dlm replace; delimiter=","; run; |
data DT1; attrib VAR1 length=8. label="Variable1" format=yymmdd10. VAR2 length=$20. label="Variable2" ; call missing( of _ALL_ ); stop; run; |
proc sql; create table DT2 ( VAR1 num "Variable1" format=yymmdd10. , VAR2 char(20) "Variable2" ); quit; |
proc ds2; data DT3 (overwrite=yes); dcl double VAR1 having label 'Variable1' format yymmdd10. ; dcl char(20) VAR2 having label 'Variable2'; method run(); stop; end; enddata; run; quit; |
proc lua; submit; local dsid = sas.open( "DT4", "o" ) sas.add_vars( dsid, {{name="VAR1", type="N", label="Variable1", length="8", format="yymmdd10."}, {name="VAR2", type="C", label="Variable2", length="20"}} ) sas.close( dsid ) endsubmit; run; |
data _null_; rc=sleep(3, 1); put rc "秒間待機しました"; run; |
%put %sysfunc(sleep(3, 1)) 秒間待機しました; |
001,a,11 002,b,22 |
003,c,33 004,d,44 |
data DT1 ; length VAR $500. ; VAR="C:\sample\test1.csv"; output; VAR="C:\sample\test2.csv"; output; run;
|
data OUT1; *--- テキストファイルのフルパスが格納されたデータセットをSET ---; set DT1; *--- フルパスが格納された変数VARを filevar= に指定 ---; *--- end=で各テキストファイルの終端を検知する一時変数を作成 ---; infile dummy filevar=VAR end=EOF dsd truncover; *--- テキストファイルの終端を検知するまでループ ---; length A B $10. C 8.; do while (not EOF); input A B C; output; end; run;
|
data DT1;
length JUICE $20. YEN 8.;
input JUICE & YEN;
cards;
APPLE JUICE 120
ORANGE JUICE 130
;
|
演算 | 演算子 |
加算 | + |
減算 | - |
乗算 | * |
除算 | / |
累乗 | ** |
data DT1; A = 4; B = 2; C = A + B; /* 加算 */ D = A - B; /* 減算 */ E = A * B; /* 乗算 */ F = A / B; /* 除算 */ G = A ** B; /* 累乗 */ run; |
data DT1; LBDTC = "2017-10-03"; ADT = input( LBDTC, e8601da. ); run; |
data DT1; LBDTC = "2017-10-03T09:10:00"; ADTM = input( LBDTC, e8601dt. ); ADT = input( LBDTC, e8601da. ); ATM = timepart( input( LBDTC, e8601dt. ) ); run; |
proc report data=SASHELP.CLASS nowd; column NAME AGE ; define NAME / display;define AGE / display; compute AGE; if AGE = 14 then call define( "name", "style", "style=[color=blue]" ); if AGE = 14 then call define( _row_, "style", "style=[background=yellow]" ); endcomp; run; |
proc report data=SASHELP.CLASS nowd; column NAME AGE ; define NAME / display;define AGE / display; compute AGE; if AGE = 14 then call define( "name", "style", "style=[color=blue]" ); if AGE = 14 then call define( _row_, "style", "style=[color=red]" ); endcomp; run; |
if AGE = 14 then call define( _row_, "style", "style=[color=red]" ); |
if AGE = 14 then call define( "name", "style", "style=[color=blue]" ); |