あらきけいすけの雑記帳

2012-02-14 (Tue)

[] 64bit の Windows 7 上でフリーの fortran コンパイラを導入して、簡単なプログラム作成する 06:04

[2016.1.1] gfortran (というか gcc そのもの) 4.7(くらい?) ~ 5.1 にはWRITE文でセグメンテーション違反のバグがあるようなので、5.2以降をお手軽にインストールするための記事を書きました: 64bit の Windows10 上でフリーの fortran コンパイラを導入して、簡単なプログラムを作成する - あらきけいすけの雑記帳

ビギナー向けの Windows 上の fortran コンパイラ*1のインストールについて。前のエントリWindows上でフリーのfortranコンパイラを導入して、簡単なプログラムを作成する - あらきけいすけの雑記帳)が Windows XP 上でのインストール記事になっていたので、64bit 版の Windows 7 でのインストール記事を書く。2012年2月の段階で Windows インストーラ付のフリーの fortran 環境のインストール方法としては GCC / MinGW / MinGW-w64 compiler suite for 32- and 64-bit Windows をうたっている TDM-GCC を用いてインストールする方法がある。

TDM-GCC を用いた gfortran の導入

いま無料の windows 用の fortran 90 コンパイラで導入が簡単なものは gfortran なんじゃないかと思う。ホームページが英語で書いてあるからってビビらないように。

  1. http://tdm-gcc.tdragon.net/ に入る
  2. Download のページの Bundle Installer (The easiest install) から、インストールする PC の OS にあった exe をダウンロードする。*2 *3
    f:id:arakik10:20120213093349j:image
    ダウンロードページのスクリーンショット
    1. OSが32bitならtdm-gcc-4.6.1
    2. OSが64bitならtdm64-gcc-4.6.1*4
  3. ダウンロードできた tdm-gcc-4.6.1.exe (または tdm64-gcc-4.6.1.exe)をクリックしてインストールを開始。
    1. まずインストーラを実行する
      f:id:arakik10:20120213093751j:image
    2. [Create]をクリック
      f:id:arakik10:20120213093855j:image
    3. 64bit OS なら [MinGW-w64/TDM64 Experimental (32-bit and 64-bit)]を選択して[Next>]をクリック
      f:id:arakik10:20120213094025j:image
    4. インストールするフォルダの設定:[Next>]をクリックしてデフォルトのフォルダ(ここでは C:\MinGW64)にインストール*5
      f:id:arakik10:20120213094434j:image
    5. ファイルを取りに行くサイトの選択:デフォルト値の SourceForge Default を選択*6
      f:id:arakik10:20120213114906j:image
    6. インストールするファイルを選択する。ここで gfortran を選択しないと c/c++ のコンパイラだけインストールされてしまう。
      1. まず gcc (TDM64 Current: 4.6.1-tdm64-1) の前のプラスボタン[+]をクリックする。f:id:arakik10:20120213115816j:image
      2. プラスボタン[+]をクリックすると[Version], [core], [c++] などの枝を持つツリーが現れる
        f:id:arakik10:20120213120036j:image
      3. [fortran]のチェックボックスがあるので…
        f:id:arakik10:20120213120143j:image
        [fortran]にチェックを入れ(ボクは OpenMP という並列計算ソフトも入れたかったので [openmp] にもチェックが入っている)、[Install]ボタンをクリックすると…
        f:id:arakik10:20120213120349j:image
    7. "Installing"と表示され、インストールが始まる
      f:id:arakik10:20120213120442j:image
    8. "Installation Complete"と表示されたところで、[Next >]をクリックすると…
      f:id:arakik10:20120214052826j:image
    9. "Completing the TDM-GCC Setup Wizard" の画面が出るので、[Finish]をクリックして終了
      f:id:arakik10:20120213121311j:image

これでインストールは終了で、gfortranへのPATHも通っている。

gfortran のインストールができているかの確認

  1. [スタート]→[すべてのプログラム]→[アクセサリ]→[コマンドプロンプト]でコマンドプロンプトが起動する
  2. コマンドラインに "gfortran -v" と打ち込んで [Enter] を押す
  3. "Using built-in specs."以下の文言が出てくればOK
    f:id:arakik10:20120213121958j:image

