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:~$
コメント