JIS X 3001-1:2009 プログラム言語Fortran―第1部:基底言語 | ページ 6

  12
X 3001-1 : 2009 (ISO/IEC 1539-1 : 2004)
(3) 利用者定義代入の使用
(4) 派生型入出力
2.2.4 モジュール
モジュール (module) は,他のプログラム単位に参照させるべき定義を含むか,又は そのような定義を他のモジュー
ルから参照してくる。これらの定義には,データ実体宣言,型定義,手続定義 及び 引用仕様宣言がある。他のプロ
グラム単位中の有効域から,モジュールの中にある定義を参照することができる。モジュールは,箇条 11 で更に規
定する。
2.3 実行の概念
Fortran のそれぞれの文は,実行文 (executable statement) 又は 非実行文 (nonexecutable statement) のいずれか
に分類される。プログラム単位中に書く文の順序には制限があり,すべての実行文をすべての構文に書くことができ
るわけではない。
2.3.1 実行文 及び 非実行文
プログラムの実行は,動作の時系列とする。一つの実行文は,一つ以上のこれらの動作を実行 又は 制御する一つ
の命令とする。したがって,一つのプログラム単位中の実行文は,そのプログラム単位の振る舞いを決定する。実行
文は,実行構文という構文概念を構成しうるすべての文とする。
注記 FORMAT 文は,実行構文中に混在しうるが,実行文ではない。
ただし,DATA 文 及び
非実行文は,動作を指定するのではなく,動作が行われるときのプログラム環境を指定するために用いる。非実行
文は,実行文として分類されないすべての文とする。
2.3.2 文の順序
2.1 の構文規則は,プログラム単位 及び 副プログラムの中での文の順序を指定する。これらの規則を,表 2.1 及び
表 2.2 で説明する。表 2.1 は,文の順序の規則を示し,すべてのプログラム単位,副プログラム 及び 引用仕様本体に
適用する。縦線は,混在できる文の種類を区切り,横線は,混在できない文の種類を区切る。内部副プログラム 又は
モジュール副プログラムは,CONTAINS 文の後に書かなければならない。副プログラム中の USE 文と CONTAINS
文との間では,非実行文は,一般に実行文より前に書く。ただし,ENTRY 文,FORMAT 文 は,実行文
及び DATA 文
の間に書いてもよい。表 2.2 は,有効域中で許される文を示す。
表 2.1―文の順序
PROGRAM 文,FUNCTION 文,SUBROUTINE 文,
MODULE 文 又は BLOCK DATA 文
USE 文
IMPORT 文
FORMAT 文 IMPLICIT NONE
及び PARAMETER 文 IMPLICIT 文
ENTRY 文 PARAMETER 文 派生型定義,引用仕様宣言,型宣言文,
及び 列挙体定義,手続宣言,単純宣言文
DATA 文 及び 文関数定義文
DATA 文 実行構文
CONTAINS 文
内部副プログラム 又は モジュール副プログラム
END 文

――――― [JIS X 3001-1 pdf 26] ―――――

                                                                                                   13
