TVアニメ『戦刻ナイトブラッド』プロモーションビデオ 第2弾
アニメ『戦刻ナイトブラッド』(2017)
戦国ものは好きなので、このアニメも例外ではありません。なぜか織田信長と豊臣秀吉が戦っているのですが、全然気にしません。キャラが戦国武将の名前だと新たに覚える必要がないのでそこが見ていて楽なところです。ゲームの方も気になるので一度やってみようと思います。
ではFORTRANです。
そろそろFORTRAN77のことが分かってきたつもりなので、プログラミングしてみます。いつものごとく大好きなseqコマンドを作っていきます。まずはコマンド引数を取得するFORTRAN77プログラムです。
takk@deb9:~$ cat arg.f
PROGRAM GETARGUMENTS
CHARACTER*20 ARG0,ARG1,ARG2,ARG3
CALL GETARG(0,ARG0)
CALL GETARG(1,ARG1)
CALL GETARG(2,ARG2)
CALL GETARG(3,ARG3)
WRITE(*,10) ARG0
WRITE(*,10) ARG1
WRITE(*,10) ARG2
WRITE(*,10) ARG3
10 FORMAT(A)
STOP
END
takk@deb9:~$
実行すると、
takk@deb9:~$ gfortran arg.f takk@deb9:~$ ./a.out a b c ./a.out a b c takk@deb9:~$
ARG0にコマンドそのものの文字列が格納されます。C言語と同じです。ARG1~にパラメータが格納されます。例ではARG3までですが、パラメータ数が取得できるので、DOで回して処理すればよいです。
コマンドの引数の取得方法が分かりましたので、seqコマンドを作っていきます。まずは引数一つの場合のプログラムを作る前に、seq 10の固定結果が返るプログラムを作ってみます。
takk@deb9:~/gf$ cat seq.f
PROGRAM seq
DO 11111 I = 1, 10
11111 WRITE(*,22222) I
CONTINUE
22222 FORMAT(I3)
STOP
END
takk@deb9:~$ gfortran seq.f
takk@deb9:~$ ./a.out
1
2
3
4
5
6
7
8
9
10
takk@deb9:~$
うまくいきました。DO行の10をコマンド引数の数字の変数にすり替えれば、作れそうです。はい。そうして作ったプログラムがこれです。
takk@deb9:~$ cat seq.f
PROGRAM seq
CHARACTER*10 ARG1
CALL GETARG(1,ARG1)
READ(ARG1,*) K
DO 11111 I = 1, K
11111 WRITE(*,22222) I
CONTINUE
22222 FORMAT(I3)
STOP
END
takk@deb9:~$
実行結果です。
takk@deb9:~$ gfortran seq.f takk@deb9:~$ ./a.out 3 1 2 3 takk@deb9:~$ ./a.out 5 1 2 3 4 5 takk@deb9:~$ ./a.out 10 1 2 3 4 5 6 7 8 9 10 takk@deb9:~$


コメント