========================= Fortranでコンパイル ========================= .. toctree:: :maxdepth: 1  エディタを使ってプログラムコードを記述し,コンパイルそして実行をする. .. index:: unix command CygwinはUnixコマンド ============================ Cygwinのインストールがうまくいっていれば,デスクトップに以下のようなショートカットができているはずである. ダブルクリックして起動しよう. .. image:: ../img/300cygwin_shortcut.PNG :scale: 100 % :alt: cygwin shortcut すると,以下のようなウインドウが起動する.見た目が少々違うかもしれない. ウインドウ上で右クリックすると現れるメニューの中の「Options/Looks」などで色々と変更できる. .. image:: ../img/301cygwin_terminal.PNG :scale: 70 % :alt: cygwin terminal 「ls」と打ちこんでEnterを押してみよう. .. image:: ../img/302unix_ls.PNG :scale: 70 % :alt: unix command lsはリストの意味のunixコマンドで,今いる場所にあるファイルやフォルダを知ることができる. インストール直後はファイルもフォルダも作っていないはずなので何もあらわれない. 私の画面では,ball_throw等の3つのフォルダがある. 今いる場所とは,上の画面に写りこんでいるwindowsのエクスプローラ画面からわかるように Cドライブ/cygwin64/home/kentaroなどのような場所のはずである. | 「ls -la」と打ちこむと,隠しファイルも含めた詳細情報を得ることができる. 「ls --help」のようにコマンドの後ろに「--help」(ハイフンは2個)をつけると,コマンドの使用方法,オプションの機能が表示される. .. note:: -aは「.」で始まる要素を無視しない.-lは詳細リスト形式を表示する.併せて「-la」あるいは「-al」である.どちらでもよい. .. index:: text editor テキストエディタでプログラムコードの記述 ============================================= Fortarnのプログラムコードをテキストエディタを使って記述する. テキストエディタとは,名前の通り文字情報を作成・編集・保存できるソフトウェアである. CygwinではViというエディタが使えるが,私は全く使いこなせない. 世の中にはいろいろなテキストエディタがあるので,自分にあったものを選べばよい. 私はpythonで使った `>> Spyder <../python/04with_editor.html>`_ を使っている.(特に何かおすすめできる点があるわけではない.) テキストエディタを使って,以下のコードを記述する. .. code-block:: fortran :linenos: program main write(*,*) 'Hello,world!' end program main 保存の際には,filename.f90のように「f90」という拡張子をつける. .. note:: 他にも,f77やf2kといった拡張子がある.これはfortranの仕様の違いによる.ここではfotran90/95の仕様に基づいてコードをつくる.このときの拡張子がf90である. .. index:: compile with fortran コンパイル ============== 上記のファイルを保存したCygwin環境下で「ls」する. .. image:: ../img/303ls_f90.PNG :scale: 70 % :alt: list f90file 01_hello.f90というファイルがある. 「gfortran」というコマンドに続けて,作成したファイル名を打ちこむ. :: $ gfortran 01_hello.f90 しばらく時間が経過し,ターミナルが元の状態(コマンドを受け付けてくれる)に戻ったら再度「ls」してみよう. 「a.exe」というファイルが増えているはずである. このファイルがコンパイルにより生成された実行ファイルである. .. note:: 生成される実行ファイルの名前を変えることができる.「$ gfortran.exe 01_hello.f90 -o hello.exe」とすれば「hello.exe」と言う名前の実行ファイルができる. .. index:: exe 実行 ========= ターミナルで, :: $ ./a.exe と打ちこむ.これで実行ファイルが実行される.次の行に「 Hello,world!」と印字されるはずである. はじめの「./」は,今いる場所を示していて,つまり今いる場所にある実行ファイルa.exeを実行しろ,と命令している. .. note:: 「$ ./a.exe > temp.dat」 とすると,write文による(標準)出力先がtemp.datに変更される(リダイレクト).ターミナルにはなにも表示されないが,temp.datというファイルが新たに生成されて,そこに「 Hello,world!」が印字される. .. note:: 「$ ./a.exe &」とすると,バックグラウンドで実行される.実行が完了する前でも他の命令を実行できる.実行の完了までに長い時間がかかる場合などに有用である. 間違えたら ================= コードに間違いがあると,エラーが表示され,実行ファイルは生成されない. たとえば,先のプロフラムでHello,world!の右側のアポストロフィ「'」を付け忘れたままコンパイルをすると, :: 01_hello.f90:3.16: write(*,*) 'Hello,world! 1 エラー: Unterminated character constant beginning at (1) | となる.1の位置ではじまった文字列が閉じられていない,と教えてくれている. | 実行ファイルは生成されるけど,意図したとおり計算していない...ほうがよほどたちが悪いが,すくなくともエラーがあると実行できないので,がんばってエラーを消そう. お役立ちサイト ======================= Fortranの基礎 `>> NagのFortran入門 `_