FORTRAN(seqコマンドを作る2)


アニメ『ぬいぐるパパ』

短いので時間がないときにも見れます。

FORTRANです。
パラメータ数によりふるまいを変えてみます。
コマンドのパラメータ数を取得するには、IARGC()関数を使います。関数なのでCALLは不要です。

takk@deb9:~$ cat argc.f
      PROGRAM argument_num
      I = IARGC()
11111 WRITE(*,22222) I
22222 FORMAT(I3)
      STOP
      END
takk@deb9:~$

上のプログラムの実行結果です。

takk@deb9:~$ gfortran argc.f
takk@deb9:~$ ./a.out a
  1
takk@deb9:~$ ./a.out a b c d
  4
takk@deb9:~$ ./a.out
  0
takk@deb9:~$

パラメータ数でふるまいを変えるには、IF文を使います。77の頃はCASEがなかったようです。
パラメータなしの場合、1,2,3の場合、4つ以上の場合のふるまいを変えるプログラムです。

takk@deb9:~$ cat select.f
      PROGRAM argument_num
      I = IARGC()
      IF(I.EQ.0) THEN
        WRITE(*,10000)
      END IF
      IF(I.EQ.1) THEN
        WRITE(*,10001)
      END IF
      IF(I.EQ.2) THEN
        WRITE(*,10002)
      END IF
      IF(I.EQ.3) THEN
        WRITE(*,10003)
      END IF
      IF(I.GT.3) THEN
        WRITE(*,10004)
      END IF
10000 FORMAT('NOTHING ')
10001 FORMAT('PARAMETER NUM=1')
10002 FORMAT('PARAMETER NUM=2')
10003 FORMAT('PARAMETER NUM=3')
10004 FORMAT('OVER')
      STOP
      END
takk@deb9:~$

実行結果です。

takk@deb9:~$ gfortran select.f
takk@deb9:~$ ./a.out
NOTHING
takk@deb9:~$ ./a.out aa
PARAMETER NUM=1
takk@deb9:~$ ./a.out aa bb
PARAMETER NUM=2
takk@deb9:~$ ./a.out aa bb cc
PARAMETER NUM=3
takk@deb9:~$ ./a.out aa bb cc dd
OVER
takk@deb9:~$

続く

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA