- Fortran Builder は Windows のどのバージョンに対応していますか? [答え]
- USB キーを破損してしまいました.新しい USB キーを貰えますか? [答え]
- フローティングライセンスなど,USB キー以外のライセンス形態での利用は可能ですか? [答え]
- プロジェクトとは何ですか? [答え]
- プロジェクトは必ず作らなければいけないのですか? [答え]
- 既存のソースファイルを編集エリアに開いたら,文字化けして内容が表示されません. [答え]
- 「multiple definition of `main'」というリンクエラーが出てビルドに通りません. [答え]
- 「実行」ボタンが灰色のままでボタンが押せません. [答え]
- 「コンパイル」,「ビルド」,「リビルド」の違いを教えてください. [答え]
- 「実行」と「デバッグ実行」の違いを教えてください. [答え]
- デバッグ実行時の「ステップ実行」と「トレース実行」の違いを教えてください. [答え]
- 実行時の引数を設定できますか? [答え]
- プログラムを実行するとコマンドプロンプトが一瞬で消えてしまいます. [答え]
- テキストの矩形選択はできますか? [答え]
- プログラムの実行時診断(実行時エラーの検出)機能を使うにはどうすれば良いですか? [答え]
- メモリリークがあるかどうかを調べるにはどうすれば良いですか? [答え]
- プログラムの最適化(-On )を行うにはどうすれば良いですか? [答え]
- 固定形式のプログラム(*.f, *.for)を自由形式のプログラム(*.f90)に変換できますか? [答え]
- ソースコードの整形機能はありますか? [答え]
- コールグラフとは何ですか? [答え]
- コマンドラインからコンパイラを単体で使用することはできますか? [答え]
- 線形方程式や固有値問題を解くための数値計算ライブラリはバンドルされていますか? [答え]
- C から Fortran の手続(サブルーチン,関数)を呼べますか? [答え]
- C と Fortran の混合プログラミング時の __nAGf90_rts_init と __nAGf90_io_finish という関数は何ですか? [答え]
- Fortran 77 のプログラムをコンパイルするには,何らかのコンパイラオプションが必要ですか? [答え]
- 古い Fortran プログラム(レガシーコード)がコンパイルに通りません. [答え]
- 固定形式と自由形式のソースファイルが混在しているプロジェクトなのですが,コンパイルは大丈夫でしょうか? [答え]
- CDABS(A),DCMPLX(X,Y),DCONJG(Z),DIMAG(Z),DREAL(Z) はどうすれば利用できますか? [答え]
- 関数 getarg はありますか? [答え]
- 関数 getenv はありますか? [答え]
- 関数 flush はありますか? [答え]
- 関数 system はありますか? [答え]
- 手続(サブルーチン,関数)fdate がコンパイルに通りません. [答え]
- サブルーチン idate がコンパイルに通りません. [答え]
- 関数 dtime や etime がコンパイルに通りません. [答え]
- 「TAB 書式入力です」という警告メッセージが出ます. [答え]
- 「数値データ型にバイト数が指定されました」という警告メッセージが出ます. [答え]
- 「KIND 値 (*) が有効な表現方法ではありません」というエラーが出てコンパイルに通りません. [答え]
- 「入力バッファにおいてレコードが長すぎます」または「出力においてバッファオーバーフローが発生しました」というエラーはどういう意味ですか? [答え]
- コマンドプロンプトからプログラムを実行すると「Press ENTER to continue--」が表示されずに(一時停止せずに)終了します. [答え]
- 「変数 ** のサイズ (*********** バイト) が大きすぎます」というエラーが出てコンパイルに通りません. [答え]
- 「C:¥...¥*.exe は有効な Win32 アプリケーションではありません.」というエラーが出てプログラムが実行できません. [答え]
- デバッグ実行時に「ステップ実行」や「トレース実行」を行っているのにプログラムが最後まで走ってしまい1ステップで停止しません. [答え]
- OpenGL のテンプレートプログラムを実行したのですが,ウィンドウを「閉じる」ボタンで閉じてもプログラムが終了しません. [答え]
- 実行ファイル(*.exe)を他の PC で実行しようとすると,lib64f71rts.dll または libf71rts.dll が見つからない旨のエラーが出て実行できません. [答え]
- 「警告:浮動小数アンダーフローが発生しました」という警告メッセージが実行時に出ます.アンダーフローの発生箇所を調べる方法はありますか? [答え]
- 「警告:浮動小数アンダーフローが発生しました」という警告メッセージが実行時に出ます.この警告メッセージの出力を抑止することはできますか? [答え]
- 4倍精度をサポートしていますか? [答え]
- 編集記述子 $(改行抑止)はサポートしていないのですか? [答え]
- Fortran Builder で作成したアプリケーションの再配布は可能ですか? [答え]
- Fortran の組込み関数(例えば,CDEXP)がコンパイルに通りません. [答え]
- 「外部例外 EEFFACE」->「メモリが足りません」というエラーが出てビルドに通りません. [答え]
- RANDOM_SEED で初期化した(シードを設定した)後に RANDOM_NUMBER で乱数を生成したのですが,出力結果が明らかにランダムではありません.RANDOM_SEED の使い方を教えてください. [答え]
- 「crt0_c.c(18): `WinMain' が参照できません.」または「main.c(0): undefined reference to `WinMain@16'」というリンクエラーが出てビルドに通りません. [答え]
- 「実行時エラー: *** 算術例外: 浮動小数ゼロ除算 - 終了します」というエラーが出て実行が途中で止まります. [答え]
- 「変数 ** はSAVE属性を指定するには大きすぎます(*********** バイト)」というエラーが出てコンパイルに通りません. [答え]
- 「... R_X86_64_PC32 against symbol ...」というリンクエラーが出てビルドに通りません. [答え]
- 「このアプリはお使いの PC では実行できません」というメッセージが出てプログラムが実行できません. [答え]
- NAMELIST を入力するときに,自動的に他のリストをスキップすることはできますか? [答え]
- 64-bit OS 環境で 32-bit 実行ファイルを生成することはできますか? [答え]
- Fortran Builder をデフォルト(出荷時の状態)に戻すことはできますか? [答え]
既存のソースファイルを編集エリアに開いたら,文字化けして内容が表示されません. | |
ソースファイルの文字コードが Shift-JIS でない可能性があります. Fortran Builder は Shift-JIS のファイルのみをサポートします. (適当なテキストエディタなどを用いて,)文字コードを Shift-JIS に変更してご利用ください. |
「multiple definition of `main'」というリンクエラーが出てビルドに通りません. | |
これは1つのプロジェクトに対して複数の主プログラムが存在しているために出ているリンクエラーです.
1つの実行ファイルに対して1つのプロジェクトが対応します. |
「実行」ボタンが灰色のままでボタンが押せません. | |
プログラムが実行中になっていませんか? |
デバッグ実行時の「ステップ実行」と「トレース実行」の違いを教えてください. | |
「ステップ実行」と「トレース実行」は,デバッグ実行時にプログラムが一時停止した状態からプログラムを1行ずつ実行します. |
実行時の引数を設定できますか? | |
はい,可能です. 設定例(標準入出力のリダイレクション): < input.txt > output.txt |
プログラムを実行するとコマンドプロンプトが一瞬で消えてしまいます. | |
標準入力のリダイレクションに,存在していないファイルが指定されていませんか? |
テキストの矩形選択はできますか? | |
はい,可能です. |
プログラムの実行時診断(実行時エラーの検出)機能を使うにはどうすれば良いですか? | |
プログラムの実行時診断(実行時エラーの検出)機能を有効にするには,Fortran Builder メニューバー「プロジェクト > プロジェクトの設定」を開き, Fortran コンパイラ > 実行時診断 > 実行時診断オプション (-C=) を設定してください. 「標準」はコンパイラオプション -C に相当し,「別名による仮変数の変更 (=alias)」,「ダングリングポインタ (=dangling)」,「整数オーバーフロー (=intovf)」,「未定義の変数 (=undefined)」を除く全てのチェック項目が有効になります. 「全部」はコンパイラオプション -C=all に相当し,「未定義の変数 (=undefined)」を除く全てのチェック項目が有効になります. 「オプション選択」はコンパイラオプション -C=check に相当し,チェック項目(check )を選択できます. ※ オプションの詳細につきましては,Fortran Builder ヘルプ「nAG Fortran Compiler, Release 7.2 マニュアル - 2.4 コンパイラオプション」をご参照ください. Fortran Builder は検出された実行時エラーのメッセージをメッセージウィンドウに出力します.
補足: |
メモリリークがあるかどうかを調べるにはどうすれば良いですか? | |
プログラムのメモリトレース(メモリリークの検出)機能を有効にするには,Fortran Builder メニューバー「プロジェクト > プロジェクトの設定」を開き, Fortran コンパイラ > 実行時診断 > メモリトレースオプション (-mtrace=) を設定してください. 「全部」はコンパイラオプション -mtrace=all に相当し,全ての詳細設定が有効になります. 「オプション選択」はコンパイラオプション -C=trace_opt_list に相当し,詳細設定(trace_opt_list )を選択できます. ※ オプションの詳細につきましては,Fortran Builder ヘルプ「nAG Fortran Compiler, Release 7.2 マニュアル - 2.4 コンパイラオプション」をご参照ください.
「ファイル出力と IDE 表示」にチェックを入れますと,メモリトレースの結果がテキストファイル fbrmtrace.log に書き出され,編集エリアに表示されます. メモリ診断の出力例: 3 allocations No memory leaked [Allocated item 1 (size 1025) = Z'2BB0010'] [Allocated item 2 (size 1025) = Z'2BB0430'] [Allocated item 3 (size 1025) = Z'2BB0850'] [Deallocated item 2 (size 1025, at Z'2BB0430')] [Deallocated item 3 (size 1025, at Z'2BB0850')] [Deallocated item 1 (size 1025, at Z'2BB0010')]
注意: |
プログラムの最適化(-On )を行うにはどうすれば良いですか? | |
プログラムの最適化は Fortran Builder メニューバー「プロジェクト > プロジェクトの設定」を開き, 基本設定 > 最適化設定 を指定してください. これはコンパイラオプション -On (n は最適化レベル 0 ~ 4)に相当します.Fortran Builder(nAG Fortran コンパイラ)はデフォルトでは「最適化なし」(-O0 に相当)が設定されています. ※ オプションの詳細につきましては,Fortran Builder ヘルプ「nAG Fortran Compiler, Release 7.2 マニュアル - 2.4 コンパイラオプション」をご参照ください. |
コマンドラインからコンパイラを単体で使用することはできますか? | |
はい,コマンドラインからコンパイラ(nAG Fortran コンパイラ)を単体で使用することも可能です. Windows スタートメニュー「nAG Fortran Builder 7.2 > nAG Fortran 7.2 コマンドプロンプト」から,コンパイラにパスが通った状態でコマンドプロンプトを起動することができます. また,Fortran Builder メニューバー「表示 > コマンドプロンプト」から,コンパイラにパスが通った状態で(かつ,プロジェクトフォルダーをカレントフォルダーとした状態で)コマンドプロンプトを起動することができます.
|
C から Fortran の手続(サブルーチン,関数)を呼べますか? | |
はい,Fortran 2003 から導入された機能「C との相互利用可能性(Interoperability with C)」を用いて,C の関数から Fortran の手続を呼び出したり,Fortran の手続から C の関数を呼び出したりすることができます. |
固定形式と自由形式のソースファイルが混在しているプロジェクトなのですが,コンパイルは大丈夫でしょうか? | |
はい,大丈夫です. 拡張子が *.f, *.for, *.ftn のファイルに対しては固定形式で書かれたプログラムとしてコンパイルを行い,拡張子が *.f90, *.f95 のファイルに対しては自由形式で書かれたプログラムとしてコンパイルを行います. |
関数 getarg はありますか? | |
はい,Fortran Builder(nAG Fortran コンパイラ)は多くの POSIX システムコールを独自の組込みモジュールで提供しています.
しかしながら,Fortran 標準の観点からは,Fortran 2003 から導入された組込みサブルーチン get_command_argument の利用が推奨されます. program main implicit none integer :: i, length, status character(:), allocatable :: arg intrinsic :: command_argument_count, get_command_argument ! ! Display all command-line arguments. ! do i = 0, command_argument_count() call get_command_argument(i, length = length, status = status) if (status == 0) then ! ! Allocate "arg" to the correct length. ! allocate (character(length) :: arg) call get_command_argument(i, arg, status = status) if (status == 0) then ! ! Retrieved ok, display it. ! if (i == 0) then print *, 'Command = "', arg, '"' else print *, 'Argument', i, '= "', arg, '"' end if end if deallocate (arg) end if ! ! If we got some kind of error, display the error message. ! if (status /= 0) print *, 'Error', status, 'on argument', i end do end program |
関数 getenv はありますか? | |
はい,Fortran Builder(nAG Fortran コンパイラ)は多くの POSIX システムコールを独自の組込みモジュールで提供しています.
しかしながら,Fortran 標準の観点からは,Fortran 2003 から導入された組込みサブルーチン get_environment_variable の利用が推奨されます. program main ! ! This program displays the values of some environment variables; ! if they do not exist, that fact is displayed. ! implicit none call show('FRED') call show('USER') call show('USERNAME') contains subroutine show(name) character(*), intent(in) :: name character(:), allocatable :: value integer len, status intrinsic get_environment_variable call get_environment_variable(name, status = status, length = len) if (status == 1) then print *, 'Environment variable "', name, '" does not exist.' else if (status /= 0) then print *, 'Error', status, 'for environment variable "', name, '"' else allocate (character(len) :: value) call get_environment_variable(name, value = value) print *, 'Environment variable "', name, '" has the value "', value, '".' end if end subroutine end program |
関数 flush はありますか? | |
はい,Fortran Builder(nAG Fortran コンパイラ)は多くの POSIX システムコールを独自の組込みモジュールで提供しています.
しかしながら,Fortran 標準の観点からは,Fortran 2003 から導入された flush 文の利用が推奨されます. program slow_dots ! ! This program prints 10 dots, one per second, then finishes. ! use iso_fortran_env, only : output_unit implicit none integer i do i = 1, 10 write (*, '(a)', advance = 'no') '.' call delay flush (output_unit) end do print *, 'Done.' contains subroutine delay integer cps,start,now intrinsic system_clock call system_clock(count = start, Count_Rate = cps) if (start == -huge(start)) stop 'No clock.' do call system_clock(count = now) if (now < start .or. now >= start + cps) exit end do end subroutine end program |
関数 system はありますか? | |
はい,Fortran Builder(nAG Fortran コンパイラ)は多くの POSIX システムコールを独自の組込みモジュールで提供しています.
しかしながら,Fortran 標準の観点からは,Fortran 2008 から導入された組込みサブルーチン execute_command_line の利用が推奨されます. program execute_example implicit none call execute_command_line('echo hello execute') end program |
「TAB 書式入力です」という警告メッセージが出ます. | |
TAB 書式は Fortran 標準では拡張機能に位置づけられます. |
「変数 ** のサイズ (*********** バイト) が大きすぎます」というエラーが出てコンパイルに通りません. | |
32-bit 環境で配列の大きさが 2 GB を超えているために出ているエラーです. 32-bit 環境での利用可能メモリの上限は通常 2 GB となっており,そのためプログラムの作成においても配列の大きさ(の合計)の上限が 2 GB までとなります. |
実行ファイル(*.exe)を他の PC で実行しようとすると,lib64f71rts.dll または libf71rts.dll が見つからない旨のエラーが出て実行できません. | |
Fortran Builder メニューバー「プロジェクト > プロジェクトの設定」を開き, リンク > オプション > Fortran ランタイムライブラリの非共有(静的)バージョンの結合 (-unsharedrts) にチェックを入れて,再度ビルドを行ってください.
このオプションを指定しますと,nAG Fortran コンパイラのランタイムライブラリがスタティックにリンクされます. ※ オプションの詳細につきましては,Fortran Builder ヘルプ「nAG Fortran Compiler, Release 7.2 マニュアル - 2.4 コンパイラオプション」をご参照ください. ※ Fortran Builder のプロジェクト設定(または,クイック実行設定)はデフォルトではオプション -unsharedrts にチェックが入っていません.
または,ランタイムライブラリをスタティックにリンクしない場合は(つまり,オプション -unsharedrts を付けない場合は),実行ファイルと共にランタイムライブラリが必要となります. 64-bit 実行ファイルの場合:
32-bit 実行ファイルの場合:
注意: アプリケーションの再配布についての詳細は,Fortran Builder ヘルプ「32-bit アプリケーションの再配布」または「64-bit アプリケーションの再配布」をご参照ください. |
4倍精度をサポートしていますか? | |
はい,サポートしています. Fortran Builder(nAG Fortran コンパイラ)が提供するデータ型の詳細につきましては,Fortran Builder ヘルプ「nAG Fortran Compiler, Release 7.2 マニュアル - 2.17 データ型」をご参照ください. 《 補足1: 変数宣言や定数表現について 》
ポータビリティなどを考えると selected_real_kind 組込み関数を用いて,必要な有効桁数を持つ型の kind 番号を取得する方法が推奨されます. プログラム例: module my_precision implicit none ! 有効桁数から種別番号を求めるために selected_real_kind を用いる. ! 例えば p = 5 等とすると単精度,p = 15 等とすると倍精度の種別番号が取得される. integer, parameter :: wp = selected_real_kind(p = 30) end module my_precision program precision use my_precision implicit none real(wp) x ! wp には指定された有効桁数を持つ型の種別番号が格納される. complex(wp) c ! real と complex で種別番号は対応している. x = 0.1_wp ! このような方法で指定種別の定数表現が可能である. c = (0.5_wp, 1.2_wp) print *, x print *, c end program 出力例(p = 5): 0.1000000 (0.5000000,1.2000000) 出力例(p = 15): 0.1000000000000000 (0.5000000000000000,1.2000000000000000) 出力例(p = 30): .10000000000000000000000000 (0.5000000000000000000000000,1.20000000000000000000000000) 《 補足2: 組込み関数の個別名について 》
Fortran 標準では4倍精度に対応した個別名は定義されていません. |
64-bit OS 環境で 32-bit 実行ファイルを生成することはできますか? | |
はい,可能です. Fortran Builder メニューバー「プロジェクト > プロジェクトの設定」を開き, 基本設定 > ビットモード > 32-bit に切り替えてください. これにより,生成される実行ファイルは 32-bit になります. |