FORTRAN III
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGFORTRAN77/90/95/2003, HPF等、FORTRAN全般に関する話題を書き込んで下さい。
・前スレ
FORTRAN II
http://pc5.2ch.net/test/read.cgi/tech/1068351911/
Fortran
http://pc2.2ch.net/test/read.cgi/tech/1003214738/
0002デフォルトの名無しさん
NGNGお約束だが、まずは自分で調べよう
http://www.google.co.jp/
x86で動作するFortranコンパイラ
http://www.nminoru.jp/~nminoru/programming/x86-fortran.html
The Fortran Company
http://www.fortran.com/
Polyhedron Software
http://www.polyhedron.co.uk/
Google Directory - Fortran
http://directory.google.com/Top/Computers/Programming/Languages/Fortran/
0003デフォルトの名無しさん
NGNGThe G95 project (Fortran95)
http://www.g95.org/
GCC (g77) (今のところ FORTRAN77)
http://gcc.gnu.org/
Salford FTN77/95 Personal Edition (Fortran77/95, Windows, 要登録)
http://www.salfordsoftware.co.uk/software/downloads/compilers.html
FTN77/95のインストール方法
http://www.coastal-env.k.u-tokyo.ac.jp/koibuchi/fortran.htm
the F Programming Language (Fortran90のサブセット, Win/Linux/Solaris)
http://www.fortran.com/F/compilers.html
Open Watcom Fortran Compiler (FORTRAN77)
http://www.openwatcom.org/
Intel Fortran Compiler (Fortran95, 無料評価版(Win)/非商用バージョン(Linux), 要登録)
http://www.xlsoft.com/jp/products/download/download.html
Lahey/Fujitsu Fortran (期限付きトライアル版, Win/Linux, 要登録)
http://www.lahey.com/downloads.htm
0004デフォルトの名無しさん
NGNGCompaq Visual Fortran オンライン・ドキュメント
http://www.xlsoft.com/jp/products/intel/cvf/docs/index.html
Intel Fortran Compiler 日本語版マニュアルのダウンロード (要登録)
http://www.xlsoft.com/jp/products/intel/download.html
富士通Fortranオンラインマニュアル
http://www.cc.nao.ac.jp/fsunman/japanese/Fortran/index.html
FORTRAN77 standard
http://www.swcp.com/~walt/F77_std/f77_std.html
http://www.fortran.com/fortran/F77_std/rjcnf0001.html
JISデータベース
http://www.jisc.go.jp/
0005デフォルトの名無しさん
NGNGFortran90プログラミング
http://www.ip.media.kyoto-u.ac.jp/htomita/
Fortran 90 言語マニュアル
http://www.rs.kagu.tus.ac.jp/yama/
やさしいフォートラン講座
http://www.g.dendai.ac.jp/kouza/top.htm
Fortran ResQ - Fortran初心者に捧ぐ
http://homepage.mac.com/galois21/fortran/index.html
FORTRANプログラミング初級編
http://svr01.damp.tottori-u.ac.jp/~akimoto/Fortran/
FORTRAN 77 入門
http://www-aos.eps.s.u-tokyo.ac.jp/~takagi/f77-enshu/index.html
0006デフォルトの名無しさん
NGNGFortran Source Check (オンライン文法チェック)
http://www.lahey.com/check.htm
ftnchek
http://www.dsm.fordham.edu/~ftnchek/
c2f
http://www.unics.uni-hannover.de/rrzn/gehrke/c2f.html
F2C
http://www.vector.co.jp/soft/win95/prog/se056813.html
Fortranの歴史
http://members.at.infoseek.co.jp/kitaurawa/fortran.html
The Real Programmer Stories (日本語訳)
http://www.genpaku.org/realprogrammerj.html
00071
NGNGというわけで、後は任せた。
オレはもう寝る。
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNGprint *,"乙"
0010デフォルトの名無しさん
NGNG引数の範囲を同じ値の変数で指定すれば範囲が大きいときにstackoverflowがでる。
という現象が起こっています。
なぜでしょうか?
0011デフォルトの名無しさん
NGNG>配列変数の宣言なんですが、引数の範囲を実数で指定すればうまくいく。
>引数の範囲を同じ値の変数で指定すれば範囲が大きいときにstackoverflowがでる。
いまいちよく解らないんだが。
SUBROUTINE FOO(A, N)
REAL A(N)
・・・
とかやってるってこと?
001277
NGNGtemp = v(im,jm,km)*(x(number)-r(1))*(z(number)-r(2))*(y(number)-r(3))
& +v(im,jm,kp)*(x(number)-r(1))*(z(number)-r(2))*(r(3)-y(number-1))
& +v(ip,jm,km)*(r(1)-x(number-1))*(z(number)-r(2))*(y(number)-r(3))
& +v(ip,jm,kp)*(r(1)-x(number-1))*(z(number)-r(2))*(r(3)-y(number-1))
& +v(ip,jp,km)*(r(1)-x(number-1))*(r(2)-z(number-1))*(y(number)-r(3))
& +v(ip,jp,kp)*(r(1)-x(number-1))*(r(2)-z(number-1))*(r(3)-y(number-1))
& +v(im,jp,km)*(x(number)-r(1))*(r(2)-z(number-1))*(y(number)-r(3))
& +v(im,jp,kp)*(x(number)-r(1))*(r(2)-z(number-1))*(r(3)-y(number-1))
この括弧の数はあってると思うんですが、最後の行で、
Syntax error, found END-OF-STATEMENT when expecting one of: , )
& +v(im,jp,kp)*(x(number)-r(1))*(r(2)-z(number-1))*(r(3)-y(number-1))
-----------------------------------------------------------------------------------^
というエラーが。。。括弧以外に原因があるのでしょうか??
0013デフォルトの名無しさん
NGNG72桁超えてる。
001410
NGNG全くそのとおりです。説明が不足でした。
サブルーチン呼び出し時に値を渡し、
サブルーチン内でその変数を使って配列を宣言しているのです。
0015デフォルトの名無しさん
NGNG>引数の範囲を実数で指定すればうまくいく。
整数だよね
>引数の範囲を同じ値の変数で指定すれば範囲が大きいときにstackoverflowがでる。
日本語がよく分からんが、配列の次元を馬鹿でかくするという意味なら、関数またぐ時だし、仕様かな。
ただ、ソースも具体的な数字もないので、何とも言えんが。
http://www.xlsoft.com/jp/products/intel/cvf/docs/vf-html/pg/pg04_02_43.htm
0016デフォルトの名無しさん
NGNG「配列変数の宣言なんですが、添え字の範囲を定数で指定すればうまくいく。
添え字の範囲を、引数で渡される変数で指定すれば範囲が大きいときにstackoverflowがでる。
という現象が起こっています。
なぜでしょうか? 」
といいたいのでは?
であれば、
・前半は、配列は、ふつーの配列であり、ヒープからメモリが割り当てられる
・後半は、配列は、自動割付配列となり、スタックからメモリが割り当てられる
対処法は
・>>15にあるように、スタックサイズをあげる
・F90で書き、配列をALLOCATEによって確保する
あたりか?
0017勉強になります
05/01/19 16:57:200018デフォルトの名無しさん
05/01/20 06:07:45Fortran
http://pc5.2ch.net/tech/kako/1003/10032/1003214738.html
「FORTRAN II」(2スレ目)の方はもうしばらくしてhtml化されるのを待つか、●を買え。
0020デフォルトの名無しさん
05/01/27 08:36:090021デフォルトの名無しさん
05/01/27 10:08:320022デフォルトの名無しさん
05/01/28 00:38:31>>2の一番上にあります。
0023デフォルトの名無しさん
05/01/28 03:34:05unformattedで書き込んだファイルのreadは全く問題ないのですが、
openの際に、うっかりそうでないファイルを指定した時の振舞で悩んでます。
やりたいことは「ファイル先頭をチラっと見る。意図してないファイル形式なら
その旨のエラー出して終了」です。ですが、ウチの環境で不適切なファイルを
unformattedでopenすると、readの段で強制的にプログラムが停止してしまいます。
これではエラー出すヒマが無く、一方で(私の知識の範囲内では)ファイルの判断には
readをするしかないため、どうにもジレンマに陥ってしまいました。
何かイイ方法御存知の方いらっしゃいますでしょうか?
当方 RHEL3(amd64) + Intel Fortran 8.1 であります。
0024デフォルトの名無しさん
05/01/28 21:29:21iostatでチェック
0025デフォルトの名無しさん
05/01/29 20:10:08読み込むのに、一行に "," 区切りで複数のデータを与えたら一つ目のデータ
しか正しく読めず、あとのデータが????に成ります。
どうしたらいいのでしょうか。
Salford FTN77です。
0026デフォルトの名無しさん
05/01/29 22:03:34・Cの仕様書工房
・Cppunit
みたいなツールってないでしょうか?
0027デフォルトの名無しさん
05/02/07 13:19:58emacs lisp を探しています。
fortran はハンパじゃないので etags だけではちょっと無理です。。。
0028デフォルトの名無しさん
05/02/07 21:02:21データの数かFORMATの指定が間違ってない?
うちの環境では","で区切っても正しく読み込めたけど。
0029デフォルトの名無しさん
05/02/14 17:13:310030デフォルトの名無しさん
05/02/14 17:28:220031デフォルトの名無しさん
05/02/15 20:35:27『Fortran 95』というふうに95の前にスペースを入れるのと,
『Fortran95』というふうにスペースを入れないのと,
どちらが正しいのでしょうか?
0032デフォルトの名無しさん
05/02/15 21:32:040033デフォルトの名無しさん
05/02/15 21:33:18"Fortran 95" の検索結果 約 107,000 件
"Fortran95" の検索結果 約 12,800 件
0035デフォルトの名無しさん
05/02/15 21:55:33ちなみに Fortran 95 の規格は
ANSI X3J3/96-007
JIS X 3001:1998
ISO/IEC 1539-1:1997
内容は全部同じ。
0037デフォルトの名無しさん
05/02/19 02:09:05Salford FTN95 を使うか,それとも,うちの職場にあった唯一の
PC用Fortranコンパイラである Fortran PowerStation 4.0 を使うか,
迷っています。
(他の商品版を買うのは高くて,今のところは躊躇しています)
Win95の頃に発売された Fortran PowerStation 4.0 は Win XP に
インストールしてもコンパイルなどは正常に行われるのでしょうか?
0038デフォルトの名無しさん
05/02/19 09:22:14WindowsXP上で、FORTRAN77のソースをコンパイル、正常実行できた記憶があるよ
0039デフォルトの名無しさん
05/02/20 09:27:24cygwin上でgcc-4.0(CVS版ですが)をmakeしてみる. gfortranができるが
これがf90. 簡単なやつでテストしてみましたが, よっぽどf90の機能を
使ってない限り, 大丈夫そうでした.
0040デフォルトの名無しさん
05/02/20 13:45:59cygwin か coLinux を入れればフォートランランランってことなんじゃないかな.
0041デフォルトの名無しさん
05/02/20 18:31:410043デフォルトの名無しさん
05/02/22 19:47:40お薦めのものがあったら教えてください。
004443
05/02/22 19:49:48できれば日本語マニュアルがあって,便利なライブラリも付属しているものが良いですが‥‥。
ご存じのかた,よろしくお願いします m(_ _)m"
0045デフォルトの名無しさん
05/02/22 20:58:15Intel の Visual Fortran
何をするのに「便利な」ライブラリが欲しいのか知らないが
Windows上でグラフィックが使える QuickWin や
Pro版にはIMSLも付いている。
また付属ではないが、Windows上の事実上の標準なので
MKL や Lapack(95) 、 f90gl 等、有名どころのライブラリは
大抵使える。
004643
05/02/22 22:16:45ライブラリの件ですが,目指しているのは地球のダイナモの成因となる
外核のMHDシミュレーションなので,その数値計算に便利なライブラリが
あればと考えています(地球流体電脳ライブラリが既に存在してはいますが)。
0047デフォルトの名無しさん
05/02/22 23:28:18バグがまだ埋まっている)と書いてありますが,どういうバグなのでしょうか?
コンパイルや計算が正しく行われなかったりするのでしょうか?
0048デフォルトの名無しさん
05/02/23 09:47:51ttp://www.polyhedron.co.uk
にベンチマークも含めてのっていますよ
0050デフォルトの名無しさん
05/02/25 08:41:43どうすればいいでしょう?
下記のようなプログラムを書きたいのですが
コンパイルできません。
program main
call hoge
end
subroutine hoge
write(6,*) "hello world"
call hoge
return
end
0051デフォルトの名無しさん
05/02/25 12:27:16f90の場合だと再帰的呼び出しにすれば大丈夫でしょう。サブルーチン宣言の頭に recursive をつけるだけでいいんじゃないでしょうか?
recursive subroutine hoge
0052デフォルトの名無しさん
05/02/27 15:50:53ちゃんと再帰から抜けるようにしとけよ。
無限ループやるなよ。
0053デフォルトの名無しさん
05/03/02 20:44:06write (10,'(50d15.7)') TT,(U(j)/K(j), j=1,NMax)
上のようなwrite文を書くとします.その際,csv形式で出力したいのですが,'(50d15.7)'というような書き方をするときに「カンマ」をどうやって紛れこませるか?--ということをお聞きしたいのです.
write(10,1000) TT,(U(j)/K(j), j=1,NMax)
1000 format(d15.7,',',d15.7,','d15.7)
というような形式で書くのならわかるのですが...何十回も繰りかえすのはメンドイもので.御存じの方よろしくお願いします.
0054デフォルトの名無しさん
05/03/02 21:22:25自己レスです.
write (10,"(49(d15.7,','),d15.7)") TT,(U(j)/K(j),j=1,NMax)
と書けばうまく逝きました.
失礼しました.
0055名無しさん
05/03/03 14:57:29Fortranで作られたプログラムWindowsで(DOSで)動かしたいんですが、一応データファールとかも揃えて走らせると、
最初の1行だけ読んで「cannot open file "F90.EER" #__」みたいなメッセージが出て計算されません。
これはいったいどういうことなのでしょうか?
ちなみにファイルはここの「TWINSPAN」です。
↓
http://cc.oulu.fi/~jarioksa/softhelp/softalist.html
0056デフォルトの名無しさん
05/03/03 15:20:57もっと詳しく
0057名無しさん
05/03/03 15:26:46すんません。
昔、同じプログラムをNEC98(5インチ時代)に使ったことあってそん時は問題なかったんですよね。
DOSプロンプトのあとにexeファイル名(TWINSPAN)を入れて実行させると、inputデータファイルを尋ねてくるのでそのファイル名を入れてリターンすると
「Cannot Open Error file "F90.EER", error #151」
てのが出て終わってしまいます。
中身はそのまま触ってないので、これ以上のことはわからないのですが・・・
0058デフォルトの名無しさん
05/03/03 17:51:40> 「Cannot Open Error file "F90.EER", error #151」
"F90.EER" ではなく "LF90.EER" では?
Run time error messages from LF90
ttp://agbu.une.edu.au/~kmeyer/errmsg.html
> 151 File specified STATUS= "OLD" doesn't exist (see "Input/Output" in the Essential Lahey Fortran 90 Reference).
ようするに、入力ファイルが無い or 名前が違う。
0059名無しさん
05/03/03 18:10:54ありがとうございます。
そうです「LF90.EER」でした。済みません。
入力ファイルがないとは、inputデータファイルが読めていないということでしょうか。
データ行の1文目は読んでいるんですが。
それか、もはや元のファイルがないのかな。
済みませんあまりに素人で。
0060デフォルトの名無しさん
05/03/13 09:11:58&abc
de=5
fg=3.1
&end
だと読み込まず
&abc de=5 fg=3.1/
でもだめでした。
方言があるんですかね。
0061デフォルトの名無しさん
05/03/15 11:12:48使っているプログラムでうまくいかなかったのでテストプログラムを作ってみました。
その結果、結果が異なりましたので訂正します。
以下のプログラムコンパイルして実行するとエラーになります。
FC3 gcc4-gfortran-4.0.0.29.x86_64.rpm
programe main
integer i,j,k
dimension j(10)
character*20 c
namelist /n1/i,j,k,c
read(5,nml=n1)
write(6,n1)
end
./hoge
&n1
i=20
k=3
j=1,2,3,4,5,6,7,8,9,0
c='test'
&end
cannot match a namelist variable
g77だとコンパイルして実行すると、正常に動きます。
いろいろ探したらg95に行き当たりました。これだと正常にコンパイル,実行できました。
g95(gcc 4.0.0 20050124 (g95) Mar 12 2005)
gcc4.1コレクションも試しましたが、このバグは、直っていませんでした。
0062デフォルトの名無しさん
05/03/20 05:03:23MS-FORTRAN Ver.5.1 は Fortran 90 に似て非なる物だったという記憶があるのですが,
ふと思い立って,8年くらい前に買った森北出版の 「FORTRAN 77 と Fortran 90」 の
「2部:Fortran 90編 Fortran 90とMS・FORTRAN」を見て
自分で確かめようとしたら,本棚から行方不明になってて
確かめることができませんでした。
MS-FORTRAN Ver.5.1 は Fortran 90 と同一のものだったのか,
あるいは Fortran 90 に独自拡張を加えただったのか,
それとも,似ているけど違うものだったのか
ご存じのかた,教えて下さい。
0063デフォルトの名無しさん
05/03/20 08:30:04実際にMS-FORTRANを使ったことはないですのが
手元に「FORTRAN 77 と Fortran 90」があったので
確認してみたところ、MS-FORTRANは
"Fortran 90 の一部機能を含む独自拡張仕様"
のようです。
F90との主な違いは
・継続行の指示記号は "&" ではなく "-"
・構造体の宣言は TYPE ではなく SURUCTURE
・ポインタ、WHERE文、モジュール等がない
などだそうです。
006562
05/03/20 10:48:26もうひとつ教えていただきたいことがあるのですが,「FORTRAN 77 と Fortran 90」 の本で
扱われている MS-FORTRAN について,本の中でバージョン番号は書かれていますでしょうか?
0066デフォルトの名無しさん
05/03/20 11:15:39書籍では「Microsoft FORTRAN V5.1」を用いたということで、巻末の参考図書に
マイクロソフトの「Microsoft FORTRAN - Reference -」(1991)
が挙げられています。
ちなみに Fortran 90 の方は「NAGWare f90 Compiler」でテストしたということです。
(2003年5月20日発行の第1版第7刷で確認)
0068デフォルトの名無しさん
2005/03/27(日) 01:22:580069デフォルトの名無しさん
2005/03/27(日) 15:29:34�@VFで、GUI WIN32アプリをFortranで組む。
�AC/C++でGUI組んで、C/C++からFortranの関数を呼ぶ。
0070デフォルトの名無しさん
2005/03/27(日) 20:37:33VFならDLLをつくるという手もある。
0071デフォルトの名無しさん
2005/03/29(火) 00:06:04CVFならCOM DLLをつくるという手もある。
0072デフォルトの名無しさん
2005/03/29(火) 01:30:03ほとんどのコンパイラが DLL を作れます.
あとはシンボルを調べれば好きな言語から呼べます.
0073デフォルトの名無しさん
2005/03/31(木) 23:09:58プログラムの中でサイズの大きいファイルを開こうとすると、
forrtl: File too large
forrtl: severe (30); open failure , unit 10, file 〜
というエラーが出て止まってしまいます。
このような場合はどう対処すればいいのでしょうか。
どなたかご存知の方がおられましたら、どうかよろしくお願いします。
0074デフォルトの名無しさん
NGNG100Gのファイルでも開こうとしたのか?
007573
2005/04/03(日) 01:07:160076デフォルトの名無しさん
2005/04/03(日) 10:41:190077分かんにゃいからHELP。
2005/04/03(日) 11:02:57どのようなコードにすればいいのでしょうか?
いろんなテキストを見たけど載ってない…。
0078分かんにゃいからHELP。
2005/04/03(日) 11:06:24「write(*,*) 'へろー,わーるど?'」と
「print*, 'へろー,わーるど?'」とでは本質的にどう違うんですか?
0079デフォルトの名無しさん
2005/04/03(日) 12:34:39advanc='NO'を出力時に指定する。
>>78
77か90か
0080デフォルトの名無しさん
2005/04/03(日) 13:34:12print*, 顔に見えない
0081分かんにゃいからHELP。
2005/04/03(日) 19:03:17ヒント、アリガトウございました。使っているのは 90 の方です。
「character NO」を宣言しなければならないんですね。
あと、「advance」ですよね。
「write(*,'(A)',advance='NO')」のように使っていますが、「'(A)'」は
文字列の指定を意味しているんですか?
例えば「'(I)'」の時なんかは整数かな、と推測できるのですが「'(A)'」に
ついては馴染みがないんで教えて欲しいです。
008273
2005/04/03(日) 21:36:340083デフォルトの名無しさん
2005/04/03(日) 23:31:52一般的な32 ビットプラットフォームのLinuxでは,最大ファイルサイズが2Gバイトに制限されているので、
�@64 ビット環境でコンパイルする。
�A32 ビットアーキテクチャなら、LinuxのカーネルをLarge File Supportが有効な新しいものに変える。
008473
2005/04/04(月) 17:54:48こちらでも調べてみましたが、Large File Supportはカーネル2.4から組み込まれているみたいです。
今私が使っているlinuxのカーネルは2.6なのですが、Large File Supportは有効にはなっていないのでしょうか。
それとも他に何か原因があるのでしょうか。
0085デフォルトの名無しさん
2005/04/04(月) 17:58:18休憩しようよ
0086デフォルトの名無しさん
2005/04/08(金) 18:26:56http://members.at.infoseek.co.jp/kitaurawa/cgi-bin/wiki.cgi
0087デフォルトの名無しさん
2005/04/12(火) 10:09:32http://www.photran.org/
0088デフォルトの名無しさん
2005/04/15(金) 00:08:45ダウンロード画面にベトナム料理屋が表示されるね。
フォーのレストランてことか。
0089デフォルトの名無しさん
2005/04/17(日) 00:48:05現実逃避で『 諸君 私はFortranが好きだ 』というネタ演説を作ってみました。
先月,私がガイドライン@2ch板に投稿したものに少々手直し。
( >>63 & >>66 さん,先月は失礼いたしました。実はあの朝はこれを打っていました。)
ttp://www.geocities.co.jp/Technopolis/4404/i_love_fortran.html
スレ汚し,大変失礼いたしました m(_ _)m"
009089
2005/04/20(水) 01:07:42何故 h が抜けてたんだか‥‥ orz
演説 『 諸君 私はFortranが好きだ 』
http://www.geocities.co.jp/Technopolis/4404/i_love_fortran.html
再度のスレ汚し,本当に! 本当に失礼いたしました m(_ _;)m"
0091ega
2005/04/20(水) 03:43:26文字列に変換して出力するサブルーチンを作れ
といわれたんですが、だれか教えてくらさい。
0092デフォルトの名無しさん
2005/04/20(水) 08:02:09http://www.sun.com/presents/minds/2005-0302/
0093デフォルトの名無しさん
2005/04/20(水) 12:29:53ヘンな課題ですね。
009489
2005/04/20(水) 18:45:03VAX FORTRAN という Fortranコンパイラの文法を解説した Webページの
http://www3.jpn.hp.com/upassist/ktree/cr/vms/v030/v030-04-08.html
で,「メモリ内部入出力」という方法で行う 数値型 ⇔ 文字型 の型変換が
紹介されていました。
要するに,WRITE文を使って「メモリ内部入出力」というのを行うことで
数値型から文字型へ変換しています。すなわち,
WRITE(文字型変数名,FORMAT文番号) 数値型変数名
というようにコーディングすると,数値型変数の値が文字型に変換できるというものです。
以下にプログラム例を示します。
(WindowsXP上の Cygwin の g77 で動作確認しました。
ただし,他のどんな Fortranコンパイラでも動く普遍的な Fortran文法なのか
どうかは知りません。ご存知の方,フォローして下さると助かります。)
009589
2005/04/20(水) 18:46:23例えばマイナス符号を含めて5文字以内の整数なら
WRITE(moji,100) seisuu
100 FORMAT(I5)
とコーディングして型変換します。
【プログラム例1】
PROGRAM main
INTEGER seisuu
CHARACTER*5 moji
CALL int2char(seisuu,moji)
STOP
END
SUBROUTINE int2char(seisuu,moji)
INTEGER seisuu
CHARACTER*5 moji
WRITE(*,*) 'マイナス符号を含めて5文字以内の整数をキー入力せよ'
READ(*,*) seisuu
WRITE(moji,100) seisuu
100 FORMAT(I5)
WRITE(*,*) 'あなたが入力した整数は',moji,'です'
RETURN
END
009689
2005/04/20(水) 18:47:26例えばマイナス記号を含めて整数部が4文字以内,小数部が3桁以内の実数なら
WRITE(moji,100) jissuu
100 FORMAT(F8.3)
とコーディングして型変換します。
【プログラム例2】
PROGRAM main
REAL jissuu
CHARACTER*8 moji
CALL real2char(jisuu,moji)
STOP
END
SUBROUTINE real2char(jisuu,moji)
REAL jissuu
CHARACTER*8 moji
WRITE(*,*) 'マイナス記号を含めて整数部が4文字以内で'
WRITE(*,*) '小数部が3桁以内の実数をキー入力せよ'
READ(*,*) jissuu
WRITE(moji,100) jissuu
100 FORMAT(F8.3)
WRITE(*,*) 'あなたが入力した実数は',moji,'です'
RETURN
END
0097デフォルトの名無しさん
2005/04/20(水) 19:28:17009889
2005/04/20(水) 19:31:48>>94 での
WRITE(文字型変数名,FORMAT文番号) 数値型変数名
の「FORMAT文番号」の部分は正しくは,
WRITE(文字型変数名,FMT=書式識別子) 数値型変数名
ですね。FMT= を省略してコンマのあとにすぐ書式識別子を置いても可。
なので,>>95 のプログラム例1での
WRITE(moji,100) seisuu
100 FORMAT(I5)
の二行は
WRITE(moji,'(I5)') seisuu
また,>>96 のプログラム例2での
WRITE(moji,100) jissuu
100 FORMAT(F8.3)
の二行は
WRITE(moji,'(F8.3)') jissuu
というように一行にまとめてもOKです。
むしろ 文番号を使わないで済むので,特に Fortran 90 以降なら
こちらのほうがすっきりして良いかもしれません。
009989
2005/04/20(水) 19:41:47僕も最初そう思ったんですが,ついさっき,
「commonで定義した変数を文字型に変換してファイル名に使いたい」という例を見つけました。
http://okweb.jp/kotaeru.php3?q=797367
>>91さんには,その課題の出された背景を教えてほしいです。
どんな使われ方をするのか興味があります (^ ^)
010089
2005/04/20(水) 20:11:57> ただし,他のどんな Fortranコンパイラでも動く普遍的な Fortran文法なのか
> どうかは知りません。ご存知の方,フォローして下さると助かります。
‥‥に対する自己レス (うざくてすみません)。
WRITE文とREAD文の装置番号のところに文字変数を置くやり方は,
培風館から出版されている「Fortran90プログラミング」の
著者・冨田博之先生の同名サイトの中の
http://www.ip.media.kyoto-u.ac.jp/htomita/sec7.html#7.2.
で,「内部ファイルの方法」として紹介されていました。
↓
(装置番号が)文字変数:プログラム中で使われている文字変数に読み書きできる。
「内部ファイルの方法」といい,必ず書式を指定すること。
0101ega
2005/04/20(水) 20:32:26サンクスです。助かりました。課題は、fortranを覚えるために出された数問のなかにありました。
何に使うかはわからないのですが、私がc言語を知っているという背景を配慮して、
cとfortranを関連付けるためなのかとも思いました。私自身もまだよくプログラムに関しては
よく理解してないのでわかりませんが、研究とかにはまず使わないと思います。
本当になんでこんな変な問題がでたんでしょうね。
とにかくありがとうございました。
■ このスレッドは過去ログ倉庫に格納されています