XL Fortran for AIX V8.1.1

ランゲージ・リファレンス


CASE 構造体

CASE 構造体は、実行対象となる多くのステートメント・ブロックの中から 1 つを選択するための簡潔な構文を持っています。各 CASE ステートメントのケース・セレクターは、SELECT CASE ステートメントのケース式と似ています。



>>-SELECT_CASE_statement---------------------------------------><
 
 
>>-+--------------------------+--------------------------------><
   | .----------------------. |
   | V                      | |
   '---CASE_statement_block-+-'
 
 
>>-END_SELECT_statement----------------------------------------><
 
 

SELECT_CASE_statement
計算対象のケース式を定義します。構文の詳細については、SELECT CASEを参照してください。

END_SELECT_statement
CASE 構造体を終了します。構文の詳細については、END (構造体)を参照してください。

CASE_statement_block



>>-CASE_statement----------------------------------------------><
 
 
>>-statement_block---------------------------------------------><
 
 

CASE_statement
値、値のセット、またはデフォルト・ケースのいずれかで、後続のステートメント・ブロックが実行されるケース・セレクターを定義します。構文の詳細については、CASEを参照してください。

構造体内では、各ケース値のタイプは、ケース式のタイプと同じでなければなりません。

CASE 構造体は、次のように実行されます。

  1. ケース式が計算されます。結果値は、ケース指標です。
  2. ケース指標は、各 CASE ステートメントの case_selector と比較されます。
  3. 一致すると、CASE ステートメントに関連したステートメント・ブロックが実行されます。一致しなければ、どのステートメント・ブロックも実行されません。 (CASEを参照してください。)
  4. 構造体の実行が完了すると、制御が END SELECT ステートメントの後に移されます。

CASE 構造体には、それぞれに値の範囲を 1 つ指定できるゼロ個以上の CASE ステートメントが入ります。ただし、CASE ステートメントで指定する値の範囲をオーバーラップさせることはできません。

複数の CASE ステートメントのうちの 1 つで、デフォルトの case_selector を指定することができます。デフォルトの CASE_statement_block は、CASE 構造体の始め、構造体の終わり、あるいは他のブロックの間など、構造体内ならどこにあってもかまいません。

構造体名を指定する場合、その構造体名は SELECT CASE ステートメントおよび END SELECT ステートメントに必ず指定する必要がありますが、CASE ステートメントへの指定はオプションです。

CASE 構造体内からは、END SELECT ステートメントに対してのみ分岐できます。CASE ステートメントは分岐ターゲットにはなれません。



マイグレーションのためのヒント:

IF ブロックの代わりに CASE
使用します。

FORTRAN 77 ソース

       IF (I .EQ.3) THEN
            CALL SUBA()
       ELSE IF (I.EQ. 5) THEN
            CALL SUBB()
       ELSE IF (I .EQ. 6) THEN
            CALL SUBC()
       ELSE
            CALL OTHERSUB()
       ENDIF
       END

Fortran 90 または Fortran 95 ソース

        SELECTCASE(I)
          CASE(3)
            CALL SUBA()
          CASE(5)
            CALL SUBB()
          CASE(6)
            CALL SUBC()
          CASE DEFAULT
            CALL OTHERSUB()
        END SELECT
        END

      ZERO: SELECT CASE(N)
 
        CASE DEFAULT ZERO
             OTHER: SELECT CASE(N) ! start of CASE construct OTHER
                CASE(:-1)
                   SIGNUM = -1     ! this statement executed when n<=-1
                CASE(1:) OTHER
                    SIGNUM = 1
             END SELECT OTHER      ! end of CASE construct OTHER
        CASE (0)
          SIGNUM = 0
 
      END SELECT ZERO
      END


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]