目的
ELSEWHERE ステートメントは WHERE 構文内のオプション の ELSEWHERE ブロック、 またはマスクされた ELSEWHERE ブロックの 最初のステートメントです。
構文
>>-ELSEWHERE--+----------------------+--+---------------------------+->< | (1) | | (2) | '-(--mask_expr-------)-' '-where_construct_name------'
注:
|
+---------------------------------Fortran 95---------------------------------+
+-----------------------------End of Fortran 95------------------------------+
+---------------------------------Fortran 95---------------------------------+
+-----------------------------End of Fortran 95------------------------------+
規則
+---------------------------------Fortran 95---------------------------------+
マスクされた ELSEWHERE ステートメント には mask_expr が含まれます。 マスク式の解釈については、マスクされた配列割り当ての解釈 を参照してください。 WHERE 構文内のそれぞれの mask_expr は 同じ形状でなければなりません。
where_construct_name を指定する場合、 その名前は WHERE 構文ステートメントに 指定した名前と同じでなければなりません。
+-----------------------------End of Fortran 95------------------------------+
ELSEWHERE およびマスクされた ELSEWHERE ステートメントは、 分岐ターゲット・ステートメントにすることはできません。
例
以下の例では、単純なマスクされた ELSEWHERE ステートメントを 使って配列内のデータを変更するプログラムを示しています。
INTEGER ARR1(3, 3), ARR2(3,3), FLAG(3, 3) ARR1 = RESHAPE((/(I, I=1, 9)/), (/3, 3 /)) ARR2 = RESHAPE((/(I, I=9, 1, -1 /), (/3, 3 /)) FLAG = -99 ! Data in arrays ARR1, ARR2, and FLAG at this point: ! ! ARR1 = | 1 4 7 | ARR2 = | 9 6 3 | FLAG = | -99 -99 -99 | ! | 2 5 8 | | 8 5 2 | | -99 -99 -99 | ! | 3 6 9 | | 7 4 1 | | -99 -99 -99 | WHERE (ARR1 > ARR2) FLAG = 1 ELSEWHERE (ARR1 == ARR2) FLAG = 0 ELSEWHERE FLAG = -1 END WHERE ! Data in arrays ARR1, ARR2, and FLAG at this point: ! ! ARR1 = | 1 4 7 | ARR2 = | 9 6 3 | FLAG = | -1 -1 1 | ! | 2 5 8 | | 8 5 2 | | -1 0 1 | ! | 3 6 9 | | 7 4 1 | | -1 1 1 |
関連情報