間違ってプログラムを実行してしまった際の予防をしておきたい

スポンサーリンク
スポンサーリンク

趣旨

あまりなさそうなシチュエーションですが、モノによっては出力時間(タイムスタンプ)が他の出力との順番で整合性がとれないとよくないということもあります。単純に全部やりなおせばと思われますが、そのやり直しに長時間を要し、一晩放置が必要になるようなものだと業務に大きな影響がでるわけです。
例:帳票がすべて出揃ったあとに間違ってADaMを実行してしまいADaMのタイムスタンプが帳票よりも新しくなってしまうなど。
もちろん実行者には悪意を持って改ざんのようなことはありえませんが、ここで作業のやり直しを面倒に思いタイムスタンプだけをゴニョゴニョしてしまうと悪くすれば逸脱ですし、さらに最悪の場合フォレンジックされたときに必ず発覚して大問題に発展するわけです。

また、以前の試験のプログラムを参考にする場合、コピーした別フォルダで参照していたとしてもパスが通っていれば誤った実行で以前の試験データが上書きされてしまうなんてこともあるわけです。

そういった危険なものはテキストエディタで開くなどの対策をしている人もいますが、カスタマイズした秀丸を利用している人でもない限り、視認性という観点から大きく劣るため作業効率が落ちることも嫌がられます。


解決手段

全実行プログラムやコピーした参照用のプログラムであれば、誤って実行してしまっても内部が実行されないような以下のコードを先頭に記載しておきます。
バッチプログラムで言うところのpause(一時停止)に似ています(こちらは一時停止でなく終了)。

data _null_;
  abort cancel;
run;

エラーコードを出力し、プログラムを終了し、それ以降のコードを実行しません。


実行例

/* 安全装置 */
data _null_;
  abort cancel;
run;

proc print data = sashelp.class;
run;

proc printは実行されません。


ログ

コメント