- ベストアンサー
Fortranでのファイル名操作について
Fortranを使っているものです。 プログラムで、ファイル名は文字列形式でしか付けれないと思いますが、そのファイル名をメインプログラムから何か値をもらって、それをサブルーチンでファイル名につけるということはできるのでしょうか? 例えば、iをメインプログラムで10~100まで10ずつ動かすとします。そのiの値をわかりやすくするためにファイル名に付けたいと思っていて、do文でサブルーチン中でまわしてファイル名に入れる・・・なんてことは可能でしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2の方の紹介している方法だと、100以下の時のファイル名が前0がないのでシステムによってはエラーになります、WRITE(STRING,*) だと、ソートしたときに命名順に並ばないので、ちょっと工夫しましょう。 CHARACTER*20 FNAME CALL CRFNAM(FNAME,I) SUBROUTINE CRFNAM(FNAME,I) CHARACTER*20 FNAME CHARACTER*4 CWORK WRITE(CWORK,"(I4)") I+1000 FNAME="DATA"//CWORK(2:4)//".TXT" OPEN(10,FNAME) RETURN こんな感じではどうでしょう FNAMEの文字式が嫌なら WRITE(FNAME,"(4HDATA,A3,4H.TXT)") CWORK(2:4) でもok
その他の回答 (2)
- colder
- ベストアンサー率43% (30/69)
- mac_res
- ベストアンサー率36% (568/1571)
たとえばこんな感じでしょうか? -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- subroutine fname(i) character fnam*6 character name(6) character num(10) num(1) = '0' num(2) = '1' num(3) = '2' num(4) = '3' num(5) = '4' num(6) = '5' num(7) = '6' num(8) = '7' num(9) = '8' num(10) = '9' name(1) = 'f' name(2) = 'i' name(3) = 'l' name(4) = 'e' name(5) = num(i/10+1) name(6) = num(i-(i/10)*10+1) fnam=name(1)//name(2)//name(3)//name(4)//name(5)//name(6) open(1,file=fnam) write(1,*) fnam close(1) return end do i = 0, 99 call fname(i) end do end