このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
FORTRAN使いが優しくコメントを返しますが、
お礼はFORTRANの布教と初心者の救済と次期Fortran2008規格でのCOMEFROM文採用をお願いします。
●注意事項
・質問する前にGoogle等の検索サイトで検索しましょう。
・回答者にわかりやすい様に、質問内容はできる限り詳しく書きましょう。
・エラーの場合は起きた状況、環境(OS・コンパイラ・バージョン)、エラーメッセージも詳しく書きましょう。
●前スレ
くだすれFORTRAN(超初心者用)その5
http://toro.2ch.net/test/read.cgi/tech/1269704830/
●過去スレ
くだすれFORTRAN(超初心者用)その4
http://pc12.2ch.net/test/read.cgi/tech/1232789521/
くだすれFORTRAN(超初心者用)その3
http://pc11.2ch.net/test/read.cgi/tech/1196384126/
くだすれFORTRAN(超初心者用)その2
http://pc11.2ch.net/test/read.cgi/tech/1164121236/
くだすれFORTRAN(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1138063703/
探検
くだすれFORTRAN(超初心者用)その6
■ このスレッドは過去ログ倉庫に格納されています
2012/08/16(木) 20:58:00.31
2012/11/18(日) 12:45:02.25
バッチファイルをそのまま生成させるって頭いいな
86デフォルトの名無しさん
2012/11/23(金) 13:59:34.03 質問です。
配列を引数にする関数を定義したいのですが、
やり方がよくわかりません。
function FD(w)
implicit none
integer :: i
integer,parameter :: n = 10
real(8) :: w(0:n),FD(0:n)
do i = 0, n
FD(i) = exp( - w(i))
enddo
end function FD
が関数で、これをメインプログラムで使いたいのですが、
x = FD(w)
のような省略形だとちゃんと計算できるんですけど、
do i = 0, m
x(i) = FD(w(i))
enddo
みたいに配列を明示しようとすると
配列の形状が準拠していません。
とエラーが出ます。
()を省略しないで書く方法はないですか?
配列を引数にする関数を定義したいのですが、
やり方がよくわかりません。
function FD(w)
implicit none
integer :: i
integer,parameter :: n = 10
real(8) :: w(0:n),FD(0:n)
do i = 0, n
FD(i) = exp( - w(i))
enddo
end function FD
が関数で、これをメインプログラムで使いたいのですが、
x = FD(w)
のような省略形だとちゃんと計算できるんですけど、
do i = 0, m
x(i) = FD(w(i))
enddo
みたいに配列を明示しようとすると
配列の形状が準拠していません。
とエラーが出ます。
()を省略しないで書く方法はないですか?
2012/11/23(金) 16:37:12.25
>>86
w(i)は配列ではなく配列の要素(1個の変数)ですので
当然エラーとなります。
do i = 0, m
x(i) = FD(w(i))
enddo
の3行を、
x(:) = FD(w(:))
にすれば()付きの書き方にはなります。
w(i)は配列ではなく配列の要素(1個の変数)ですので
当然エラーとなります。
do i = 0, m
x(i) = FD(w(i))
enddo
の3行を、
x(:) = FD(w(:))
にすれば()付きの書き方にはなります。
2012/11/23(金) 18:30:14.20
>>87
回答ありがとうございます。
まだ、違いがよくわからないのですが
例えば、
do i = 0, m
x(i) = FD(w(i)) + y(i+1)
enddo
とか
do i = 0, m/2
x(i) = FD(w(i))
enddo
do i = m/2, m
y(i) = FD(w(i))
enddo
のようなことは関数の場合、出来ないのですか?
(:)だと出来ることが制限されてしまうような気がするんです。
回答ありがとうございます。
まだ、違いがよくわからないのですが
例えば、
do i = 0, m
x(i) = FD(w(i)) + y(i+1)
enddo
とか
do i = 0, m/2
x(i) = FD(w(i))
enddo
do i = m/2, m
y(i) = FD(w(i))
enddo
のようなことは関数の場合、出来ないのですか?
(:)だと出来ることが制限されてしまうような気がするんです。
2012/11/23(金) 19:46:12.45
>88
x(0:m) = FD(w(0:m)) + y(1:m+1)
とか
x(0:m/2) = FD(w(0:m/2))
y(m/2:m) = FD(w(m/2:m))
となるかな
x(0:m) = FD(w(0:m)) + y(1:m+1)
とか
x(0:m/2) = FD(w(0:m/2))
y(m/2:m) = FD(w(m/2:m))
となるかな
2012/11/24(土) 14:54:58.79
それか関数の方を 配列じゃなくて 数値を引数とするように変更するかだな
2012/11/26(月) 19:24:40.40
fortran95 以降になるが、ELEMENTAL属性を使えばできる。
これはスカラーに対して定義しておくと、配列も受け付けるというもの。
ただし副作用のない PURE な副プログラムな必要がある。
elemental pure real(8) function FD(w)
implicit none
integer :: i
real(8), intent(in) :: w
FD = exp( - w )
end function FD
これでメインルーチン側で
x = FD( w )
と呼んでも
do i = 1, 10
x(i) = FD( w(i) )
end do
と呼んでもよろしい。
PURE が何かはマニュアルを見るか、鋼鉄天使くるみPUREを見る事。
シスタープリンセスREPUREでもいい。
これはスカラーに対して定義しておくと、配列も受け付けるというもの。
ただし副作用のない PURE な副プログラムな必要がある。
elemental pure real(8) function FD(w)
implicit none
integer :: i
real(8), intent(in) :: w
FD = exp( - w )
end function FD
これでメインルーチン側で
x = FD( w )
と呼んでも
do i = 1, 10
x(i) = FD( w(i) )
end do
と呼んでもよろしい。
PURE が何かはマニュアルを見るか、鋼鉄天使くるみPUREを見る事。
シスタープリンセスREPUREでもいい。
2012/12/01(土) 20:48:26.42
ELEMENTAL属性ってのは初めて聞いた 勉強になります
兄ぃありがとう
兄ぃありがとう
2012/12/02(日) 15:08:21.56
(ELEMENTALはPUREでもあるから強調しなくてもいいんだけどな…
94デフォルトの名無しさん
2012/12/02(日) 16:57:51.30 x(:)=fd(w(:))
x=fd(w)
って同じ?
: つけとかないと配列であることを
忘れちゃうので
つける習慣にしているけど。
x=fd(w)
って同じ?
: つけとかないと配列であることを
忘れちゃうので
つける習慣にしているけど。
2012/12/02(日) 17:13:25.97
同じだけど、括弧をつけて配列であることを明示したほうがいいね
2012/12/03(月) 19:08:16.44
>>93
どっこい、それがF2008でELEMENTALだがI/Oを許すという風になったので、
ELEMENTALだからと言ってPUREとは言えなくなったのだよ。
妹たちの未来を考えて、ここはPURE。
>>95
これもF2003からは同じではなくなったのだよ。
RAEL,ALLOCATABLE :: a(:)
REAL :: x(100)
a = x
F2003では代入時に割り付け配列は、(再)割り付けされる。
a = x(1:10)
とすると、a はサイズ100から10に再割り付けされる。
a(:) = x(1:10)
の時は、元のサイズ100のまま代入される。
抽象度の高い記法の方が良いのだから、括弧をつけない方が正しいと思う。
F77からの移行期には、括弧を書いて置く方がわかり易かったのは理解できるが
数学だって行列を記号1個で書いて間違わないのだからだいじょぶDEATH
どっこい、それがF2008でELEMENTALだがI/Oを許すという風になったので、
ELEMENTALだからと言ってPUREとは言えなくなったのだよ。
妹たちの未来を考えて、ここはPURE。
>>95
これもF2003からは同じではなくなったのだよ。
RAEL,ALLOCATABLE :: a(:)
REAL :: x(100)
a = x
F2003では代入時に割り付け配列は、(再)割り付けされる。
a = x(1:10)
とすると、a はサイズ100から10に再割り付けされる。
a(:) = x(1:10)
の時は、元のサイズ100のまま代入される。
抽象度の高い記法の方が良いのだから、括弧をつけない方が正しいと思う。
F77からの移行期には、括弧を書いて置く方がわかり易かったのは理解できるが
数学だって行列を記号1個で書いて間違わないのだからだいじょぶDEATH
2012/12/03(月) 23:06:44.99
(キリッ
2012/12/04(火) 13:45:46.84
>>96
2003使ったことないけど、うーんと、
要は allocatable な変数は
allocate() 使わなくても、
: 無しで左辺において、
固定サイズ(か既に大きさの確定した配列)が右辺に来る代入式で
随時 deallocate して再び allocate した事にする、
ということなのかな?
・・・・すくなくともワシには危険な香りがするw
2003使ったことないけど、うーんと、
要は allocatable な変数は
allocate() 使わなくても、
: 無しで左辺において、
固定サイズ(か既に大きさの確定した配列)が右辺に来る代入式で
随時 deallocate して再び allocate した事にする、
ということなのかな?
・・・・すくなくともワシには危険な香りがするw
2012/12/04(火) 13:48:18.15
ふとおもったけど、文字列で
mojiretsu='abcdefg'
write(*,*) mojiretu(2:4)
で bcd が表示できる例のように
文字列の番地管理の表記法って77からある(とおもうw)けど
これってかなり時代先取りだよね。偶然なのか
規格策定の時にすでにベクトル表現の思考が始まっていたのか
しらないけど。
mojiretsu='abcdefg'
write(*,*) mojiretu(2:4)
で bcd が表示できる例のように
文字列の番地管理の表記法って77からある(とおもうw)けど
これってかなり時代先取りだよね。偶然なのか
規格策定の時にすでにベクトル表現の思考が始まっていたのか
しらないけど。
100デフォルトの名無しさん
2012/12/04(火) 17:50:34.81101デフォルトの名無しさん
2012/12/05(水) 13:45:40.15 へえ、しらんかった。
でも、どういう場面でつかうんだろう?
i=2
write(*,*) 'shit'(i:4)
とか、・・・英語複数形 s をだしたり隠したり、かな?
でも正直なところ、なくても困らんな。
でも、どういう場面でつかうんだろう?
i=2
write(*,*) 'shit'(i:4)
とか、・・・英語複数形 s をだしたり隠したり、かな?
でも正直なところ、なくても困らんな。
10288
2012/12/05(水) 18:22:09.77 88です。みなさんありがとうございます。
お礼が遅くなってすみませんでした。
まだ難しくてよくわからないので、素直に括弧つけます。
お礼が遅くなってすみませんでした。
まだ難しくてよくわからないので、素直に括弧つけます。
103デフォルトの名無しさん
2012/12/06(木) 14:46:49.96 >>100 最近の言語は動的なんちゃらで、みんなそんな感じだから流行り
だろうね・・・でも量が多いと遅くなりそう。
そういう動的なことは Interactive な言語処理系でやればいいことで、
やることの量がだいたい前もって決まっていることを
なるべく早くたくさんがーっと処理したい、というのが Fortran 人wなので
・・・でもこのままでは老害って言われるし・・・うーん、むつかしいね。
だろうね・・・でも量が多いと遅くなりそう。
そういう動的なことは Interactive な言語処理系でやればいいことで、
やることの量がだいたい前もって決まっていることを
なるべく早くたくさんがーっと処理したい、というのが Fortran 人wなので
・・・でもこのままでは老害って言われるし・・・うーん、むつかしいね。
104デフォルトの名無しさん
2012/12/06(木) 15:58:43.84 ヤングの諸君を引き寄せるには、ある程度流行りの機能を入れないとまずいんだろう。
それに動的自動割り付けは、FUNCTIONで不定個数を返せるようになったので、
それを受け取るには無いと困るというのがあると思う。
REAL :: x(10)
REAL, ALLOCATABLE :: y(:)
CALL RANDOM_NUMBER(x)
! f90
ALLOCATE( y( COUNT(x > 0.5) ) )
y = f(x, 0.5)
PRINT *, y
! f2003
y = f(x, 0.5)
PRINT *, y
CONTAINS
FUNCTION f(x, a)
REAL, ALLOCATABLE :: f(:)
REAL, INTENT(IN) :: x(:), a
f = PACK(x, x > a)
END FUNCTION
END
この例はあらかじめ必要な配列の大きさが分かるが、計算してみないと
必要な配列の大きさが分からない場合は、大きめに取っておくか
二回計算する必要がある。
それに動的自動割り付けは、FUNCTIONで不定個数を返せるようになったので、
それを受け取るには無いと困るというのがあると思う。
REAL :: x(10)
REAL, ALLOCATABLE :: y(:)
CALL RANDOM_NUMBER(x)
! f90
ALLOCATE( y( COUNT(x > 0.5) ) )
y = f(x, 0.5)
PRINT *, y
! f2003
y = f(x, 0.5)
PRINT *, y
CONTAINS
FUNCTION f(x, a)
REAL, ALLOCATABLE :: f(:)
REAL, INTENT(IN) :: x(:), a
f = PACK(x, x > a)
END FUNCTION
END
この例はあらかじめ必要な配列の大きさが分かるが、計算してみないと
必要な配列の大きさが分からない場合は、大きめに取っておくか
二回計算する必要がある。
105デフォルトの名無しさん
2012/12/06(木) 17:15:11.18 可変長文字列も動的割り付けで可能になった。
program varchar
implicit none
character(len = :), allocatable :: text
text = 'automatic allocation'
print *, text
text = 'variable length text'
print *, text
stop
end program varchar
program varchar
implicit none
character(len = :), allocatable :: text
text = 'automatic allocation'
print *, text
text = 'variable length text'
print *, text
stop
end program varchar
106デフォルトの名無しさん
2012/12/06(木) 17:49:33.18 長さ同じだぞw
107デフォルトの名無しさん
2012/12/08(土) 17:47:52.98 モジュール内で定義したグローバル変数を
プログラム内で変更しないようにするにはどうしたらよいでしょうか?
(変更があったらエラーを吐くようにしたい)
parameter属性を付けるのが近いと思いますが、
そのグローバル変数はファイルからreadで読み込みます。
つまり、最初に一回だけファイルで読み込んで、
その後は変更せずに、各サブルーチンで参照できるようにしたいです。
プログラム内で変更しないようにするにはどうしたらよいでしょうか?
(変更があったらエラーを吐くようにしたい)
parameter属性を付けるのが近いと思いますが、
そのグローバル変数はファイルからreadで読み込みます。
つまり、最初に一回だけファイルで読み込んで、
その後は変更せずに、各サブルーチンで参照できるようにしたいです。
108デフォルトの名無しさん
2012/12/08(土) 23:34:47.37 >>107
ttp://www.nag-j.co.jp/fortran/fortran2003/Fortran2003_4_3.html
ttp://www.nag-j.co.jp/fortran/fortran2003/Fortran2003_4_3.html
109デフォルトの名無しさん
2012/12/10(月) 21:50:33.71 F2003でいいならprotected属性だな。
F90だったら、privateで隠匿して、値を使うところでは関数・サブルーチンで
値を取ってくるかな。
F90だったら、privateで隠匿して、値を使うところでは関数・サブルーチンで
値を取ってくるかな。
110デフォルトの名無しさん
2012/12/11(火) 12:57:04.37 protected つかわない、つかいたくない、つかえない
という時には他には intent(in) をあちこちに配置して
いちどどこかプログラム内で初期値設定した後は変えないようにする、って
手もあるけどこれは107さんの要望とはマッチしないなぁ。
protected がいちばん素直だとおもう。
という時には他には intent(in) をあちこちに配置して
いちどどこかプログラム内で初期値設定した後は変えないようにする、って
手もあるけどこれは107さんの要望とはマッチしないなぁ。
protected がいちばん素直だとおもう。
111デフォルトの名無しさん
2012/12/15(土) 21:23:37.92 もりあがってますね
112デフォルトの名無しさん
2012/12/16(日) 16:37:19.87 月に一個くらい質問というかお題投下があって
2週間くらいで20スレいく程度で
まったりと
2週間くらいで20スレいく程度で
まったりと
113デフォルトの名無しさん
2012/12/18(火) 04:20:26.48 f90から外部モジュールでf77を呼べますか? つまり固定形式で書かれたコードを外部モジュールで呼べるかってことなんですけど
114デフォルトの名無しさん
2012/12/18(火) 14:41:34.63 ん、コンパイル別々にしてリンクすればいいとおもうよん。
f77の継続行記号(6ケタ目の空白以外の任意文字)を継続前の行の最後の & に置き換える
だけで、原則f77はf90で解釈できるので、
そこだけいじって同じファイルに追加しちゃうという手もあるけどね。
f77の継続行記号(6ケタ目の空白以外の任意文字)を継続前の行の最後の & に置き換える
だけで、原則f77はf90で解釈できるので、
そこだけいじって同じファイルに追加しちゃうという手もあるけどね。
115デフォルトの名無しさん
2012/12/18(火) 14:41:50.10 呼べる。
module f77module
contains
.....
ここにサブルーチン、関数ならべる。
....
end module f77module
固定フォーマットの独立したファイルにして分割コンパイルすればよし。
module f77module
contains
.....
ここにサブルーチン、関数ならべる。
....
end module f77module
固定フォーマットの独立したファイルにして分割コンパイルすればよし。
116デフォルトの名無しさん
2012/12/19(水) 01:27:05.28 旧形式のコードて今でも普通に書かれてるの?
仕方なく再利用してるだけで、新しいコードは全部新しい文法で書くべき?
仕方なく再利用してるだけで、新しいコードは全部新しい文法で書くべき?
117デフォルトの名無しさん
2012/12/19(水) 13:23:10.08 > 旧形式のコードて今でも普通に書かれてるの?
わしゃバリバリ固定書式で書いている。
左7つ開けとかないとムズムズするのでw
> 新しいコードは全部新しい文法で書くべき?
書くべきだとおもう!
思うが・・・・
わしゃバリバリ固定書式で書いている。
左7つ開けとかないとムズムズするのでw
> 新しいコードは全部新しい文法で書くべき?
書くべきだとおもう!
思うが・・・・
118デフォルトの名無しさん
2012/12/19(水) 17:31:47.38 >>115
おおー、ありがとーございます。
おおー、ありがとーございます。
119デフォルトの名無しさん
2012/12/20(木) 00:16:24.69120デフォルトの名無しさん
2012/12/20(木) 00:56:53.25 新しい文法使ってもそれはそれで保守できるかという
自由形式として解釈できない固定形式の文法が継続行の扱いくらいかと
自由形式として解釈できない固定形式の文法が継続行の扱いくらいかと
121デフォルトの名無しさん
2012/12/20(木) 18:26:13.33 素直に固定形式のファイルと自由形式のファイルと分けた方が良いと思うズラ
f77時代は1個のファイルにまとめた方が、引数チェックや最適化のメリットが
あったが、f90以降は、MODULEとか使えば、分割コンパイルにそれほど害はないズラ
f77時代は1個のファイルにまとめた方が、引数チェックや最適化のメリットが
あったが、f90以降は、MODULEとか使えば、分割コンパイルにそれほど害はないズラ
122デフォルトの名無しさん
2012/12/21(金) 15:22:10.79 インテルだと
ifort -ipo
でファイルがバラバラでも最適処理してくれるよね。
ifort -ipo
でファイルがバラバラでも最適処理してくれるよね。
123デフォルトの名無しさん
2012/12/22(土) 20:57:03.97 コンパイラが偉い
124デフォルトの名無しさん
2012/12/23(日) 16:26:05.54125デフォルトの名無しさん
2012/12/25(火) 20:09:46.90 年内にインテルFortranの更新来ないのかな?二か月に一回の周期来てんだが。
block..end block を早く入れて欲しいわ。
たまに loop index を局所的に確保したい。頭部の宣言部が重くなりがち。
block..end block を早く入れて欲しいわ。
たまに loop index を局所的に確保したい。頭部の宣言部が重くなりがち。
126デフォルトの名無しさん
2013/01/04(金) 12:57:56.98 下記のようなループの外でopenしてループの中で書き足していくプログラムを書いているのですが,
ifortでコンパイルした場合,実行の途中でもファイルが更新されていくのですがpgiでコンパイルした場合はプログラム終了まではファイルが更新されず,
プログラム終了時に全部書き込まれます.pgiでコンパイルした場合でもプログラムの途中で適宜ファイルが更新されるようにできるのでしょうか
open(1000, file='data.dat')
do j = 1, N
write(1000, *), j
enddo
close(1000)
ifortでコンパイルした場合,実行の途中でもファイルが更新されていくのですがpgiでコンパイルした場合はプログラム終了まではファイルが更新されず,
プログラム終了時に全部書き込まれます.pgiでコンパイルした場合でもプログラムの途中で適宜ファイルが更新されるようにできるのでしょうか
open(1000, file='data.dat')
do j = 1, N
write(1000, *), j
enddo
close(1000)
127デフォルトの名無しさん
2013/01/04(金) 16:35:30.00 fortran2003のFLUSH命令を使え。
128デフォルトの名無しさん
2013/01/04(金) 17:18:02.62 >>127
うぉー!ありがとうございます
うぉー!ありがとうございます
129デフォルトの名無しさん
2013/01/09(水) 11:54:21.56 linuxでfortran 77のコンパイラってありますか?
gfortranというのを使うらしいのでそれをインストールして試したのですが知人に貰ったfortran 77のコードがコンパイルできませんでした
gfortranというのを使うらしいのでそれをインストールして試したのですが知人に貰ったfortran 77のコードがコンパイルできませんでした
130デフォルトの名無しさん
2013/01/09(水) 12:25:08.67 >>129
gfortranは77に対応していません。
フリーってことでおk?
fortran77対応のフリーのコンパイラはg77が有名かな。
linuxならintel fortranもnon commercial版になるけどフリーであったはず。
研究や企業での利用はできないから注意。
個人的にはfortran77をいつまでも使っていないで、
90に書き換えて、折角インストールしたgfortranを使った方が良いと思う。
書き換え方は拡張子を変えるのと、改行の&ぐらいでとりあえずは動くでしょ
gfortranは77に対応していません。
フリーってことでおk?
fortran77対応のフリーのコンパイラはg77が有名かな。
linuxならintel fortranもnon commercial版になるけどフリーであったはず。
研究や企業での利用はできないから注意。
個人的にはfortran77をいつまでも使っていないで、
90に書き換えて、折角インストールしたgfortranを使った方が良いと思う。
書き換え方は拡張子を変えるのと、改行の&ぐらいでとりあえずは動くでしょ
131デフォルトの名無しさん
2013/01/09(水) 12:36:06.11132デフォルトの名無しさん
2013/01/09(水) 17:25:39.34 gfortran って f77 コンパイルできないの?
f90 は f77 完全包括しているし、廃止事項をホントに廃止している
処理系はめったにないからオプション変えれば行けるんでね?
誰かおしへて。
f90 は f77 完全包括しているし、廃止事項をホントに廃止している
処理系はめったにないからオプション変えれば行けるんでね?
誰かおしへて。
133デフォルトの名無しさん
2013/01/10(木) 00:32:04.71 はじめからコードを倍精度で書くのと、コードは単精度でかいて倍精度はコンパイラのオプションに任せるのってどっちがやってる人多いのかな。
後者のメリットはコードがすっきりすることくらいか。
後者のメリットはコードがすっきりすることくらいか。
134デフォルトの名無しさん
2013/01/10(木) 18:29:17.78 AUTODBLは、べた書きの定数の桁がどう扱われるのかよく分からんとか
微妙な精度の問題が気になってIMPLICIT DOUBLE(A-H,O-Z)に乗り換えたわ。
あと、昔のプログラムだと整数とからんだCOMMONやEQUIVALENCEの整合が狂って
謎な挙動をしたりするから困る。
微妙な精度の問題が気になってIMPLICIT DOUBLE(A-H,O-Z)に乗り換えたわ。
あと、昔のプログラムだと整数とからんだCOMMONやEQUIVALENCEの整合が狂って
謎な挙動をしたりするから困る。
135デフォルトの名無しさん
2013/01/11(金) 01:47:02.97 >>132
g77の拡張機能つかってるコードをそうと知らずにgfortranでコンパイルしようとして互換性ないと勘違いした
g77の拡張機能つかってるコードをそうと知らずにgfortranでコンパイルしようとして互換性ないと勘違いした
136デフォルトの名無しさん
2013/01/12(土) 13:32:51.48 >>133
以前、同じことが気になったので、
中くらいの長さ200行ぐらいの単精度コードを手でw 倍精度化したのと、
コンパイルオプションで倍精度化したのを比べたことがある。
gfortran と ifort ではそれぞれで
実行バイナリが冒頭の一部分(コンパイル時刻?)以外は同一だった。
なので自作コードだけなら、違いはないか気にならない程度だとおもう。
third party library で
単精度と倍精度でサブルーチン名が違う場合があるので
その場合にどうなるか、はしらない。
以前、同じことが気になったので、
中くらいの長さ200行ぐらいの単精度コードを手でw 倍精度化したのと、
コンパイルオプションで倍精度化したのを比べたことがある。
gfortran と ifort ではそれぞれで
実行バイナリが冒頭の一部分(コンパイル時刻?)以外は同一だった。
なので自作コードだけなら、違いはないか気にならない程度だとおもう。
third party library で
単精度と倍精度でサブルーチン名が違う場合があるので
その場合にどうなるか、はしらない。
137デフォルトの名無しさん
2013/01/12(土) 13:34:36.19 あと、OpenMP で並列化したやつもまったく同じだった。
MPI で並列したやつはまるで駄目だったので
これは泣く泣く手で倍精度に揃えたw
MPI で並列したやつはまるで駄目だったので
これは泣く泣く手で倍精度に揃えたw
138デフォルトの名無しさん
2013/01/12(土) 14:57:23.92 third party というかソースのない、かつ組み込みでない関数/サブルーチンは
変換できないし、規定されていない方の値を渡すと意味不明な挙動になるぞ。
なお対応する interface 定義が提供される module を use して総称名で呼ぶと
コンパイル時に型にあった引数定義のサブルーチンが選ばれるようになる。
MPI はこういうトリックとは関係なく、1要素の大きさを渡すあたりに工夫が要るかと。
変換できないし、規定されていない方の値を渡すと意味不明な挙動になるぞ。
なお対応する interface 定義が提供される module を use して総称名で呼ぶと
コンパイル時に型にあった引数定義のサブルーチンが選ばれるようになる。
MPI はこういうトリックとは関係なく、1要素の大きさを渡すあたりに工夫が要るかと。
139デフォルトの名無しさん
2013/01/14(月) 23:43:04.50 知り合いのMPIのコードは倍精度はコンパイルオプションに任せてたな
140デフォルトの名無しさん
2013/01/15(火) 12:54:37.70 mpi_float を mpi_double に置き換えてくれるのかな?
MPI で単精度か倍精度が気になるのはその点くらいだよね
MPI で単精度か倍精度が気になるのはその点くらいだよね
141デフォルトの名無しさん
2013/02/09(土) 03:59:15.05 emacsのfortranモードについてなのですが、
変数宣言のあとに「::」をつけると、変数名に色がつくのが気に入っています。
ですが、改行すると色わけされません。
解決方法はありますでしょうか?
例、
integer :: i& ←色がつく
,j ←色がつかない
変数宣言のあとに「::」をつけると、変数名に色がつくのが気に入っています。
ですが、改行すると色わけされません。
解決方法はありますでしょうか?
例、
integer :: i& ←色がつく
,j ←色がつかない
142デフォルトの名無しさん
2013/02/09(土) 04:25:01.37143デフォルトの名無しさん
2013/02/09(土) 04:40:54.90144デフォルトの名無しさん
2013/02/09(土) 08:39:18.75 >>141
emacsの事は良く知らないけれど、f90.el内の
;; Variable declarations (avoid the real function call)
の次の行を編集すれば良いのでは?
あとemacsスレの方がレスが付き易いかも知れないね
emacsの事は良く知らないけれど、f90.el内の
;; Variable declarations (avoid the real function call)
の次の行を編集すれば良いのでは?
あとemacsスレの方がレスが付き易いかも知れないね
145デフォルトの名無しさん
2013/02/15(金) 04:06:55.05 >>144
返信遅くなってすみません。ありがとうございました。
返信遅くなってすみません。ありがとうございました。
146デフォルトの名無しさん
2013/02/15(金) 11:05:49.33 ずっと、fortran90メインで書いてたけど、Javaを触ってみようと奮闘したら、
訳わからん。書籍も分厚いのに、全部書いてある本ってあるの?少し違う事を
しようとしたら、必ずネットで調べらなあかん。fortranなら簡単に書けるのに。
Javaって新しい言語だから素人にもある程度優しいもんだと思ってたのは間違い
なの?自分がアホなんだろうなあ。プロの人ってすごいなあと、自らのアホさ
加減にへこむ日々。fortranで簡単にGUI使えたらJavaなんて要らないのに。
アホな書き込みすいません。
ああああああああ、だめだw。いらつかない。いらつかない。
訳わからん。書籍も分厚いのに、全部書いてある本ってあるの?少し違う事を
しようとしたら、必ずネットで調べらなあかん。fortranなら簡単に書けるのに。
Javaって新しい言語だから素人にもある程度優しいもんだと思ってたのは間違い
なの?自分がアホなんだろうなあ。プロの人ってすごいなあと、自らのアホさ
加減にへこむ日々。fortranで簡単にGUI使えたらJavaなんて要らないのに。
アホな書き込みすいません。
ああああああああ、だめだw。いらつかない。いらつかない。
147デフォルトの名無しさん
2013/02/15(金) 20:00:07.57 Fortranとかいうアホ言語使ってるからそうなるんだ
C++を使いなさい
C++が使えるようになればJavaなんか簡単
C++を使いなさい
C++が使えるようになればJavaなんか簡単
148デフォルトの名無しさん
2013/02/16(土) 12:55:18.74149デフォルトの名無しさん
2013/02/17(日) 23:13:36.88 >>146
なんでやねん
俺にすればJavaの方がFORTRANよりずっと簡単に思えるぞ
C#もだいたい似てる
使うコンピュータがメインフレームならJava、WindowsならC#がGUIが一番楽
というかメインフレームにはMonoすらない事が多いし
C#はDelphiの流れを受け継いでいるのとJavaやC++の良いとこ取りしている
ある意味卑怯な(?)言語なのでGUIはこれが一番早く完成する
なんでやねん
俺にすればJavaの方がFORTRANよりずっと簡単に思えるぞ
C#もだいたい似てる
使うコンピュータがメインフレームならJava、WindowsならC#がGUIが一番楽
というかメインフレームにはMonoすらない事が多いし
C#はDelphiの流れを受け継いでいるのとJavaやC++の良いとこ取りしている
ある意味卑怯な(?)言語なのでGUIはこれが一番早く完成する
150デフォルトの名無しさん
2013/02/21(木) 10:17:06.63 ファイルを読み込んでcharacter型の変数に代入しようとしています。
一行の文字数が不定なときはどうすればいいですか?
あらかじめ要素数をおおきめに用意する以外でおねがいします。
一行の文字数が不定なときはどうすればいいですか?
あらかじめ要素数をおおきめに用意する以外でおねがいします。
151150
2013/02/21(木) 10:35:58.49 コンパイラーはintelの9.0です
あと、intelの非商用のコンパイラってもう配布されてないんですか?
あと、intelの非商用のコンパイラってもう配布されてないんですか?
152デフォルトの名無しさん
2013/02/21(木) 23:40:21.69153デフォルトの名無しさん
2013/02/22(金) 01:40:20.99 1文字づつ読んで改行まで貯めこむしか無いんでないかな。
IVF9.0では無理だと思うがF2003なら、可変長文字列ではなく文字配列ならIVF9でも可かな。
program test
implicit none
character :: ch
character(:), allocatable :: buf
buf = ''
do
read(9, '(a)', end = 999, advance = 'no', eor = 8) ch
buf = buf // ch
cycle
8 print *, buf
buf = ''
end do
999 stop
end program test
IVF9.0では無理だと思うがF2003なら、可変長文字列ではなく文字配列ならIVF9でも可かな。
program test
implicit none
character :: ch
character(:), allocatable :: buf
buf = ''
do
read(9, '(a)', end = 999, advance = 'no', eor = 8) ch
buf = buf // ch
cycle
8 print *, buf
buf = ''
end do
999 stop
end program test
154150
2013/02/22(金) 15:25:21.78155デフォルトの名無しさん
2013/02/22(金) 17:32:58.14 >>154
>は代入するたびにallocateしなおしてるやつですか
そう。大量で負荷が重いなら大きなbufferを取るしかない。
IntelFortranの場合F2003文法はデフォではOFFになっているので
standard-semantics をONにする必要があるかも。
配列の場合
buff = [buff, ch]
で配列要素数を拡張していけるが、この場合はオプション必要。
>は代入するたびにallocateしなおしてるやつですか
そう。大量で負荷が重いなら大きなbufferを取るしかない。
IntelFortranの場合F2003文法はデフォではOFFになっているので
standard-semantics をONにする必要があるかも。
配列の場合
buff = [buff, ch]
で配列要素数を拡張していけるが、この場合はオプション必要。
156デフォルトの名無しさん
2013/02/25(月) 11:52:14.65 実行時間を計測することはできると思いますが
使用したメモリの最大値を計測することはできませんか?
コンパイラはintelです
使用したメモリの最大値を計測することはできませんか?
コンパイラはintelです
157デフォルトの名無しさん
2013/02/25(月) 15:41:26.94 Linux なら ps をじっと眺めているw
Windows なら task manager のグラフを眺める。
Windows なら task manager のグラフを眺める。
158デフォルトの名無しさん
2013/02/28(木) 02:15:09.70 include文やuse文で読み込むインクルードファイル、モジュールファイルを
別ディレクトリにおいてコンパイルしたいのですが、
インクルードパスの設定方法がわかりません。
コンパイラはifortです。
ifort -I***
***に絶対パスを入れたり、相対パスを入れたりしたのですがダメです。
そもそも、-I/でタブ補完しようとすると
-I/ is not found.と出てきます。
何か別の設定が必要なのでしょうか?
インクルードファイルがあるディレクトリは、カレントディレクトリの中にあります。
別ディレクトリにおいてコンパイルしたいのですが、
インクルードパスの設定方法がわかりません。
コンパイラはifortです。
ifort -I***
***に絶対パスを入れたり、相対パスを入れたりしたのですがダメです。
そもそも、-I/でタブ補完しようとすると
-I/ is not found.と出てきます。
何か別の設定が必要なのでしょうか?
インクルードファイルがあるディレクトリは、カレントディレクトリの中にあります。
159デフォルトの名無しさん
2013/02/28(木) 11:49:02.22 fortranの出力指定子でマニアックなものまで全部のってるサイトを教えてもらえないでしょうか
例えば0.005を↓のように出力する指定子を探しています
5.000000000000000-3
例えば0.005を↓のように出力する指定子を探しています
5.000000000000000-3
160デフォルトの名無しさん
2013/03/01(金) 01:51:15.14 >>159
EN(工学用)なら3乗おきに出力できたはず
0.005なら単純に科学系のES記述子でもできる
いつから在るか知らないけど、最近の本(自分が買ったのは5年前)には普通に載ってたよ
Webサイトなら"Fortran 編集記述子"で検索すれば色々出てくるけど、
自分の環境で使える記述子を全部知りたいならコンパイラのリファレンスが一番確実
EN(工学用)なら3乗おきに出力できたはず
0.005なら単純に科学系のES記述子でもできる
いつから在るか知らないけど、最近の本(自分が買ったのは5年前)には普通に載ってたよ
Webサイトなら"Fortran 編集記述子"で検索すれば色々出てくるけど、
自分の環境で使える記述子を全部知りたいならコンパイラのリファレンスが一番確実
161デフォルトの名無しさん
2013/03/01(金) 17:51:51.58 少しはマニュアル読めよwww
162デフォルトの名無しさん
2013/03/02(土) 17:11:35.24 さっき始めたんですがわからないので教えてください
あるモジュールにサブルーチンが二つある時にこの二つのサブルーチンを違うファイルに記述することは出来ますか?
C++でいう名前空間のように分離できるか?ということです
あるモジュールにサブルーチンが二つある時にこの二つのサブルーチンを違うファイルに記述することは出来ますか?
C++でいう名前空間のように分離できるか?ということです
163デフォルトの名無しさん
2013/03/04(月) 19:17:12.36 名前空間を分けたいなら、まぁmoduleを二個使え。
USEでエイリアスをつけろ。
どうしてもというなら、一個のモジュールを二個のファイルに書くことは、
includeを使えば出来ることはできる。
またFortran2008で導入されるsubmoduleを使う手も考えられる。が、実装している
処理系はまだないと思う。
USEでエイリアスをつけろ。
どうしてもというなら、一個のモジュールを二個のファイルに書くことは、
includeを使えば出来ることはできる。
またFortran2008で導入されるsubmoduleを使う手も考えられる。が、実装している
処理系はまだないと思う。
164デフォルトの名無しさん
2013/03/06(水) 03:56:33.28 Fortranのcharacterって文字コード決まってたりする?環境依存?
165デフォルトの名無しさん
2013/03/06(水) 15:22:28.31 内部コードは環境依存。
というか昔はIBMのEBCDICこそが本物コードでASCIIは安物ミニコンとかのパチモン文字コードだった。
ANSI FORTRAN77の時に内部コードの他にASCIIコードに対応させる関数が導入されてる。
というか昔はIBMのEBCDICこそが本物コードでASCIIは安物ミニコンとかのパチモン文字コードだった。
ANSI FORTRAN77の時に内部コードの他にASCIIコードに対応させる関数が導入されてる。
166デフォルトの名無しさん
2013/03/07(木) 16:59:58.06 スレチかもしれないけど
リスト構造を無限ループで回してるところを
openmpで並列化したいんだけどできます?
リスト構造を無限ループで回してるところを
openmpで並列化したいんだけどできます?
167デフォルトの名無しさん
2013/03/07(木) 18:31:50.73 リスト構造といっても色々あるから答えようもないぜw
Fortranはデータパラレルには強いがタスク・パラレルは弱いけど、
OpenMPの新しい版ではタスク・パラレルできるから
リスト構造で枝分かれするところでタスク分割すればいいんでね?
順序入れ替えが無い線形リスト構造なら、配列に直せば元々高速になるし、
並列化の余地も大いにあると思う。
Fortranはデータパラレルには強いがタスク・パラレルは弱いけど、
OpenMPの新しい版ではタスク・パラレルできるから
リスト構造で枝分かれするところでタスク分割すればいいんでね?
順序入れ替えが無い線形リスト構造なら、配列に直せば元々高速になるし、
並列化の余地も大いにあると思う。
168デフォルトの名無しさん
2013/04/03(水) 15:36:38.02 print '(g20.12)', 1.d-100
とすると
0.100000000000E-99
と返してくれるのですが,
print '(g20.12)', 1.d-101
とすると
0.100000000000-100
のようにEが消えてしまいます.
これだとプロットのソフトによっては0.100000000000-100を-99.9と解釈してしまい困ってます.
どうすれば3桁以上の指数部分も正しく書けますか.
コンパイラはifortです.
とすると
0.100000000000E-99
と返してくれるのですが,
print '(g20.12)', 1.d-101
とすると
0.100000000000-100
のようにEが消えてしまいます.
これだとプロットのソフトによっては0.100000000000-100を-99.9と解釈してしまい困ってます.
どうすれば3桁以上の指数部分も正しく書けますか.
コンパイラはifortです.
169デフォルトの名無しさん
2013/04/03(水) 18:33:16.72 >>168
こんなかんじかな。
program p
implicit none
integer :: i1,i2
real(8) :: d1,d2
character(10) :: s1
d1=-1d-105
i1=log10(abs(d1))
d2=d1*10d0**(-i1)
write(*,"(g25.16,f25.15,a)")d1,d2,"E"//i2s(i1)
contains
function i2s(ival)
integer, intent(in) :: ival
character(int(log10(dble(abs(ival))))+2) :: i2s
character(12) :: s1
write(s1,"(i12)")abs(ival)
if(ival.ge.0)then
i2s="+"//s1(12-int(log10(dble(abs(ival)))):12)
else
i2s="-"//s1(12-int(log10(dble(abs(ival)))):12)
end if
end function
end program
こんなかんじかな。
program p
implicit none
integer :: i1,i2
real(8) :: d1,d2
character(10) :: s1
d1=-1d-105
i1=log10(abs(d1))
d2=d1*10d0**(-i1)
write(*,"(g25.16,f25.15,a)")d1,d2,"E"//i2s(i1)
contains
function i2s(ival)
integer, intent(in) :: ival
character(int(log10(dble(abs(ival))))+2) :: i2s
character(12) :: s1
write(s1,"(i12)")abs(ival)
if(ival.ge.0)then
i2s="+"//s1(12-int(log10(dble(abs(ival)))):12)
else
i2s="-"//s1(12-int(log10(dble(abs(ival)))):12)
end if
end function
end program
170デフォルトの名無しさん
2013/04/03(水) 19:16:56.67 >>168
'(g20.12e3)'で指数部の桁数を指定するとか
'(g20.12e3)'で指数部の桁数を指定するとか
172169
2013/04/03(水) 20:12:16.82 ごめんミス。171は169です。
173デフォルトの名無しさん
2013/04/22(月) 08:17:30.46 知らない仕様っていっぱいありそう
174デフォルトの名無しさん
2013/05/05(日) 23:04:55.44 f90って継続記号は行頭ではなく行末でないといけないんですよね?
例えば、
equation = A&
+ B&
+ C
みたいな式があってCの寄与をみるためにコメントアウトするとき
たまにBの後ろの&をコメントアウトしわすれて面倒だったりしませんか?
絶対文頭につける仕様のほうが便利だと思うんですが・・・。
例えば、
equation = A&
+ B&
+ C
みたいな式があってCの寄与をみるためにコメントアウトするとき
たまにBの後ろの&をコメントアウトしわすれて面倒だったりしませんか?
絶対文頭につける仕様のほうが便利だと思うんですが・・・。
175デフォルトの名無しさん
2013/05/06(月) 08:39:40.01 セミコロンで文末にできた気がする
equation = A&
+ B&
; ! + C B から継続→文末、C の除外
equation = A&
+ B&
; ! + C B から継続→文末、C の除外
176デフォルトの名無しさん
2013/05/08(水) 18:56:23.29 10.000
100.00
1000.0
100000
浮動小数点を上記のように書き出したいのですが
どのように書式を指定すればよろしいでしょうか
100.00
1000.0
100000
浮動小数点を上記のように書き出したいのですが
どのように書式を指定すればよろしいでしょうか
177デフォルトの名無しさん
2013/05/15(水) 05:10:28.17178デフォルトの名無しさん
2013/05/15(水) 05:16:35.51 私も質問です。
サブルーチンの引数に配列を使ったときに、実引数と仮引数でサイズのチェックが行われるような書き方、
あるいはコンパイルオプションはありますでしょうか?
例えば、実引数がa(0:imax)で仮引数がb(1:imax)のとき、エラーが出ずにコンパイルが通ってしまうことがあります。
その場合、実行結果がめちゃくちゃになるのにエラーが出ないのでデバッグに苦労しています。
内部サブルーチンのときはコンパイルエラーが出ますよね?
外部サブルーチン、あるいはモジュールでもエラーが出るようにできますでしょうか?
サブルーチンの引数に配列を使ったときに、実引数と仮引数でサイズのチェックが行われるような書き方、
あるいはコンパイルオプションはありますでしょうか?
例えば、実引数がa(0:imax)で仮引数がb(1:imax)のとき、エラーが出ずにコンパイルが通ってしまうことがあります。
その場合、実行結果がめちゃくちゃになるのにエラーが出ないのでデバッグに苦労しています。
内部サブルーチンのときはコンパイルエラーが出ますよね?
外部サブルーチン、あるいはモジュールでもエラーが出るようにできますでしょうか?
179デフォルトの名無しさん
2013/05/15(水) 23:02:48.29 あるプログラム単位は、外部サブルーチンがどんな引数を取るかは知らん。
だから引数の整合性を確認するのは、プログラマの責任だった…のが FORTRAN77
Fortran90 から、interface ブロックで、外部サブルーチンがどんな引数を取るつもりか
定義をプログラムに書けるようになり、コンパイラのチェックを受けられるようになってる。
これだけではあまり意味はないが、module で定義を書き、その内容を use 文で
取り込むことで、複数ファイル間での一貫性が取れる構造となる。また、モジュール内
サブルーチンはわざわざ interface を書かんでも use されたプログラム単位からの
参照に対してチェックがかかるはず。
ちなみにインテル Fortran なら /warn:interface でうるさく言ってくるようだ。
だから引数の整合性を確認するのは、プログラマの責任だった…のが FORTRAN77
Fortran90 から、interface ブロックで、外部サブルーチンがどんな引数を取るつもりか
定義をプログラムに書けるようになり、コンパイラのチェックを受けられるようになってる。
これだけではあまり意味はないが、module で定義を書き、その内容を use 文で
取り込むことで、複数ファイル間での一貫性が取れる構造となる。また、モジュール内
サブルーチンはわざわざ interface を書かんでも use されたプログラム単位からの
参照に対してチェックがかかるはず。
ちなみにインテル Fortran なら /warn:interface でうるさく言ってくるようだ。
180デフォルトの名無しさん
2013/05/16(木) 03:39:55.72 >>179
ありがとうございます。具体例をあげます。
module_Aのなかに、サブルーチン1とサブルーチン2がcontainsされています。
module_Bのなかに、サブルーチン3がcontainsされています。
ケース1、
サブルーチン1でuse module_Bとして、サブルーチン3を呼び出します。
実引数はmodule_Aで宣言しており、x(0:imax)です。
仮引数はサブルーチン3で宣言しており、intent(out)属性をつけてx(1:imax)です。
この場合、コンパイルしてもエラーが出ませんでした。
ありがとうございます。具体例をあげます。
module_Aのなかに、サブルーチン1とサブルーチン2がcontainsされています。
module_Bのなかに、サブルーチン3がcontainsされています。
ケース1、
サブルーチン1でuse module_Bとして、サブルーチン3を呼び出します。
実引数はmodule_Aで宣言しており、x(0:imax)です。
仮引数はサブルーチン3で宣言しており、intent(out)属性をつけてx(1:imax)です。
この場合、コンパイルしてもエラーが出ませんでした。
181デフォルトの名無しさん
2013/05/16(木) 03:42:38.83 つづき、
ケース2,
サブルーチン1でサブルーチン2を呼び出します。
実引数はintent(inout) :: y(1:imax)で仮引数はintent(in) :: y(0:imax)です。
この場合もエラーが出ません。
コンパイラはifortです。
できれば、これらのケースでのinterfaceの使い方を教えていただきたいです。
ケース2,
サブルーチン1でサブルーチン2を呼び出します。
実引数はintent(inout) :: y(1:imax)で仮引数はintent(in) :: y(0:imax)です。
この場合もエラーが出ません。
コンパイラはifortです。
できれば、これらのケースでのinterfaceの使い方を教えていただきたいです。
182デフォルトの名無しさん
2013/05/17(金) 10:56:33.57 ftn95 で、以下のエラーメッセージの原因がわかりません。
(メッセージの意味ではありません)
Error 29, Call to missing rotine : _EXSUB at 0x00******.
主プログラム(main.f90)
program main
use interface_mod
implicit none
integer :: a,b
a=3; b=5
call exsub1(a)
call exsub2(b)
end program
外部サブルーチン(exsub.f90)
subroutine exsub1(r)
implicit none
integer, intent(in) :: r
real(8),dimension(r):: w
print *,w
end subroutine
subroutine exsub2(s)
implicit none
integer, intent(in) :: s
real(8),dimension(s):: x
print *,x
end subroutine
(メッセージの意味ではありません)
Error 29, Call to missing rotine : _EXSUB at 0x00******.
主プログラム(main.f90)
program main
use interface_mod
implicit none
integer :: a,b
a=3; b=5
call exsub1(a)
call exsub2(b)
end program
外部サブルーチン(exsub.f90)
subroutine exsub1(r)
implicit none
integer, intent(in) :: r
real(8),dimension(r):: w
print *,w
end subroutine
subroutine exsub2(s)
implicit none
integer, intent(in) :: s
real(8),dimension(s):: x
print *,x
end subroutine
183182
2013/05/17(金) 10:57:14.45 (うえのつづきです)
インターフェイスモジュール(ifmod.f90)
module interface_mod
interface
subroutine exsub1(r)
integer,intent(in)::r
end subroutine
subroutine exsub2(s)
integer, intent(in) :: s
end subroutine
end interface
endmodule interface_mod
インターフェイスモジュール(ifmod.f90)
module interface_mod
interface
subroutine exsub1(r)
integer,intent(in)::r
end subroutine
subroutine exsub2(s)
integer, intent(in) :: s
end subroutine
end interface
endmodule interface_mod
184デフォルトの名無しさん
2013/05/17(金) 12:40:14.55 質問です。 計算の結果を.datファイルに書き込むプログラムを作成したのですが
datファイルの中身を確認すると文字化けしています。何がいけないのでしょうか?
OSはWindow7 64bit、コンパイラはFortran90です。「あらきけいすけの雑記帳」を参考にしました。
プログラムすべて乗せるとちょっと長いので関係有りそうな部分だけ。
最初はこのように宣言
open(1, file='1.dat', status='replace',access='direct',recl=4)
その後doで回しながら計算結果を書き込む
write(1,rec=(it-1)*39*39+(iz-2)*39+(ix-1)) p2(ix,iz)
datファイルの中身を確認すると文字化けしています。何がいけないのでしょうか?
OSはWindow7 64bit、コンパイラはFortran90です。「あらきけいすけの雑記帳」を参考にしました。
プログラムすべて乗せるとちょっと長いので関係有りそうな部分だけ。
最初はこのように宣言
open(1, file='1.dat', status='replace',access='direct',recl=4)
その後doで回しながら計算結果を書き込む
write(1,rec=(it-1)*39*39+(iz-2)*39+(ix-1)) p2(ix,iz)
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】日本産牛肉の対中国輸出再開協議が中止 [おっさん友の会★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★2 [BFU★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★3 [BFU★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★4 [ぐれ★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 [ぐれ★]
- 【速報】日本産牛肉の対中国輸出再開協議が中止 ★2 [おっさん友の会★]
- 【格差社会】小泉進次郎じゃなくて高市早苗が自民党新総裁になると見切ってFXやってた奴、FIREライン [517791167]
- 高市コイン、ガチで156円突入へwwwwwwwwww [246620176]
- 【実況】博衣こよりのえちえち雑談🧪★2
- 中国政府、日本人のビザ免除停止、鬼滅の刃公開停止を検討へ [271912485]
- 高市早苗って戦後最悪の総理大臣なのでは🤔? [929293504]
- 【実況】博衣こよりのえちえち雑談🧪