fortranプログラムの作成環境の作成*7

以下は Windows 7 で実行した。

  1. まず[ドキュメント]に fortran という名前のフォルダを作成する
  2. [スタート]→[すべてのプログラム]→[アクセサリ]→[コマンドプロンプト]で右クリックをして[コピー(C)]をクリック
  3. fortran フォルダを開いて [編集(E)]→[貼り付け(P)] をすると、フォルダに[Command Prompt]のショートカットができる。
  4. ここでコマンドプロンプトのショートカットを選択して [右クリック]→[プロパティ(R)] を選択して、「作業フォルダ(S)」の項目を空欄にする。(これでクリック時にそのフォルダがコマンドプロンプトのデフォルトの作業フォルダになる。)
  5. コマンドプロンプトのショートカットをクリックすると、コマンドプロンプトが起動する。
  6. ここで「gfortran[enter]」と入力して「gfortran: fatal error: no input files」と表示されることを確認する。
  7. ここで「exit[enter]」と入力すると、コマンドプロンプトは消える。

fortranプログラムの作成

以下は Windows 7 で実行した

  1. fortranフォルダを開いて[Alt]キーを押すと、フォルダ上部に[ファイル(F)][編集(E)]...が表示される
  2. [ファイル(F)]→[新規作成(W)]→[テキストドキュメント]で「新規テキスト ドキュメント.txt」ができる
  3. これをクリックするとメモ帳が立ち上がる(はず)
  4. メモ帳で全部半角文字で次の3行を入力する
    write(*,*) 'hello, world'
    stop
    end
  5. [ファイル(F)]→[名前をつけて保存(A)]で「ファイル名(N)」を test.f90 「ファイルの種類(T)」を「すべてのファイル」にして保存
  6. コマンドプロンプトを起動して「gfortran test.f90[enter]*8」を入力。フォルダの中に a.exe が出来る。
  7. コマンドプロンプトで「a.exe[enter]」を入力。入力の次の行に「 hello, world」が表示される。

アンインストール

  1. インストールの2番目の画面のところで[Create]ではなく[Remove]をクリックする

C/C++プログラミングもしたい人は

上のインストールの手順では c++ のインストールもされている。

*1:ひょっとしたら先生が FORTRAN 77 で授業をしてるかもしれないけど、それでも大丈夫。gfortran は(g95もだけど) FORTRAN 77 のプログラムだってコンパイルできる。だって fortran 90/95 は FORTRAN 77 の上位互換言語だもの。

*2自分PC の OS のビット数を調べるには、[スタート]→[コンピュータ]→(右クリック)→[プロパティ]を開いて、[システムの種類]を確認すればよい。

*3ファイルのダウンロードの際に sourceforge というサイトにジャンプする。

*4:末尾の4.6.1は MinGW gcc のバージョン番号だからバージョンアップに伴って変わるだろう。

*5:このエントリではインストーラのデフォルト値でインストールする。

*6:JAISTからダウンロードするのがいいのかなあ。

*7:これは「パス」「カレント・ディレクトリ」などの基礎事項を十分に把握できていない初級者でも、コマンドラインでカレントディレクトリ内での作業を行うための簡単な手法…のつもり。要点はコマンドプロンプトのショートカットを「作業フォルダ」の指定をわざと空白にした状態でプログラムのソースコードを置くディレクトリ内に置く。この状態で起動するとコマンドラインのカレントディレクトリがショートカットの入ったディレクトリになる。場合によっては cd コマンドを教育するより、ショートカットをコピーさせる方が、演習時間的にはローコストになることもある。

*8http://tdm-gcc.tdragon.net/startの"Compiling"のセクションを見ると、MinGW-w64/TDM64 はデフォルトで64bitの実行ファイルを作るので、32bit, 64bitを指定したいときは -m32, -m64 のオプションをつけろとある。

