質問: **状況** fortranで書かれている物理関係のシミュレーションプログラムのデバッグを行っていますが、type定義の中に長さ0の配列が存在します。私が書いたコードでもなく、普段は別の言語を使っているので、その意味がわかりませんでした。 下記の例の`zero_body(1:0)`のようなものです。変数名な適当につけました。Fortran77時代のコードなので、拡張子も*.fですが、コンパイル時も特に引っかからなく、バグが起こる箇所でもなかったので、当時はこういう書き方があったかな?ぐらいでスルーしてましたが、やはり気になって経験者の方々にお聞きしたいです。 **コード例** ``` type (something) character*20 name integer*4 zero_body(1:0) integer*4 nonzero_body(0:255) end type ```
回答: [fortran](/questions/tagged/fortran "'fortran' のタグが付いた質問を表示") f77 は学生時代にちょっとやっただけですが [c++](/questions/tagged/c%2b%2b "'c++' のタグが付いた質問を表示") でたとえるなら `std::vector v;` は 0 要素の配列を作りますし、オイラはこのソースコード断片を一切疑問に思いません。「ああ、あとで `v.resize(n);` とかするんだろう=動的に要素数を変更するんだろう」と勝手に予測します。提示の例も後から `reshape` するんだろうと思うだけです。ファイルを読んでみないと要素数が決定できないとか普通の話。 もちろんはずれかもしれませんが。