2010年1月5日火曜日

細かすぎる処理は読めない

次のユーティリティで煮詰めないといけないのは、下のようなグラフになってしまうから。
意味ある単位で、入出力を見せないといけない。SASはモジュール性が高いとはいえないが、マクロの書き方次第で、全体と部分を分けることができます。




2010年1月4日月曜日

次に作りたいもの

次に作りたいユーティリティを思案しています。
年末年始の休みを使ってユーティリティの実装を検討しました。ぱっと見るSAS Log Utilityと似ていますが、まだ煮詰めて行きます。このままでは、本格的なプログラムに使えないのはわかっています。これを使えるようにするには、コーディング上の工夫、または丸(プロセス)を集約する機能が必要です。




2009年12月28日月曜日

Excel ファイルのヘッダとフッタの設定ユーティリティ

しばらくぶりの更新です。仕事がらSAS以外で使うユーティリティを作りました。Excelファイルのヘッダ、フッタ、ブックのプロパティを一括で更新するユーティリティです。提出物、納品物の体裁を整えるときに面倒なのが、ヘッダ/フッタの設定です。

同じような機能をもったフリーウェアはありますが、ヘッダ/フッタの設定値を保存できない、複数ファイルを指定できないなどの制限があったので、自分が仕事で使う目的で作りました。

私は、ヘッダ中央にファイル名、フッタ左側にシート名、フッタ右側にページ番号をセットするようにしています。出力して紙で持ち歩くときに、ファイル名がわからず、フォルダの中を探し回ることが無いように、ヘッダにファイル名を入れています。

設定するExcelファイル、ファイル選択のダイアログ又はドラッグ&ドロップで選択できます。年末年始休暇の間に微調整して、Vectorに登録します。


バージョン情報の画面

 ヘッダー/フッターの設定画面


ページの設定画面

プロパティの設定画面


2009年11月15日日曜日

欠損値が生成

忘れそうなので覚書きです。
SAS Log Utility 1.2.0.0では欠損値の生成はチェックしません。これはいまの仕事の都合で、既存のコードがわんさかと欠損値を生成するからです。

NOTE: 欠損値を含んだ計算により、以下の箇所で欠損値が生成されました。
NOTE: Missing values were generated as a result of performing an operation on missing values.


直すべきか思案します。

2009年11月14日土曜日

次のリリース 1.2.0.0

SAS Log Utilityに機能を追加しました。 後一週間ほどでリリースします。
  • ログファイルをドロップで選択できるように改良
  • ログファイルからバグになりそうなメッセージを拾ってカウント
バグになりそうなメッセージとは以下の5つです(日本語版もOK)。これは、SASプログラムのテスト、受け入れをするときになんとなくチェックしていた項目です。他にチェックポイントが無いか思案しています。
  • NOTE: Variable x is uninitialized.
  • NOTE: Numeric values have been converted to character ...
  • NOTE: Character values have been converted to numeric ...
  • NOTE: MERGE statement has more than one data set with repeats ...
  • One or more lines were truncated.
画面イメージを下に貼り付けます。チェックに引っかかった行が色つきで表示されます。受け入れテスト、エビデンスのチェックに使う予定です。


よくある潜在的な問題をチェック

ログに含まれるバグになりそうなメッセージを拾ってくれたら、ケアレスミスを防げるかも。ついでに、ファイルのドロップの仕組みも作っています。開発中の画面です。

2009年11月11日水曜日

変数が初期化されていません。

忘れそうなので覚書きです。
変数名を間違えて初期化されない、マージでデータが重複する、切り捨てられた行があるなど、よくあるミスをチェックしてくれる機能がほしいです。自分で作るか?


NOTE: 変数 x は初期化されていません。
NOTE: 以下の箇所で数値を文字値に変換しました。
( 行 : カラム )
267:11
NOTE: 以下の箇所で文字値を数値に変換しました。
( 行 : カラム )
268:11
NOTE: MERGE ステートメントに BY 値を繰り返すデータセットが複数あります。