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

ここではフォートランの問題としてお尋ねします。(フォートランのカテゴリがないのでプログラムの専門家に聞けそうなカテゴリに質問してます。)

dimension a(100,100)
...
call abc(a)
...
stop
end

subroutine abc(b)
dimenison b(100,1)
...
return
end

というようなプログラムがあります。メインの方でa(100,100)と宣言してサブルーチンではb(100,1)で受けるというような処理です。
このようにメインとサブで配列のサイズが異るのはどのようなレベルで許容されるものでしょうか。考え方がわからないのでお尋ねします。私は厳密にサイズを合わせると思っていました。しかしそうだとサブルーチンの使い回しができなくなります。このような問題はC言語の配列の先頭のアドレス云々という問題と似ているのですが。2次元配列ということがわかっていて片方のサイズがわかると自ずからもう片方のサイズがわかるということなのでしょうか。

まとめますと、以下のような点がわからないということです。

1.メインとサブで配列サイズが異なっても問題ないやり方

2.サブ側が動的に対応できるようにするプログラムの書き方(同じサブルーチンだけど、呼び出すメイン側の配列サイズに自動で対応する方法) *などを使うのだろうと思いますが。

この部分はしっかり理解しないと大怪我するところなので確認したいと思っています。
(実験して試すというのではなく、仕様としてどうかということですが)
よろしくお願いします。

A 回答 (1件)

INDEX順序と言うらしいです。

メモリ上の割りつけは左側のINDEXが最初に変化するような割り付けになります。すなわちメモリ上の割り付けは
a(1,1)、a(2.1)・・・a(100,1)、a(1,2)、a(2,2)・・・a(100,2)というように続きます。
a(100,100)をsub側て a(100,1)で受けても差し支え訳です。アセンブラに落とされたリストを見れば直ぐ分ります。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
一般的な解説本には載っていないように思います。このあたりのことは慎重に考えないと失敗すると思います。特にCではそのようなことを説明する本をよく見ると思います。

お礼日時:2014/06/29 22:40

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