X 3001-1 : 2009 (ISO/IEC 1539-1 : 2004)
表 2.2―有効域中で許される文
有効域の種類 主プロ モジュ 初期値設定プ 外部副プ モジュール副 内部副プ 引用仕
グラム ール b) ログラム単位 ログラム プログラム ログラム 様本体
USE 文 ○ ○ ○ ○ ○ ○ ○
IMPORT 文 × × × × × × ○
ENTRY 文 × × × ○ ○ × ×
FORMAT 文 ○ × × ○ ○ ○ ×
その他の宣言 a) ○ ○ ○ ○ ○ ○ ○
DATA 文 ○ ○ ○ ○ ○ ○ ×
派生型定義 ○ ○ ○ ○ ○ ○ ○
引用仕様宣言 ○ ○ × ○ ○ ○ ○
実行文 ○ × × ○ ○ ○ ×
CONTAINS 文 ○ ○ × ○ ○ × ×
文関数定義文 ○ × × ○ ○ ○ ×
a)
注 ここで,その他の宣言とは,PARAMETER 文,IMPLICIT 文,型宣言文,列挙体定義,手続
宣言文 及び 単純宣言文とする。
b)
モジュールに含まれるモジュール副プログラムは,そのモジュールの有効域には含まれない。
2.3.3 END 文
END PROGRAM 文,END FUNCTION 文,END SUBROUTINE 文,END MODULE 文 及び END BLOCK
DATA 文を,END 文 (END statement) という。それぞれのプログラム単位,モジュール副プログラム 及び 内部副
プログラムは,ちょうど一つの END 文をもたなければならない。END PROGRAM 文,END FUNCTION 文 及び
END SUBROUTINE 文は,実行文とし,飛び先文になりうる(8.2 参照)。END PROGRAM 文を実行すると,プロ
グラムの実行が終了する。END FUNCTION 文 又は END SUBROUTINE 文の実行は,スカラ整数式をもたない RETURN
文の実行と等価とする。
END MODULE 文 及び END BLOCK DATA 文は,非実行文とする。
2.3.4 実行系列
プログラムが一つの Fortran 主プログラムを含むとき,そのプログラムの実行は,主プログラムの最初の実行構文
から始まる。主プログラム 又は 副プログラムの実行は,その有効域中の実行構文の実行を意味する。手続が呼び出さ
れたときは,呼び出された入口点に続く最初の実行構文から実行が始まる。次の例外を除いて,実行の効果は,STOP
文,RETURN 文 又は END 文が実行されるまで,実行構文が主プログラム 又は 副プログラムに書かれている順序
に従って実行されることとする。例外は,次のとおりとする。
(1) 飛越し文(8.2 参照)の実行は,実行系列を変更する。飛越し文は,実行系列の新しい開始位置を明示的に指定
する。
(2) ASE 構文,DO 構文,IF 構文 及び SELECT TYPE 構文は,内部的な文構造を含み,これらの構造構文の実
行は,暗黙的に内部的な飛越しを伴う。これらのそれぞれの構造構文の詳細な意味規則は,箇条 8 による。
(3) ND 指定子,ERR 指定子 及び EOR 指定子は,飛越しを起こすことがある。
(4) 選択戻り指定子は,飛越しを起こすことがある。
内部副プログラムを主プログラム 又は 副プログラムの END 文の前に書くことができる。そのような内部副プロ
グラムの定義は,親プログラムの実行系列には含まれない。

――――― [JIS X 3001-1 pdf 27] ―――――

  14
X 3001-1 : 2009 (ISO/IEC 1539-1 : 2004)
プログラムの実行は,STOP 文 又は END PROGRAM 文が実行されることによって正常終了する。また,連携処
理系(言語 C の国際規格 5.1.2.2.3 及び 7.20.4.3 参照)で定義された手続の実行中に正常終了することもある。正
常終了が Fortran のプログラム単位の中で発生し,かつ そのプログラムが連携処理系で定義された手続を組み込んで
いるとき,実行終了の処理は C の関数 exit()(言語 C の国際規格 7.20.4.3 参照)を実行する効果をもつ。
2.4 データの概念
データ環境の特性を指定するために,非実行文を用いる。データ環境の特性の指定には,変数の型を指定すること,
配列を宣言すること 及び 新しい型を定義することが含まれる。
2.4.1 型
型 (type) は,データの分類に名前を付けたものであり,値の集合,その値を記述する構文,及び その値を解釈し
操作する演算の集合で特性付けられる。この中心的な概念は,4.1 による。
型は,パラメタ付けすることができ,パラメタ付けした場合には,データ値の集合,それらの値を記述する構文 及
び 演算の集合は,一つ以上のパラメタの値に依存する。そのようなパラメタを,型パラメタ (type parameter) と呼
ぶ(4.2 参照)。
型は,組込み型 及び 派生型の二つに大別される。
2.4.1.1 組込み型
組込み型 (intrinsic type) は,演算とともにこの言語で定義されている型とし,いつでも参照できる。組込み型は,
整数型 (INTEGER),実数型 (REAL),複素数型 (COMPLEX),文字型 (CHARACTER) 及び 論理型 (LOGICAL) とする。組込
み型の性質は,4.4 による。組込み型の型パラメタは,種別型パラメタ (KIND) 及び 文字長パラメタ (LEN) とする。
種別型パラメタ (kind type parameter) は,整数型では 10 進指数範囲を示し(4.4.1 参照),実数型 及び 複素数型
では 10 進精度 及び 10 進指数範囲を示し(4.4.2 及び 4.4.3 参照),文字型 及び 論理型では表現方法を示す(4.4.4
及び 4.4.5 参照)。文字長パラメタ (character length parameter) は,文字型における文字の個数を指定する。
2.4.1.2 派生型
派生型 (derived type) は,この言語では定義されていない型とし,その成分を宣言するために型定義を必要とする。
そのような派生型のスカラ実体を 構造体 (structure) と呼ぶ(5.1.1.1 参照)。派生型は,パラメタ付けすることがで
きる。構造体の代入は,組込みとして規定しているが(7.4.1.3 参照),構造体のための組込み演算は規定しない。そ
れぞれの派生型では,構造体構成子によって値を用意することができる(4.5.9 参照)。更に,派生型のデータ実体は,
手続の引数 及び 関数の結果として使用することができ,入出力項目並び中に書くこともできる。派生型のための演
算を追加する場合には,手続の定義として与えなければならない。
派生型は,4.5 で更に規定する。
2.4.2 データの値
それぞれの組込み型は,その型パラメタの値に応じて,その型のデータがもつことのできる値の集合と関連付けら
れている。それぞれの組込み型の値は,4.4 による。派生型の実体がとることのできる値は,その型定義,型パラメ
タ値 及び その成分の値の集合によって決定される。
2.4.3 データ要素
データ要素 (data entity) は,データ実体,式の評価の結果 及び 関数引用の実行の結果(関数結果と呼ぶ。)とす
る。データ要素は,型 及び 型パラメタをもち,不定の変数でなければデータの値をもつ。すべてのデータ要素は,次
元数をもち,したがってスカラ 又は 配列とする。
2.4.3.1 データ実体
データ実体 (data object) は,定数(4.1.2 参照),変数(箇条 6 参照)及び 部分定数とし,省略して 実体 (object)
と呼ぶことがある。名前付きデータ実体の型 及び 型パラメタは,明示的に(5.1 参照)又は 暗黙的に(5.3 参照)指
定することができる。

――――― [JIS X 3001-1 pdf 28] ―――――

                                                                                                   15
X 3001-1 : 2009 (ISO/IEC 1539-1 : 2004)
部分実体 (subobject) は,名前付き実体の一部分とし,他の部分とは独立に引用することができ,変数の場合には
他の部分とは独立に確定することもできる。部分実体には,配列の一部分すなわち配列要素 及び 部分配列,文字列
の一部分すなわち部分列,複素数実体の一部分すなわち実部 及び 虚部,並びに 構造体の一部分すなわち成分が含ま
れる。部分実体はそれ自体もデータ実体とするが,部分実体は実体特定子 及び 組込み関数によってだけ参照される。
変数の部分実体は,変数とする。部分実体は,箇条 6 による。
名前によって参照される実体は,次のとおりとする。
名前付きスカラ (スカラ実体)
名前付き配列 (配列実体)
部分実体特定子によって参照される部分実体は,次のとおりとする。
配列要素 (スカラ部分実体)
部分配列 (配列部分実体)
構造体成分 (スカラ部分実体 又は 配列部分実体)
部分列 (スカラ部分実体)
複素数実体の部分実体は,組込み関数によっても参照することができる。
2.4.3.1.1 変数
変数 (variable) は,値をもつことができ,プログラムの実行の間に,確定したり再確定したりすることができる。
モジュール,主プログラム 及び 副プログラムの有効域にある名前付き局所変数 (local variable) は,その有効域
の局所要素である名前付き変数とする。その名前付き局所変数は,仮引数ではなく,COMMON 文の中にも現れず,
BIND 属性ももたず,参照結合 及び 親子結合で参照されることもない。名前付き局所変数の部分実体も,局所変数
とする。
2.4.3.1.2 定数
定数 (constant) は,値をもち,プログラムの実行の間に確定したり再確定したり不定にしたりすることはできな
い。名前をもつ定数は,名前付き定数 (named constant) と呼び,PARAMETER 属性をもつ(5.1.2.10 参照)。名前
をもたない定数は,定数表現 (literal constant) と呼ぶ(4.4 参照)。
2.4.3.1.3 部分定数
部分定数 (subobject of a constant) は,定数の一部分とする。引用される部分は,変数の値に依存してもよい。
例 2.3 変数の値に依存する部分定数
CHARACTER (LEN = 10), PARAMETER :: DIGITS = ’0123456789’
CHARACTER (LEN = 1) :: DIGIT
INTEGER :: I
...
DIGIT = DIGITS (I:I)
DIGITS は名前付き定数であり,DIGITS(I:I) は DIGITS の部分定数を特定する。
2.4.3.2 式
式 (expression) は,評価されるとデータ要素を生成する(7.1 参照)。式は,データ引用 又は 計算処理を表現する
ものであり,演算対象,演算子 及び 括弧からなる。式の結果の型,型パラメタ,値 及び 次元数は,箇条 7 の規則
による。
2.4.3.3 関数引用
関数引用 (function reference) は,式の評価の間に関数を実行してデータ要素を生成する(12.4.2 参照)。関数結果
の型,型パラメタ 及び 次元数は,その関数の引用仕様によって決定される(12.2.2 参照)。関数結果の値は,その