DETECTIVEDETECTIVE 2012/04/19 18:45 初めてコメントを書かせていただきます。
このようなサイトがあり大変便利であると同時に、感謝しております。
ここでひとつ質問をさせていただきます。
導入の序盤なのですが、2の「Download のページの Bundle Installer (The easiest install) から、インストールする PC の OS にあった exe をダウンロードする。」
を行ったところ、
「This program is not commonly downloaded and could harm your computer.」
となってしまいました。
もちろんこのサイトで紹介されているので大丈夫だとは思いますし、ダウンロードするにはブロックを解除すればいいのですが、このご時世ですから安全かどうか判断できないものを安易にダウンロードすることに迷いがあります。
解除してダウンロードしても良いか確認させてください。

arakik10arakik10 2012/04/20 09:05
DETECTIVE さま、コメントありがとうございます
> 「This program is not commonly downloaded and could harm your computer.」
ボクの手許の環境では状況が再現できなかったので、なんとも申し上げられません。ごめんなさい。このサイトではMD5のチェックサムファイルのようなファイルの破損等のチェック用のファイルを配布していないので、ダウンロードファイルが「正しい」かどうかチェックする手段がないですね。お力になれなくてごめんなさい。
MinGW の gfortran コンパイラの入手方法は http://gcc.gnu.org/wiki/GFortranBinaries にコンパイラの実行型ファイルがいくつか紹介されているので、そちらを参照して探すのもいいかもしれません。

らんくらんく 2012/08/08 14:30 こんにちは。初めてコメントさせて頂きます。
らんくと申します。よろしくお願いします。
今回このサイトを拝見させていただいて64bitwindowsにfortran環境を構築出来ました。本当に感謝いたします。
そして非常に申し訳ないのですが、個人的なfortranプログラムのことでアドバイスを頂けたらと思い書き込ませていただきました。
現在以下のようなerrorが出てしまい
にっちもさっちもいかない状態になってしまいました。

C:\Users\lunkhead210\Dropbox\M1\fortran>gfortran scabfm.f
scabfm.f:416.19:

COMMON /PARA/AN,BN,WN,TN,DN /INC/LAM,PHII /TRNC/NPL,MMN,LLN
1
Warning: Named COMMON block 'para' at (1) shall be of the same size
scabfm.f:416.54:

COMMON /PARA/AN,BN,WN,TN,DN /INC/LAM,PHII /TRNC/NPL,MMN,LLN
1
Warning: Named COMMON block 'trnc' at (1) shall be of the same size
C:\Users\LUNKHE~1\AppData\Local\Temp\ccn8yyRQ.o:scabfm.f:(.text+0x14fb): undefined reference to `spbj_'
C:\Users\LUNKHE~1\AppData\Local\Temp\ccn8yyRQ.o:scabfm.f:(.text+0x245e): undefined reference to `cswep_'
C:\Users\LUNKHE~1\AppData\Local\Temp\ccn8yyRQ.o:scabfm.f:(.text+0x44b8): undefined reference to `spbj_'
C:\Users\LUNKHE~1\AppData\Local\Temp\ccn8yyRQ.o:scabfm.f:(.text+0x59fb): undefined reference to `gettim_'
C:\Users\LUNKHE~1\AppData\Local\Temp\ccn8yyRQ.o:scabfm.f:(.text+0x5b95): undefined reference to `gettim_'
C:\Users\LUNKHE~1\AppData\Local\Temp\ccn8yyRQ.o:scabfm.f:(.text+0x70c5): undefined reference to `hinc_'
collect2: ld returned 1 exit status

定義されていない参照ということでコンパイラに準備されていない関数を使用しているのでしょうか?
いきなりこのような質問をして本当にすみません。

arakik10arakik10 2012/08/12 15:47 らんくさま
spbj, cswep, gettim, hinc は fortran の標準関数名ではありません。これらは自作の手続き(SUBROUTINE, FUNCTION など)なのでしょう。scabfm.f も自作のプログラムと思われますので、その作者やアクティブな利用者にお尋ねください。多分、fortran のソースコードファイルが scabfm.f だけでは不足しているのでしょう。お力になれなくてすみません。

Hidehiko MURAOHidehiko MURAO 2012/10/05 00:03 あらきさま

