Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

filename of non-opened I/O device

4 views
Skip to first unread message

Yositaka Hasegawa

unread,
Feb 13, 1998, 3:00:00 AM2/13/98
to

京都大 電気工学教室の長谷川と申します。

以下の内容について、代理投稿させてください。

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
柴田@日水コンと申します。

fjに投稿できる環境にないので,友人から代理投稿してもらっています。
e-mailは使えますので,何か直接コメントがあれば,
siba...@nissuicon.co.jp
にお願いします。

open文などで明示的にファイル名を与えていない入出力装置番号を
FORTRANのプログラムの外部で設定する方法を教えて下さい。

私は,Redhat Linux 5.0で fort77(f2c+gcc2.7.2.3)を使っています。
この環境で,open文で明示的にファイル名を指定しない出力装置に
文字列を書き出すと,"fort.(入出力装置番号)"というファイルができます。
例えば,
% cat devtest.f

write(10, *) 'test'
stop
end

このプログラムを
% fort77 devtest.f
で作り,実行すると,fort.10という,'test'と書き込まれたファイルができます。
fort.10というファイル名はどういう仕組みで名付けられるのでしょうか。

また,環境変数か何かを前もって設定することによって,明示的に指定しない
出力装置番号をファイル名に割り当てることができるでしょうか。

最終的には,以下のような流れのシェルスクリプトを作りたいと思っています。
つまり,VMSのコマンドプロシージャでのASSIGN文の代わりになるものが
ほしいわけです。

#!/bin/bash
(入出力装置番号N番にファイル名を割り当て)
fort77 source.f # <- open文などでファイル名を割り当てないプログラム
a.out

以上,よろしくお願いいたします。
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Arasaki Yasuki

unread,
Feb 16, 1998, 3:00:00 AM2/16/98
to

In article <6c0inv$8d4$1...@kuee4.kuee.kyoto-u.ac.jp>
has...@swan.kuee.kyoto-u.ac.jp (Yositaka Hasegawa) さんが
siba...@nissuicon.co.jp さんの代理としてwrote:
(Redhat Linux 5.0で fort77(f2c+gcc2.7.2.3)について)

>> また,環境変数か何かを前もって設定することによって,明示的に指定しない
>> 出力装置番号をファイル名に割り当てることができるでしょうか。

(Linuxのことは良く知らないんですが、
libf2c-0.9.tar.gzというのの中の
libf2c/libI77/open.cというのの中をみると)

f2cのライブラリの一つであるlibI77の中で、
名前を指定していないファイルについては「fort.装置番号」
を使うように固定的に書いてあるので、libI77のソースを書き換えて
コンパイルしなおさないかぎりこれはどうにもならないんじゃ
ないでしょうか。

出力の装置番号があらかじめわかっているなら、「fort.XX」から
望みの出力ファイルにlnコマンドでリンクを張っておくとか、
出力後のファイル名をmvコマンドで変更するとか、
プログラムの先頭に
OPEN(xx,FILE='...')
とかを入れればいいかもしれないですが…
--
新崎@名大人情
ara...@mns2.c.u-tokyo.ac.jp

Yositaka Hasegawa

unread,
Feb 17, 1998, 3:00:00 AM2/17/98
to

京都大 電気工学教室の長谷川です。

先日私が代理投稿しました記事に関して、当ニュースグループ上で
Reply 頂きました。
この旨を依頼者に紹介しましたところ、再び下記の投稿依頼記事を
受け取りましたので、代理投稿致します。

-------------<ここから>-------------------------------------
柴田@日水コンです。

> f2cのライブラリの一つであるlibI77の中で、
> 名前を指定していないファイルについては「fort.装置番号」
> を使うように固定的に書いてあるので、libI77のソースを書き換えて
> コンパイルしなおさないかぎりこれはどうにもならないんじゃ
> ないでしょうか。

なるほど。わかりました。

> 出力の装置番号があらかじめわかっているなら、「fort.XX」から
> 望みの出力ファイルにlnコマンドでリンクを張っておくとか、
> 出力後のファイル名をmvコマンドで変更するとか、
> プログラムの先頭に
> OPEN(xx,FILE='...')
> とかを入れればいいかもしれないですが…

そうですね。
例えば,装置番号9番をプログラム中ではファイル名を指定せず,かつfoo.datという
ファイルにしたいときは,プログラムの実行前に,

touch foo.dat ; ln -sf foo.dat fort.9

としておけば,9番が入力元・出力先でも両方適用できるので,こうしようと思います。

課題点としては,
1. foo.datが既に存在する場合,タイムスタンプが書き変わってしまう
2. foo.datを2回書かないといけない
がありますが,testコマンドをつかったスクリプトでも書いておこうと思います。

--
柴田研(SHIBATA Gen) <siba...@nissuicon.co.jp>
(株)日水コン 河川事業部技術第2部技術第2課 (大阪支所)


-------------<ここまで>--------------------------------------------------

0 new messages