FORTRANの動的割り当てについて
今、FORTRANでg95でプログラムを作っているのですが、動的割り当てで理解出来ない現象が起きたので質問させていただきます。
real(8),dimension(:,:,:),allocatable :: a
と三次元の動的配列aを定義し
allocate(a(0:10,0:10,0:10))
としています。
ここで、外部のファイルから各成分0~10の配列の所に値を読み込ませます。
私の理解では、これは0~10の添字までしか扱えないものと思っていたのですが、write文でa(11,11,11)という要素を書かせてみると、実際に値が出力されてしまいます。動的割り当てとはそういうものなのでしょうか。
また現在作っているプログラムではこれが値を持っているとまずいので、doループで11の値のところだけをif文で0にしようと試みたのですが、そのif文を反映してくれません。
(つまり
do i=0.11
do j=0,11
do k=0,11
if (i==11.or.j==11.or.k==11) then
.・・・
の時、・・・のところで0にしようしてもそれが反映されない)
始めはコードが間違っているのかと思いましたが、doループの10の値のところを同様に0にしてみたら成り立っていました。
(つまり
do i=0,10
do j=0,10
do k=0,10
if (i==10.or.j==10.or.k==10) then
・・・
の時、・・・のところで0にしようとするとそれが反映される)
これはやはり定義してないa(11,11,11)が出力されることと関係があるのでしょうか。
初歩的な質問かもしれませんが、よろしくお願い致します。
お礼
参考書をあさっていたら確かにPCIなら複合してもいいみたいですね。 新しい知識がついてよかったです。 この問題の場合はとりあえず複合が駄目みたいですが。 とにかく回答ありがとうございました。