記事を参考にgfortranのWindows 7 64bit版のgfortranのインストールに成功しました。
最近、Windowsの方はあまり触っていなかったのですが、Windows 7(64bit)を使用することになり、環境を整えたく、検索してみたところ、このページにたどり着きました。
Open MPもインストールすることができ、とても嬉しいです。

御礼をお伝えしたくコメントいたしました。
ありがとうございます。

むらむら 2012/11/16 20:07 初めまして。一つお聞きしたいのですが、メモ帳で打った後に、コマンドプロンプトに gfortran test.f90[enter]と入力しても No such file or directory  と出てきて フォルダ内にa.exeが出てきません。
どうすれば良いのでしょうか? アドバイスお願いいたします。

arakik10arakik10 2012/11/18 14:39 Hidehiko MURAO さま
コメントありがとうございます。こちらもお力添えになれてよかったです。

むら さま
>初めまして。一つお聞きしたいのですが、メモ帳で打った後に、コマンドプロンプトに gfortran test.f90[enter]と入力しても No such file or directory  と出てきて フォルダ内にa.exeが出てきません。
>どうすれば良いのでしょうか? アドバイスお願いいたします。
お返事がすこし遅くなりました。記事の通りに実行なさったと思いますので、次の二つを念のために確認してみて下さい。
1.「fotran」フォルダがあり、そのフォルダの中に「コマンドプロンプト」のショートカットと「test.f90」の二つのファイルがある。
2.「fortran」フォルダの「コマンドプロンプト」のプロパティで「作業フォルダ」が空欄になっている。

むらむら 2012/11/18 21:43 その二つのファイルもありますし、「作業フォルダ」も空欄になっています><

arakik10arakik10 2012/11/19 08:35 むら さま
> その二つのファイルもありますし、「作業フォルダ」も空欄になっています><
ううむ。それでは念のため次のことを試してみて下さい。
1.「fortran」フォルダを開き、その中のコマンドプロンプトを起動して「dir[enter]」と入力する
 1.1 4行目に「C:\Users\*****\Documents\fortran のディレクトリ」と表示される(*****はユーザ名が入る)。
 1.2 その下のファイルのリストの中に「Command Pronpt.lnk」と「test.f90」(「test.f90.txt」ではなく)が表示される。

むらむら 2012/11/20 17:45 「dir[enter]」を入力したところ、「C:\Users\*****\Documents\fortran のディレクトリ」は出ましたが、その後にファイルあ見つかりませんって出てきました。

arakik10arakik10 2012/11/21 06:24 むら さま
>「dir[enter]」を入力したところ、「C:\Users\*****\Documents\fortran のディレクトリ」は出ましたが、その後にファイルあ見つかりませんって出てきました。
「見つかりません」ですか。ううううむ。謎、、、ですね。作業の意味、目的を書いておきます。
■「dir[enter]」のコマンド
・起動したコマンドプロンプトの「カレントディレクトリ」(「作業フォルダ」の別名です)が fortran になっていることを確認する。
・カレントディレクトリ内にコマンドプロンプトへのショートカットと test.f90 のファイルがあることを確認する。
この命令を出すとファイル名のリストの中に「<DIR> .」(カレントディレクトリ)と「<DIR> ..」(親ディレクトリ)の二つは必ず出るし、コマンドプロンプトが起動しているので Command Pronpt.lnk が表示されるはずなので、「見つかりません」はありえないはずなのすが、、、。
近くのパソコンに詳しい人に見てもらってください。お力になれなくて済みません。

user01user01 2012/11/23 15:43 >初めまして。一つお聞きしたいのですが、メモ帳で打った後に、コマンドプロンプトに gfortran test.f90[enter]と入力しても No such file or directory  と出てきて フォルダ内にa.exeが出てきません。
私も最初に同じメッセージが出ましたが、そのときの原因は
「ファイルの種類(T)」を「すべてのファイル」として保存せず「テキストファイル」としていたためでした。同じ原因かはわかりませんが、参考になれば。

