FileMakerのスクリプトを作成する際、グローバル変数をそれぞれのスクリプトの中で値をセットすると、思った以上にミスしたりバグが潜んだりします。
例えば、
- グローバル変数名を間違える(1文字間違えるとか!)
- どこでグローバル変数が変更されているか分からない!
- 同じ目的のグローバル変数が新たに現れる
のように、いたちごっこのようにバグ潰しに労力が掛かってしまいます。
これを防ぐために、私はグローバル変数に値を保存するスクリプトと取得するスクリプトをセットで作っています。
割と同じようにグローバル変数の取り扱いをしているFileMaker屋さん、多いかも、と思います。
以下を読んで「あ、私と同じだ!」と思ったら「♡」のいいねボタンをポチッとよろしくお願いします!
「知らんかった!」「真似してみよう!」と思う方も、ぜひいいねボタンをポチッとよろしくお願いします!
では、ここからが本題です。
setter/getterのスクリプト名
例えば、マスタデータから選択した番号などを別のレイアウトや処理で使うためにグローバル変数を用意したとします。
そして、setG<グローバル変数名>とgetG<グローバル変数名>というスクリプトを作成します。
setの末尾にあるカッコは、スクリプト引数です。
getの最初にあるカッコは、スクリプトの結果です。
setter/getterの中身
setter
setterの中身は、基本的な処理はさらっと1行です。
この例で言うと、1行目の処理がメインです。
ただし、setterでは、不適切なセットが行われないよう、1行だけではなく、if文などのチェックを実装することもあります。
というか、しておいた方がいいです。
チェックを入れた例です。
もちろん、setterを呼ぶスクリプトの中で、setterの前にチェックを入れてもいいのですが、同じグローバル変数にセットする値の範囲が同じ場合は、何度も同じif文を複数のスクリプトに書くのは面倒だし、そうした処理の分散(重複)にもつながるので、setterでまとめてやった方が効率がいいケースになります。
スクリプトから返す結果のエラーコードは、現場によってさまざまだと思いますので、ここでは仮に、
0:正常終了
9:異常終了
としておきます。
エラーコードを間違えないように、エラーコードをカスタム関数化しておくのもおすすめです。
getter
getterの中身も、さらっと1行です。
こちらは、何かしらのチェックを施す必要は特にないかな、と思っています。
setterでセットされた値をそのまま返す、、、ということになります。
使ってみる
では、このsetterとgetterを使うと、どんな感じの実装になるでしょうか?
setterを使ったスクリプト
getterを使ったスクリプト
setterでは、返ってきたスクリプトの結果で、エラーがないかどうかを必ずチェックします。
適宜エラー処理をしますが、運用に沿って実装してみてください。
ご利用は計画的に。。。