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

  72
X 3001-1 : 2009 (ISO/IEC 1539-1 : 2004)
C550 (R522) IND 文中の束縛要素に要素名が含まれる場合,その BIND 文は,モジュールの宣言部に現れな
ければならず,その要素は相互利用可能変数でなければならない(15.2.4 及び 15.2.5 参照)。
C551 (R522) 言語束縛指定子が NAME 指定子である場合,束縛要素並び中の要素は,1 個だけとする。
C552 (R522) 束縛要素が共通ブロックである場合,その中の各変数は,相互利用可能でなければならない
(15.2.4 及び 15.2.5 参照)。
この文は,並び中の変数や共通ブロックに対して,BIND 属性 (5.1.2.4) を指定する。
5.2.5 DATA 文
DATA 文 (DATA statement) は,明示的初期値指定を行う(5.1 参照)。
R524 DATA 文 is DATA 初期化対応 [ [ , ] 初期化対応 ] ...
一つの変数 又は その一部分に対して,プログラム中で明示的初期値指定を 2 回以上してはならない。ポインタで
ない実体に対する型定義に暗黙的初期値指定があるとき,その実体を初期化項目として書いてはならない。
DATA 文中の前もって型宣言されていない変数は,その後,暗黙の型規則を確認する型宣言に書いてもよい。DATA
文に書いた配列名,部分配列 又は 配列要素は,その配列の性質が前もって宣言されていなければならない。
名前付き共通ブロック中の変数を除き,名前付き変数は,その一部分でも DATA 文で初期化されていれば SAVE
属性をもつ。これを SAVE 文 又は SAVE 属性をもつ型宣言文で確認してもよい。
R525 初期化対応 is 初期化項目並び / 初期値表現並び /
R526 初期化項目 is 変数
or 初期化 DO 形反復
R527 初期化 DO 形反復 is ( 初期化 DO 形項目並び , 初期化 DO 変数 = スカラ整数式 ,
スカラ整数式 [ , スカラ整数式 ] )
R528 初期化 DO 形項目 is 配列要素
or スカラ構造体成分
or 初期化 DO 形反復
R529 初期化 DO 変数 is スカラ整変数
C553 (R526) 初期化項目である変数において,添字,部分配列添字,部分列開始位置 及び 部分列終了位置は,
初期値式でなければならない。
C554 (R526) 初期化項目並び中 又は 初期化 DO 形項目並び中に特定子を書いた変数は,仮引数,参照結合 若
しくは 親子結合によって参照可能な変数,DATA 文が初期値設定プログラム単位以外にある名前付き共
通ブロックの変数,無名共通ブロックの変数,関数名,関数結果名,自動割付け実体 又は 割付け変数で
あってはならない。
C555 (R526) 初期化項目として書く初期化 DO 形項目 又は 変数は,ポインタ実体の実体特定子であってはな
らない。
C556 (R529) 初期化 DO 変数は,名前付き変数でなければならない。
C557 (R527) 初期化 DO 形反復のスカラ整数式は,定数,部分定数 及び 外側を囲む初期化 DO 形反復の DO
変数だけを一次子とする式でなければならない。各演算は,組込みでなければならない。
C558 (R528) 配列要素は,変数でなければならない。
C559 (R528) スカラ構造体成分は,変数でなければならない。
C560 (R528) スカラ構造体成分は,添字並びをもつ部分参照を少なくとも一つ含まなければならない。

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

                                                                                                   73
