初心者にもわかるファイルメーカーの
使い方

FileMaker 認定資格試験対策 備忘録 Part.5

2021-01-15 |  

こんにちは、FM課 日壁です。
前回に引き続き、試験対策学習ガイドより今回は計算式の操作を取り上げたいと思います。

今までのテーマより重要度が高いらしく、試験問題割合は15%~20%です。
値の操作として必須であるので、重要度が高いのも頷けます。

では問題を見ていきましょう。

[問]

ある開発者が「CF_AddDots」という再帰カスタム関数を作成しました。
内容は次のとおりです。

Case (ドット数 > 0 ;
CF_AddDots (テキスト & "." ;
ドット数 - 1) ;
テキスト)
CF_AddDots ("FileMaker" ; 3) の場合、この関数は何を返しますか。

[答]

CF_AddDots ("FileMaker" ; 3) は「FileMaker...」を返します。

[解説]

この問題は、再起計算の問題でした。
CF_AddDotsの引数はCF_AddDots({テキスト} : {ドット数})のようです。

条件はドット数が0より大きい場合にはテキスト + “.”が評価され、ドット数が1より小さくなった場合にテキストとして評価しています。
今回ですと、ドット数は3なので、3回再起されてテキスト評価されています。

少し詳しく解説すると、

CF_AddDotsに”FileMaker”が引き渡されます。
ドット数が0以上なので再度CF_AddDotsに評価されています。
再度評価されるための引数はCF_AddDots(“FileMaker.” : 2)、これもドット数が0以上なのでCF_AddDotsに再評価されます。
CF_AddDots(“FileMaker..” : 1)が評価されますが、まだドット数が0以上ですので、CF_AddDots(“FileMaker…” : 0)を評価しに行きます。
ここでドット数が0以上ではなくなりました。
0以上でない場合の返答は”テキスト”なので、最後に引き渡したテキストが最終評価になります。
今回の最終評価は”FileMaker…”でした。

[問]

次の JSON データがあるとします。

$$json = "{\"人\":[{\"年齢\":42, \"名\":\"ジョン\",\"姓\":\"スミス\"}, {\"年齢\":39,
\"名\":\"ジェーン\",\"姓\":\"ジョーンズ\"}]}"

次の各関数はどのような結果を返すでしょうか。

a. JSONFormatElements ($$json)
b. JSONListValues ($$json ; "人")
c. JSONGetElement ($$json ; "人[1].姓")

[答]

各計算式で返される値は次のとおりです。

a. 人間が判読できる JSON:
{
"人" :
[
{
"年齢" : 42,
"名" : "ジョン",
"姓" : "スミス"
},
{
"年齢" : 39,
"名" : "ジェーン",
"姓" : "ジョーンズ"
}
]
}

b. 「人」配列の各要素の、改行で区切られた一覧:
{"年齢":42,"名":"ジョン","姓":"スミス"}
{"年齢":39,"名":"ジェーン","姓":"ジョーンズ"}

c. 配列の 2 つめの項目の最後の要素 (JSON 配列は 0 番目から始まるため):
ジョーンズ

[解説]

JSONFormatElementsは一行にまとまっているjsonを見やすいフォーマットにインデント付してくれる機能です。
今回開示されたjsonの中にある[人]階層の情報を抽出していますね。
Jsonは情報にタグをつけて保存できる便利なデータ保持形態です。
階層や配列を指定することで、一つのテキストから好きなものを取り出せるので、非常に有用ですね。
この問題の肝は配列は0スタートであるということです。
よくループを1始まりで組んでいる方は注意が必要ですね。

今回は計算式の操作に関しての備忘録でした。
その他の問題と答えはFileMaker18資格試験学習ガイドに記載されていますので、是非チェックしてみてください。

次回はスクリプトの記述に関しての学習の予定です。

to be continued…