2020年2月1日土曜日

現在の作業ディレクトリの変更する関数の話

dlgcdir関数を使えば現在の作業ディレクトリが変更できます.
正しく実行できると戻り値は0になります.

415  /*現在の作業ディレクトリをlogに表示*/
416  data _null_;
417    rc=dlgcdir();  /*()を空にして実行すると現在のディレクトリを表示する*/
418    put rc=;         /*正しく実行できているかの確認_別に不要ではあるが見るのには便利*/
419  run;

NOTE: 現在の作業ディレクトリは"piyopiyo"です。
rc=0    /*正しく実行できているので戻り値が0*/
NOTE: DATAステートメント処理(合計処理時間):
      処理時間           0.00 秒
      CPU時間            0.00 秒


420
421  /*現在の作業ディレクトリをhogeに変更*/
422  data _null_ ;
423  rc = dlgcdir("hoge") ;  /*()に指定したフォルダを現在のディレクトリとする*/
424  put rc= ;
425  run ;

NOTE: 現在の作業ディレクトリは"hoge"です。
rc=0
NOTE: DATAステートメント処理(合計処理時間):
      処理時間           0.00 秒
      CPU時間            0.00 秒


現在のディレクトリを変更することで,指定したフォルダ内のプログラムを%incで読み込む際にファイル名の指定だけで済むので記述が短くなって良いですね.もちろん現在のディレクトリを変更しているので,何が指定したフォルダに出力されるかを確認する必要はありますが.

例えば指定したフォルダの中のhoge.sasとhoge2.sasを実行するには%incにファイル名を書くだけでokになります.もちろん実行するプログラムの前にフォルダパスを記載すれば指定していないフォルダのプログラムも実行できますが,タラタラ前に書くのがめんどくさい時もありますし,フォルダパスをマクロ変数に格納して何かのはずみでマクロ変数の上書きが意図せず起きたりするのが結構ややこしい印象です.

%inc "hoge.sas" ;
%inc "hoge2.sas" ;

私は使ったことないですけど便利そうですよね,そのうち使うかもしれません.
 
後はファイルメニューの「プログラムを開く」で,最初に表示されるファイルの場所が現在のディレクトリになれば最高なんですが…今はsasの保存場所かなんかが最初に出るんですよね…最初と言わずとも現在のディレクトリにすぐアクセスできればokなんですが.

0 件のコメント:

コメントを投稿