VBでfortranプログラムの実行 への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 るきお  (社会人)
投稿日時
2008/9/27 07:13:47
「リダイレクション」を用いて
と書いてありましたね。失礼しました。
ということはFortran側は標準入力で値を受け取って、VB側は標準出力で値を渡す仕様ですね。
どちらにせよ、前述のように問題を切り分けるのと、値の受け渡しが正しくできているのか確認するのが先決ですね。
理論上は標準入出力を介してVBで作ったexeがほかのexeと連携することは可能と思いますが、やったことはありません。
と書いてありましたね。失礼しました。
ということはFortran側は標準入力で値を受け取って、VB側は標準出力で値を渡す仕様ですね。
どちらにせよ、前述のように問題を切り分けるのと、値の受け渡しが正しくできているのか確認するのが先決ですね。
理論上は標準入出力を介してVBで作ったexeがほかのexeと連携することは可能と思いますが、やったことはありません。
投稿者 るきお  (社会人)
投稿日時
2008/9/27 07:13:25
こんばんは。
Fortranはわかりませんが、
>2.次に、fortranのexeファイルにリダイレクションを用いて、VBで書き出した1のファイルを入力させる一行をバッチファイルに書き出す。
この部分が具体的に何をしているか見えないとなんとも答えられないです。
登場する要因が多いのでまずは問題を切り分けてみてはどうですか?
プログラムの実行の流れとしてはバッチ→VB→Fortranとなっています。
最後のFortranでエラーになっているのであれば、Fortranが悪い可能性もあります。
でも、Forranは正しく動いているのにVBがちゃんと「ファイル名や値」を渡せていない可能性もあります。この場合はVBが原因です。
でも、VBもFotranも正しくでもバッチがうまくVBとFortranを連携できていない可能性もあります。この場合はバッチが原因です。
この切り分けができないと、具体的な処理もわからないですし誰にも答えられないかもしれませんよ。
>fortranのexeファイルをVBから実行するのに、このやり方ではまずいのでしょうか。
わかりませんが、
fortranとかVBとかは関係なく、exeになっている以上Windows共通の規則で動きますから入出力の連携はできるはずです。
今回VBからFortranにどうやって値を渡そうとしているのですか?値は本当に正しく渡っているのですか?
Fortran側をデバッグしてどういう値が渡されているのかそれは想定した値なのか確認するとよいと思います。
一般的にはexeの後ろにコマンドラインの形で値を渡して、受け取り側(Fortran)は起動されたときのコマンドラインを読み込むことで値を受け取ることになると思います。
Fortranはわかりませんが、
>2.次に、fortranのexeファイルにリダイレクションを用いて、VBで書き出した1のファイルを入力させる一行をバッチファイルに書き出す。
この部分が具体的に何をしているか見えないとなんとも答えられないです。
登場する要因が多いのでまずは問題を切り分けてみてはどうですか?
プログラムの実行の流れとしてはバッチ→VB→Fortranとなっています。
最後のFortranでエラーになっているのであれば、Fortranが悪い可能性もあります。
でも、Forranは正しく動いているのにVBがちゃんと「ファイル名や値」を渡せていない可能性もあります。この場合はVBが原因です。
でも、VBもFotranも正しくでもバッチがうまくVBとFortranを連携できていない可能性もあります。この場合はバッチが原因です。
この切り分けができないと、具体的な処理もわからないですし誰にも答えられないかもしれませんよ。
>fortranのexeファイルをVBから実行するのに、このやり方ではまずいのでしょうか。
わかりませんが、
fortranとかVBとかは関係なく、exeになっている以上Windows共通の規則で動きますから入出力の連携はできるはずです。
今回VBからFortranにどうやって値を渡そうとしているのですか?値は本当に正しく渡っているのですか?
Fortran側をデバッグしてどういう値が渡されているのかそれは想定した値なのか確認するとよいと思います。
一般的にはexeの後ろにコマンドラインの形で値を渡して、受け取り側(Fortran)は起動されたときのコマンドラインを読み込むことで値を受け取ることになると思います。
投稿者 VB初心者  ()
投稿日時
2008/9/27 07:12:53
こんばんは。
最近、VBをやり始めたのですが、早くも壁にぶつかってしまいました。
今、fortran77で作成したexeファイルがあります。
そのファイルは、ファイル名や値を読み込んで、数値計算させるという簡単なプログラムです。
それで、VBからファイル名や値を読み、fortranで作成したexeファイルにファイル名や値を読み込ませ実行させたいと考えております。
やり方としては遠回りなのですが、
1.VBでファイル名や値を読み込んで、適当なファイルに書き出す。
2.次に、fortranのexeファイルにリダイレクションを用いて、VBで書き出した1のファイルを入力させる一行をバッチファイルに書き出す。
3.最後に、2のバッチファイルを実行
といった流れなのですが、fortranプログラムのopen文によりファイル名を読み込むところではじかれます。
fortranのexeファイルをVBから実行するのに、このやり方ではまずいのでしょうか。
もし、より良いやり方がありましたら、具体的な方法または、それがのってるサイト等がありましたら、教えていただけませんでしょうか。
OS:XP Home Edition
fortranのバージョン:fortran77(cygwinで行っています。)
VBのバージョン:VB 2008 Express Edition
よろしくお願いいたします。
最近、VBをやり始めたのですが、早くも壁にぶつかってしまいました。
今、fortran77で作成したexeファイルがあります。
そのファイルは、ファイル名や値を読み込んで、数値計算させるという簡単なプログラムです。
それで、VBからファイル名や値を読み、fortranで作成したexeファイルにファイル名や値を読み込ませ実行させたいと考えております。
やり方としては遠回りなのですが、
1.VBでファイル名や値を読み込んで、適当なファイルに書き出す。
2.次に、fortranのexeファイルにリダイレクションを用いて、VBで書き出した1のファイルを入力させる一行をバッチファイルに書き出す。
3.最後に、2のバッチファイルを実行
といった流れなのですが、fortranプログラムのopen文によりファイル名を読み込むところではじかれます。
fortranのexeファイルをVBから実行するのに、このやり方ではまずいのでしょうか。
もし、より良いやり方がありましたら、具体的な方法または、それがのってるサイト等がありましたら、教えていただけませんでしょうか。
OS:XP Home Edition
fortranのバージョン:fortran77(cygwinで行っています。)
VBのバージョン:VB 2008 Express Edition
よろしくお願いいたします。
> fortran77(cygwinで行っています。)
というのに興味を持って調べてみたら、おぉ~。!
Linux環境bashシェルで、TestFort1.exeを起動しているということでしょうか。または、コマンドプロンプト?
どちらにせよ、VBは(後回しだから)関係ないものとして
$ TestFort1.exe < ファイル名
と手動でキーインしてみてどうなのか、(cygwinだったらDOSのファイル名のドライブ指定が、特殊な文字列になるようですがちゃんとそうしているか)
とかの情報をUPされるべきですヨ