Fortranコンパイラが完成すればサポートされると書いてありますが、デバッグできててますね。FORTRANと書くとFORTRAN77以前のことで、Fortranと書くと90以降のことを言うらしいですが、90や95のプログラムでもGDB動かせるようです。ちなみに使用しているGDBのバージョンはこれです。今は8があるのでちょっと古めです。7.12.0.20161007-gitFORTRANプログラムの文字列変数をGDBで表示するとき、文字列が格納されていない領域が全部スペースなのでとても見にくいです。これをなんとか解消してデバッグしやすくならないでしょうか。思いつくのは、先頭の空白の位置に0(NULL)を入れることぐらいです。GDBから見ると普通の文字列が格納されているように見えます、きっと。FORTRANのプログラムを、INDEXで空白を探し、代わりに0を格納するように改造してみます。文字列に0を代入するのもエスケープシーケンスというものがあるかどうかも現状は分からないので、これまでで覚えたものを使ってやってみます。END3行目で文字列の途中にNULLを入れるための、配列変数Aを用意してます。この配列変数AをEQUIVALENCEで文字列ARGSと結合させ、INDEXで見つけた空白の位置に、A(位置)=0とすることで、文字列ARGSに(GDBから見て)終端コードである空白を埋め込んでいます。-gオプションをつけて、ビルド後、GDBを起動してみましょう。a.out引数に”-b1,2,3,4,5′′を設定し、mainでブレイクさせます。END(gdb)NULL埋め込み後、printfで文字列を確認します。"%s\n",&args-b1,2,3,4,5(gdb)NULLを埋め込む前だと、いらない空白がたくさん出てしまっていましたが、必要な分だけ表示されました。6ナンセンスなことですが、早く覚えるためできるだけたくさん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オプションで指定した文字列が、そのままさくっと表示されましたね。関連記事2-5.FortranFortran90入門FORTRAN77を学習してプログラミングできるようになった気がしますので、Fortran90の方へ移っていきたいと思います。email.ホーム2.プログラミング言語2-5.Fortranスポンサーリンク広告プロフィール管理人:takketeお仕事:システムエンジニア日々何か向上したくて、もがいています。Policyホーム検索トップサイドバースポンサーリンク広告プロフィール管理人:takketeお仕事:システムエンジニア日々何か向上したくて、もがいています。thanksタイトルとURLをコピーしました。