フォートランの配列の受け渡し問題
いまどき、フォートランの配列について質問します。
配列の実引数(メイン側の配列変数)とサブルーチン側の変数(仮引数の配列変数)の受け渡しですが、配列のサイズを変動させることが可能でしょうか。
program main
dimension x(100) ! xの最大配列サイズ100
....
call abc(x,np) ! 実際にはxはnp(<100)個の配列とする。
....
subroutine abc(xx,nx) ! x->xx(仮引数,配列サイズはnx=np)
dimension xx(1) ! 配列の先頭を示しておく。
....
こうしておくと、サブルーチンabcで利用する配列は呼び出し側でnp(=nx,=<100)を変更することによってサイズをダイナミックに変動できると思っています。実験すると大丈夫なようです。
では、2次元、3次元の配列では配列のサイズを変数でコントロールするにはどうしたらいいでしょうか。実引数と仮引数で名前以外の変数情報を一致させるというのが教科書的な対応だと思いますが、ダイナミックに変数を変化させるにはどうしたらいいでしょうか。
追加ですが、プログラムに対して外部データを入力させる場合のnamelist入力について解説しているサイトとか本があるでしょうか。これは古臭い(フォートランでさえ古いですが、さらに古い)やり方かと思いますが、解説本には載っていないようです。
以上、よろしくお願いします。
ところで、フォートランの復権なんてことはやはりないのでしょうか。ポインタなども導入されてC言語みたいになってきているとは思いますが。
補足
一応カテゴリーがC/C++になっているのでわかると思ったのですが、C言語でお願いします。