2019年2月13日水曜日

指定したライブラリのパスをログに表示する話

ライブラリのパスをログに表示させる話です.
pathname関数でパスの場所が取れるので,それをputlogしています.
どこのデータセットつかったのか,読み込んだデータが最新を格納している場所からちゃんと取れているのかを聞かれる時ありますから...

どうせログは保存するのだから,ログに出しておけば安心という考えです.
過剰な記録かもしれませんが...

以下にプログラムと実行ログおいておきます.

libname hoge "/home/xxxx/sasuser.v94/hoge" ;

/*---------- 指定したライブラリのパスをログに表示 ----------*/
data _null_ ;
    V_PATH = pathname("hoge") ;
    putlog "hoge:" V_PATH ;
run ;

/*---------- 実行ログ ----------*/
 71         data _null_ ;
 72             V_PATH = pathname("hoge") ;
 73             putlog "hoge:" V_PATH ;
 74        
 75         run ;

 hoge:/home/xxxx/sasuser.v94/hoge

2019年2月1日金曜日

データセットの更新日を取得する話

指定したデータセットの更新日を取得してログに表示します.
いつのどのデータセットつかって作業したか,を残しておいたほうがいいときに使っています.
どうせログは保存するのだから,ログに出しておいたら確認できるやろ,の精神ですね.

attrn関数のmodteを指定すると,更新日時が取れます.
指定を変えると作成日時も取れるらしいですがためしていません.
取れてきたものにe8601dtのフォーマットあててputlogしています.

いつのつかってたっけ?でドキッとすることがなくなるので便利なんですが,ここまで残す必要がある時があるかと言うと...微妙ですね...
以下にプログラムと実行時のログを残します.
sas studioで実行しています.製品版でも大差ないはずです.

/*---------- ライブラリ指定 ----------*/

libname hoge "/home/xxxx/sasuser.v94/hoge" ;

/*---------- 指定したデータの更新日をログに表示 ----------*/

data _null_ ;
   RCO = open("hoge.card") ;
   RC = attrn(RCO , "modte") ;
   CL = close(RCO) ;
   format RC e8601dt. ;
   putlog "card:" RC ;
run ;

/*---------- 実行ログ ----------*/
 71         data _null_ ;
 72            RCO = open("hoge.card") ;
 73            RC = attrn(RCO , "modte") ;
 74            CL = close(RCO) ;
 75        
 76            format RC e8601dt. ;
 77            putlog "card:" RC ;
 78         run ;

 card:2018-01-22T13:15:42