DIMENSION属性 |
[例] |
REAL,DIMENSION(10,2) :: a,array INTEGER,DIMENSION(2) :: b,c INTEGER,DIMENSION(-2:2) :: d
INTEGER,DIMENSION(m) :: 配列名,配列名,… REAL,DIMENSION(m) :: 配列名,配列名,… |
[例1] |
INTEGER,DIMENSION(5) :: a,mat
[例2] |
INTEGER,DIMENSION(5) :: a REAL,DIMENSION(10) :: mat
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)と同じ