- Fortran Builder は OS X のどのバージョンに対応していますか? [答え]
- USB キーを破損してしまいました.新しい USB キーを貰えますか? [答え]
- フローティングライセンスなど,USB キー以外のライセンス形態での利用は可能ですか? [答え]
- プロジェクトとは何ですか? [答え]
- プロジェクトは必ず作らなければいけないのですか? [答え]
- 「duplicate symbol _main in:」というリンクエラーが出てプログラムがビルドできません. [答え]
- 「実行」ボタンが灰色のままでボタンが押せず,プログラムの実行ができません. [答え]
- 「コンパイル」,「ビルド」,「リビルド」の違いを教えてください. [答え]
- 「実行」と「デバッグ実行」の違いを教えてください. [答え]
- デバッグ実行時の「ステップオーバー」と「ステップイン」の違いを教えてください. [答え]
- 実行時の引数を設定できますか? [答え]
- プログラムの実行時診断(実行時エラーの検出)機能を使うにはどうすれば良いですか? [答え]
- メモリリークがあるかどうかを調べる方法を教えてください. [答え]
- プログラムの最適化(-On )を行うにはどうすれば良いですか? [答え]
- 固定形式のプログラム(*.f, *.for)を自由形式のプログラム(*.f90)に変換できますか? [答え]
- ソースプログラムの整形機能(C で言うところの cb の様な機能)はありますか? [答え]
- コールグラフとは何ですか? [答え]
- ターミナル(コマンドライン)からコンパイラを単体で使用することはできますか? [答え]
- Fortran Builder には,連立一次方程式,線形最小二乗問題,固有値問題などが扱える数値計算ライブラリはバンドルされていますか? [答え]
- C の main 関数から Fortran の手続(サブルーチン,関数)を呼べますか? [答え]
- 混合言語プログラミング時の f90_init と f90_io_finish という関数は何ですか? [答え]
- Fortran 77 のプログラムをコンパイルするには,何らかのコンパイラオプションを指定する必要がありますか? [答え]
- Fortran Builder が私の古い(レガシーな)Fortran 77 のプログラムを受け付けてくれません. [答え]
- Fortran 77 と Fortran 90/95 のソースファイルが混在しているプロジェクトなのですが,コンパイルは大丈夫でしょうか? [答え]
- CDABS(A),DCMPLX(X,Y),DCONJG(Z),DIMAG(Z),DREAL(Z) はどうすれば利用できますか? [答え]
- 関数 getarg はありますか? [答え]
- 関数 getenv はありますか? [答え]
- 関数 flush はありますか? [答え]
- 関数 system はありますか? [答え]
- 関数 fdate を含むプログラムのコンパイルができません. [答え]
- 関数 dtime や etime を含むプログラムのコンパイルができません. [答え]
- 「TAB 書式入力です」という警告メッセージが出ます. [答え]
- 「数値データ型にバイト数が指定されました」という警告メッセージが出ます. [答え]
- 「KIND 値 (*) が有効な表現方法ではありません」というエラーが出てプログラムがコンパイルできません.他のコンパイラでは問題なく動いているプログラムです. [答え]
- 「入力バッファにおいてレコードが長すぎます」または「出力においてバッファオーバーフローが発生しました」というエラーはどういうことでしょうか? [答え]
-
実行ファイルを他のマシンで実行しようとするとエラーが出て実行ができません.Fortran Builder では,正しく実行できていたプログラムです.
( "dyld: Library not loaded: /usr/local/lib/nAG_Fortran/libf60rts.dylib" といったメッセージが表示されます.) [答え] - 「警告:浮動小数アンダーフローが発生しました」という警告メッセージがプログラムの実行時に出ます. アンダーフローがどこで発生したかを調べる方法はありますか? [答え]
- 「警告:浮動小数アンダーフローが発生しました」という警告メッセージがプログラムの実行時に出ます. この警告メッセージの出力を抑止することはできますか? [答え]
- 4倍精度をサポートしていますか? [答え]
- 編集記述子 $(改行抑止)はサポートしていないのですか? [答え]
- Fortran Builder で作成したアプリケーションの再配布は可能ですか? [答え]
- Fortran の組込み関数(例えば CDEXP)をコンパイラが認識しません(コンパイルに通りません). [答え]
- RANDOM_SEED で初期化した(シードを設定した)後に RANDOM_NUMBER で乱数を生成したのですが,出力結果が明らかにランダムではありません.RANDOM_SEED の正しい使い方を教えてください. [答え]
- 「Undefined symbols for architecture x86_64: "_main", referenced from: ...」というリンクエラーが出てプログラムがビルドできません. [答え]
- 「実行時エラー: *** 算術例外: 浮動小数ゼロ除算 - 終了します」というエラーが出て実行が途中で止まります. [答え]
- Fortran Builder をデフォルト(出荷時の状態)に戻すことはできますか? [答え]
- デバッグ実行を行うと「ユーザ名」と「パスワード」を求められます。どうすれば良いですか? [答え]
- アンインストールの方法を教えてください。 [答え]
![]() |
「duplicate symbol _main in:」というリンクエラーが出てプログラムがビルドできません. |
![]() |
これは1つのプロジェクトに対して複数の主プログラムが存在しているために出ているリンクエラーです.
1つの実行ファイルに対して1つのプロジェクトが対応します. |
![]() |
「実行」ボタンが灰色のままでボタンが押せず,プログラムの実行ができません. |
![]() |
プログラムが実行中になっていませんか? |
![]() |
実行時の引数を設定できますか? |
![]() |
はい,可能です. (設定例: 入出力リダイレクション) < input.txt > output.txt |
![]() |
プログラムの実行時診断(実行時エラーの検出)機能を使うにはどうすれば良いですか? |
![]() |
プログラムの実行時診断(実行時エラーの検出)機能を有効にするには,Fortran Builder メニュー「プロジェクト > プロジェクトの設定 > Fortran コンパイラ > 実行時診断 > 実行時診断オプション (-C=)」を設定してください. 「標準」はコンパイラオプション -C に相当し,「ダングリングポインタ (=dangling)」,「整数オーバーフロー (=intovf)」,「未定義の変数 (=undefined)」を除く全てのチェック項目が有効になります. 「全部」はコンパイラオプション -C=all に相当し,「未定義の変数 (=undefined)」を除く全てのチェック項目が有効になります. 「オプション選択」はコンパイラオプション -C=check に相当し,チェック項目(check )を選択できます. ※ オプションの詳細は Fortran Builder ヘルプ「nAG Fortran Compiler, Release 6.2 マニュアル - 2.4 コンパイラオプション」をご参照ください. Fortran Builder は検出された実行時エラーのメッセージをメッセージウィンドウに出力します.
補足: |
![]() |
メモリリークがあるかどうかを調べる方法を教えてください. |
![]() |
プログラムのメモリトレース(メモリリークの検出)機能を有効にするには,Fortran Builder メニュー「プロジェクト > プロジェクトの設定 > Fortran コンパイラ > 実行時診断 > メモリトレースオプション (-mtrace=)」を設定してください. 「全部」はコンパイラオプション -mtrace=all に相当し,全ての詳細設定が有効になります. 「オプション選択」はコンパイラオプション -C=trace_opt_list に相当し,詳細設定(trace_opt_list )を選択できます. ※ オプションの詳細は Fortran Builder ヘルプ「nAG Fortran Compiler, Release 6.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 メニュー「プロジェクト > プロジェクトの設定 > 基本設定 > 最適化設定」を指定してください. Fortran Builder(nAG Fortran Compiler)はデフォルトでは「最適化なし」(-O0 に相当)が設定されています. ※ オプションの詳細は Fortran Builder ヘルプ「nAG Fortran Compiler, Release 6.2 マニュアル - 2.4 コンパイラオプション」をご参照ください. |
![]() |
ターミナル(コマンドライン)からコンパイラを単体で使用することはできますか? |
![]() |
はい,ターミナル(コマンドライン)からコンパイラ(nAG Fortran Compiler)を単体で使用することも可能です.
|
![]() |
関数 getarg はありますか? |
![]() |
はい,Fortran Builder(nAG Fortran Compiler)は多くの 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 Compiler)は多くの 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 Compiler)は多くの 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 Compiler)は多くの POSIX システムコールを独自の組込みモジュールで提供しています.
しかしながら Fortran 標準準拠の観点からは,Fortran 2008 から導入された組込みサブルーチン execute_command_line の利用が推奨されます. program execute_example implicit none call execute_command_line('echo hello execute') end program |
![]() |
「TAB 書式入力です」という警告メッセージが出ます. |
![]() |
TAB 書式は Fortran 標準では拡張機能に位置づけられます. |
![]() |
実行ファイルを他のマシンで実行しようとするとエラーが出て実行ができません.Fortran Builder では正しく実行できていたプログラムです. ( "dyld: Library not loaded: /usr/local/lib/nAG_Fortran/libf60rts.dylib" といったエラーが表示されます.) |
![]() |
Fortran Builder メニュー「プロジェクト > プロジェクトの設定 > リンク > Fortran リンクオプション > Fortran ランタイムライブラリの非共有(静的)バージョンの結合 (-unsharedrts)」(コンパイラオプション -unsharedrts に相当)にチェックを入れて,再度ビルドを行ってください.
このオプションを指定しますと,nAG Fortran Compiler の実行時ライブラリがスタティックリンクされます. ※ オプションの詳細は Fortran Builder ヘルプ「nAG Fortran Compiler, Release 6.2 マニュアル - 2.4 コンパイラオプション」をご参照ください. ※ Fortran Builder のプロジェクト設定(またはクイック実行設定)はデフォルトではオプション -unsharedrts にチェックが入っていません. または,実行時ライブラリをスタティックリンクしたくない場合(つまり,オプション -unsharedrts を付けない場合)は,実行ファイルと共に実行時ライブラリが必要となります. その場合,以下の実行時ライブラリをコピーしてご利用ください. 64-bit アプリケーション(実行ファイル)の場合: /usr/local/lib/nAG_Fortran/libf60rts.dylib 32-bit アプリケーション(実行ファイル)の場合: /usr/local/lib/nAG_Fortran/x86_32/libf60rts.dylib |
![]() |
4倍精度をサポートしていますか? |
![]() |
はい,サポートしています. Fortran Builder(nAG Fortran Compiler)が提供するデータ型の詳細は Fortran Builder ヘルプ「nAG Fortran Compiler, Release 6.2 マニュアル - 2.16 データ型」をご参照ください. 《 補足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倍精度に対応した個別名は定義されていません. |
![]() |
Fortran Builder をデフォルト(出荷時の状態)に戻すことはできますか? |
![]() |
はい,可能です. Fortran Builder メニュー「ツール > 設定 > Fortran Builder の初期化」をご利用ください. ※ この操作によって,ユーザー作成のファイル(ソースファイルなど)が消えることはありません. |