UNIX環境下で書式なしデータファイルを入力とするFORTRANプログラム
を作成しています。このプログラムにパイプを使用して上記の書式なし
データを渡したいのですが、現在うまくいきません。パイプに渡す外部
のコマンドとしては解凍プログラム(gunzip)を使用しています。
パイプを使用してFORTRANプログラムに書式なしデータを渡す方法があれ
ばお教えください。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

どういう環境(OS,コンパイラ)で


何をしたら
何が起きたのかがわからないと
回答は困難です。

特にパイプで渡すまわりは、どういうプログラムをつくり、
どういうコマンドとして実行したかがないと・・。


コンパイラにもよるんでしょうが、デフォルトの
入力が標準入力になっているでしょうから、
コマンドラインでパイプをつないで、
readすればできるように思いますが。

FORTRAMももう5年以上使っていないのでわすれかけてますが(^^;
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QFortran90/Fortran95→Fortran77

大学の授業でFortranを使ったプログラミングを勉強しています。

以下の文が大学のPCに入っているコンパイラでは問題なくコンパイルでき実行できるのですが、家のPCだとコンパイルすることが出来ません(以下の文でエラーが出ます)
大学のPCの開発環境はFujitsu-FORTRANだと思います(^ ^;
家のPCはSalford FTN77 Personal Edition CompilerとCPad for Salford FTN77を組み合わせて使用しています

なぜエラーがでるのか自分なりに考えた結果、Fortran90/Fortran95のプログラムをFortran77のコンパイラでコンパイルしているからだと思います(全くの勘違いだったら指摘して下さい)

Fortran90/Fortran95の開発環境がフリーで整えばいいのですが、見つからないのでプログラムを修正したいと思います そこで、力を貸していただきたいのです

前置きが長くなりましたが、エラーが出る文は以下のところです
open(8,file='freq_ex13.dat',action='write',status='replace')
ここを、Fortran77のコンパイラでコンパイルできるようにアドバイスを下さい よろしくお願いします

大学の授業でFortranを使ったプログラミングを勉強しています。

以下の文が大学のPCに入っているコンパイラでは問題なくコンパイルでき実行できるのですが、家のPCだとコンパイルすることが出来ません(以下の文でエラーが出ます)
大学のPCの開発環境はFujitsu-FORTRANだと思います(^ ^;
家のPCはSalford FTN77 Personal Edition CompilerとCPad for Salford FTN77を組み合わせて使用しています

なぜエラーがでるのか自分なりに考えた結果、Fortran90/Fortran95のプログラムをFortran77のコンパイラでコン...続きを読む

Aベストアンサー

action='write'を削除してみては?
8番にREADを使わなければいいだけの話です。
http://docs.hp.com/ja/B3908-90007/ch10s65.html#id21163286

Fortranはコンパイラ毎に独自の拡張が相当されてますから、移植する際にはどの拡張が使えるのか把握する必要があります。
使えない場合はコンパイルエラーが返ってくるのですぐにわかりますけど。
http://www.cc.nao.ac.jp/vppman/HTML/japan/langFort/fvp11/fvp00079.htm

参考URL:http://docs.hp.com/ja/B3908-90007/ch10s65.html#id21163286

Qpowershellのパイプでテキストデータを渡す

powershellのパイプはオブジェクトを渡しますが、
従来シェルと同様にテキストデータを渡すことはできるのでしょうか?

Aベストアンサー

調べてみました。
できますが、文字コードの関係で一工夫必要です。

ASCIIならCMD.EXEと同じで大丈夫です。
PS C:\Users\User1> cmd /c echo test | more.com
test

しかし日本語は文字化けします。
PS C:\Users\User1> cmd /c echo テスト | more.com
???

原因は$OutputEncodingがUS-ASCIIになっているからだそうです。
そこでこれをシフトJISにすればいいのですが、いちいちUS-ASCIIに戻すのは面倒なので子スコープを使うことにします。
なお、シフトJISのエンコーディングになっているものとしては[console]::OutputEncodingがあるのでそれを使います。

PS C:\Users\User1> &{$outputencoding=[console]::outputencoding; cmd /c echo テスト | more.com}
テスト

参考にした資料は以下のとおりです。
http://blog.livedoor.jp/hentaiga/archives/51624750.html
http://scripting.cocolog-nifty.com/blog/2010/05/powershell-9c98.html
【改訂新版】 Windows PowerShell ポケットリファレンス(技術評論社)

参考URL:http://blog.livedoor.jp/hentaiga/archives/51624750.html

調べてみました。
できますが、文字コードの関係で一工夫必要です。

ASCIIならCMD.EXEと同じで大丈夫です。
PS C:\Users\User1> cmd /c echo test | more.com
test

しかし日本語は文字化けします。
PS C:\Users\User1> cmd /c echo テスト | more.com
???

原因は$OutputEncodingがUS-ASCIIになっているからだそうです。
そこでこれをシフトJISにすればいいのですが、いちいちUS-ASCIIに戻すのは面倒なので子スコープを使うことにします。
なお、シフトJISのエンコーディングになっているものとしては[console]:...続きを読む

Qライブラリ使用Fortranプログラムのコンパイル

ライブラリを用いたFortranプログラムのコンパイルについて。

以前作製した簡単な高速フーリエ変換のテストプログラムを
G95を使用してCygwinでコンパイルしようとしたのですが、
以下のようなエラーが表示されてコンパイルできません。

以前使用していたPCや他のPCでは問題なくコンパイルと
実行ができ、このエラーが出るのは今私が使っているPCのみです。
(これまで試したPCは全てwin7)
原因が分かる方がいらっしゃいましたらご教授願います。

===================================================

$ g95 1.f90 -L. -lfftw -lrfftw
./libfftw.a(fftwnd.o):fftwnd.c:(.text+0x704): `__getreent' に対する定義されてい
ない参照です
./libfftw.a(putils.o):putils.c:(.text+0xc0a): `__getreent' に対する定義されてい
ない参照です
./libfftw.a(malloc.o):malloc.c:(.text+0x42): `__getreent' に対する定義されていな
い参照です
./libfftw.a(malloc.o):malloc.c:(.text+0x52): `__getreent' に対する定義されていな
い参照です
./libfftw.a(malloc.o):malloc.c:(.text+0xcf): `__getreent' に対する定義されていな
い参照です
./libfftw.a(malloc.o):malloc.c:(.text+0xdf): `__getreent' に対する定義されていな
い参照がさらに続いています
./libfftw.a(wisdom.o):wisdom.c:(.text+0x626): `_imp___ctype_' に対する定義されて
いない参照です
./libfftw.a(wisdom.o):wisdom.c:(.text+0x664): `_imp___ctype_' に対する定義されて
いない参照です
./libfftw.a(wisdom.o):wisdom.c:(.text+0x6bc): `_imp___ctype_' に対する定義されて
いない参照です
./libfftw.a(wisdom.o):wisdom.c:(.text+0x704): `_imp___ctype_' に対する定義されて
いない参照です
./libfftw.a(wisdom.o):wisdom.c:(.text+0x75c): `_imp___ctype_' に対する定義されて
いない参照です
./libfftw.a(wisdom.o):wisdom.c:(.text+0x780): `_imp___ctype_' に対する定義されて
いない参照がさらに続いています

ライブラリを用いたFortranプログラムのコンパイルについて。

以前作製した簡単な高速フーリエ変換のテストプログラムを
G95を使用してCygwinでコンパイルしようとしたのですが、
以下のようなエラーが表示されてコンパイルできません。

以前使用していたPCや他のPCでは問題なくコンパイルと
実行ができ、このエラーが出るのは今私が使っているPCのみです。
(これまで試したPCは全てwin7)
原因が分かる方がいらっしゃいましたらご教授願います。

===================================================

$ g95...続きを読む

Aベストアンサー

ん~....

そうなると, かなり根の深い問題かもしれませんねぇ. ちょいと __getreent で調べてみると
1. ライブラリのバージョンがあっていない
とか
2. 複数のコンパイラがあって不適切なものを使っている
とか
3. そもそもライブラリを作るときに設定を間違えている
とか, いろんな原因が見つかっちゃったりします. 例えば, libfftw.a とか librfftw.a とかを他のシステムから単純にコピーしたりすると 1 の問題にぶちあたる可能性があり得るらしいです (逆に言えば, これらのライブラリが今使っているPC で作った物ならとりあえず排除できそうでもある).

QFortran77依頼Fortranを使用していない

のですが今のFortranのバージョンはいくつでしょうか?
昨今の利用状況についても教えてください

Aベストアンサー

Fortran 66 : 1966 年に ASA (American Standards Association) に よって制定。
Fortran 77 : 1978 年制定。長い間使われ、現在でも通用する。
Fortran 90 : ISO (International Standard Organization) 委員会 WG5 の下で ANSI (American National Standard Institute) 公認委員会 J3 が開発。 配列、構造体などの機能を強化。1991 年制定。現在のほとんどの処理系が対応。
Fortran 95 : Fortran 90 の修正版。1995 年完成。ISO によって 1997 年に採用。ほとんどの処理系が対応。
Fortran 2000 : 最新規格。一部準拠というの処理系は多いのだが…。

現在、メジャーなのはFortran 90/77ですね。
http://ja.wikipedia.org/wiki/Fortran#.E4.BB.95.E6.A7.98.E3.81.AE.E5.A4.89.E9.81.B7

Fortran 66 : 1966 年に ASA (American Standards Association) に よって制定。
Fortran 77 : 1978 年制定。長い間使われ、現在でも通用する。
Fortran 90 : ISO (International Standard Organization) 委員会 WG5 の下で ANSI (American National Standard Institute) 公認委員会 J3 が開発。 配列、構造体などの機能を強化。1991 年制定。現在のほとんどの処理系が対応。
Fortran 95 : Fortran 90 の修正版。1995 年完成。ISO によって 1997 年に採用。ほとんどの処理系が対応。
Fortran 2000 : 最新...続きを読む

QFORTRAN90で書式に変数を使いたい

FORTRAN90で書式に変数を使いたい

配列aの要素数が3である場合の書き出し方は例えば、
 print '(3I5)', a
ですよね。
配列aの要素数がnである場合、どう書き出せばよいのでしょうか?
 print '(nI5)', a
だとエラーが出ます。
繰り返し文を駆使する以外にないのでしょうか?あまり美しくない気がします。

Aベストアンサー

character*6 FMT
しておいて、
write(FMT,'(''(''I2''I5)'')') n
print FMT,a
とかですね。桁数は適当に。


このカテゴリの人気Q&Aランキング

おすすめ情報