2017-10-07 73 views
1

*はサブルーチンの引数として何を意味していますか?それはラベルを意味し、それはメインプログラムに戻りますか?それはreturn,return 1,ERRまたはERRORに関連していますか?なぜ私たちはこれらを持っているのかわかりませんが、アスタリスクはそれらに関連していると思います。Fortranサブルーチンの引数リストでアスタリスク*記号が意味するものは何ですか?

!>Start the creation of boundary conditions for the equation set. 
SUBROUTINE BOUNDARY_CONDITIONS_CREATE_START(SOLVER_EQUATIONS,BOUNDARY_CONDITIONS,ERR,ERROR,*) 

!Argument variables 
INTEGER(INTG), INTENT(OUT) :: ERR !<The error code 
TYPE(VARYING_STRING), INTENT(OUT) :: ERROR !<The error string 
!Local Variables 
TYPE(VARYING_STRING) :: LOCAL_ERROR 

ENTERS("BOUNDARY_CONDITIONS_CREATE_START",ERR,ERROR,*999) 

    IF(ASSOCIATED(BOUNDARY_CONDITIONS)) THEN 
     CALL FlagError("Boundary conditions is already associated.",ERR,ERROR,*999) 
    ELSE 
     IF(ASSOCIATED(SOLVER_EQUATIONS%SOLVER_MAPPING)) THEN 
     !Initialise the boundary conditions 
     CALL BOUNDARY_CONDITIONS_INITIALISE(SOLVER_EQUATIONS,ERR,ERROR,*999) 
     ELSE 
     LOCAL_ERROR="Solver equations solver mapping is not associated." 
     CALL FlagError(LOCAL_ERROR,ERR,ERROR,*999) 
     ENDIF 
    ENDIF 
    ENDIF 

EXITS("BOUNDARY_CONDITIONS_CREATE_START") 
RETURN 
999 ERRORSEXITS("BOUNDARY_CONDITIONS_CREATE_START",ERR,ERROR) 
RETURN 1 
END SUBROUTINE BOUNDARY_CONDITIONS_CREATE_START 
+0

これは関連していますか...? https://docs.oracle.com/cd/E19957-01/805-4939/6j4m0vnb3/index.html – roygvib

+1

注意を喚起するには、すべてのFortranの質問に[tag:fortran]を使用してください。 tags [fortran]と[tag:fortran95]のフォロワーの数を比較する。あなたの質問はバージョン特有のものではありません。 –

+0

私はそれを閉じることができます、私はそこに私の答えを移動することができます。しかし、私はタグを編集しなければならないので、もはやこれを解凍することはできません。多くの人々が質問に来ますが、タグを修正しません。 –

答えて

4

これは、関数から代替リターンのラベルです。その代わりに、サブルーチンが呼び出された場所に戻り

return 

return 1 

を使用する場合の機能は、最終的に戻ることができる標識です。

このコードは、新しいコードではお勧めできませんが、このコードを使用して例外の種類を特定する方法はありません。

非常に関連する質問、ほとんど重複した(代わりにreturn文を求めて):Fortran return statement

+1

実際はFORTRAN 66の機能です。 Fortran 90以降、「陳腐化」と分類されていますが、Fortran 2015の時点では標準にとどまっています。(特に、ベンダーがまだサポートする必要があると不満を表明し、削除があると、委員会は機能を実際に削除することを嫌っています。 –

+1

これがコードの場合は、変更することができます。代わりの返品をすぐにリファクタリングしてください。それは古いコードでさえも非常にまれにしか見えないF66の「火を放つ」機能の1つです。決して新しいコードにするべきではありません。呼び出し側ルーチンによって処理される状態コードを返す方が良い。それは書く余分なコードのわずかな量ですが、はるかに明確です。 – arclight

関連する問題