KAG の変数は、文字列用の変数、数値用の変数というように変数が分かれることも、名前が変わることもありません。
文字列を入れればその変数は文字列が、数値をいれればその変数は数値の入った変数になります。
厄介なのはこれらをまぜて使うときです。+ 演算子にはいろいろな意味とその使い方があります(^^;
文字列同士のつなぎ合わせには + 演算子、数値の加算にも + 演算子を使いますが、文字列と数値を足そうとしたときは、どちらか一方が文字列ならば、片方の数値は文字列に変換されてつなぎ合わさるというルールがあります。
たとえば、f.flag2 に 'hoge' という文字列、f.flag3 に 10 という数値が入っていた場合、
[eval exp="f.flag1 = f.flag2 + f.flag2"]
では、f.flag1 には 'hoge10' という文字列が入ります。
また、どうしても文字列を数値に変換したい場合があると思います。たとえば [input] タグで入力したものを数値として扱いたいときなどですが、この場合にも + 演算子を使います。+ 演算子は、数値にしたい変数の前につけて使います。たとえば、f.flag1 に '20' という文字列が入っていたとして、
[eval exp="f.flag1 = +f.flag1"]
と書けば、f.flag1 の内容は数値に変換され、再び f.flag1 に入ります。f.flag1 は数値の 20 になります。
Note
+ 演算子が続く場合は注意しなければなりません。f.flag3 を数値にして f.flag2 に加算するなどという式を書く場合、
f.flag2++f.flag3
という書き方ではエラーになります ( ++ という別の演算子があるため )。スペースを空けて
f.flag2+ +f.flag3
と書いてください。
Note
単項の + 演算子 ( 上記例の
f.flag1 = +f.flag1
のような場合の + ) は、文字列がもし小数表記を含む場合 ( 0.3 とか ) は、結果が実数になります。整数のみを得たい場合は ( 小数点以下を切り捨ててしまいたい場合は )、int + と書けば OK です。たとえば上記例でいけば、
f.flag1 = int +f.flag1
となります。