インテル® Fortran コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

check

ランタイム時に特定の条件をチェックします。

構文

Linux* および macOS*:

-check [keyword[, keyword...]]

-nocheck

Windows*:

/check[:keyword[, keyword...]]

/nocheck

引数

keyword

確認する条件を指定します。設定可能な値は以下のとおりです。

none

すべての check オプションを有効にします。

[no]arg_temp_created

ルーチン呼び出し前に一時記憶域にコピーされた実引数の確認を行うかどうかを指定します。

[no]assume

ASSUME ディレクティブの scalar-Boolean-expression が .TRUE. か、あるいは ASSUME_ALIGNED ディレクティブ内のアドレスが指定されたバイト境界でアライメントされているかをテストするチェックを行うかどうかを決定します。

[no]bounds

配列の添字および部分文字列を処理する式に対して、確認を行うかどうかを指定します。

[no]contiguous

ポインター代入時にポインターが連続していることを確認するかどうかを指定します。

[no]format

出力用に書式化される項目のデータ型の確認を行うかどうかを指定します。

[no]output_conversion

指定された書式記述子フィールド内のデータ項目における適合性の確認を行うかどうかを指定します。

[no]pointers

関連付けが解除されたポインター、または初期化されていないポインター、あるいは割付けられていない割付けオブジェクトのチェックを行うかどうかを指定します。

[no]stack

スタックフレームのチェックを行うかどうかを指定します。

[no]uninit

初期化されていない変数の確認を行うかどうかを指定します。

all

すべての check オプションを有効にします。

デフォルト

nocheck

ランタイムエラーをチェックしません。vms オプションを指定する場合、デフォルトは check format および check output_conversion です。

説明

このオプションは、ランタイム時に特定の条件を確認します。

オプション

説明

check none

すべての check オプションを無効にします (nocheck と同じ)。

check arg_temp_created

ルーチンが呼び出される前に、実引数が一時的な記憶域にコピーされているかどうかのランタイムチェックを有効にします。コピーがランタイム時に作成されている場合は、メッセージが表示されます。

check assume

ASSUME ディレクティブの scalar-Boolean-expression が .TRUE. で、ASSUME_ALIGNED ディレクティブ内のアドレスが指定されたバイト境界でアライメントされているかどうかのランタイムチェックを有効にします。.FALSE. と評価された場合、ランタイムエラーが報告され、実行は終了します。

check bounds

配列の添字および部分文字列を処理する式に対して、コンパイル時およびランタイム時のチェックを有効にします。配列添字が配列に設定された次元境界を超えていたり、文字長を超えている場合、エラーが報告されます。

配列に対しては、個々の次元で境界がチェックされます。仮引数の配列では、上限が * か、上限と下限が両方 1 の次元の場合、下限のみがチェックされます。

LBOUND など、DIM= 次元引数を指定する一部の組込み関数では、指定された次元が処理が行われる配列の宣言されたランク外の場合にエラーがレポートされます。

プログラムのデバッグが終了したら、このオプションを省略することで、実行ファイルのサイズを小さくして、ランタイム・パフォーマンスを若干向上させることができます。

最適化されていないコードでは境界チェックを行うことを推奨します。最適化されているコードに check bounds オプションを使用すると、境界値に (メモリー位置ではなく) レジスターが使用されるため、不適切なメッセージが表示されることがあります。

check contiguous

ポインター代入時にポインターが連続していることを確認するように指定します。これは、連続するポインターを連続していないオブジェクトに代入するなどのプログラミング・エラーを回避するのに役立ちます。

check format

出力用に書式化される項目のデータ型が FORMAT 記述子と一致しない場合、致命的なランタイムエラー FORVARMIS を発行します (例: 編集記述子 I によって REAL*4 項目の書式が設定された場合)。

check noformat では、データ項目の長さが足りない場合 (例: INTEGER*2 項目を編集記述子 E に渡すとエラーになります) を除き、データ項目の書式は指定した記述子を使用して設定されます。

check output_conversion

