くだすれFORTRAN(超初心者用)その3at TECH
くだすれFORTRAN(超初心者用)その3 - 暇つぶし2ch482:デフォルトの名無しさん
08/08/23 00:28:50
>>480-481
>>481でエラーが出るのはインターフェースが矛盾しているからだろう。
real(8), dimension(0:) :: x
こうすればコンパイラを通る。

ただ、0から始まる配列の引き渡しで様々な問題が起こるのは事実。
規格書をよく読んでいないから断言できないが、元々多分曖昧な点があるんだろうと思う。
処理系によって動作が違う。

また、部分配列を送る時に微妙な問題がある。
たとえば、
REAL :: x(0:100)
の全体を、サブルーチンに送る時に、
1.CALL sub(x)
2.CALL sub(x(:))
と送ると、ソース上の意味では同じことだが、大概の処理系では2.の時のように
部分配列の指定子がつくと、いったん暗黙にアロケートされたテンポラリ配列に
コピーして送るために、サブルーチン側で LBOUND(x) を書かせてみると
1.の場合は配列が0から始まると認識するのに、2.の場合は配列が1から始まると
みなしていたりする。

さらにややこしいことに、最近 Intel Fortran は、引数として x(:) を渡すときは、
テンポラリを作らずに x の番地をそのまま渡すようにしたらしい事で、時と場合と処理系に
依存して何が起こるか分からん気分だったりする。

まぁFortranの自然数は1から始まるのでしょうがない。
0から配列を始める奴が悪いwwwというのが、俺が昔同じような問題で悩んだときの結論だw







次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch