次のプログラム (SQUARES) は Fortran Console アプリケーション・プロジェクト・タイプ を使用します。SQUARES プログラムは datafile.dat から書式付きデータを読み取り,計算結果を表示します。次に示すソース・コードでは,期待される結果は生成されません。
PROGRAM SQUARES INTEGER INARR(10), OUTARR(10), I, K ! データ・ファイルから入力配列を読み込みます。 OPEN(UNIT=8, FILE='datafile.dat', STATUS='OLD') READ(8,*,END=5) N, (INARR(I), I=1,N) 5 CLOSE (UNIT=8) ! すべての非ゼロ要素の 2 乗を計算し,OUTARR に保存します。 K = 0 DO I = 1, N ! エラーがこのDOループにある? IF (INARR(I) .NE. 0) THEN OUTARR(K) = INARR(I)**2 ENDIF END DO ! 計算結果を出力し,プログラムを終了します。 PRINT 20, N 20 FORMAT (' Total number of elements read is', I4) PRINT 30, K 30 FORMAT (' Number of nonzero elements is', I4) DO I = 1, K PRINT 40, I, OUTARR(I) 40 FORMAT(' Element', I4, ' has value', I6) END DO END PROGRAM SQUARES
書式付きファイル datafile.dat は,現時点では,次のものを含む 1 つの記録を含んでいます。
配列要素数を示す整数値。値は 4
4 つの整数型配列要素の個々の値
この書式付きデータ・ファイルの値を Microsoft ビジュアル開発環境で見るには,「File」メニューの「Open」を使用します。
配列境界検証なし (/check:nobounds オプション) で実行したときの出力を,次図に示します。
配列境界検証をオンにしてプログラムを実行すると,出力は次図のようになります。
このプログラムは,コマンド行からビルドすることも,ビジュアル開発環境からビルドすることもできます (「プログラムのデバッグ準備」を参照)。この例では,プロジェクト・ワークスペースがすでに存在していると仮定しています。
このプログラムをデバッグ
「Compaq Visual Fortran 6」プログラム・フォルダから,ビジュアル開発環境を起動します。
「File」メニューの「Open Workspace」をクリックします。
ワークスペース・ウィンドウの「FileView」タブをクリックします。ワークスペース・ウィンドウが表示されない場合は,「View」メニューの「Workspace」をクリックします。
次のツールバーが表示されます。
Build ツールバー
Standard ツールバー
Fortran ツールバー
表示されるツールバーを変更するには,「Tools」メニューの「Customize」を選択し,「Toolbars」タブをクリックします。ツールバーを移動するには,そのアンカー (ツールバーの左にある二重縦線) をドラッグします。
OPEN(UNIT=8, FILE='datafile.dat', STATUS='OLD')
テキスト・エディタ/デバッガー・ウィンドウの左欄にある赤色の円は,ブレークポイントが設定されている場所を示しています。
次図に示すように,「Build」メニューの「Start Debug」の「Go」をクリックします。
ビジュアル開発環境のタイトルバーに,「Build」メニューの代わりに「Debug」メニューが表示されます。また,それまで表示されていなかった場合,「Debug」ツールバーが表示されます。
必要ならば,別のブレークポイントを設定し,ブレークポイントを追加または削除したい行にカーソルを置いて,次のいずれかの操作を行うことができます。
「Build」ツールバーで,「Set/Remove Breakpoint」ボタンをクリックします。
「Edit」メニューで,「Breakpoints」をクリックします。ブレークポイントの設定または設定解除,式の評価,およびその他の機能を実行できるダイアログボックスが表示されます。
ソース・コードの行を辿ります。これは,「Debug」メニューの「Step Over」(次図) か,「Debug」ツールバーの「Step Over」ボタンで行えます。
エラーは変数 K の値に関係しているようです!
! すべての非ゼロ要素の 2 乗を計算し,OUTARR に保存します。 K = 0 DO I = 1, N IF (INARR(I) .NE. 0) THEN K = K + 1 ! この行を追加します。 OUTARR(K) = INARR(I)**2 ENDIF END DO
「Debug」メニューの「Stop Debugging」をクリックします。
「Build」メニューの「Build Squares.exe」をクリックします。
「Build」メニューの「Execute Squares.exe」をクリックするか,「Build」ツールバーの感嘆符 (!) をクリックします。
出力画面を次図に示します。
「Build」メニューの「Start Debug」の「Go」をクリックします。
「Locals」タブを使うと,配列を含めて,局所変数値を見ることができます。配列要素を見るには,プラス記号 (+) をクリックします。
「Variables」ウィンドウは (「Context:」という単語の後に)「Context」メニューを表示します。「Context」メニューは例外をデバッグするときに役立ちます。
「Locals」タブでは,モジュール変数やその他の局所変数ではない変数を表示することはできません。局所変数ではない変数を表示するには,次図のように「Watch」ウィンドウを表示します。
次図のように,テキスト・エディタ・ウィンドウで変数名 INARR (添字構文なし) を選択し,ドラッグし,「Watch」ウィンドウにドロップします。
また,OUTARR 配列名も「Watch」ウィンドウにドラッグします。OUTARR 変数名の左にあるプラス記号 (+) をクリックすると,その配列要素の値が表示されます。
「Debug」ツールバーの「Step Over」ボタンを使って,プログラムの行を実行します。プログラムの実行中も,スカラー変数値を「Data Tips」機能で表示し,「Watch」ウィンドウで配列 (またはその他の変数) の値を見ることができます。
プログラムが実行を完了すると,画面は次図のようになります。
「Disassembly」ウィンドウ (ソース・コードと機械語コードを表示) が予期せず表示された場合,必要であれば,「Disassembly」ウィンドウ を閉じるために,「Debug」ツールバーの「Step Over」ボタンをクリック (または「Debug」メニューの「Step Out」を選択) します。
Visual Fortran プロフェッショナル版では,Array Viewer を使って複次元配列要素値を表示し,グラフにすることができます。
関連情報
Fortran データ型の表示方法については,「デバッガーでの Fortran データ型の表示」を参照してください。
Array Viewer で配列値を表示する方法については,「デバッガーでの Array Viewer の使用」を参照してください。
プログラム内のエラーの場所を特定する方法については,「デバッガーで実行時エラーの場所を特定する方法」を参照してください。
デバッガーのその他の機能については,『Visual C++ Users Guide』のデバッガーの節を参照してください。