この規格ページの目次
57
X 3001-1 : 2009 (ISO/IEC 1539-1 : 2004)
C494 (R466) 型指定子が省略されたとき,一つの配列構成子中の配列構成項目の式の型 及び 種別型パラメタ
は,すべて同じでなければならない。
C495 (R466) 型指定子が組込み型を指定するとき,一つの配列構成子中の配列構成項目の式の型は,表 7.8 で
指定したとおりに型指定子の型の変数と型が適合する組込み型でなければならない。
C496 (R466) 型指定子が派生型を指定するとき,一つの配列構成子中の配列構成項目の式の型は,その派生型
であって,型指定子で指定した型と同じ種別型パラメタ値をもたなければならない。
C497 (R470) 配列構成 DO 形反復の配列構成 DO 変数に,その配列構成 DO 形反復に含まれる配列構成 DO
形反復の配列構成 DO 変数と同じ変数を指定してはならない。
型指定子が省略されたとき,配列構成子中のすべての配列構成項目の式は同じ長さ型パラメタをもたなければなら
ない。このとき,配列構成子の型 及び 型パラメタは,配列構成項目の式と同じとする。
型指定子を書いたとき,その型指定子は,配列構成子の型 及び 型パラメタを指定する。配列構成子中の配列構成
項目の式は,その型 及び 型パラメタの変数への組込み代入と型が適合しなければならない。それぞれの値は,組込
み代入 (7.4.1.3 参照) の規則に従って配列構成子の型パラメタに変換される。
反復回数がゼロである配列構成 DO 形反復中の配列構成項目の文字長は,配列構成 DO 変数にも,初期値式ではな
い式の値にも,依存してはならない。
配列構成項目がスカラ式である場合,スカラ式の値は配列構成子の要素を指定する。配列構成項目が配列式の場合,
配列式の要素の値は,配列要素順序 (6.2.2.2) に対応して配列構成子の要素の列を指定する。配列構成項目が配列構
成 DO 形反復である場合,配列構成 DO 形反復は,DO 構文 (8.1.6.4) と同じ配列構成 DO 変数の制御に従って展開
され,配列構成子の要素の列を形成する。
配列構成 DO 形反復におけるループの初期化 及び 実行は,DO 構文と同じとする。
列が空のときは,その列は,大きさゼロの 1 次元配列を形成する。
例 4.67 組込み関数 RESHAPE (13.7.99) を用いた任意の正当な配列形状への 1 次元配列の変形
X = (/ 3.2, 4.01, 6.5 /)
Y = RESHAPE (SOURCE = [ 2.0, [ 4.5, 4.5 ], X ], SHAPE = [ 3, 2 ] )
この結果,3 × 2 の配列となる Y の値は,次のとおりになる。
2.0 3.2
4.5 4.01
4.5 6.5
例 4.68 配列構成 DO 形反復をもつ配列構成子
(/ (I, I = 1, 1075) /)
[ 3.6, (3.6/I, I = 1, N)
例 4.69 型定義 PERSON (例 4.17) を参照した派生型配列値の構成
(/ PERSON (40, PERSON
’SMITH’), (20, /)
’JONES’)
例 4.70 型定義 LINE(例 4.28)を参照し 2 次元配列を成分としてもつ派生型スカラ値の構成
LINE (RESHAPE ( (/ 0.0, 0.0, 1.0, 2.0 /), (/ 2, 2 /) ), 0.1, 1)
ここでは,組込み関数 RESHAPE を用いて,座標 (0, 0) から座標 (1, 2) までの幅 0.1cm の実線を表
現する値を構成している。
――――― [JIS X 3001-1 pdf 71] ―――――
58
X 3001-1 : 2009 (ISO/IEC 1539-1 : 2004)
例 4.71 大きさがゼロの配列構成子の例
(/ INTEGER :: /)
(/ ( I, I = 1, 0) /)
例 4.72 長さ型パラメタを指定する配列構成子の例
(/ CHARACTER(LEN=7) :: ’Takata’, ’Hayashi’
’Tanaka’, /)
この配列構成子で型指定がない場合,すべての定数が同じ文字長でなければならない。
5 データ実体の宣言 及び 指定
すべてのデータ実体は,型 及び 次元数をもち,型パラメタ 及び 実体の使用法を決定するその他の性質をもつこ
ともできる。ひとまとめにして,これらの性質をデータ実体の 属性 (attribute) という。 名前付きデータ実体の型は,
型宣言文 (type declaration statement) によって明示的に指定するか,又は その名前の第 1 文字によって暗黙的に決
定する(5.3 参照)。実体のすべての属性を一つの型宣言文に含めてもよいし,別々の宣言文で指定してもよい。
例 5.1 次の文は,INCOME 及び EXPENDITURE という名前の二つのデータ実体を整数型であると宣言する。
INTEGER :: INCOME, EXPENDITURE
次の文は,X,Y 及び Z という名前の三つのデータ実体を宣言する。
REAL, DIMENSION (-5:+5) :: X, Y, Z
これらは三つとも,基本実数型であり,下限が −5,上限が +5,大きさが 11 の 1 次元の形状明示
配列となる。
5.1 型宣言文
R501 型宣言文 is 宣言型指定子 [ [ , 属性指定子 ] ... :: ] データ要素宣言並び
R502 宣言型指定子 is 組込み型指定子
or TYPE ( 派生型指定子 )
or CLASS ( 派生型指定子 )
or CLASS (*)
C501 (R502) 宣言型指定子において,“:” 及び “*” 以外の型パラメタ値は,宣言式でなければならない。
C502 (R502) “CLASS(派生型指定子)” の場合,その派生型指定子には,拡張可能型を指定しなければならない。
注記 5.2 宣言型指定子は,非実行文中で使われる。型指定子は,配列構成子,SELECT TYPE 構成子 又
は ALLOCATE 文中で使われる。
C503 (R502) “TYPE(派生型指定子)” の場合,その派生型には,抽象型(4.5.6 参照)を指定してはならない。
R503 属性指定子 is 参照許可指定子
or ALLOCATABLE
or ASYNCHRONOUS
or DIMENSION ( 配列形状指定 )
or EXTERNAL
or INTENT ( 授受特性指定 )
or INTRINSIC
――――― [JIS X 3001-1 pdf 72] ―――――
59
X 3001-1 : 2009 (ISO/IEC 1539-1 : 2004)
or 言語束縛指定子
or OPTIONAL
or PARAMETER
or POINTER
or PROTECTED
or SAVE
or TARGET
or VALUE
or VOLATILE
R504 データ要素宣言 is 実体名 [ ( 配列形状指定 ) [ * 文字長 ] [ 初期値指定 ]
or 関数名 [ * 文字長 ]
C504 (R504) データ要素宣言中に現れる “:” と “*” 以外の文字長中の型パラメタ値は,宣言式でなければな
らない。
R505 実体名 is 名前
C505 (R505) 実体名は,データ実体の名前でなければならない。
R506 初期値指定 is = 初期値式
or => 空初期化
R507 空初期化 is 関数引用
C506 (R507) 関数引用は,引数なしの組込み関数 NULL の引用でなければならない。
C507 (R501) 同じ属性指定子を,一つの型宣言文中で 2 回以上指定してはならない。
C508 一つのデータ要素には,一つの有効域内で,どの属性も 2 回以上明示的に指定してはならない。
C509 (R501) LASS によって宣言された要素は,仮引数であるか,ALLOCATABLE 属性 又は POINTER 属
性をもっていなければならず,VALUE 属性をもってはならない。
C510 (R501) OINTER 属性 又は ALLOCATABLE 属性をもって宣言された配列は,無指定上下限並び
(5.1.2.5.3 参照)の形の配列形状指定で指定しなければならない。
C511 (R501) LLOCATABLE 属性 及び POINTER 属性をもたない関数結果としての実体名に対する配列形
状指定は,明示上下限並びでなければならない。
C512 (R501) OINTER 属性を指定したとき,ALLOCATABLE 属性,TARGET 属性, 及び INTRINSIC
属性は指定してはならない。
C513 (R501) ARGET 属性を指定したとき,POINTER 属性,EXTERNAL 属性,INTRINSIC 属性 及び
PARAMETER 属性は指定してはならない。
C514 (R501) ARAMETER 属性は,仮引数,ポインタ,割付け要素,関数 及び 共通ブロック中の実体には
指定してはならない。
C515 (R501) NTENT 属性,VALUE 属性 及び OPTIONAL 属性は,仮引数に対してだけ指定してよい。
C516 (R501) NTENT 属性は,POINTER 属性をもたない仮手続には指定してはならない。
C517 (R501) AVE 属性は,共通ブロック中の個々の実体,仮引数,手続,関数結果,自動割付けデータ実体
及び PARAMETER 属性をもつ実体には指定してはならない。
C518 一つのデータ要素は,INTRINSIC 属性をもつとき,EXTERNAL 属性をもつことはできない。
C519 (R501) データ要素宣言並び中の関数以外のデータ要素には,EXTERNAL 属性 及び INTRINSIC 属性
を指定してはならない。
――――― [JIS X 3001-1 pdf 73] ―――――
60
X 3001-1 : 2009 (ISO/IEC 1539-1 : 2004)
C520 (R504) “* 文字長” は,型指定が文字型である場合にだけ指定してよい。
C521 (R504) 関数名は,外部関数,組込み関数,仮手続関数,手続ポインタ 又は の名前でなければな
文関数
らない。
C522 (R501) ARAMETER 属性(5.1.2.10 参照)があるときは,初期値指定を省略してはならない。
C523 (R501) 初期値指定を書いたとき,そのデータ要素宣言並びの前の区切りの 2 連コロンを省略してはなら
ない。
C524 (R504) 初期値指定は,実体名が仮引数,関数結果,型宣言が初期値設定プログラム単位以外にある名前
付き共通ブロック中の実体,無名共通ブロック中の実体,割付け変数,外部名,組込み名 又は 自動割付
け実体のいずれかであるならば,指定してはならない。
C525 (R504) 初期値指定に “=>” を書いたとき,実体は,POINTER 属性をもたなければならない。初期値指
定に “=” を書いたとき,実体は,POINTER 属性をもってはならない。
C526 (R501) OLATILE 属性を指定したとき,PARAMETER 属性,INTRINSIC 属性,EXTERNAL 属性,
及び INTENT(IN) 属性は,指定してはならない。
C527 (R501) ALUE 属性を指定したとき,PARAMETER 属性,EXTERNAL 属性,POINTER 属性,ALLO-
CATABLE 属性,DIMENSION 属性,VOLATILE 属性,INTENT(INOUT) 属性 及び INTENT(OUT)
属性は,指定してはならない。
C528 (R501) ALUE 属性を指定したとき,長さ型パラメタ値は,省略するか,初期値式で指定しなければな
らない。
C529 (R501) ALUE 属性は,仮手続に対して指定してはならない。
C530 (R501) LLOCATABLE 属性,POINTER 属性 及び OPTIONAL 属性は,手続言語束縛指定子をもつ
手続の仮引数に対して指定してはならない。
C531 (R503) 言語束縛指定子は,モジュールの宣言部にだけ書くことができる。
C532 (R501) 言語束縛指定子で宣言された要素は,相互利用可能変数(15.2 参照)でなければならない。
C533 (R501) 言語束縛指定子が NAME 指定子とともに指定された場合,データ要素宣言並びはただ一つの
データ要素宣言でなければならない。
C534 (R503) ROTECTED 属性は,モジュールの宣言部にだけ書くことができる。
C535 (R501) ROTECTED 属性は,共通ブロック中にない手続ポインタ 又は 名前付き変数に対してだけ指
定できる。
C536 (R501) ROTECTED 属性を指定したとき,INTRINSIC 属性 及び PARAMETER 属性は,指定して
はならない。PROTECTED 属性と EXTERNAL 属性を同時に指定するときは,POINTER 属性も指定
しなければならない。
C537 PROTECTED 属性をもつポインタでない実体が参照結合で参照された場合,その実体は,変数定義文
脈(16.5.7 参照) 及び ポインタ代入文中のデータ指示先 又は 手続指示先に現れてはならない。
C538 PROTECTED 属性をもつポインタである実体が参照結合で参照された場合,それは,次のいずれにも
現れてはならない。
(1) NULLIFY 文中のポインタ実体
(2) ポインタ代入文中のデータポインタ実体 又は 手続ポインタ実体
(3) ALLOCATE 文中 又は DEALLOCATE 文中の割付け実体
(4) 仮引数に INTENT(OUT) 属性 又は INTENT(INOUT) 属性をもつポインタがあるような手続
を引用するとき,その仮引数に結合する実引数
――――― [JIS X 3001-1 pdf 74] ―――――
61
X 3001-1 : 2009 (ISO/IEC 1539-1 : 2004)
一つの有効域内で個別組込み関数を識別する名前は,13.6 で規定する型をもつ。明示的な型宣言文は,必要ではな
いが,指定してもよい。型宣言文中に総称組込み関数名を書いて型を指定しても,その関数の総称性は失われない。
関数結果は,POINTER 属性 又は ALLOCATABLE 属性をもつとして宣言してよい。
配列形状指定,長さ型パラメタに対応する宣言型指定子中の型パラメタ値 又は データ要素宣言中の文字長中に現
れる宣言式は,引用仕様本体 (12.3.2.1),副プログラムの宣言部 又は FUNCTION 文の型指定子 (12.5.2.1) 以外で
は,初期値式でなければならない。データ実体が,初期値式ではない宣言式の値に依存して宣言されていて,かつ 仮
引数でないとき,その実体を 自動割付けデータ実体 (automatic data object) と呼ぶ。
注記 5.3 自動割付けデータ実体は,SAVE 文 及び DATA 文に書いてはならないし,SAVE 属性をもって
宣言したり,“= 初期値式” によって初期確定にしてはならない。
宣言型指定子 又は データ要素宣言中の文字長中の型パラメタが初期値式以外の式によって確定になったとき,そ
の型パラメタの値は,手続に入る時に定まり,手続の実行中に宣言式中の変数が再確定されたり不定になったりして
も,その影響を受けない。
データ要素宣言が初期値指定を含み,実体名が PARAMETER 属性をもたない場合,その要素は,明示的に初期化
された変数とする。変数が暗黙的初期値指定をもつ派生型でなければ,明示的な初期化を DATA 文で行うこともでき
る。初期値指定が “= 初期値式” であるとき,その実体は,組込み代入の規則(7.4.1.3 参照)に従って,型,型パラ
メタ,形状が実体名に一致するように変換された後,初期値式によって決まる値で確定になる。一つの変数 又は そ
の一部分に対して,プログラム中で 2 回以上明示的に初期値を指定してはならない。変数が配列であるとき,その変
数は,その型宣言文 又は それより前にある同じ有効域内の属性宣言文で形状が指定されていなければならない。
初期値指定が “=> 空初期化” であるとき,実体はポインタでなければならず,その初期の結合状態は空状態になる。
初期値指定をもつ実体は,名前付き共通ブロック中の実体 及び PARAMETER 属性をもつ実体を除いて,暗黙的
に保存される。この暗黙の SAVE 属性は,型宣言文中に SAVE 属性を書くこと,SAVE 文(5.2.12 参照)にその実
体名を指定すること, 又は 同じ有効域内で保存要素並びを使わずに SAVE 文で指定することによって明示的に確認
してもよい。
例 5.4 型宣言文の例を次に示す。
REAL A (10)
LOGICAL, DIMENSION (5, 5) :: MASK1, MASK2
COMPLEX :: CUBE_ROOT = (-0.5, 0.866)
INTEGER, PARAMETER :: SHORT = SELECTED_INT_KIND (4)
INTEGER (SHORT) K ! 範囲は少なくとも -99999999 である。
REAL (KIND (0.0D0))
REAL (KIND = 2)
COMPLEX (KIND = KIND (0.0D0)) :: C
CHARACTER (LEN=10, KIND = 2) A
CHARACTER B, C *20
TYPE (PERSON) :: CHAIRMAN
TYPE(NODE), POINTER :: HEAD => NULL ( )
TYPE (humongous_matrix (k=8, d=1000)) :: mat
(最後の例は例 4.24 で宣言した型を使っている。)
5.1.1 宣言型指定子
型宣言文中の 宣言型指定子 (declaration type specier) は,データ要素宣言並び中のデータ要素に対してその型を
指定する。この明示的な型宣言は,要素名の第 1 文字によって示される暗黙の型(5.3 参照)を確認してもよいし,そ
れを上書きしてもよい。
――――― [JIS X 3001-1 pdf 75] ―――――
次のページ PDF 76
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の関連規格と引用規格一覧
- 規格番号
- 規格名称