2017.12.07前回はGDBデバッグで文字列を見やすくするため、デバッグ対象であるFORTRANプログラムを修正しました。ナンセンスなことですが、早く覚えるためできるだけたくさんFORTRANのプログラミングをしていこうと思ってます。思いつきでFORTRANプログラミングできましたが、いつもうまくいくとは限りません。FORTRANに根気を使うと疲れてしまって、勉強も続かないので、FORTRAN修得までの長い道のりのモチベーション維持のため、たまには使い慣れた言語を使ってみます。FORTRANのプログラムを改造せずに、文字列をきれいに表示する方法として、今回はGDBでPythonスクリプトを使います。PythonをGDBで使えるようにインストール。gdb-python2これで、GDBでPythonスクリプト使えます。'HELLO'HELLO(gdb)素晴らしい。これもうGDBも思いのままです。GDBスクリプトの代わりにPythonスクリプトでGDB自動化してみましょう。こんなスクリプトを使います。gdb.execute('run')takk@deb9:~$executeの中の文字列は、GDBスクリプトそのままです。FORTRANプログラムを-g付きでビルドして、GDB起動します。a.outさきほどのPythonスクリプトを実行しましょう。SSTRING1,SSIZE1)(gdb)さて、問題の残りが空白で埋められる文字列変数ですが、Pythonスクリプトを使って、きれいにトリムしたいと思います。'\000\000'(gdb)さきほどのスクリプトに4~6行目を追加しました。FORTRAN77ではすぐには書けない文字列処理も、Pythonではお茶の子さいさい。sstakk@deb9:~$再度GDBを起動します。今度は、gdb起動時に、-xオプションでPythonスクリプトも一緒に実行してしまいましょう。SSTRING1,SSIZE1)1,2,3,4,5(gdb)シングルクォートをPythonでスプリットしてリストの2番目を表示しました。-bオプションで指定した文字列が、そのままさくっと表示されましたね。Fortran毎日学習Fortran90(cshift,eoshift)配列の要素のシフトをしてくれる関数cshiftとeoshiftを使います。shiftを意味しており、循環するシフトです。Fortran毎日学習Fortran90(多次元配列その2)配列代入が中で何をしているか気になって仕方がありません。GDBを使って見ていきます。配列要素が1つで、次元数1つのプログラムで確認してみます。Fortran毎日学習FORTRAN(catコマンドを作るその3)FORTRANで作ったcatコマンドに-nオプションをつけます。前回のこのプログラムのバッファサイズを100から50ぐらいにして、ターミナルで改行されず表示できるように修正しておきます。Fortran毎日学習Fortran90(行列)行列計算します。配列代入を使えば簡単です。引き算も同じ要領です。bだけで済むのでしょうか。配列の要素どうしの積になってしまいました。Fortran毎日学習Fortran90(sum)前回使ったmatmulは配列で使える関数でしたが、他にも配列用関数はあります。今回は、sumを使ってみます。sumを使わないプログラムです。1~5までの和なので結果は15で合ってますね。Fortran毎日学習Fortran90(type)Fortran続きです。なんとFortranでも構造体が使えるんですね。いうことで使ってみます。typeの間にメンバ変数を定義します。構造体の変数名%メンバ名でアクセスできます。Fortran毎日学習スポンサーリンク広告プロフィール管理人:takketeお仕事:システムエンジニア日々何か向上したくて、もがいています。Policyホーム検索トップサイドバースポンサーリンク広告プロフィール管理人:takketeお仕事:システムエンジニア日々何か向上したくて、もがいています。thanksタイトルとURLをコピーしました。