プログラムでの配列の渡し方
ここではフォートランの問題としてお尋ねします。(フォートランのカテゴリがないのでプログラムの専門家に聞けそうなカテゴリに質問してます。)
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.サブ側が動的に対応できるようにするプログラムの書き方(同じサブルーチンだけど、呼び出すメイン側の配列サイズに自動で対応する方法) *などを使うのだろうと思いますが。
この部分はしっかり理解しないと大怪我するところなので確認したいと思っています。
(実験して試すというのではなく、仕様としてどうかということですが)
よろしくお願いします。