「decrement 」ではありません。
「directory create 」
つまり、ディレクトリ(フォルダ)を作成するSASの関数です。
ディレクトリ(フォルダ)作成を、わざわざSASでやらなくてもという気もしますが、
せっかく加わった関数なので使ってみましょう。
以下のように、D:\tempの直下に「test」というフォルダがあります。
この「test」というフォルダ内に、DCREATE関数 でフォルダを作成してみます。
data _NULL_ ;
dir1 = "テストフォルダ1" ;
rc = dcreate (dir1, 'd:\temp\test\') ;
run ;
構文的には、DCREATE ( 第1引数 , 第2引数 )です。
第1引数には、作成するフォルダ名の文字列(文字変数)
第2引数には、フォルダを作成する場所をフルパスで与えます。
戻り値をVIEW TABLEで見てみると、何も入っていない(ブランク)ので、左辺は適当なSAS名で構いません。
実行結果のログです。
フォルダを作成した旨がログに特別出力されていないのが、少し気持ち悪いですが、
「テストフォルダ1」というフォルダは、正常に作成されています。
ちなみに、上記のような状態(D:\temp直下に「test」フォルダしか無い場合)で
data _NULL_ ;
dir1 = "テストフォルダ1" ;
rc = dcreate (dir1, 'd:\temp\testXXX\') ;
run ;
というように、存在しないフォルダを第2引数に指定しても、
ログには、ERRORもWARNINGも出力されません。(もちろん、フォルダも作成されません。)
やっぱり少し気持ち悪いですね。
実用的な使用例を考えてみました。
各プロジェクトをフォルダ分けして管理する場合に、
のようなSASデータセットを作成しておき、
%Macro createDir( projectName ) ;
data _NULL_ ;
set temp ;
* d:\tempの直下に基準となるフォルダを作成 ;
if _N_ = 1 then rc = dcreate ("&projectName", "d:\temp\") ;
* 基準としたフォルダの直下に各フォルダを作成 ;
rc = dcreate (dir, "d:\temp\&projectName") ;
run ;
%Mend createDir ;
options MPRINT ;
%createDir( Project01 ) ;
のようなマクロを実行すると、
のようにフォルダ構成を作ることができます。
社内にUNIX-SASが無いので試すことができませんが、
UNIXではディレクトリ権限等があるので、注意して使う必要がありそうです。
訂正:2007/03/13
DCREATE関数の戻り値を格納する変数について
「戻り値をVIEW TABLEで見てみると、何も入っていない(ブランク)ので、左辺は適当なSAS名で構いません。」
と記載しましたが、誤りでした。
お詫びとともに訂正させていただきます。
正確には、以下3パターンで戻り値が変わります。
①フォルダ(ディレクトリ)が正常に作成された場合
②作成するフォルダ(ディレクトリ)が既存の場合
③第2引数で指定したフォルダ(ディレクトリ)が存在しない場合
①では、作成されたフォルダ(ディレクトリ)のフルパスが戻り値になります。
(例 d:\temp\test\テストフォルダ1)
②③では、戻り値がブランクになります。
0 件のコメント:
コメントを投稿