fortran user guide - 長崎大学...fortran 使用手引書ーpage 3第6 章...

388
Fortran Fortran 使用手引書 使用手引書

Upload: others

Post on 23-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

  • FortranFortran使用手引書使用手引書

  • はじめに

    本書の目的

    本書は、Solaris™ オペレーティングシステム上で動作する Fortran 処理系(以降、本システムと呼びます)の使用方法を記述しています。また、本システムにおける以下の事項についても記述しています。

    - Fortran プログラミングに関する解説- 制限事項

    本書の読者

    本書は、本システムを使用して、Fortran 原始プログラムを処理する方および Fortran 原始プログラムを作成する方を対象に記述しています。

    本書を読むにあたっては、Solaris のコマンド、ファイル操作およびシェルプログラミングの基本的な操作知識が必要です。

    本書では、読者は Fortran 言語仕様を理解していることを前提に記述しております。Fortran 言語仕様については、オンラインマニュアルで提供されている“Fortran 文法書”、JIS Fortran 規格書または市販本を参照してください。

    本書の構成

    本書は以下の構成になっています。

    第 1 章 Fortran システムの概要本システムを使用して Fortran 原始プログラムを処理する場合の概要について記述しています。

    第 2 章 Fortran プログラムの翻訳・結合本システムを使用して Fortran プログラムを翻訳・結合する方法について記述しています。

    第 3 章 Fortran プログラムの実行本システムを使用して Fortran プログラムを実行する方法について記述しています。

    第 4 章 Fortran システムの出力情報Fortran 原始プログラムの翻訳時および実行時に、本システムが出力する各種の情報について記述しています。

    第 5 章 データの型、種別および内部表現本システムで使用できるデータの型について記述しています。

  • Fortran 使用手引書ー Page 3

    第 6 章 プログラミング上の注意本システムを用いてプログラミングを行う場合の注意事項について記述しています。入出力文については、“第 7 章 入出力処理”に記述しています。

    第 7 章 入出力処理Fortran の入出力文が扱うファイルおよび入出力文を使用する際に必要となる情報について記述しています。

    第 8 章 プログラムのデバッグFortran プログラムを実行した際に、エラーが発生した場合、異常終了した場合または利用者の目的とする結果が得られなかった場合、その原因を追求し Fortran 原始プログラムを修正しなければなりません。ここでは、その原因を追求するために本システムが提供しているデバッグ機能およびその操作方法について記述しています。

    第 9 章 最適化機能最適化機能の使用上の注意および最適化機能の活用方法について記述しています。

    第 10 章 モジュールおよびモジュール引用の注意事項Fortran 95 仕様のモジュールを含むプログラムの翻訳時の注意事項について記述しています。

    第 11 章 言語間結合Fortran プログラムと C 言語の結合について記述しています。

    第 12 章 並列機能本システムを使用して、Fortran プログラムを並列処理する方法について記述しています。

    本書の読み方

    本システムの概要を知りたい場合は、“第 1 章 Fortran システムの概要”をお読みください。

    本システムを使用して Fortran プログラムの翻訳、結合編集を行う場合は、“第 2 章 Fortran プログラムの翻訳・結合”をお読みください。Fortran プログラムの実行を行う場合は、“第 3 章 Fortranプログラムの実行”をお読みください。また、翻訳時および実行時の各種の出力情報については、“第 4 章 Fortran システムの出力情報”をお読みください。

    Fortran プログラムを作成する場合は、“第 5 章 データの型、種別および内部表現”および“第 6 章 プログラミング上の注意”をお読みください。Fortran の入出力文を使用してプログラミングする場合は、“第 7 章 入出力処理”をお読みください。モジュールを含むプログラムを作成する場合には、“第 10 章 モジュールおよびモジュール引用の注意事項”をお読みください。

    Fortran プログラムのデバッグを行う場合は、“第 8 章 プログラムのデバッグ”をお読みください。

    本システムで提供している最適化機能を活用したい場合には、“第 9 章 最適化機能”をお読みください。

    Fortran プログラムを C プログラムと結合して使用する場合は、“第 11 章 言語間結合”をお読みください。

    本システムを使用して Fortran プログラムを並列処理する場合は、“第 12 章 並列機能”をお読みください。

  • Fortran 使用手引書ー Page 4

    本システムの言語仕様を知りたい場合は、オンラインマニュアルで提供されている“Fortran 文法書”を参照してください。

    本書の位置付け

    本システムには、本書以外に以下に示すマニュアルがあります。

    - “Fortran 文法書”- “Fortran 翻訳時メッセージ”- “Fortran 実行時メッセージ”

    本書の注意事項

    本書の情報は、プログラミングサービス情報です。Fortran を利用した応用プログラムを作成するために利用できます。

    記述上の約束

    本書は、以下の形式に従って説明しています。

    構文表記記号

    構文表記記号とは、構文を記述する上で、特別な意味で定められた記号であり、以下のものがあります。

    商標

    UNIX は、米国およびその他の国におけるオープン・グループの登録商標です。

    Sun、Sun Microsystems、Sun ロゴ、Solaris およびすべての Solaris に関連する商標およびロゴは、米国およびその他の国における米国 Sun Microsystems, Inc. の商標または登録商標であり、同社のライセンスを受けて使用しています。

    すべての SPARC 商標は、米国 SPARC International,Inc. のライセンスを受けて使用している同社の米国およびその他の国における商標または登録商標です。

    SPARC 商標が付いた製品は、米国 Sun Microsystems 社が開発したアーキテクチャに基づくものです。

    Adobe および Acrobat はアドビシステムズ社の商標です。

    OpenMP は、OpenMP Architecture Review Board の商標です。

    記号名 記号 説明

    選択記号

    { }この記号で囲まれた項目の中から、どれか一つを選択することを表します。

    |この記号を区切りとして、複数の項目を列挙することを表します。

    省略可能記号 [ ] この記号で囲まれた項目を省略してもよいことを表します。また、この記号は選択記号“{ }”の意味を含みます。

    省略値記号 -省略可能記号“[ ]”内の項目をすべて省略したときの省略値を表します。

    反復記号 … この記号の直前の項目を繰り返して指定できることを表します。

  • Fortran 使用手引書ー Page 5

    他の各製品名は、各社の商標または登録商標です。

    著作権

    All Rights Reserved, Copyright © 富士通株式会社 1999-2006

    お願い

    本書の中で分かりにくい箇所、誤っている箇所を発見された場合は、SE または販売員にご連絡ください。

    本書を無断で他に転載しないようお願いします。

    本書は予告なしに変更されることがあります。

    平成 18 年 12 月

  • 目次

    はじめに . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    第 1 章 Fortran システムの概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.1 Fortran システムの構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.2 Fortran システムの使用方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.2.1 準備 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.2.2 翻訳と結合編集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201.2.3 ファイル名 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201.2.4 代表的な翻訳時オプション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.2.5 実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.2.6 デバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221.2.7 チューニング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    第 2 章 Fortran プログラムの翻訳・結合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.1 翻訳コマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.1.1 翻訳コマンドの形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.1.2 翻訳コマンドの入力ファイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.2 翻訳時オプション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.3 翻訳コマンドの環境変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662.4 翻訳時プロフィルファイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662.5 翻訳指示行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672.6 翻訳コマンドの復帰値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

    第 3 章 Fortran プログラムの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683.1 実行コマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683.2 実行コマンドの形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683.3 実行時オプション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683.4 実行コマンドの環境変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763.5 実行時プロフィルファイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763.6 実行コマンドの復帰値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773.7 実行コマンドの標準入出力および標準エラー出力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773.8 実行時の環境変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

    第 4 章 Fortran システムの出力情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804.1 翻訳時の出力情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804.1.1 翻訳時の診断メッセージ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804.1.2 翻訳情報出力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814.1.2.1 翻訳情報出力のオプション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814.1.2.2 翻訳情報の出力形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854.2 実行時の出力情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1034.2.1 実行時の診断メッセージ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1034.2.2 トレースバックマップ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

  • Fortran 使用手引書ー Page 7

    4.2.3 エラー集計情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

    第 5 章 データの型、種別および内部表現 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1065.1 データの表現 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1065.1.1 整数型データ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1065.1.2 論理型データ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1065.1.3 実数型および複素数型データ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1065.1.4 文字型データ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1095.1.5 構造型データ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1105.2 データの正しい境界 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1105.3 精度の変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115.3.1 精度の拡張 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115.3.1.1 精度拡張のオプション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115.3.2 精度縮小と誤差の影響分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1125.3.2.1 精度縮小機能の定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1135.3.2.2 精度縮小機能の使用方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

    第 6 章 プログラミング上の注意 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1166.1 言語仕様レベル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1166.2.1 COMMON 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1176.2.1.1 共通ブロックに属する変数の境界 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1176.2.1.2 初期値をもつ共通ブロック . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1176.2.2 EQUIVALENCE 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1186.2.3 初期値の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1186.2.3.1 文字定数による初期値設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1186.2.3.2 非 10 進定数表現による初期値設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1196.2.3.3 重複する初期値設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1196.2.4 CRAY 仕様のポインタ変数の引用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1206.2.5 初期値をもつ変数に対する SAVE 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1206.3 式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1216.3.1 整数型データの演算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1216.3.2 実数型データの演算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1216.3.3 論理型データの演算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1226.3.4 演算結果の型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1226.3.5 要素の評価順序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1226.3.6 式の一部の評価 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1226.3.7 関数引用による値の更新 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1236.3.8 括弧で囲まれた変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1236.4 重なりのある文字代入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1236.5 実行文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1246.5.1 GO TO 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1246.5.2 算術 IF 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1246.5.3 IF 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1246.5.4 DO 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1246.5.4.1 DO ループの繰返し回数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1256.5.5 CASE 構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1256.5.6 PAUSE 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1256.5.7 STOP 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1256.5.8 ALLOCATE / DEALLOCATE 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1266.6 手続 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

  • Fortran 使用手引書ー Page 8

    6.6.1 文関数の引用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1266.6.2 組込み関数名が指定された EXTERNAL 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1276.6.3 総称名としての REAL および CMPLX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1276.6.4 組込み手続名 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1276.6.5 型宣言された組込み関数名 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1286.6.6 サービスルーチン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

    第 7 章 入出力処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1297.1 ファイルの基本事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1297.1.1 ファイルの存在 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1297.1.2 ファイルの接続 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1297.1.2.1 接続 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1307.1.2.2 接続の解除 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1307.2 装置番号とファイルの接続 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1317.2.1 装置番号とファイルの接続の優先順位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1317.2.2 環境変数による装置番号とファイルの接続 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1327.3 Fortran 記録 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1337.3.1 書式付き Fortran 記録 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1347.3.1.1 書式付き順番探査入出力文で扱う Fortran 記録 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1347.3.1.2 書式付き直接探査入出力文で扱う Fortran 記録 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1357.3.1.3 内部ファイル入出力文で扱う Fortran 記録 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1367.3.2 書式なし Fortran 記録 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1377.3.2.1 書式なし順番探査入出力文で扱う Fortran 記録 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1377.3.2.2 書式なし直接探査入出力文で扱う Fortran 記録 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1387.3.3 並びによる Fortran 記録 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1387.3.4 変数群 Fortran 記録 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1387.3.5 ファイル終了記録 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1397.3.6 BINARY Fortran 記録 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1397.4 OPEN 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1397.4.1 OPEN 文の指定子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1397.4.1.1 FILE 指定子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1407.4.1.2 STATUS 指定子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1417.4.1.3 RECL 指定子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1427.4.1.4 ACTION 指定子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1427.4.1.5 BLOCKSIZE 指定子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1447.4.2 再結合時の OPEN 文の指定子の値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1447.4.3 書式付き入出力と書式なし入出力の混在 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1447.4.4 RECL 指定子があり、ACCESS 指定子がない OPEN 文 . . . . . . . . . . . . . . . . . . . . . . . . . . 1457.5 CLOSE 文の指定子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1457.5.1 STATUS 指定子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1457.6 INQUIRE 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1467.6.1 INQUIRE 文の問合せ指定子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1467.6.2 言語仕様レベルによる INQUIRE 文の動作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1497.6.2.1 ACTION 指定子の返却値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1497.6.2.2 INQUIRE 文の問合せ指定子に返却される文字定数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1497.6.2.3 PAD 指定子の返却値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1497.6.2.4 ファイル INQUIRE 文の問合せ指定子の返却値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1507.6.2.5 装置 INQUIRE 文の問合せ指定子の返却値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1507.7 入出力文の使用方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

  • Fortran 使用手引書ー Page 9

    7.7.1 入出力文の制御情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1507.7.1.1 UNIT 指定子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1507.7.1.2 FMT 指定子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1517.7.1.3 IOSTAT 指定子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1527.7.1.4 ERR 指定子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1527.7.1.5 END 指定子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1537.7.1.6 EOR 指定子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1537.7.2 順番探査入出力文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1537.7.2.1 書式付き順番探査入出力文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1537.7.2.2 書式なし順番探査入出力文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1547.7.3 直接探査入出力文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1557.7.3.1 直接探査 READ 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1557.7.3.2 直接探査 WRITE 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1557.7.3.3 旧仕様の直接探査入出力文の記述の制限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1567.7.3.4 直接探査入出力におけるデータ転送エラー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1567.7.4 変数群入出力文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1567.7.4.1 変数群 READ 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1577.7.4.1.1 変数群入力における変数群記録 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1597.7.4.2 変数群 WRITE 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1597.7.4.3 変数群入出力の言語仕様レベルによる違い . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1617.7.5 並びによる入出力文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647.7.5.1 並びによる READ 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647.7.5.2 並びによる WRITE 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1667.7.5.2.1 並び出力における囲みなし文字定数の出力形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1687.7.6 内部ファイル入出力文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1687.7.7 停留入出力文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1687.8 入出力文の組合せ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1697.8.1 入出力文の許されない組合せ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1727.8.1.1 書式付き順番探査入出力文との組合せ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1727.8.1.2 書式なし順番探査入出力文との組合せ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1727.8.1.3 直接探査入出力文との組合せ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1727.8.1.4 ファイル位置付け文との組合せ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1737.9 ファイル位置付け文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1737.9.1 BACKSPACE 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1737.9.2 ENDFILE 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1757.9.3 REWIND 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1807.10 IBM370 形式 -IEEE 形式浮動小数点データ入出力変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1807.10.1 浮動小数点データと入出力文との関係 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1807.10.2 エラー処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1837.11 エンディアン入出力変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1837.11.1 リトルエンディアンデータと入出力文との関係 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1837.12 標準ファイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1857.12.1 標準ファイルとオープンモード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1857.12.2 標準ファイルに対する入出力文の制限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1857.12.3 入出力文とシーク可能/不可能ファイルの関係 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1857.13 ACTION 指定子による入出力文の制限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1867.14 実数値の有効けた数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1867.15 入出力バッファ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1877.16 編集記述子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

  • Fortran 使用手引書ー Page 10

    7.16.1 整数型の G 形編集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1877.16.2 書式付き出力文の文字出力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1877.16.3 G 形編集記述子の編集結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1887.16.4 文字列編集記述子の診断メッセージ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1887.16.5 X 形編集記述子の効果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1887.16.6 L 形編集記述子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1887.16.7 D、E、F、G、I、L、B、O および Z 編集記述子の w、d の省略値 . . . . . . . . . . . . . . . 1897.16.8 実数型特殊データの編集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1907.17 磁気テープファイル入出力機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1907.17.1 磁気テープファイルと装置番号の接続 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1907.17.1.1 環境変数による磁気テープファイルと装置番号の接続 . . . . . . . . . . . . . . . . . . . . . . . 1907.17.1.2 OPEN 文の FILE 指定子による磁気テープファイルと装置番号の接続 . . . . . . . . . . 1917.17.2 磁気テープファイル入出力機能の留意点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1917.18 入出力統計情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1917.18.1 入出力統計情報が出力するファイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1917.18.2 入出力統計情報が出力する情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1927.18.3 入出力統計情報における注意事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1927.19 EBCDIC-ASCII 文字コード入出力変換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1937.19.1 EBCDIC 文字コードデータと入出力文との関係 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

    第 8 章 プログラムのデバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1948.1 エラー制御 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1948.1.1 エラーモニタ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1948.1.2 エラー処理サービスサブルーチン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2008.1.2.1 ERRSAV サービスサブルーチン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2008.1.2.2 ERRSTR サービスサブルーチン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2008.1.2.3 ERRSET サービスサブルーチン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2018.1.2.4 ERRTRA サービスサブルーチン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2028.1.3 エラーモニタの使用方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2028.1.3.1 利用者が用意するエラー修正サブルーチン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2028.1.3.2 組込み関数で発生するエラーの注意 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2038.1.3.3 利用者によるエラー処理の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2038.1.4 入出力エラーの処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2048.1.5 組込み関数エラーの処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2088.1.6 組込みサブルーチンエラーの処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2218.1.7 例外ハンドリングエラーの処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2228.1.8 その他のエラーの処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2238.2 デバッグのための機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2258.2.1 デバッグを行うための検査機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2258.2.1.1 引数の妥当性の検査(ARGCHK 機能) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2258.2.1.1.1 引数の個数の検査 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2258.2.1.1.2 引数の型の検査 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2258.2.1.1.3 引数の属性の検査 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2268.2.1.1.4 関数の型の検査 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2268.2.1.1.5 引数の大きさの検査 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2268.2.1.1.6 明示的引用仕様の検査 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2278.2.1.1.7 形状引継ぎ配列の次元数の検査 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2278.2.1.2 添字式および部分列範囲の検査(SUBCHK 機能) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2278.2.1.2.1 配列の引用に対する検査 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

  • Fortran 使用手引書ー Page 11

    8.2.1.2.2 部分配列の引用に対する検査 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2278.2.1.3 未定義データの引用の検査(UNDEF 機能) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2278.2.1.3.1 未定義データの検査 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288.2.1.3.2 割付け配列の検査 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288.2.1.3.3 仮引数の実在検査 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288.2.1.4 形状適合の検査(SHAPECHK 機能) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288.2.1.5 拡張検査(EXTCHK 機能) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2298.2.2 異常終了プログラムのデバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2308.2.2.1 異常終了の原因 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2308.2.2.2 異常終了時の出力情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318.2.2.2.1 一般的な異常終了時の出力情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318.2.2.2.2 SIGXCPU の出力情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2328.2.2.2.3 実行時オプション -a を指定した場合の出力情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2328.2.2.2.4 異常終了処理中に再び異常終了が発生した場合の出力情報 . . . . . . . . . . . . . . . . . . . 2328.3 fdb コマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2328.3.1 起動と終了 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2328.3.1.1 ./a.out のデバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2328.3.1.2 プログラムのデバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2338.3.1.3 デバッガの終了 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2338.3.1.4 INTERRUPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2338.3.2 プログラムの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348.3.2.1 run コマンドによるプログラムの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348.3.2.2 入出力をリダイレクトしたプログラムの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348.3.2.3 デバッグ中のプログラムの強制終了 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348.3.3 ブレークポイント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348.3.3.1 ブレークポイントの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348.3.3.2 定義されているブレークポイントの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2368.3.3.3 ブレークポイントの削除 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2368.3.3.4 全ブレークポイントの削除 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2368.3.3.5 ブレークポイントの無視 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378.3.4 プログラムのスタック . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378.3.4.1 すべてのトレースの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378.3.4.2 現在のトレースの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378.3.4.3 現在のレジスタ値の表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2378.3.4.4 現在の浮動小数点レジスタ値の表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2388.3.4.5 現在の全レジスタ値の表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2388.3.5 実行制御 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2388.3.5.1 実行の継続 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2388.3.5.2 ステップ実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2388.3.5.3 マシン命令でステップ実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2388.3.5.4 次まで実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2398.3.5.5 関数の終りまで実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2398.3.6 変数の内容の表示と設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2398.3.6.1 変数などの値をフォーマットにしたがって表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2398.3.6.2 値の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2408.3.7 プログラムをマシン命令で表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2418.3.8 アドレス・マップの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2418.3.9 ソースファイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2418.3.9.1 ソースの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241

  • Fortran 使用手引書ー Page 12

    8.3.9.2 ソースファイル名の表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2418.3.10 式の表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2418.3.10.1 式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2418.3.10.2 変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2428.3.10.2.1 Fortran プログラムでの変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2428.3.10.2.2 C 言語プログラムでの変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2428.3.10.3 定数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2438.3.10.3.1 Fortran プログラムでの定数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2438.3.10.3.2 C 言語プログラムでの定数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2438.3.10.4 演算子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448.3.10.4.1 Fortran プログラムでの演算子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448.3.10.4.2 C 言語プログラムでの演算子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448.3.11 Fortran プログラムをデバッグする上での注意事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

    第 9 章 最適化機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469.1 オブジェクトモジュールの大きさ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469.1.1 ループアンローリング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469.1.2 ソフトウェアパイプライニング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469.1.3 インライン展開 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479.1.4 ストライピング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479.2 実行結果の精度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489.3 実行場所の移動による影響 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489.4 演算評価方法変更の最適化による影響 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2509.5 実行順序の変更による影響 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519.6 割当て形 GO TO 文の分岐先 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519.7 仮引数での影響 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519.8 インライン展開の制約事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549.8.1 呼び出される利用者定義の手続に関する制約事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549.8.2 呼び出す側と呼び出される側の関係に関する制約事項 . . . . . . . . . . . . . . . . . . . . . . . . . . 2559.8.3 利用者定義の外部手続の名前に関する制約事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2559.9 CRAY 仕様のポインタ変数での影響 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2569.10 翻訳時オプション -Kcommonpad の影響 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2569.11 最適化制御行(OCL)の利用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579.11.1 最適化制御行の記法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579.11.2 最適化制御行の記述位置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579.11.3 最適化指示子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579.12 プロファイル情報の利用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2719.13 実行マシン属性の選択 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2729.13.1 マシン属性の種類 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2729.13.2 マシン属性の自動選択機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2729.13.3 実行マシン属性の注意事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2729.14 スタック割付けの影響 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2729.15 配列の形状を変更する機能の影響 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2749.16 strong prefetch 命令の影響 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2749.17 プリフェッチを実施したことによる実行性能への影響について . . . . . . . . . . . . . . . . . . 2759.18 配列宣言の次元移動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2759.18.1 配列宣言の次元移動の影響 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2759.18.2 配列宣言の次元移動の対象変数の制約事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2769.19 配列変数マージ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

  • Fortran 使用手引書ー Page 13

    9.19.1 配列変数マージの影響 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2769.19.2 局所的な配列変数マージの対象変数の制約事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2779.19.3 共通ブロック実体の配列変数マージの対象変数の制約事項 . . . . . . . . . . . . . . . . . . . . . 2789.20 memcpy(3C) および memset(3C) 関数への変換を実施したことによる影響 . . . . . . . . . . 2789.21 マルチ演算関数の呼出しについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

    第 10 章 モジュールおよびモジュール引用の注意事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28110.1 モジュールおよびモジュール引用の翻訳方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28110.2 モジュールの更新とモジュール引用プログラムの再翻訳 . . . . . . . . . . . . . . . . . . . . . . . . 28410.3 モジュールと制限事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284

    第 11 章 言語間結合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28511.1 言語間結合のための仕様 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28511.1.1 引数の値渡し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28511.1.2 引数の値受取り . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28511.1.3 CHANGEENTRY 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28611.1.4 $pragma 指定子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28611.2 外部名の加工 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28611.3 関数値の受渡し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28711.4 引数の受渡し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28811.4.1 文字型の引数の受渡し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28811.4.2 翻訳時オプション -Az の注意事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28811.5 外部変数によるデータの受渡し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28811.6 データ属性の対応 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28811.7 Fortran プログラムの制御 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28911.8 C プログラムとの結合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28911.8.1 結合方法の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28911.8.2 手続の呼出し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29011.8.2.1 C のプログラムに最初に制御を渡す方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29011.8.2.2 C の標準ライブラリを呼び出す方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29111.8.3 データの受渡し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29111.8.3.1 関数値によるデータの受渡し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29111.8.3.1.1 C での Fortran の関数値の受取り . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29211.8.3.1.2 Fortran での C の関数値の受取り . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29311.8.3.2 引数によるデータの受渡し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29411.8.3.2.1 Fortran から C への引数の受渡し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29411.8.3.2.2 C から Fortran への引数の受渡し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29511.8.3.2.3 C への文字定数の受渡し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29611.8.3.3 外部変数によるデータの受渡し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29711.8.3.4 ファイルによるデータの受渡し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29711.8.3.5 C とのデータ属性の対応 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29811.8.3.6 配列の記憶順序の相違 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29811.8.4 C プログラムとの結合の制限事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299

    第 12 章 並列機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30012.1 並列処理の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30012.1.1 並列処理とは . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30012.1.2 並列処理の効果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30012.1.3 並列処理で効果を得るための条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30112.1.4 本システムの並列機能の特徴 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301

  • Fortran 使用手引書ー Page 14

    12.2 自動並列化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30212.2.1 翻訳・実行の方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30212.2.1.1 翻訳の方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30212.2.1.1.1 自動並列化のための翻訳時オプション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30212.2.1.2 実行の方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30312.2.1.2.1 環境変数 PARALLEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30312.2.1.2.2 スレッド数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30312.2.1.2.3 環境変数 THREAD_STACK_SIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30412.2.1.2.4 実行時の領域 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30412.2.1.2.5 待機スレッドの処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30512.2.1.2.6 打切り時間設定時の注意 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30512.2.1.2.7 サービスルーチン使用時の注意 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30512.2.1.3 翻訳・実行の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30512.2.2 並列化プログラムのチューニング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30612.2.3 自動並列化処理の詳細 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30612.2.3.1 自動並列化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30712.2.3.1.1 自動並列化の対象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30712.2.3.1.2 ループスライスとは . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30712.2.3.1.3 配列操作と自動並列化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30712.2.3.1.4 コンパイラによる自動ループスライス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30712.2.3.1.5 ループ交換と自動ループスライス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30812.2.3.1.6 ループ分割と自動ループスライス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30912.2.3.1.7 ループ融合と自動ループスライス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30912.2.3.1.8 リダクションによるループスライス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31012.2.3.1.9 ループスライスされない DO ループ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31112.2.3.1.10 自動並列化状況の表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31312.2.3.1.11 マルチスレッド範囲の拡大 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31312.2.3.2 最適化制御行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31412.2.3.2.1 最適化制御行の記法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31412.2.3.2.2 最適化制御行の記述位置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31512.2.3.2.3 自動並列化と最適化指示子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31512.2.3.2.4 自動並列化用の最適化指示子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31512.2.3.2.5 ワイルドカード指定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32912.2.3.3 自動並列化機能を使うときの留意事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33012.2.3.3.1 翻訳時オプション -Kparallel,instance=N 指定時の注意 . . . . . . . . . . . . . . . . . . . . . . . 33012.2.3.3.2 並列処理の入れ子での注意 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33012.2.3.3.3 翻訳時オプション -Kparallel,reduction 指定時の注意 . . . . . . . . . . . . . . . . . . . . . . . . . 33112.2.3.3.4 最適化制御行の使い方の注意 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33112.2.3.3.5 並列処理中の入出力文および組込み手続 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33212.3 OpenMP 仕様による並列化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33312.3.1 翻訳・実行の方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33312.3.1.1 翻訳の方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33312.3.1.1.1 OpenMP Fortran プログラムを翻訳するための翻訳時オプション . . . . . . . . . . . . . . 33312.3.1.1.2 OpenMP Fortran プログラムの最適化情報の表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33512.3.1.2 実行の方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33612.3.1.2.1 実行時の環境変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33612.3.1.2.2 OpenMP Fortran 仕様の環境変数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33712.3.1.2.3 実行時の注意事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33712.3.1.2.4 複数のスレッドからの出力情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339

  • Fortran 使用手引書ー Page 15

    12.3.2 実現依存の仕様 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33912.3.3 OpenMP 仕様の明確化および制限事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34112.3.3.1 ASSIGN 文による文番号指定および割当て形 GO TO 文 . . . . . . . . . . . . . . . . . . . . . . . 34112.3.3.2 ATOMIC ディレクティブおよび REDUCTION 並び項目における追加の関数 および演算子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34212.3.3.3 FORALL 構文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34212.3.3.4 THREADPRIVATE 使用時の注意事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34212.3.3.5 インライン展開 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34212.3.3.6 パラレルリージョンからの内部手続呼出し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34212.3.3.7 文関数定義文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34312.3.3.8 変数群要素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34312.3.4 プログラミングの注意事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34312.3.4.1 パラレルリージョンの実現 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34312.3.4.2 OpenMP Fortran プログラムの自動並列化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34312.3.5 他のマルチスレッドプログラムとの結合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34412.3.6 OpenMP Fortran プログラムのデバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34412.3.6.1 デバッグのための検査機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34412.3.6.2 fdb コマンドによるデバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34412.4 I/O バッファ並列転送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34712.4.1 翻訳・実行の方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34712.4.1.1 翻訳の方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34712.4.1.2 実行の方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34712.4.1.3 I/O バッファ並列転送の条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34712.4.1.4 翻訳・実行の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34812.4.2 I/O バッファ並列転送機能の注意事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34812.5 並列実行情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34812.5.1 並列実行情報が出力する情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34812.6 スタック情報表示機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350

    付録 A プログラムの制限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352A.1 関数引用、部分配列、配列要素引用および部分列引用の入れ子の深さ . . . . . . . . . . . . . 352A.2 DO 構文、CASE 構文、IF 構文の入れ子の深さ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352A.3 DO 形並びの入れ子の深さ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352A.4 INCLUDE 行の入れ子の深さ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352A.5 配列宣言子の制限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353A.5.1 すべての配列宣言子の制限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353A.5.2 大きさゼロの配列宣言子の制限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353A.6 部分配列の制限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354A.7 分岐命令から分岐先命令への距離による影響 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354

    付録 B 印刷制御用コマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355B.1 fot コマンドの形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355B.2 fot コマンドの実行例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356B.3 fot コマンドの復帰値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356B.4 fot コマンドの出力情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356

    付録 C 富士通ホスト系 FORTRAN コンパイラとの互換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357C.1 B 形編集記述子および Z 形編集記述子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358C.2 実引数に 2 バイトの整数型をもつ組込み関数の結果の型 . . . . . . . . . . . . . . . . . . . . . . . . . 358C.3 追加の FORTRAN77 言語仕様組込み関数の解釈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358

  • Fortran 使用手引書ー Page 16

    C.4 DO パラメタの増分値変数を更新している DO ループの DO 変数の値 . . . . . . . . . . . . . . 359C.5 先行の入出力文が ENDFILE 文である場合の入出力文の動作 . . . . . . . . . . . . . . . . . . . . . . 359C.6 先行の入出力文が EOF 検出である場合の入出力文の動作 . . . . . . . . . . . . . . . . . . . . . . . . 359C.7 先行の入出力文が順番探査 READ 文である場合の入出力文の動作 . . . . . . . . . . . . . . . . . 360C.8 OPEN 文の STATUS 指定子とファイル名の関係 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360C.9 名前なしファイルの扱い . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361C.10 内部ファイルに対する並びによる出力文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362C.11 8 バイトの整数型との演算結果の型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363C.12 OPEN 文の BLANK 指定子、DELIM 指定子および PAD 指定子 . . . . . . . . . . . . . . . . . . . 363C.13 OPEN 文の STATUS 指定子と ACTION 指定子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364C.14 Q 形編集記述子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364C.15 ファイル INQUIRE 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364C.16 組込み関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364

    付録 D 32 ビットモードと 64 ビットモードの違い . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365D.1 LOC 組込み関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365D.2 CRAY 仕様 POINTER 文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365D.3 サービスルーチン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365D.4 組込み関数の結果値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366D.5 組込み関数 VAL および %VAL の引数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366D.6 VALUE 文および VALUE 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366D.7 複素数型、倍精度複素数型および 4 倍精度複素数型の関数 . . . . . . . . . . . . . . . . . . . . . . . 366

    付録 E Parallelnavi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367E.1 ラージページ機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367E.1.1 翻訳 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367E.1.2 実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368E.1.3 ラージページ機能を利用するプログラムの判定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369E.1.4 制約事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369E.2 CPU 数の管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369E.2.1 自動並列化におけるスレッド数の決定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370E.2.2 OpenMP におけるスレッド数の決定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370E.3 スレッド間ハードウェアバリア機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371E.3.1 翻訳 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371E.3.2 実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372E.3.3 スレッド間ハードウェアバリア機能を利用するプログラムの判定 . . . . . . . . . . . . . . . . 372E.3.4 制約事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372

    索引 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373

  • 表目次

    表 5.1 データの型に対する正しい境界 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110表 7.1 ファイル名による INQUIRE 文で設定される値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146表 7.2 装置番号による INQUIRE 文で設定される値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148表 7.3 誤り条件、ファイル終了条件および記録終了条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152表 8.1 エラー制御表の標準値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197表 8.2 入出力に関するエラー処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205表 8.3 組込み関数に関するエラー処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208表 8.4 組込みサブルーチンに関するエラー処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222表 8.5 割込み発生時の修正処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223表 8.6 その他のエラー処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224表 8.7 捕捉シグナルと対応するシグナルコード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231表 9.1 最適化制御行に記述できる最適化指示子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258表 9.2 ユーザプログラムから直接呼び出すことができるマルチ演算関数一覧 . . . . . . . . . . . 278表 11.1 Fortran の手続名の加工方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286表 11.2 翻訳時オプション -mldefault の指定と外部名の加工方法 . . . . . . . . . . . . . . . . . . . . . . 287表 11.3 CHANGEENTRY 文に指定された手続の外部名の加工方法 . . . . . . . . . . . . . . . . . . . . 287表 11.4 $pragma 指定子に指定された手続の外部名の加工方法 . . . . . . . . . . . . . . . . . . . . . . . . 287表 11.5 Fortran と C の対応するデータ属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298表 12.1 自動並列化用の最適化指示子一覧 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316

  • 図目次

    図 12.1 並列処理のイメージ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300図 12.2 並列処理による経過時間の短縮 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301図 12.3 ループスライスのイメージ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307図 12.4 配列操作の文の自動並列化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307図 12.5 ループスライスができない DO ループの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308図 12.6 多重 DO ループでのループ交換 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308図 12.7 DO ループの分割 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309図 12.8 DO ループの融合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310図 12.9 リダクションによる自動ループスライス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311図 12.10 回転数が小さく、演算数が少ない DO ループ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311図 12.11 サブルーチンの引用を含む DO ループ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312図 12.12 飛出しのある DO ループ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312図 12.13 複雑な構造の DO ループ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313図 12.14 マルチスレッド範囲の拡大の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314図 12.15 マルチスレッド範囲の拡大の例(多重ループ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314図 12.16 ARRAY_PRIVATE 指示子の使用例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317図 12.17 NOARRAY_PRIVATE 指示子の使用例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317図 12.18 INDEPENDENT 指定のない DO ループの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318図 12.19 INDEPENDENT 指示子の使用例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319図 12.20 NOALIAS 指示子の使用例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319図 12.21 NORECURRENCE 指定のない DO ループの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320図 12.22 NORECURRENCE 指示子の使用例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320図 12.23 SERIAL 指定のないプログラムの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321図 12.24 SERIAL 指示子の使用例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322図 12.25 PARALLEL 指定のないプログラムの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323図 12.26 PARALLEL 指示子の使用例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324図 12.27 PSTRONG 指示子の使用例 . . . . . . . . . . . . . . . . . . .