アプリ版:「スタンプのみでお礼する」機能のリリースについて

FORTRAN77 のプログラムをpython化しています。
pythonは分かるので、FORTRANの方で質問させてください。

元のプログラムで

SUBROUTINE CCC(L,R,MA,RE,REEXP)
REAL MA
FA = (REC/RE)**REEXP

の徐算数で(pythonで)エラーがでます。REが配列になっていて除算できないためです。


上記CCCの呼び出し元は

SUBROUTINE TTT(N,C,RE)
REAL C(N)
REAL RE(N)
CALL CCC(L(I),R,MA,RE,REEXP(I))

その呼び出し元は main(FORTRANでどう呼ぶのか分かりませんが)となり以下です。

REAL C(10)
REAL RE(10)
N=2
C(1)=0.1
C(2)=0.4
DO I = 1,N
RE(I)=5
ENDDO
CALL TTT(N,C,RE)

結局REは、
mainからTTTを呼ぶときに配列
TTTからCCCを呼ぶときも配列
と思われるのですが、FORTRANでコンパイルするときちんと動きます。
そして、元のFORTRANはかなり信用できるプログラムです。
元のFORTRANは、この配列のあ使いや割り算をどのように行っているのでしょうか?

A 回答 (2件)

この例のように、仮引数が配列でない単純変数で、実引数が配列の場合に、仮引数は渡された配列の先頭要素を参照します。

    • good
    • 0
この回答へのお礼

しっくりくる解答をありがとうございます。
CCCではREが定義されていないので、実数、TTTではあえて配列と定義されているので、配列ということで理解しました。

お礼日時:2023/02/02 10:04

サブルーチン CCC がどうなっているのかわからんのだけど, 要素ごとに演算してるくらいしか思い付かない. FORTRAN77 でそのように使えたかどうかは不明.



どういう値が得られているのか, FORTRAN77 で表示させてみればわかるんじゃないかな?
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2023/02/02 10:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!