X 3001-1 : 2009 (ISO/IEC 1539-1 : 2004)
C561 初期化 DO 形項目である配列要素 又は スカラ構造体成分において,各添字は,定数,部分定数 又は そ
の初期化 DO 形反復 若しくは 外側を囲む初期化 DO 形反復の DO 変数だけを一次子とする式でなけれ
ばならない。各演算は,組込みでなければならない。
R530 初期値表現 is [ 初期値反復数 * ] 初期値定数
R531 初期値反復数 is スカラ整定数
or スカラ整部分定数
C562 (R531) 初期値反復数は,正 又は ゼロでなければならない。初期値反復数が名前付き定数であるとき,
それは,同じ有効域内で前もって宣言されているか,又は 参照結合 若しくは 親子結合によって参照可
能になっていなければならない。
R532 初期値定数 is スカラ定数
or スカラ部分定数
or 任意符号付き整定数表現
or 任意符号付き実定数表現
or 空初期化
or 構造体構成子
C563 (R532) ATA 文中の定数値が名前付き定数 又は 構造体構成子であるとき,名前付き定数 及び 派生型
は,その有効域内で既に宣言されているか参照結合 又は 親子結合で参照できなければならない。
C564 (R532) 初期値定数が構造体構成子であるとき,各成分は,初期値式でなければならない。
R533 整部分定数 is 部分定数
C565 (R533) 整部分定数は,整数型でなければならない。
R534 部分定数 is 特定子
C566 (R534) 部分定数は,定数の部分実体でなければならない。
C567 (R534) すべての添字,部分列開始位置 及び 部分列終了位置は,初期値式でなければならない。
初期化項目並びは,展開されてポインタ 及び スカラ変数の列(以降の文中では “変数の展開列” と呼ぶ。)になる。
初期化項目並び中に書いた添字なしのポインタでない配列名は,配列要素順序(6.2.2.2 参照)に従った配列要素全
体の列と等価とする。部分配列も,配列要素順序に従ったその配列要素の列と等価とする。初期化 DO 形反復は,DO
構文(8.1.6.4 参照)と同じ手順で,DO 変数の制御に従って展開されて,配列要素 又は 構造体成分の列になる。
初期値表現並びは,展開されて初期値定数の列になる。初期値反復数は,続く初期値定数を列の中に指定回数だけ
繰り返す。省略したときは,反復数を 1 とする。
大きさゼロの配列 及び 繰返し回数がゼロである DO 形反復は,変数の展開列中に変数を与えないが,長さゼロの
スカラ文字変数は,列中に変数を与える。反復数がゼロである初期値定数は,スカラ初期値定数の展開列中に初期値
定数を与えない。
変数の展開列と初期値定数の展開列とは,1 対 1 に対応する。各初期値定数は,対応する変数の初期値 又は 空初
期化を指定する。二つの展開列の長さは,同じでなければならない。
初期値定数が空初期化であるとき,かつそのときに限り,対応する初期化項目は,POINTER 属性をもたなければ
ならない。初期化項目がポインタである場合,その初期結合状態は,空状態とする。
空初期化でない初期値定数は,組込み代入の規則(7.4.1.2 参照)に従って,対応する変数に適合可能でなければ
ならない。その変数は,組込み代入の規則に従って初期値定数の値で初期確定になる。必要ならば,値は,組込み代
入文の規則 (7.4.1.3) に従って,対応する変数に,型,型パラメタ 及び 形状が適合するように変換される。

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

  74