nonamenoname 2013/06/19 22:00 >1.「fortran」フォルダを開き、その中のコマンドプロンプトを起動して「dir[enter]」と入力する
 1.1 4行目に「C:\Users\*****\Documents\fortran のディレクトリ」と表示される(*****はユーザ名が入る)。
 1.2 その下のファイルのリストの中に「Command Pronpt.lnk」と「test.f90」(「test.f90.txt」ではなく)が表示される。

「dir[enter]」と入力すると「test.f90.txt」が表示されます。
どうしたらいいでしょうか?

arakik10arakik10 2013/06/22 02:54 nonameさま
>「dir[enter]」と入力すると「test.f90.txt」が表示されます。
拡張子が.txtなので「fortranプログラムの作成」の「5.[ファイル(F)]→[名前をつけて保存(A)]で「ファイル名(N)」を test.f90 「ファイルの種類(T)」を「すべてのファイル」にして保存」がきちんとできていないと考えられます。ここをもういちどきちんとしてみてください。

ほほほのほほほほのほ 2013/12/08 21:26 あらき先生、
はじめまして。私、Cプログラムの基礎を学びたいと思い、上記のコンパイラをインストールした者です。
すべての手順を記述通りに行い、fortran はコンパイルできたので、C のファイルでやってみたら、“No such file or directory”とでました。どうも同じディレクトリにあるファイルを見つけられていないようです。こういう場合、どうすればいいでしょうか?
ちなみに、gcc[enter]だけでやると、“fatal error: no input files”となるので、Cのコンパイラ自体は動くようです。

arakik10arakik10 2013/12/13 04:50 ほほほのほ さま
>fortran はコンパイルできたので、C のファイルでやってみたら、“No such file or directory”とでました。
インストール+fortranコンパイル成功おめでとうございます。"No such file or directory" なので、拡張子込みでファイル名を確認してみてください。Windowsのフォルダはデフォルトでは拡張子を表示しない設定ですので、プログラミングの勉強をなさるなら、拡張子を常に表示する設定に切り替えておくことをお勧めします。

ほほほのほほほほのほ 2014/02/08 17:05 あらき先生、
.cをうしろに付けたら普通にコンパイルしました。ありがとうございました。

ほほほのほほほほのほ 2014/02/10 15:37 実は、その後また新たな問題というか。コンパイルをして動くのですが、途中で止まってしまうのです。簡単な整数を入力するプログラムを書いて、コンパイルして実行します。

その後、整数を入力したとたん別のウィンドウがでてきて、問題が発生したためプログラムを終了します的なことを言われて終わってしまうのです。

arakik10arakik10 2014/02/11 12:40 ほほほのほさま
>その後、整数を入力したとたん別のウィンドウがでてきて、問題が発生したためプログラムを終了します的なことを言われて終わってしまうのです。

別のウィンドウ???どんなウィンドウですか?「整数を入力」とあるので、scanf() かなにかでアドレス演算子を付けないとかの"メモリアクセス違反"系のバグかなあ?

ほほほのほほほほのほ 2014/02/14 06:19 あらき先生、
わかりました。おっしゃる通り、scanf を使っていたのです。それで、&を付けていませんでした。

scanf("%f", &a) とするべきを scanf("%f", a) としてました。コンパイラが指摘しそうなミスですが、なぜかそのままコンパイルできていざ実行したら問題になったようです。

オカリナオカリナ 2014/12/08 20:01 このページのとおりにやったらgfortranを入れることができました。ありがとうございます。

質問なのですが、-freal-loops を使いたいのですがunrecognized command line optionと出てしまいます。何か対処法等をご存知でしたらよろしくお願いします。

arakik10arakik10 2014/12/09 02:29 オカリナさま
> 質問なのですが、-freal-loops を使いたいのですがunrecognized command line optionと出てしまいます。何か対処法等をご存知でしたらよろしくお願いします。
古いfortranでの浮動小数点でのループのg95オプションですね。"gfortran option loop real"でググって見つけた下記のページを見ると gfortran -std=legacy hoge.f でいけそうです。
http://stackoverflow.com/questions/13406229/compile-dodgy-fortran-77-code-in-a-modern-compiler
https://gcc.gnu.org/ml/fortran/2005-05/msg00371.html

