XL Fortran for AIX V8.1.1

ランゲージ・リファレンス

DATA

目的

DATA ステートメントは変数に初期値を与えます。

構文



         .-+---+--------------------------------------.
         | '-,-'                                      |
         V                                            |
>>-DATA----data_object_list--/--initial_value_list--/-+--------><
 
 

data_object
変数または implied-DO list です。添え字式またはサブストリング式は、初期化式でなければなりません。

implied-DO list



>>-(--do_object_list--,--do_variable-- = ----------------------->
 
>--integer_expr1--,--integer_expr2--+------------------+--)----><
                                    '-,--integer_expr3-'
 
 

do_object
配列エレメント、スカラー構造体コンポーネント、サブストリングまたは暗黙 DO リストです。

do_variable
暗黙 DO 変数と呼ばれる名前付きスカラー整変数です。この変数は、ステートメント・エンティティーです。

integer_expr1integer_expr2、 および  integer_expr3
スカラー整数式です。これらの式には、定数および別のいくつかの暗黙 DO リスト (当該の暗黙 DO リストをその範囲内に持つもの) の暗黙 DO 変数のみを含めることができます。各処理は組み込み型でなければなりません。

initial_value



>>-+--------+--data_value--------------------------------------><
   '-r-- * -'
 
 

r

負でないスカラー整数定数です。 r が名前付き定数の場合、これは有効範囲単位内で事前に宣言されているか、あるいは使用関連付けまたはホスト関連付けによってアクセス可能にされている必要があります。

+---------------------------------Fortran 95---------------------------------+

また、r は、定数の負ではないスカラー整数サブオブジェクトです。上記と同様に、これが名前付き定数のサブオブジェクトである場合も、有効範囲単位内で事前に宣言されているか、あるいは使用関連付けまたはホスト関連付けによってアクセス可能にされている必要があります。

+------------------------------Fortran 95 の終り------------------------------+

r が定数のサブオブジェクトの場合、その中の添え字はどれも初期化式です。 r を省略すると、デフォルト値は 1 になります。 r*data_value という形式はデータ値を r 回連続して指定するのと同じです。

data_value
スカラー定数、符号付き整数リテラル定数、符号付き実リテラル定数、構造体コンストラクター、 FORTRAN 95 の開始定数のスカラー・サブオブジェクト、または NULL() です。

FORTRAN 95 の終了

規則

data_object としてポインターでない配列オブジェクトを指定することは、配列オブジェクト内のすべてのエレメントのリストを格納された順に指定することと同じです。

+---------------------------------Fortran 95---------------------------------+

ポインター属性を持つ配列は、対応する初期値 NULL() を 1 つのみ持ちます。

+------------------------------Fortran 95 の終り------------------------------+

data_object_list は対応する initial_value_list と同じ数の項目を指定しなければなりません。これらの 2 つのリストの項目は互いに 1 対 1 の対応をとります。この対応によって、それぞれの data_object の初期値が決定します。

+---------------------------------Fortran 95---------------------------------+

ポインターの初期化の場合、data_valueNULL() であれば、対応する data_object はポインター属性を持つことになります。 data_object がポインター属性を持つと、対応する data_valueNULL() になるはずです。

+------------------------------Fortran 95 の終り------------------------------+

initial_value による各 data_object の定義は、 タイプなし定数の使用方法に記載している項目以外は組み込み割り当ての規則に従います。

initial_value が構造体コンストラクターの場合、各コンポーネントは初期化式でなければなりません。 data_object が変数の場合、サブストリング式または添え字式は初期化式でなければなりません。

data_value が名前付き定数または構造体コンストラクターの場合、その名前付き定数または派生型は、有効範囲単位内で事前に宣言されているか、あるいは使用関連付けまたはホスト関連付けによってアクセス可能にされている必要があります。

長さがゼロの文字変数はリストに変数を 1 つ与えますが、サイズがゼロの配列、反復カウントがゼロの暗黙 DO リスト、および反復係数がゼロの値は拡張 initial_value_list に何の値も与えません。

DATA ステートメント内で暗黙 DO リストを使用して配列エレメント、スカラー構造体構成子およびサブストリングを初期化できます。暗黙 DO 変数の制御の下で、暗黙 DO リストはスカラー構造体コンポーネント、配列エレメント、およびサブストリングの順序列に拡張されます。配列エレメントおよびスカラー構造体コンポーネントは、定数である親を持つことはできません。スカラー構造体コンポーネントはそれぞれ、添え字リストを指定するコンポーネントの参照を、少なくとも 1 つは含んでいなければなりません。

暗黙 DO リストの範囲は do_object_list です。 DO ステートメントと同様に、反復カウントおよび暗黙 DO 変数の値は、integer_expr1integer_expr2、および integer_expr3 によって確立されます。暗黙 DO が実行されると、暗黙 DO が 1 回繰り返されるごとに、do_object_list 内の項目が指定され、その暗黙 DO 変数のその時点の値に応じた適切な値が割り当てられます。暗黙 DO 変数の反復カウントがゼロの場合、拡張順序列には何の変数も追加されません。

do_object 内の添え字式には、定数か、またはその範囲内に添え字式を持つ暗黙 DO リストの暗黙 DO 変数だけを入れることができます。各処理は組み込み型でなければなりません。

+----------------------------------IBM 拡張----------------------------------+

論理定数を持つ論理タイプのリスト項目を初期化する場合、省略形を使用することができます (.TRUE. の場合 T.FALSE. の場合 F)。 T または FPARAMETER 属性によって事前に定義された定数名の場合、 XL Fortran はそのストリングを名前付き定数として認識し、その値を DATA ステートメント内の対応するリスト項目に割り当てます。

+--------------------------------IBM 拡張の終り-------------------------------+

ブロック・データ・プログラム単位では、DATA ステートメントまたはタイプ宣言ステートメントを使用して初期値を名前付き共通ブロック内の変数に割り当てることができます。

内部またはモジュール・サブプログラムでは、data_object がホスト内のエンティティーと同じ名前を持ち、かつ内部サブプログラム内の他の仕様ステートメントで data_object が宣言されていない場合、DATA ステートメントの前では data_object を参照することも定義することもできません。

DATA ステートメントは以下のものに初期値を割り当てることはできません。

実行可能プログラム内では何度も変数を初期化することはできません。複数の変数を共用する場合、データ・オブジェクトのうち 1 つだけを初期化できます。

例 1:

      INTEGER Z(100),EVEN_ODD(0:9)
      LOGICAL FIRST_TIME
      CHARACTER*10 CHARARR(1)
      DATA    FIRST_TIME / .TRUE. /
      DATA    Z  / 100* 0 /
! Implied-DO list
      DATA  (EVEN_ODD(J),J=0,8,2) / 5 * 0 /  &
    &      ,(EVEN_ODD(J),J=1,9,2) / 5 * 1 /
! Nested example
      DIMENSION TDARR(3,4)  ! Initializes a two-dimensional array
      DATA ((TDARR(I,J),J=1,4),I=1,3) /12 * 0/
! Character substring example
      DATA (CHARARR(J)(1:3),J=1,1) /'aaa'/
      DATA (CHARARR(J)(4:7),J=1,1) /'bbbb'/
      DATA (CHARARR(J)(8:10),J=1,1) /'ccc'/
! CHARARR(1) contains 'aaabbbbccc'

例 2:

TYPE DT
      INTEGER :: COUNT(2)
END TYPE DT
 
TYPE(DT), PARAMETER, DIMENSION(3) :: SPARM = DT ( (/3,5/) )
 
INTEGER :: A(5)
 
DATA A /SPARM(2)%COUNT(2) * 10/

関連情報


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]