X 3001-1 : 2009 (ISO/IEC 1539-1 : 2004)
初期値定数が非 10 進定数表現であるとき,対応する変数は,整数型でなければならない。非 10 進定数表現である
初期値定数は,処理系の最大の 10 進指数範囲をもつ表現方法を指定する種別の,整定数表現であるかのように扱わ
れる。
例 5.25 DATA 文の例を次に示す。
CHARACTER (LEN = 10) AME
INTEGER, DIMENSION (0:9) :: MILES
REAL, DIMENSION (100, 100) :: SKEW
TYPE (NODE), POINTER :: HEAD_OF_LIST
TYPE (PERSON) MYNAME, YOURNAME
DATA NAME / ’JOHNDOE’/, MILES / 10*0 /
DATA ((SKEW (K, J), J = 1, K), K = 1, 100) / 5050 * 0.0 /
DATA ((SKEW (K, J), J = K + 1, 100), K = 1, 99) / 4950 * 1.0 /
DATA HEAD_OF_LIST / NULL() /
DATA MYNAME / PERSON (21, ’JOHNSMITH’) /
DATA YOURNAME % AGE, YOURNAME % NAME / 35, ’FREDBROWN’ /
DOE と
文字変数 NAME は,定数の長さが変数の長さより短いので,右側に空白詰めされた JOHN
いう値に初期化される。整数型配列 MILES の 10 個の要素すべては,ゼロに初期化される。2 次元配
列 SKEW は,対角要素を含む下三角部がゼロに,上三角部が 1 に初期化される。構造体 MYNAME 及び
YOURNAME は,例 4.17 の派生型 PERSON を使って宣言されている。ポインタ HEAD OF LIST は,例
4.36 の派生型 NODE を使って宣言されていて,初期に空状態になる。MYNAME は,構造体構成子で初
期化される。YOURNAME は,各成分の値を別々に与えて初期化される。
5.2.6 DIMENSION 文
R535 DIMENSION 文 is DIMENSION [ :: ] 配列名 ( 配列形状指定 ) , 配列名 ( 配列形状指定 ) ...
この文は,並び中の実体に対して DIMENSION 属性(5.1.2.5 参照)及び 配列の性質を指定する。
例 5.26 DIMENSION 文の例を次に示す。
DIMENSION A (10), B (10, 70), C (:)
5.2.7 INTENT 文
R536 INTENT 文 is INTENT ( 授受特性指定 ) :: ] 仮引数名並び
この文は,並び中の仮引数に対して INTENT 属性(5.1.2.7 参照)を指定する。
例 5.27 INTENT 文の例を次に示す。
SUBROUTINE EX (A, B)
INTENT (INOUT) :: A, B
5.2.8 OPTIONAL 文
R537 OPTIONAL 文 is OPTIONAL [ :: ] 仮引数名並び
この文は,並び中の仮引数に対して OPTIONAL 属性(5.1.2.9 参照)を指定する。
例 5.28 OPTIONAL 文の例を次に示す。
SUBROUTINE EX (A, B)
OPTIONAL :: B

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

                                                                                                   75
