なじみの薄い配列構成子ですが、うまく使えばコードが綺麗になりそうだったので、サンプルコードを書いてみた。
program main implicit none integer, pointer :: arr_p(:) integer :: arr(3) integer, parameter :: n = 3 allocate(arr_p(n)) arr_p = (/ 1, 2, 3 /) call array_debug_pointer(arr_p, n) arr_p(1) = 10 arr_p(2) = 20 arr_p(3) = 30 call array_debug_pointer(arr_p, n) arr = (/arr_p(1:2), 3/) call array_debug(arr, 3) contains subroutine array_debug(arr, n) integer :: arr(:) integer :: n integer :: i do i = 1, n write(*, fmt='(i0, 2x)', advance='no') arr(i) end do write(*,*) end subroutine array_debug subroutine array_debug_pointer(arr, n) integer, pointer :: arr(:) integer :: n integer :: i do i = 1, n write(*, fmt='(i0, 2x)', advance='no') arr(i) end do write(*,*) end subroutine array_debug_pointer end program main
(/ /)で数値や変数を囲むと配列を一行で直接代入することができるようになります。(/ /)の中には、部分配列を入れたり、数値をそのまま入れたり、ポインタを使用することもできるようです。
出力例
$ ./main 1 2 3 10 20 30 10 20 3