ルーチンを含む FORTRAN コードがあります。
SUBROUTINE READ_NC_VALS(NCID, RECID, VARNAME, VARDATA)
integer ncid, recid
character*(*) varname
real*8 vardata
dimension vardata(15,45,75)
etc.
このコードに柔軟性を追加したいので、最初にオプションのフラグ引数を追加することでそれを行うと考えました。
SUBROUTINE READ_NC_VALS(NCID, RECID, VARNAME, VARDATA, how_to_calculate)
! everything the same and then ...
logical, optional :: how_to_calculate
さて、この時点では、「how_to_calculate」も使用していません。テスト用にコードに入れているだけです。だから私は滞りなくコードをコンパイルします。それを実行すると、サブルーチンでエラーが発生します。具体的には、後でコード内の値の一部が、そのオプションの引数がない場合の値から「魔法のように」変更されます。新しい値はコードのロジックにとって意味をなさないため、丁寧にエラー メッセージを表示して終了します。この時点では、このオプションを使用していないことをもう一度強調します口論。そこで、思い立って、このルーチンを呼び出すソース内のすべての場所に戻り、新しい引数をオプションにしましたが、すべての呼び出しでその値を入力しました。これを行うと、コードは正常に実行されます。元気?サブルーチンに未使用のオプションの引数が存在するだけで、他のデータが破損する可能性はありますか? そして、このオプションの引数に入力パラメーターを追加すると、どうすれば問題を解決できるのでしょうか? ちなみに、これはPGIでコンパイルされています。
何か案は?ありがとう。
ところで、これ以上コードを提供できなくて申し訳ありません。私がそんなことをしたら、上司は私にあまり満足しないかもしれません。私はルールを作りません。私はただここで働いています。