| DIMENSION属性 | 
DIMENSION属性
| [例] | 
    REAL,DIMENSION(10,2) :: a,array
    INTEGER,DIMENSION(2) :: b,c
    INTEGER,DIMENSION(-2:2) :: d
配列の宣言
DIMENSION文
| 
  INTEGER,DIMENSION(m) :: 配列名,配列名,… REAL,DIMENSION(m) :: 配列名,配列名,…  | 
| [例1] | 
INTEGER,DIMENSION(5) :: a,mat
| [例2] | 
      INTEGER,DIMENSION(5) :: a
      REAL,DIMENSION(10) :: mat
INTEGER文,REAL文
| 
  INTEGER [::] 配列名(m),配列名(n),… REAL [::] 配列名(m),配列名(n),… DIMENSION [::] 配列名(m),配列名(n),…  | 
| [例] | 
      INTEGER :: a(5)
      REAL :: mat(10)
配列の上限,下限の指定
| 配列名(m:n) | 
| [例] | 
      INTEGER,DIMENSION(-3:3) :: a
      REAL,DIMENSION(0:5) :: b

部分配列
| 
  配列名(m:n) または、 配列名(1次元の整数配列)  | 
| [例1] | 

| [例2] | 
      INTEGER,DIMENSION(4) :: a,b
      a(1)=10; a(2)=20; a(3)=30; a(4)=40
      b(1)=4;  b(2)=3;  b(3)=2;  b(4)=1
      WRITE(*,*) a(2:3)
      WRITE(*,*) a(b)
配列の出力[1] WRITE(*,*) a(1),a(2),a(3),a(4),a(5) [2] WRITE(*,*) a [3] WRITE(*,*) (a(i),i=1,5) [4] WRITE(*,*) a(1:5) [5] WRITE(*,*) a(:)たとえば、配列bがあるとき、m番目からn番目の内容を 出力するときは[3]の方法を用いて、以下のように記述する。 WRITE(*,*) (b(i),i=m,n) または、[4]の方法を用いて、以下のように記述する。 WRITE(*,*) b(m:n)
配列の宣言(1)型指定子(INTEGERやREAL文等)に、DIMENSION属性を指定する方法
| 型指定子,DIMENSION(配列形状指定) :: 配列名,… | 
| [例] | 
    INTEGER,DIMENSION(5) :: a,b
    REAL,DIMENSION(10) :: c
(2)配列名の後に括弧で配列形状指定を行う方法
| 型指定子 [::] 配列名(配列形状指定),… | 
| [例] | 
INTEGER :: data(5)
(3)DIMENSION文で宣言し配列名の後に括弧で配列形状指定を行う方法
| DIMENSION [::] 配列名(配列形状指定),… | 
| [例] | 
DIMENSION mat(10)
配列形状指定
| ( e [, e [, e ]]…) | 
e:寸法宣言子である。eの個数を配列の次元数とよぶ。
| [例1] | 

    INTEGER,DIMENSION(6) :: x
    x(1)=10; x(2)=20; x(3)=30; x(4)=40; x(5)=30; x(6)=20
| [例2] | 

  INTEGER,DIMENSION(2,3) :: x
  x(1,1)=8; x(1,2)=2; x(2,1)=9; x(2,2)=5;
    x(3,1)=3; x(3,2)=2
| [例3] | 

    CHARACTER (LEN=3),DIMENSION(6) :: x
    x(1)='*a*';  x(2)='*b*';  x(3)='*c*'
    x(4)='*d*';  x(5)='*e*';  x(6)='*f*'
寸法宣言子
| [e1:]e2 | 
e1:次元の下限値。e1(およびその後のコロン)を 省略すると、1とみなされる。 e2:次元の上限値。必ず指定する。上限値と下限値(e1とe2)を表す算術式の中の定数や変数の型はすべて整数である。 下限値は正数、ゼロ、負数のいずれでもよい。各次元の大きさ(寸法)は、 e2-e1+1である。下限値が1ならば、その次元の大きさは上限値と同じである。
| [例] | 

    INTEGER,DIMENSION(-3:2) :: x
    x(-3)=10; x(-2)=20; x(-1)=30; x(0)=40;
    x(1)=30; x(2)=20
部分配列
| 
  配列名(e1:e2) または、 配列名(1次元の整数配列)  | 
e1:部分配列の下限値。省略した場合、次元の下限値 e2:部分配列の上限値。省略した場合、次元の上限値
| [例1] | 
    INTEGER,DIMENSION(6) :: x
    x(1)=10; x(2)=20; x(3)=30; x(4)=40;
    x(5)=30; x(6)=20
    WRITE(*,*) x(:)    !xのすべて
    WRITE(*,*) x(:3)   !x(1),x(2),x(3)
    WRITE(*,*) x(3:)   !x(3),x(4),x(5),x(6)
| [例2] | 
    INTEGER,DIMENSION(3) :: a,b,c
    a(1)=10; a(2)=20; a(3)=30
    b(1)=3;  b(2)=2;  b(3)=1
    c=a(b)
    WRITE(*,*) c
配列への代入| [例] | 
    INTEGER,DIMENSION(3) :: a,b
    a(1)=10; a(2)=20; a(3)=30
    b=(/98,76,54/)  !b(1)=98; b(2)=76; b(3)=54と同じ
配列への全体代入| [例] | 
    INTEGER,DIMENSION(3) :: a
    a=10            !a(1)=10; a(2)=10; a(3)=10と同じ
配列への部分代入| [例] | 
INTEGER,DIMENSION(6) :: x,a INTEGER,DIMENSION(3) :: b x(1)=10; x(2)=20; x(3)=30; x(4)=40; x(5)=30; x(6)=20 a(2:4)=x(1:3) !a(2)=x(1); a(3)=x(2); a(4)=x(3)と同じ b=x(4:) !b(1)=x(4); b(2)=x(5); b(3)=x(6)と同じ