はるきちはるきち 2015/02/20 14:31 はじめまして。質問させていただきます。
tdm-gcc-4.9.2をインストールし、上記例のとおり'hello,world'のa.exeまで完了しましたが、コマンドプロンプトに
C:\Users\*****\Desktop\fortran>a.exe
このバージョンの C:\Users\*****\Desktop\fortran\a.exe は、実行中の Windows のバージョンと互換性がありません。コンピューターのシステム情報を確認して、プログラムの x86 (32 ビット) のバージョンと x64 (64 ビット) のバージョンのどちらが必要か確認してから、ソフトウェアの発行元に問い合わせてください。
となり、実行できませんでした。
fortranのインストールバージョンなのか、途中まで起動するので、テキストエディタ(メモ帳、サクラエディタ両方同じメッセージが表示された)のバージョンがだめなのかわかりません。回答の程よろしくお願いいたします。

arakik10arakik10 2015/02/20 20:51 はるきちさま
Windows OS が32bitではありませんか? gfortran -m32 test.f90 でコンパイルしてみて下さい

はるきちはるきち 2015/02/23 11:44 あらき先生
”-m32”をつけたら出来ました!ありがとうございました。
まったく別な質問ですが、知り合いよりF95ファイルとLSTファイルを頂いたので、F95ファイルをコンパイルして実行しようとしたのですが、エラーメッセージが出てしまいました。gfortran -m32 ○○○○.f95ではコンパイルできないのでしょうか?またLSTファイルに”Source file:○○.F95”となっていました。互換性があるのでしょうか?よろしくお願いいたします。

arakik10arakik10 2015/02/24 06:33 はるきちさま

>知り合いよりF95ファイルとLSTファイルを頂いた
"fortran .lst" でググると XL Fortran という特定の fortran 開発環境で生成するリスティング・ファイルのようです。fortran に限らず、一つのプログラム(実行ファイル)を作成するのに、複数のファイルを利用することは普通にあります。ただしfortran文法というよりは、個別のコンパイラの用法なので、文法の教科書には載っていません。lstの詳しいことは、実際に使っている方にたずねて下さい。

gfortran で複数のファイルからプログラムを作成する最も安直なやり方は "gfortran test1.f90 test2.f90" とファイル名を並べる方法です。次の2個のファイルを作って試してみて下さい。
test1.f90(2行)-----
CALL hello
END
-----
test2.f90(3行)-----
SUBROUTINE hello
PRINT*,"hello"
END
-----

はるきちはるきち 2015/02/25 11:02 あらき先生
コメントありがとうございました。先生からのプログラミング方法は理解しましたが、その他複数のファイルがあったので使用者に問合せしました。
内容は構造計算をするためのプログラミングです。
コマンドプロンプトにて”名称 CON 名称.TXT 名称.DAT”とキーボード入力して起動すると教えて頂き起動できました。
名称:入力 出力 データ
名称.TXT:計算結果
名称.DAT:計算データとなっていたらしいです。
CONの意味はよくわかっていません。
計算命令の方法もプログラミングできるんですね。奥が深いです。
これからもっと勉強していきます。つまずいた時にまたコメントさせて頂きます。

spitfirespitfire 2015/04/20 19:57 はじめまして。g95の導入方法がわからずさまよっていたところこのサイトを見つけました。
早速で申し訳ないのですが、質問をさせていただいてよろしいでしょうか

windows8.1、64bit版のOSにおいてcygwinのターミナルエミュレータであるmintty(ver1.1.3)を導入。その後ネット上で拾ってきたg95-MinGW.exeというアプリケーションを用いてg95を導入しました。
「g95 --version」コマンドを入力してバージョン情報が表示されるのを確認して、自分で作成したプログラムを実行しようとしたのですが
Assembler messages:
Fatal error: can't create /tmp/cc(謎の文字列).o: No such file or directory

とエラーメッセージが表示されて実行できません
gfortran(64bit対応)では問題なく実行できました。一体原因は何でしょうか・・・

