よく使うけど、すぐに忘れるタイムスタンプの文字列
%let dt=%sysfunc(putn(%sysfunc(datetime()), E8601DT20.));
2021-01-17T20:35:17
SASプログラムとログを解析するユーティリティを開発するための備忘録です。This is a memo to develop utility that analyzes the SAS log.
よく使うけど、すぐに忘れるタイムスタンプの文字列
%let dt=%sysfunc(putn(%sysfunc(datetime()), E8601DT20.));
2021-01-17T20:35:17
SAS9でメタデータサーバの情報を探し出して、リストを作ることは稀にあります。たまにしかやらないから、どんな検索式を与えるか忘れてしまいます。備忘としていくつか例を残してい置きます。メタデータのAPIは、情報を1個ずつとると遅いのでできれば検索式で絞り込んで少ない回数で取得した方が良いです。
配置済みのジョブの検索
JFJob?@id contains '.' and @PublicType = 'DeployedJob'
#!/bin/sh
function variable() {
TEMPLSIT=`mktemp --tmpdir=/var/tmp XXX.sh`
while read var cmd depth
do
ps --no-headers --format cmd -C $cmd | \
awk -vcmd=$cmd '{ for(i = 1; i <= NF; i++) { if (index($i, cmd) > 0) { print $i; exit} } }' | \
awk -vd=$depth '{ n = split($1, a, "/"); for (i = 2; i < (n + d); i++) { printf("/%s", a[i]) } print ""; }' | \
awk -vvar=$var '{ printf("export %s=%s\n", var, $1 ) }'
done << _EOF_
SAS_HOME sasauth -4
SAS_CONFIG MetadataServer.sh -3
LSF_HOME mbatchd -3
PM_HOME jfd -3
RTM_HOME lsfpollerd -2
GMS_HOME gabd -1
_EOF_
rm -f $TEMPLSIT
}
variable
実行すると環境変数の定義を生成します。
[root@dwtcjp conf]# sh variable.sh export SAS_HOME=/SAS/SAS_HOME export SAS_CONFIG=/SAS/SAS_CONFIG export LSF_HOME=/SAS/LSF_HOME export PM_HOME=/SAS/PM_HOME export RTM_HOME=/SAS/RTM_HOME export GMS_HOME=/SAS/LSF_HOME/gms
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
CapsLock::
Send, {vkF3sc029}
return
Esc::
Keywait, Esc, U
Keywait, Esc, D T0.3
If (ErrorLevel=1) {
Send,{Esc}
}
else {
SetCapsLockState % !GetKeyState("CapsLock", "T")
}
return
しばらくこれで使って身体を慣らします。echo "proc options option=dms value; run;" | sas -nodms -stdio2. Libnameを書かなくても任意のディレクトリにSASデータセットを出力できる。
echo "data '/var/tmp/foo.sas7bdat'; set sashelp.class; run;" | sas -stdio