データ項目が大きすぎるため、指定された書式フィールドの長さにすべての桁数が収まらない場合は、継続可能なランタイム・エラー・メッセージ OUTCONERR を発行します。書式の切り捨てが発生し (フィールドがアスタリスク (*) で埋められ)、実行が続けられます。

check pointers

関連付けが解除されたポインターや初期化されていない Fortran ポインター、割付けられていない割付けオブジェクト、および初期化されていない整数ポインターのランタイムチェックを有効にします。

check stack

スタックフレームのチェックを有効にします。バッファー・オーバーランとバッファー・アンダーランがチェックされます。このオプションは、ローカル変数の初期化とスタックポインターの確認も行います。

このオプションは、最適化を無効にし、O オプションで設定されるすべての最適化レベルよりも優先されます。

check uninit

初期化されていない変数のランタイムチェックを有効にします。変数が書き込まれる前に読み取られる場合、ランタイム・エラー・ルーチンが呼び出されます。SAVE 属性を持たない INTEGER、REAL、COMPLEX、または LOGICAL の各組込み型ローカルスカラー変数のみチェックされます。

初期化されていない配列や配列要素を検出するには、[Q]init オプションまたは「インテル® Fortran での初期化されていない浮動小数点変数の検出」(https://software.intel.com/articles/detection-of-uninitialized-floating-point-variables-in-intel-fortran (英語)) を参照してください。

check all

すべての check オプションを有効にします。これは、keyword なしで check を指定するのと同じです。

このオプションは、最適化を無効にし、O オプションで設定されるすべての最適化レベルよりも優先されます。

エラーの発生場所についての詳細な情報を得るには、traceback オプションを使用します。

IDE オプション

Visual Studio*:

[Run-time (ランタイム)] > [Runtime Error Checking (ランタイム・エラー・チェック)] (/nocheck/check:all)

[Run-time (ランタイム)] > [Check Array and String Bounds (配列と文字列範囲のチェック)] (/check:bounds)

[Run-time (ランタイム)] > [Check Uninitialized Variables (初期化されていない変数のチェック)] (/check:uninit)

[Run-time (ランタイム)] > [Check Edit Descriptor Data Type (書式のデータ型のチェック)] (/check:format)

[Run-time (ランタイム)] > [Check Edit Descriptor Data Size (書式の切り捨てのチェック)] (/check:output_conversion)

[Run-time (ランタイム)] > [Check For Actual Arguments Using Temporary Storage (一時記憶域を使用する実引数のチェック)] (/check:arg_temp_created)

[Run-time (ランタイム)] > [Check For Null Pointers and Allocatable Array References (NULL ポインターと割付け可能な配列参照のチェック)] (/check:pointers)

Eclipse*: なし

Xcode*: [Run-time (ランタイム)] > [Runtime Error Checking (ランタイム・エラー・チェック)] (-check all、-check none)

[Run-time (ランタイム)] > [Check Array and String Bounds (配列と文字列範囲のチェック)] (-check [no]bounds)

[Run-time (ランタイム)] > [Check Edit Descriptor Data Type (書式のデータ型のチェック)] (-check [no]format)

[Run-time (ランタイム)] > [Check Edit Descriptor Data Size (書式の切り捨てのチェック)] (-check [no]output_conversion)

[Run-time (ランタイム)] > [Check For Actual Arguments Using Temporary Storage (一時記憶域を使用する実引数のチェック)] (-check [no]arg_temp_created)

[Run-time (ランタイム)] > [Check Uninitialized Variables (初期化されていない変数のチェック)] (-check [no]uninit)

[Run-time (ランタイム)] > [Check For Null Pointers and Allocatable Array References (NULL ポインターと割付け可能な配列参照のチェック)] (/check:[no]pointers)

[Run-time (ランタイム)] > [Check Stack Frame (スタックフレームのチェック)] (/check:[no]stack)

代替オプション

check none

Linux* および macOS*: -nocheck

Windows*: /nocheck

check bounds

Linux* および macOS*: -CB

Windows*: /CB

check uninit

Linux* および macOS*: -CU

Windows*: /RTCu/CU

check all

Linux* および macOS*: -check-C

Windows*: /check/C

関連情報