X 3001-1 : 2009 (ISO/IEC 1539-1 : 2004)
5.2.9 PARAMETER 文
PARAMETER 文 (PARAMETER statement) は,並び中の名前付き定数に対して PARAMETER 属性(5.1.2.10
参照)及び 値を指定する。
R538 PARAMETER 文 is PARAMETER ( 名前付き定数定義並び )
R539 名前付き定数定義 is 名前付き定数 = 初期値式
名前付き定数は,型,型パラメタ 及び 形状をもち,それらはその宣言部で前もって宣言するか,又は 暗黙の型規
則(5.3 参照)に従うかしていなければならない。名前付き定数の型が暗黙の型規則によっているならば,その後の
宣言部での宣言は,その暗黙の型 及び 暗黙の型パラメタ値を確認するものでなければならない。
それぞれの名前付き定数は,組込み代入規則(7.4.1.3 参照)に従って,等号の右辺の初期値式によって与えられる
値で確定になる。必要ならば,値は,組込み代入文の規則(7.4.1.3 参照)に従って,対応する名前付き定数に,型,
型パラメタ 及び 形状が適合(5.1.1.2 参照)するように変換される。
例 5.29 PARAMETER 文の例を次に示す。
PARAMETER (MODULUS = MOD (28, 3), NUMBER_OF_SENATORS = 100)
5.2.10 POINTER 文
R540 POINTER 文 is POINTER [ :: ] ポインタ宣言並び
R541 ポインタ宣言 is 実体名 [ ( 無指定上下限並び )
or 手続要素名
C568 (R541) 手続要素名には,EXTERNAL 属性 (5.1.2.6) を明示的に指定しなければならない。
この文は,並び中の実体 及び 手続要素に対して POINTER 属性(5.1.2.11 参照)を指定する。
例 5.30 POINTER 文の例を次に示す。
TYPE (NODE) :: CURRENT
POINTER :: CURRENT, A (:, :)
5.2.11 PROTECTED 文
R542 PROTECTED 文 is PROTECTED [ :: ] 要素名並び
この文は,並び中の要素に対して PROTECTED 属性(5.1.2.12 参照)を指定する。
5.2.12 SAVE 文
R543 SAVE 文 is SAVE [ [ :: ] 保存要素並び ]
R544 保存要素 is 実体名
or 手続ポインタ名
or / 共通ブロック名 /
R545 手続ポインタ is 名前
C569 (R545) 手続ポインタ名は,手続ポインタの名前でなければならない。
C570 (R543) 保存要素並びを省略した SAVE 文が有効域内にあるとき,同じ有効域内に,ほかに明示的な SAVE
属性 又は SAVE 文があってはならない。
保存要素並びのある SAVE 文は,並び中で指定された要素 又は 並び中で指定された共通ブロックに含まれる要素
に対して SAVE 属性(5.1.2.13 参照)を指定する。保存要素並びのない SAVE 文は,その有効域内のすべての可能
な項目を指定したかのように扱われる。

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

  76
X 3001-1 : 2009 (ISO/IEC 1539-1 : 2004)
ある共通ブロック名を,プログラム中の主プログラム以外の有効域内の SAVE 文に指定したとき,主プログラムの
有効域を除いて,その共通ブロックが現れるすべての有効域内で,その共通ブロック名を SAVE 文に指定しなければ
ならない。SAVE 文で宣言した共通ブロックにおいて,RETURN 文 又は END 文が実行された時の共通ブロック記
憶列(5.5.2.1 参照)中の値は,プログラムの実行系列中で次にその共通ブロック名を指定している有効域 又は その
共通ブロックを参照する有効域で用いることができる。名前付き共通ブロックを主プログラムの有効域内で指定した
とき,共通ブロック記憶列の現在の値は,その名前付き共通ブロックを指定している,それぞれの有効域で用いるこ
とができる。名前付き共通ブロック記憶列中の各要素の定義状態は,その共通ブロック記憶列に対してそれまでにな
された結合によって決まる。
SAVE 文は,主プログラム内の宣言部に書いてもよいが,効果はない。
例 5.31 SAVE 文の例を次に示す。
SAVE A, B, C, / BLOCKA /, D
5.2.13 TARGET 文
R546 TARGET 文 is TARGET [ :: ] 実体名 [ ( 配列形状指定 )
[ , 実体名 [ ( 配列形状指定 ) ] ...
この文は,並び中の実体に対して TARGET 属性(5.1.2.14 参照)を指定する。
例 5.32 TARGET 文の例を次に示す。
TARGET :: A (1000, 1000), B
5.2.14 VALUE 文
R547 VALUE 文 is VALUE [ :: ] 仮引数名並び
この文は,並び中の仮引数に対して VALUE 属性(5.1.2.15 参照)を指定する。
5.2.15 VOLATILE 文
R548 VOLATILE 文 is VOLATILE [ :: ] 実体名並び
この文は,並び中の実体に対して VOLATILE 属性(5.1.2.16 参照)を指定する。
5.3 IMPLICIT 文
IMPLICIT 文 (IMPLICIT statement) は,有効域内において,この文で指定された英字を第 1 文字としてもつ名
前のデータ要素が,暗黙的に型宣言されるときの型 (もしあれば) 及び 型パラメタを指定する。その有効域内で暗
黙の型規則を適用しないと指定することもできる。
R549 IMPLICIT 文 is IMPLICIT 暗黙型宣言並び
or IMPLICIT NONE
R550 暗黙型宣言 is 宣言型指定子 ( 英字範囲並び )
R551 英字範囲 is 英字 [ - 英字 ]
C571 (R549) ある有効域内で IMPLICITNONE を指定するときには,どの PARAMETER 文よりも前に指定し
なければならず,その有効域内に他の IMPLICIT 文を書いてはならない。
C572 (R551) “-” と 2 番目の英字を書くとき,2 番目の英字は 1 番目の英字より ABC 順で後になければなら
ない。

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

次のページ PDF 91

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

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

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

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

規格番号
規格名称