in 演算子

演算子 in は、以下の形式で基本的な論理式に使用される 2 項演算子です。


演算子 in の構文図
searchValue
リテラルまたは項目。ただし、システム変数ではありません。
array
1 次元または多次元配列。多次元配列が指定された場合でも、演算子 in の演算は、その中の 1 次元配列で実行されます。
subscript
整数、または整数に解決される項目 (またはシステム変数)。 添え字の値は、配列内の特定のエレメントを参照する指標です。

配列の添え字として使用される項目そのものには、配列エレメントを使用できません。 以下のそれぞれの例では、 myItemB[1] が添え字と配列エレメントの両方になっています。そのため、以下の構文は無効 です。

  /* 次の構文は無効です */
  myItemA[myItemB[1]]

  // 次の構文は無効ですが
   // myItemB が myItemB[1] であるため
   // 1 次元配列の最初のエレメントは以下のようになります
myItemA[myItemB]
dataTableItem
dataTable 項目の名前。この項目は、データ・テーブルの中の列を表します。 in 演算子は、列が 1 次元の配列であるかのようにその列と対話します。
論理式は、生成されたプログラムが検索値を検出した場合に真に解決されます。検索は、最後の配列添え字によって識別されるエレメントから開始されます。配列 が 1 次元配列である場合、最後の添え字はオプションで、デフォルトでは 1 に設定されます。配列 が多次元配列である場合は、以下のことが当てはまります。

1 次元配列と多次元配列のどちらの場合でも、検索は、調査されている 1 次元配列の最後のエレメントで終了します。

in を含む論理式は、以下の場合に偽に解決されます。

基本的な論理式が真に解決されると、演算子 in は、システム変数 sysVar.arrayIndex を、検索値が含まれているエレメントの添え字値に設定します。式が偽に解決されると、演算子は sysVar.arrayIndex をゼロに設定します。

1 次元配列の場合の例

構造体項目 myString が、3 文字の配列という副構造を持つと想定します。
  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 検索は最後のエレメントで終了する

多次元配列の場合の例

配列 myArray01D が、3 文字の配列という副構造を持つと想定します。
  structureItem name="myArray01D" occurs=3 length=3
    structureItem name="myArray02D" occurs=3 length=1

この例では、myArray01D は 1 次元配列で、各エレメントには、3 文字の配列という副構造を持つストリングが含まれています。また myArray02D は 2 次元配列で、各エレメント (myArray02D[1,1] など) には 1 文字が含まれています。

myArray01D の内容が "ABC"、"DEF"、および "GHI" の場合、myArray02D の内容は以下のようになります。
  "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 番目の添え字が、検索を実行できる列数より大きく設定されている
ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.
(C) Copyright IBM Japan 2005.