演算子 in は、以下の形式で基本的な論理式に使用される 2 項演算子です。
配列の添え字として使用される項目そのものには、配列エレメントを使用できません。 以下のそれぞれの例では、 myItemB[1] が添え字と配列エレメントの両方になっています。そのため、以下の構文は無効 です。
/* 次の構文は無効です */ myItemA[myItemB[1]] // 次の構文は無効ですが // myItemB が myItemB[1] であるため // 1 次元配列の最初のエレメントは以下のようになります myItemA[myItemB]
1 次元配列と多次元配列のどちらの場合でも、検索は、調査されている 1 次元配列の最後のエレメントで終了します。
基本的な論理式が真に解決されると、演算子 in は、システム変数 sysVar.arrayIndex を、検索値が含まれているエレメントの添え字値に設定します。式が偽に解決されると、演算子は sysVar.arrayIndex をゼロに設定します。
structureItem name="myString" length=3 structureItem name="myArray" occurs=3 length=1
次の表は、myString が "ABC" である場合の演算子 in の結果を示すものです。
論理式 | 式の値 | sysVar. ArrayIndex の値 | コメント |
---|---|---|---|
"A" in myArray | 真 | 1 | 1 次元配列の添え字は、デフォルトで 1 になる |
"C" in myArray[2] | 真 | 3 | 検索は 2 番目のエレメントから開始される |
"A" in myArray[2] | 偽 | 0 | 検索は最後のエレメントで終了する |
structureItem name="myArray01D" occurs=3 length=3 structureItem name="myArray02D" occurs=3 length=1
この例では、myArray01D は 1 次元配列で、各エレメントには、3 文字の配列という副構造を持つストリングが含まれています。また myArray02D は 2 次元配列で、各エレメント (myArray02D[1,1] など) には 1 文字が含まれています。
"A" "B" "C" "D" "E" "F" "G" "H" "I"
次の表は、演算子 in の結果を示すものです。
論理式 | 式の値 | sysVar. ArrayIndex の値 | コメント |
---|---|---|---|
"DEF" in myArray01D | true | 2 | 1 次元配列への参照には添え字は必要ない。デフォルトで、検索は最初のエレメントから開始されます |
"C" in myArray02D[1] | ― | ― | 多次元配列への参照には、各次元の添え字が含まれていなければならないため、この式は無効 |
"I" in myArray02D[3,2] | true | 3 | 検索は 3 行目の 2 番目のエレメントから開始される |
"G" in myArray02D[3,2] | false | 0 | 検索は、調査されている行の最後のエレメントで終了する |
"G" in myArray02D[2,4] | false | 0 | 2 番目の添え字が、検索を実行できる列数より大きく設定されている |
関連するタスク
EGL ステートメントおよびコマンドの構文図
関連する参照項目
配列
論理式
演算子と優先順位
arrayIndex