fortran66のブログ

fortran について書きます。

チラシ裏

一次元配列a(:)に対してMINLOC(a)の類は要素1個の配列を返すが、MINLOC(a, 1)とすればスカラーで答えを受け取れる。

PROGRAM test
IMPLICIT NONE
REAL :: a(3)
INTEGER :: k0(0), k1(1)
CALL RANDOM_NUMBER(a)
k0 = SHAPE( MINLOC(a, 1) )    
k1 = SHAPE( MINLOC(a)    )
PRINT *, k0, k1
STOP
END PROGRAM test

文字列を文字配列に直すのはTRANSFER関数で出来る。代入配列が無い場合は、SIZE引数に文字列長を渡せばよい。

PROGRAM test
IMPLICIT NONE
CHARACTER(LEN =13) :: text1 = 'Shine! 輝け!'
CHARACTER(LEN = 1) :: text2(13)
CHARACTER(LEN =13) :: text3 = 'Shine! 死ね!'

text2 = TRANSFER(text1, text2)
PRINT *, text2

PRINT *, TRANSFER(text3, ' ', LEN(text3))

STOP
END PROGRAM test