fortran66のブログ

fortran について書きます。

文字定数での部分文字列

文字定数の宣言で、パラメータ文であれば文字数を数えなくても文字列長を*で宣言できるようです。
変数の場合は、初期値として文字定数を与えても、明示的に文字数を与えなければならないようです。

また、部分文字列の指定子は、文字定数にも使えるようです。

PROGRAM test
IMPLICIT NONE
CHARACTER(*), PARAMETER :: alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ!'
INTEGER :: i
INTEGER, PARAMETER :: n0(4) =(/21, 8, 15, 27/), n1(9) = (/25, 1, 18, 1, 14, 1, 9, 11, 1/)
!
DO i = 1, SIZE(n0)
 WRITE(*, *) 'ABCDEFGHIJKLMNOPQRSTUVWXYZ!'(n0(i):n0(i))
END DO
!
DO i = 1, SIZE(n1)
 WRITE(*, '(1x, a)', advance = 'no') alphabet(n1(i):n1(i))
END DO
WRITE(*, *)
STOP
END PROGRAM test