目的
ELSEWHERE ステートメントは WHERE 構造体内のオプションの ELSEWHERE ブロック、またはマスクされた ELSEWHERE ブロックの最初のステートメントです。
構文
>>-ELSEWHERE--+----------------------+--+---------------------------+->< | (1) | | (2) | '-(--mask_expr-------)-' '-where_construct_name------'
注:
|
+---------------------------------Fortran 95---------------------------------+
+------------------------------Fortran 95 の終り------------------------------+
+---------------------------------Fortran 95---------------------------------+
+------------------------------Fortran 95 の終り------------------------------+
規則
+---------------------------------Fortran 95---------------------------------+
マスクされた ELSEWHERE ステートメントには mask_expr が含まれます。マスク式の解釈については、マスクされた配列割り当ての解釈 を参照してください。 WHERE 構造体内のそれぞれの mask_expr は同じ形状でなければなりません。
where_construct_name を指定する場合、その名前は WHERE 構造体ステートメントに指定した名前と同じでなければなりません。
+------------------------------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 |
関連情報