オブジェクト記法:引数としての受け渡し

Product :4D - 4D Server
4D : v16R6

<code 4D>
C_OBJECT($option_o)
$option_o:=New object
WEB SET OPTION(Web character set;$option_o.web_character_set)
WEB GET OPTION(Web character set;$option_o.web_character_set)

</code 4D>

引数としてオブジェクトのプロパティの内容をオブジェクト記法で渡す事はできる様なのですが、受け取る事ができませんでした。 :-o
コンパイル時にエラーにならないですが、実行するとランタイムエラーになります。

プロパティが存在しないからなのかとこの様に記述してみましたが、
$option_o:=New object(“web_character_set”;0)

同様でした。

ACI0097928で報告させていただきました。

シンタックスチェックが参照するファイル, gram.4dsyntaxによれば,
GETとSETは引数が違うので,

C_LONGINT($web_character_set)
WEB GET OPTION(Web character set;$web_character_set)

C_OBJECT($option_o)
$option_o:=New object(“web_character_set”;$web_character_set)

//WEB SET OPTION : 50 : L ; L | a
WEB SET OPTION(Web character set;$option_o.web_character_set)

//WEB GET OPTION : 50 : L ; y
WEB GET OPTION(Web character set;$option_o.web_character_set)
//error: expecting field or variable or parameter

受け取れないのは仕様かもしれませんが,
そうだとすれば,シンタックスチェックに検出して欲しいですね。

開発部から回答がありました。

原則的に,出力パラメーター(値が返される)にオブジェクトのプロパティを渡すことはできない,とのことです。

なぜならば,それは,_出力パラメーターに「OB Get」式を渡しているようなもの_だから,とのことでした。

値を受け取るには,変数・フィールド・引数を使用する必要があります。

シンタックスチェックでこれを検出することは難しそうだが,研究してみる価値がありそうだ,とも書かれていました。

いずれにしても,ドキュメントに何らかの説明を加える方向で物事が進められています。

: Keisuke MIYAKO

開発部から回答がありました。

原則的に,出力パラメーター(値が返される)にオブジェクトのプロパティを渡すことはできない,とのことです。

なぜならば,それは,_出力パラメーターに「OB Get」式を渡しているようなもの_だから,とのことでした。

値を受け取るには,変数・フィールド・引数を使用する必要があります。

シンタックスチェックでこれを検出することは難しそうだが,研究してみる価値がありそうだ,とも書かれていました。

いずれにしても,ドキュメントに何らかの説明を加える方向で物事が進められています。

フィーチャリクエストで、受け取るパラメータとして渡せる方向でお願いします。 :pray:

本件(ACI0097928)ですが,_オブジェクトのプロパティは変数ではない_ので,
パラメーターとして渡すことはできないが,
シンタックスチェックでエラーが返されるように修正されました。

フィーチャーリクエストについては,ほんとうに申し訳ありませんが,これは絶対に無理な内容です。
(強い型付け(変数)と弱い型付け(プロパティ)の本質的な違いに由来する制限であるため)