FORTRAN(文字列)

旧2-5. Fortran毎日学習
TVアニメ「Code:Realize~創世の姫君~」PV第2弾

アニメ『Code:Realize~創世の姫君~』(2017)

一話見ただけですが、普通に面白かったです。

FORTRAN77のことは分かってきたつもりですが、いまだにまったく使えていないのが文字列です。プログラマーの感を働かせても使い方がまったく分かりません。
相変わらず古い教科書が頼りです。

いまどきの言語なら、文字列はa = ‘hello’とやるだけで使えてしまいますが、FORTRAN77では、宣言が必要です。しかも文字列のサイズも指定してやる必要があります。

宣言の方法は、
CHARACTER*サイズ 変数名
です。
このように使います。

takk@deb9:~$ cat string.f
      PROGRAM MAIN
      CHARACTER*3 S
      S='ABC'
      WRITE(*,11111) S
11111 FORMAT(A5)
      STOP
      END
takk@deb9:~$ gfortran string.f
takk@deb9:~$ ./a.out
  ABC
takk@deb9:~$

初めて出てきましたが、FORMATで文字列を指定する場合は、Aを使います。

次は文字列結合します。

文字列結合は、
変数C = 変数A//変数B
で、できます。

最初に動かないプログラムを見ます。

takk@deb9:~$ cat string.f
      PROGRAM MAIN
      CHARACTER*10 S1,S2,S
      S1='ABC'
      S2='DEF'
      S=S1//S2
      WRITE(*,11111) S
11111 FORMAT(A10)
      STOP
      END
takk@deb9:~$ gfortran string.f
takk@deb9:~$ ./a.out
ABC
takk@deb9:~$

S=S1//S2で結合しているはずなのに、ABCしか表示されません。
今はまだ知識不足で原因不明なのですが、こうすれば動きました。

takk@deb9:~$ cat string.f
      PROGRAM MAIN
      CHARACTER*3 S1,S2,S*10
      S1='ABC'
      S2='DEF'
      S=S1//S2
      WRITE(*,11111) S
11111 FORMAT(A10)
      STOP
      END
takk@deb9:~$ gfortran string.f
takk@deb9:~$ ./a.out
ABCDEF
takk@deb9:~$

やはり古いプログラミング言語は、制約が多そうで覚えるのが難解です。
まあ、それが面白いんですが。

コメント

タイトルとURLをコピーしました