――――― [JIS X 3001-1 pdf 29] ―――――

  16
X 3001-1 : 2009 (ISO/IEC 1539-1 : 2004)
関数の実行によって決定される。
2.4.4 スカラ
スカラ (scalar) は,配列でないデータとする。スカラは,いかなる組込み型 又は 派生型でもありうる。スカラの
次元数 (rank) は,ゼロとする。スカラの形状は,大きさゼロの 1 次元配列によって表現される。
注記 2.4 構造体は,成分として配列をもっていてもスカラとする。
2.4.5 配列
配列 (array) は,すべてが同じ型 及び 同じ型パラメタをもつスカラデータの集合とし,それらの要素を四角い形に
配置したものとする。配列要素 (array element) は,配列中の個々の要素の一つとし,スカラとする。部分配列 (array
section) は,配列の一部の要素からなる部分集合とし,それ自体も配列とする。
配列は,7 次元までの次元をもつことができ,どの次元も任意の 寸法 (extent),すなわち要素の個数をもつことが
できる。配列の 次元数 (rank) は,次元の個数とする。配列の 大きさ (size) は,要素の総数とし,寸法の積に等しい。
配列は,大きさがゼロであってもよい。配列の 形状 (shape) は,その次元数 及び 各次元の寸法によって決定され,そ
れらの寸法を要素とする 1 次元配列として表現することができる。名前付き配列はすべて宣言しなければならず,名
前付き配列の次元数はその宣言で指定される。名前付き配列の次元数は,いったん宣言されると一定であるが,寸法
は一定であってもよいし,実行中に変化してもよい。
二つの配列は,同じ形状をもつとき,形状適合 (conformable) であるという。スカラは,任意の配列に形状適合し
ているとみなす。スカラ実体に対して定義されている組込み演算は,形状適合する実体間にも適用できる。そのよう
な演算は,要素同士に実行することによって,演算対象の配列に形状適合する配列の結果を生成する。要素同士の演
算とは,演算対象の配列中の対応する要素同士がスカラ演算されて結果の配列中の対応する要素を生成し,そのよう
な要素ごとの演算がいかなる順序で実行されても同時に実行されてもよいことを意味する。このような演算を要素別
処理演算 (elemental operation) という。
1 次元配列は,スカラ 及び 他の配列から構成することができ,許されるどのような形状の配列にも変形すること
ができる(4.7 参照)。
配列は,いかなる組込み型 又は 派生型でもありうる。配列は,6.2 で更に規定する。
2.4.6 ポインタ
データポインタ (data pointer) は,POINTER 属性をもつデータ要素とする。手続ポインタ (procedure pointer)
は,POINTER 属性をもつ手続要素とする。ポインタ (pointer) は,データポインタ 又は 手続ポインタのいずれか
とする。
ポインタは,ポインタ代入(7.4.2 参照)によって 指示先 (target) と結合されて 指示状態 (pointer associated) に
なる。データポインタは,割付け(6.3.1 参照)によって指示先と結合されて指示状態になってもよい。ポインタは,
NULLIFY 文の実行の結果として,空状態のポインタとのポインタ代入の結果として,暗黙的初期値指定によって,
又は 明示的初期値指定によって 空状態 (disassociated) になる。データポインタは,DEALLOCATE 文の実行によっ
ても, 空状態 (disassociated) になることがある。空状態のポインタは,指示先と結合していない(16.4.2 参照)。
結合していないポインタは,引用も確定もしてはならない。
データポインタが配列であるときは,次元数は宣言されるが,寸法はそのポインタが指示先と結合した時に決まる。
2.4.7 記憶場所
この規格で定める多くの機能は,データ実体の記憶場所の物理的な特性を何も想定していない。しかし,記憶列結
合に依存する事項を含むプログラム単位は,16.4.3 で規定する記憶域の制約を守らなければならない。
2.5 基本用語
この規格の目的のために,この箇条で用語を定義する。

――――― [JIS X 3001-1 pdf 30] ―――――

次のページ PDF 31

JIS X 3001-1:2009の引用国際規格 ISO 一覧

  • ISO/IEC 1539-1:2004(IDT)

JIS X 3001-1:2009の国際規格 ICS 分類一覧

JIS X 3001-1:2009の関連規格と引用規格一覧

規格番号
規格名称