arakik10arakik10 2015/04/20 20:51 spitfireさま
> Fatal error: can't create /tmp/cc(謎の文字列).o: No such file or directory
こけたファイル名が *.o なのでソースコードをコンパイルしてオブジェクトファイルをディレクトリ /tmp に吐き出そうとしてこけていますね。cygwinは日頃使っていませんが、パス /tmp に設定された Windows ディレクトリが無いとか、あってもその書込み権限が無いとかの問題ではないでしょうか。お力になれなくてすみません。

spitfirespitfire 2015/04/20 21:17 あらき先生
返答ありがとうございます
minttyのバージョンをよく確認したところ、64bitに対応していないことがわかりました
(x86_64-pc-cygwin)とついたものをインストールして実行した結果、無事プログラムの実行に成功しました

初歩的なミスで申し訳ありません

yuzuyuzu 2015/08/24 21:14 はじめまして。超初歩的な質問で誠に恐縮です。
FortranでのI/Oに関してご質問させてください。

あらき先生のHPを拝見し、gfortranを導入いたしました。
(バージョンは、tdm64-gcc-5.1.0-2.exeです)

その後、以下の簡単なプログラムで動作確認を致しました。

program fileIO
implicit none
integer i, j, k

write (*,*) '1'

open(17,file='mydata.dat', status='replace')
write (17,*) 100, 200, 300
write (17,*) 400
write (17,*) 500, 600
close(17)

write (*,*) '2'

open(18,file='mydata.dat', status='old')
read (18,*) i, j, k
print *, i, j, k
read (18,*) i
print *, i
read (18,*) i, j
print *, i, j
close(18)

write (*,*) '3'

end program fileIO

その結果、
1

Program received signal SIGSEV: Segmentation fault - invalid memory reference.

Backtrace for this error:
#0 ffffffffffffffff
.
.
.

といった実行エラーが出力されます。
(mydata.datは同じフォルダ内に存在します)

おそらく、ファイルのopenがうまく出来て
いないかと思いますが、どうしてもこのエラー
が解決できず困っています。

何卒ご教授いただければ幸甚に存じます。

arakik10arakik10 2015/08/26 16:22 yazuさま、
このコードがこちらの手元の環境ではコンパイルし走りましたので、fortranコードの問題ではないと思います。ランタイム環境の問題のようにも思えますが、はっきりとしたことは分かりません。ただ問題を特定するには、このような「長い」コードではなく

open(17,file='mydata.dat', status='replace')
close(17)
end

のような絞り込んだコードから徐々に付け足すようにしてコードがコケる条件を探った方がよいと思います。お力になれなくてすみません。

yuzuyuzu 2015/08/30 10:27 あらき様

ご返答頂き、誠にありがとうございます。

コード自体に問題なしと判明したことは成果でした。
「ランタイム環境の問題」とのご指摘を頂きましたので、
以下の条件にて同一のプログラムを実行してみました。

1. Windows8、64bit
2. Windows7、64bit
3. Windows7、32bit

その結果、3. Windows7、32bit 環境のみにおいて実行ができました。
現状、原因は不明です。ご連絡、ありがとうございました。

NN 2015/09/19 16:53 はじめまして.
ここ数年,gfortranを使っているものです.

先日,PCのトラブルでWindows 7(64bit)を再インストールし,TDM-GCCも最新版(5.1,64bit)のものをインストールたところ,spitfireさんとほぼ同じセグメンテーションエラーが発生するようになりました.

周りの人にも聞いてみると,「最近」GCCを導入した人たちは,ことごとく同様のエラーとなっているようです.

TDM-GCC's SourceForge bug trackerでも,同様の報告があり,本家GCC 5.2では修正されているとのことです.
http://sourceforge.net/p/tdm-gcc/bugs/281/
私は知識が無いので,TDMのインストーラが出てくるのを待つしかありませんが...

以上,ご参考まで.
続報ありましたら,またご報告させて頂きたく思います.

arakik10arakik10 2015/09/20 04:52 Nさま、貴重な情報をありがとうございます。たすかります。

koyamakoyama 2015/12/19 17:35 はじめまして
OPEN 文のエラーでこまっていました。
gfortran GCC 4.9 で作成していた EXE も実行できなくなりました。
同様のエラーとなります。