この規格ページの目次
77
X 3001-1 : 2009 (ISO/IEC 1539-1 : 2004)
英字範囲として “-” で区切られた二つの英字は,1 番目の文字から 2 番目の文字までの英字を ABC 順でいちいち
指定した並びと等価とする。例えば,A-C は,A,B,C に等しい。一つの有効域内のすべての IMPLICIT 文を通じて,
同じ英字を,単独の英字として書くか英字範囲に含めるかして,2 回以上指定してはならない。
各有効域内において,それぞれの英字 A, B, . . . , Z と型 及び 型パラメタとの間の対応付けが存在する。対応付け
NONE は,すべ
は,空でありうる。IMPLICIT 文は,英字範囲並び中の英字に対して対応付けを指定する。IMPLICIT
ての対応付けを空にする。プログラム単位 又は 引用仕様本体において,対応付けが指定されていない英字は,I, J,
. . . , N であれば基本整数型に,それ以外であれば基本実数型に暗黙的に対応付けられる。内部手続 又は モジュール
手続において,対応付けが指定されていない英字は,暗黙的に親有効域の対応付けに従う。
型宣言文で明示的に宣言されていなくて,組込み関数でもなく,更に参照結合 又は 親子結合によって参照可能に
なったのでもないデータ要素は,その名前の第 1 文字の対応付けが空でないとき,その対応付けに従った型 及び 型
パラメタをもつとして暗黙的に宣言される。データ要素の第 1 文字の対応付けは,IMPLICIT 文によって前もって定
めた対応付けか,又は その英字に対する暗黙的な対応付けとする。 ある派生型が局所的な有効範囲で参照不能であっ
ても,その親有効範囲で参照可能であれば,その対応付けは有効とする。データ要素は,それに対する最も外側の有
効域内で明示的に型宣言されたかのように扱われる。FUNCTION 文中の明示的な型指定は,その関数副プログラム
の結果変数名について,IMPLICIT 文を上書きする。
――――― [JIS X 3001-1 pdf 91] ―――――
78
X 3001-1 : 2009 (ISO/IEC 1539-1 : 2004)
例 5.33 IMPLICIT 文の例を次に示す。
MODULE EXAMPLE_MODULE
IMPLICIT NONE
...
INTERFACE
FUNCTION FUN (I) ! すべてのデータ要素を明示的に宣言する必要はない。
INTEGER FUN
END FUNCTION FUN
END INTERFACE
CONTAINS
FUNCTION JFUN (J) ! すべてのデータ要素を明示的に宣言する必要がある。
INTEGER JFUN,J
...
END FUNCTION JFUN
END MOULE EXAMPLE_MODULE
SUBROUTINE SUB
IMPLICIT COMPLEX (C)
C = (3.0, 2.0) ! C は暗黙的に複素数型であると宣言される。
...
CONTAINS
SUBROUTINE SUB1
IMPLICIT INTEGER (A, C)
C = (0.0, 0.0) ! C は親子結合によって複素数型となる。
Z = 1.0 ! Z は暗黙的に実数型であると宣言される。
A = 2 ! A は暗黙的に整数型であると宣言される。
CC = 1 ! CC は暗黙的に整数型であると宣言される。
...
END SUBROUTINE SUB1
SUBROUTINE SUB2
Z = 2.0 ! Z は暗黙的に実数型であると宣言されるが,
! SUB1 中の同じ名前の変数とは異なる。
...
END SUBROUTINE SUB2
SUBROUTINE SUB3
USE EXAMPLE_MODULE ! 参照結合による整数型関数 FUN の参照
Q = FUN (K) ! Q は暗黙的に実数型であると宣言される。
... ! K は暗黙的に整数型であると宣言される。
END SUBROUTINE SUB3
END SUBROUTINE SUB
――――― [JIS X 3001-1 pdf 92] ―――――
79
X 3001-1 : 2009 (ISO/IEC 1539-1 : 2004)
例 5.34 IMPLICIT 文に,派生型の宣言型指定子を指定してもよい。次の IMPLICIT 文 及び 型定義があ
るとする。
IMPLICIT TYPE (POSN) (A-B, W-Z), INTEGER (C-V)
TYPE POSN
REAL X, Y
INTEGER Z
END TYPE POSN
英字 A, B, W, X, Y 又は Z で始まる変数は,暗黙的に型 POSN となり,これら以外の変数は暗黙的に
整数型となる。
例 5.35 局所的な有効範囲で参照不能な派生型への対応付けの例を次に示す。
PROGRAM MAIN
IMPLICIT TYPE(BLOB) (A)
TYPE BLOB
INTEGER :: I
END TYPE BLOB
TYPE(BLOB) :: B
CALL STEVE
CONTAINS
SUBROUTINE STEVE
INTEGER :: BLOB
..
AA = B
..
END SUBROUTINE STEVE
END PROGRAM MAIN
サブルーチン STEVE において,BLOB が異なる意味を与えられているので,変数を型 BLOB として
明示的に宣言することはできない。しかし,英字 A に対して型 BLOB が暗黙的に対応付けられている
ので, AA は型 BLOB になる。
5.4 NAMELIST 文
NAMELIST 文 (NAMELIST statement) は,データ転送(9.5 及び 10.10 参照)に当たって,一つの名前で参照
できる名前付きデータ実体群を指定する。
R552 NAMELIST 文 is NAMELIST / 変数群名 / 変数群要素並び
[ [ , ] / 変数群名 / 変数群要素並び ] ...
C573 (R552) 変数群名は,参照結合によって参照可能になった名前であってはならない。
R553 変数群要素 is 変数名
C574 (R553) 変数群要素は,大きさ引継ぎ配列であってはならない。
C575 (R552) 変数群名が PUBLIC 属性をもつとき,変数群要素並びの各項目は,PRIVATE 属性をもっては
ならない。
NAMELIST 文で指定した変数の順序が,出力時の値の順序になる。
同じ変数群名を,有効域内で二つ以上の NAMELIST 文に書いてもよい。 一つの有効域内で同じ変数群名を 2 回
以上書くと,その変数群要素をその順に全部つないだ並びとして扱われる。
一つの変数群要素を,二つ以上の変数群に含めてもよい。
――――― [JIS X 3001-1 pdf 93] ―――――
80
X 3001-1 : 2009 (ISO/IEC 1539-1 : 2004)
変数群要素は,参照結合 若しくは 親子結合によって参照されるか,又は,その型,型パラメタ 及び 形状が同じ有
効域内の宣言文か手続の頭書きで前もって指定されるか 若しくは その有効域の暗黙の型規則で決められたものでな
ければならない。変数群要素が暗黙の型規則によっているならば,その後の型宣言文は,その暗黙の型 及び 型パラ
メタを確認するものでなければならない。
例 5.36 NAMELIST 文の例を次に示す。
NAMELIST /NLIST/ A, B, C
5.5 データ実体の記憶列結合
一般に,データ実体の物理的記憶単位 及び 記憶順序は指定できない。しかし,EQUIVALENCE 文,COMMON
文 若しくは SEQUENCE 文を使うか,又は BIND(C) 型属性指定子を指定することによって,記憶単位の順序 及び
配置を制御することができる。記憶列結合の一般的な機構は,16.4.3 による。
5.5.1 EQUIVALENCE 文
EQUIVALENCE 文 (EQUIVALENCE statement) は,有効域内で二つ以上の実体が同じ記憶単位を共有すること
を指定する。これは,その記憶単位を共有する実体の記憶列結合を引き起こす。
記憶列共有する実体が異なる型 又は 型パラメタをもつとき,EQUIVALENCE 文は,型変換 又は 数学的な等値化
を行わない。スカラ変数と配列が記憶列共有しているとき,スカラ変数は配列の性質をもたないし,配列はスカラの
性質をもたない。
R554 EQUIVALENCE 文 is EQUIVALENCE 結合対応並び
R555 結合対応 is ( 結合実体 , 結合実体並び )
R556 結合実体 is 変数名
or 配列要素
or 部分列
C576 (R556) 結合実体は,仮引数,ポインタ,割付け変数,割付け末端成分をもつ派生型の実体,不連続派生
型の実体,成分選択のどの水準かにポインタをもつ派生型の実体,自動割付け実体,関数名,入口名,結
果名,BIND 属性をもつ変数,共通ブロック内にあって BIND 属性をもつ変数 又は 名前付き定数を基底
実体とする特定子であってはならない。
C577 (R556) 結合実体は,二つ以上の部分参照をもつ特定子であってはならない。
C578 (R556) 結合実体は,TARGET 属性をもってはならない。
C579 (R556) 結合実体の添字 及び 文字部分列式は,整数初期値式(7.1.7 参照)でなければならない。
C580 (R555) 結合実体の一つが基本整数型,基本実数型,倍精度実数型,基本複素数型,基本論理型 又は 数
値連続型であるとき,結合対応中の実体はすべてこれらの型でなければならない。
C581 (R555) 結合実体の一つが基本文字型 又は 文字連続型であるとき,結合対応中の実体はすべてこれらの
型でなければならない。
C582 (R555) 結合実体の一つが数値連続型でも文字連続型でもない連続した派生型であるとき,結合対応中の
実体はすべてこれと同じ型パラメタ値をもった同じ型でなければならない。
C583 (R555) 結合実体の一つが基本整数型,基本実数型,倍精度実数型,基本複素数型,基本論理型 及び 基
本文字型を除いた組込み型であるとき,結合対応の実体はすべてこれと同じ種別パラメタ値をもった同じ
型でなければならない。
C584 (R556) 結合実体の一つが PROTECTED 属性をもっている場合,その結合対応中のすべての実体も
PROTECTED 属性をもっていなければならない。
――――― [JIS X 3001-1 pdf 94] ―――――
81
X 3001-1 : 2009 (ISO/IEC 1539-1 : 2004)
C585 (R556) 結合実体の名前は,参照結合によって参照可能になった名前であってはならない。
C586 (R556) 部分列は,長さゼロであってはならない。
注記 5.37 EQUIVALENCE 文は,連続型構造体の結合 及び 基本種別でない型パラメタをもつ組込み型
の実体を結合してもよいが,これらの実体を EQUIVALENCE 文中に書く場合には,厳格な規則が
ある。
EQUIVALENCE 文中に書く構造体は,連続型構造体でなければならない。連続型構造体が数値連
続型でも文字連続型でもない場合,その構造体は,同じ型パラメタ値をもった同じ型の実体とだけ結
合できる。
数値連続型構造体は,別の数値連続型構造体と結合でき,基本整数型,基本実数型,倍精度実数型,
基本複素数型 又は 基本論理型の実体とも結合できる。したがって,構造体の末端成分は,これらの
組込み型の実体とだけ結合されることになる。
文字連続型構造体は,基本文字型の実体 及び 別の文字連続型構造体と結合できる。
基本種別でない型パラメタをもつ組込み型の実体は,同じ型 及び 同じ種別型パラメタをもつ実体
とだけ結合できる。
EQUIVALENCE 文と暗黙的初期値指定との相互作用は,16.4.3.3 で更に規定する。
5.5.1.1 記憶列共有結合
EQUIVALENCE 文は,結合対応に書いたデータ実体の記憶列(16.4.3.1 参照)が互いに記憶列結合することを指
定する。結合対応中の大きさがゼロでない列の先頭の記憶単位は,すべて同じ記憶単位とする。結合対応中の大きさ
がゼロの列は,互いに記憶列結合し,かつ 大きさがゼロでない列と同じ先頭の記憶単位にも結合する。これは結合対
応中のデータ実体の記憶列結合を引き起こし,更に他のデータ実体との記憶列結合を引き起こすこともある。
5.5.1.2 基本文字型実体の記憶列共有
基本文字型のデータ実体は,基本文字型の実体とだけ記憶列共有できる。記憶列共有するデータ実体の長さは,同
じである必要はない。
EQUIVALENCE 文は,一つの結合対応に書いたすべての基本文字型データ実体の記憶列が互いに記憶列結合する
ことを指定する。結合対応中の大きさがゼロでない列は,すべて同じ先頭の文字記憶単位をもつ。結合対応中の大き
さがゼロの列は,互いに記憶列結合し,かつ 大きさがゼロでない列と同じ先頭の文字記憶単位にも結合する。これは
結合対応中のデータ実体の記憶列結合を引き起こし,更に他のデータ実体との記憶列結合を引き起こすこともある。
例 5.38 次の宣言があるとする。
CHARACTER (LEN = 4) :: A, B
CHARACTER (LEN = 3) :: C (2)
EQUIVALENCE (A, C (1)), (B, C (2))
このときの A,B 及び C の結合を次に図示する。
1 2 3 4 5 6 7
A -
B -
C(1) - C(2) -
5.5.1.3 配列名 及び 配列要素特定子
――――― [JIS X 3001-1 pdf 95] ―――――
次のページ PDF 96
JIS X 3001-1:2009の引用国際規格 ISO 一覧
- ISO/IEC 1539-1:2004(IDT)
JIS X 3001-1:2009の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.060 : 情報技術に使用される言語
JIS X 3001-1:2009の関連規格と引用規格一覧
- 規格番号
- 規格名称