トップページ⇒tech
991コメント434KB

FORTRAN �W

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/11/12(日) 17:13:35
FORTRAN総合スレッドです。
FORTRAN77/90/95/2003, HPF等、FORTRAN全般に関する話題を書き込んで下さい。

・FORTRAN関連情報
お約束だが、まずは自分で調べよう
http://www.google.co.jp/

x86で動作するFortranコンパイラ
http://www.nminoru.jp/~nminoru/programming/x86-fortran.html

The Fortran Company
http://www.fortran.com/
Polyhedron Software
http://www.polyhedron.co.uk/
Google Directory - Fortran
http://directory.google.com/Top/Computers/Programming/Languages/Fortran/

・前スレ
FORTRAN III
http://pc8.2ch.net/test/read.cgi/tech/1104724162/
FORTRAN II
http://pc5.2ch.net/test/read.cgi/tech/1068351911/
Fortran
http://pc2.2ch.net/test/read.cgi/tech/1003214738/
0136デフォルトの名無しさん2006/12/06(水) 14:40:20
>>134
でも内容も何もわからない人だったら質問をちゃんとしろってのも難しいんじゃないかな??
0137デフォルトの名無しさん2006/12/06(水) 20:08:27
質問をしている人間が自分のやってることの内容も何もわからない状態なら、
それこそ答えようがないだろ。

せめて基本的な文法なりソフトの簡単な使い方くらいは自分で調べて
それでもダメだったら、何がしたくて何を試したけどどう上手くいかなかったか
程度のことは書いて質問すべきじゃないか。
0138デフォルトの名無しさん2006/12/07(木) 04:08:19
>>137
もっともな意見だが、それが出来ればたいていは自己解決して2chになんか聞きにこなくてすむw
0139デフォルトの名無しさん2006/12/07(木) 07:46:51
>>137
Exactly
0140デフォルトの名無しさん2006/12/07(木) 17:42:48
>>139
(笑)
0141デフォルトの名無しさん2006/12/07(木) 22:56:54

Silverfrost (Salford) FTN95 Version 5.00 キタコレ
ttp://www.download.com/Silverfrost-FTN95/3000-2069_4-10614581.html?tag=pub
ttp://forums.silverfrost.com/viewtopic.php?t=676&start=0&postdays=0&postorder=asc&highlight=

.NET 2.0とVisual Studio 2005に対応したらしいが、VS2005は使ってないので詳細は知らん。
0142デフォルトの名無しさん2006/12/08(金) 22:06:05
Intel FortranでMacアドレス取得する方法ありますか?
マニュアル見ても載ってなかったです・・。
0143デフォルトの名無しさん2006/12/08(金) 23:44:07
>>142
C言語でも難しいようだ。標準のWIN32APIでは出来ないので、他の方法をやっているようだ。

安直な方法は、SYSTEM関数でDOSコマンドのipconfig/all を実行し、
その出力からMACアドレスを切り出す方法ジャマイカ?

0144デフォルトの名無しさん2006/12/08(金) 23:52:39
>>143
やっぱりそうなりますかねー。
自分のOS以外で動作を確かめられないのでちょっと大変;;

どうもthx
0145デフォルトの名無しさん2006/12/09(土) 10:46:49
>>142
Three ways to get your MAC address.
http://www.codeguru.com/Cpp/I-N/network/networkinformation/article.php/c5451

Retrieving Information Using GetNetworkParams
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/creating_a_basic_ip_helper_application.asp

IPHLPAPIを使ってWindowsでネットワーク設定いじるプログラムを書く
http://www.geekpage.jp/programming/iphlpapi/

この辺だと思うが、PlatformSDKのライブラリをLINKすれば可能なようだ。
しかし自分でインターフェースを書かないと駄目なので難しそう。
TYPEとかの定義が深いので、インターフェースに必要な定義がどれだけあるのかわからん。
0146デフォルトの名無しさん2006/12/09(土) 17:06:14
winだったら昔NetBIOSでとったことがある。
0147デフォルトの名無しさん2006/12/09(土) 20:54:36
PROGRAM MAC
USE ifwinty
IMPLICIT NONE
!
INTEGER, PARAMETER :: MAX_ADAPTER_DESCRIPTION_LENGTH = 128 !// arb.
INTEGER, PARAMETER :: MAX_ADAPTER_NAME_LENGTH = 256 !// arb.
INTEGER, PARAMETER :: MAX_ADAPTER_ADDRESS_LENGTH = 8 !// arb.
!
TYPE :: IP_ADDRESS_STRING
CHARACTER (4) :: String(4)
END TYPE
TYPE :: IP_MASK_STRING
CHARACTER (4) :: String(4)
END TYPE
!
TYPE :: t_IP_ADDR_STRING
INTEGER (LPLONG) :: pNext
TYPE (IP_ADDRESS_STRING) :: IpAddress
TYPE (IP_MASK_STRING) :: IpMask
INTEGER (DWORD) :: Context
END TYPE
!
0148デフォルトの名無しさん2006/12/09(土) 20:55:07
TYPE :: t_IP_ADAPTER_INFO
INTEGER (4) :: pNext
INTEGER (DWORD) :: ComboIndex
CHARACTER (LEN = MAX_ADAPTER_NAME_LENGTH + 4) :: AdapterName
CHARACTER (LEN = MAX_ADAPTER_DESCRIPTION_LENGTH + 4) :: Description
INTEGER (UINT) :: AddressLength
INTEGER (BYTE) :: Address(MAX_ADAPTER_ADDRESS_LENGTH)
INTEGER (DWORD) :: Index
INTEGER (ULONG) :: iType
INTEGER (ULONG) :: DhcpEnabled
INTEGER (LPLONG) :: pCurrentIpAddress
TYPE (t_IP_ADDR_STRING) :: IpAddressList
TYPE (t_IP_ADDR_STRING) :: GatewayList
TYPE (t_IP_ADDR_STRING) :: DhcpServer
INTEGER (BOOL) :: HaveWins
TYPE (t_IP_ADDR_STRING) :: PrimaryWinsServer
TYPE (t_IP_ADDR_STRING) :: SecondaryWinsServer
INTEGER (ULONG) :: LeaseObtained
INTEGER (ULONG) :: LeaseExpires;
END TYPE
!
INTERFACE
INTEGER (BOOL) FUNCTION GetAdaptersInfo(arg1, arg2)
USE ifwinty
!DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'GetAdaptersInfo' :: GetAdaptersInfo
INTEGER (LPLONG) :: arg1
INTEGER (LPLONG) :: arg2
END FUNCTION
END INTERFACE
0149デフォルトの名無しさん2006/12/09(土) 20:56:42
!
TYPE (t_IP_ADAPTER_INFO) :: AdapterInfo(16)
TYPE (t_IP_ADDR_STRING) :: CurrentIpAddress
INTEGER (DWORD) :: dwRetVal
INTEGER (PULONG) :: pdwRetVal
INTEGER (BOOL) :: iret
CHARACTER (LEN = 128) :: Description
dwRetVal = sizeof(AdapterInfo)
iret = GetAdaptersInfo(LOC(AdapterInfo), LOC(dwRetVal) )
!PRINT *, AdapterInfo(1)%pNext
!PRINT *, AdapterInfo(1)%ComboIndex
!PRINT *, AdapterInfo(1)%AddressLength
!PRINT *, AdapterInfo(1)%Description(1:128)
PRINT '(6Z3)', AdapterInfo(1)%Address(1:AdapterInfo(1)%AddressLength)
!PRINT *, AdapterInfo(1)%IpAddressList

!PRINT *, AdapterInfo(2)%pNext
!PRINT *, AdapterInfo(2)%ComboIndex
!PRINT *, AdapterInfo(2)%AddressLength
!PRINT *, AdapterInfo(2)%Description(1:128)
PRINT '(6Z3)', AdapterInfo(2)%Address(1:AdapterInfo(2)%AddressLength)
!PRINT *, AdapterInfo(2)%IpAddressList
STOP
END PROGRAM MAC


とりあえず、これでMACアドレスが取れた。
0150デフォルトの名無しさん2006/12/09(土) 21:09:05
>>142 雪が降っていたので暇つぶしにがんばってみた。
4時間ぐらいかかったが、MACアドレスがIntelFortranで取れた。

方法は>>145の1番目のリファレンスの3番目の方法を用いた。
型などは、2番目のMSDNに書いてある情報から自分で適当に作ってみた。
TYPEのサイズがC++版で求めているのと一致したので多分OKだろう。自信はないw

漏れはメインフレーム育ちの生粋のFORTRANerで、CもC++はHelloWorld以上のものは
書いたことが無いので、文字列とかポインターの扱いとかが今一自信がない。


コンパイルに必要なのはPlatformSDKだが、漏れはインストールのときに
勝手にインスコされていたようだ。この中のライブラリ IPHlpApi.lib をライブラリに
加えておく必要がある。
Linker>Input>Additional Dependency に、そのまま書けばOKだった。

プロジェクトタイプはコンソールでおk。

>>146 >>145の記事によるとNetBiosから取る方法は、最近は推奨されないらしい。
ただし取り方は書いてあった。
01511502006/12/09(土) 22:27:56
>>149のメインプログラム部分は、以下に直しておいてくれ。
デバッグ用のゴミを削った。複数のネットワークアダプタにも(とりあえず16個以下だが)対応。

TYPE (t_IP_ADAPTER_INFO) :: AdapterInfo(16)
TYPE (t_IP_ADDR_STRING) :: CurrentIpAddress
INTEGER (DWORD) :: dwRetVal
INTEGER (BOOL) :: iret
INTEGER :: i
dwRetVal = sizeof(AdapterInfo)
iret = GetAdaptersInfo(LOC(AdapterInfo), LOC(dwRetVal) )
IF (iret /= 0) STOP 'Error'
DO i = 1, 16
PRINT '(5(Z2.2,"-"), Z2.2)', AdapterInfo(i)%Address(1:AdapterInfo(i)%AddressLength)
IF (AdapterInfo(i)%pNext == NULL) EXIT
END DO
STOP
END PROGRAM MAC
0152デフォルトの名無しさん2006/12/12(火) 14:31:56
compaq visual fortran 6.1を使っています。
1つのプロジェクトの中のsource fileのなかには、二つ以上プログラム
ファイルを入れてはだめなのでしょうか?ためしに片方のプログラム
をコンパイルすると実行時に引っかかってしまいます。
一つを消すと上手くいくのですが…。
では平行して二つのプログラムを作りたい場合どうすればいいのでしょうか?
どうかご返答お願いします。
0153デフォルトの名無しさん2006/12/12(火) 18:50:15
>>152
コードを変更するときには、ワークスペースも変更する必要があるはず。
手っ取り早くするには、コード変更=CVF を一旦終了。
0154デフォルトの名無しさん2006/12/12(火) 23:08:08
>>152
実行ファイル毎にProjectを作成して、1つのWorkspaceに'Insert Projects into Workspace'で
Projectを追加、または'Add New Project to Workspace'で新しいプロジェクトを追加する。

Buildするときは'Set Active Project'でProjectを選んでからBuildするか
または'Batch Build'でまとめてBuildする。

CVF6.6の場合だが、6.1でもたぶん同じだろう。
0155デフォルトの名無しさん2006/12/13(水) 20:25:50
>>153-154
親切にありがとうございました。
ちょっとvisual fortran自体はじめて使ったもので
よく分かりませんでしたが聞いて解決しました
0156デフォルトの名無しさん2006/12/15(金) 20:33:57
ノートパソコンでLAPACKコンパイルすると
ファンがぶんぶん回ってうるさいよ〜
0157デフォルトの名無しさん2006/12/16(土) 01:01:54
>>156
LAPACKで計算をするうようになれば同じこと。
0158デフォルトの名無しさん 2006/12/18(月) 16:58:00
下記の文章をfortran77で表すとどうなるか、教えていただけませんか?

ex=2.0**((-1)*(l+1))
i=0
k=0


do 210 while(i.lt.n)
i=i+1
k=k+1
if(k.gt.p)then
call delay(ivw,p,q,j)
else
j=k
end if

if(ivw(j).ne.0) then
a(i)=ivw(j)*ex
else
i=i-1
end if
210 continue
0159デフォルトの名無しさん2006/12/18(月) 17:45:37
>>158
whileのループをgoto文を使って書いたら?
0160デフォルトの名無しさん2006/12/18(月) 23:10:13
計算終了時に、携帯電話へメールで知らせてくれるってことできますか??
0161デフォルトの名無しさん2006/12/18(月) 23:13:01
>>160
シェルスクリプトを書けばいい。

0162f902006/12/19(火) 13:07:00
do
if(i>=n) exit
i=i+1
k=k+1
if(k>p) then
call delay(ivw,p,q,j)
else
j=k
end if

if(ivw(j)/=0) then
a(i)=ivw(j)*ex
else
i=i-1
end if
enddo
0163デフォルトの名無しさん2006/12/20(水) 15:45:48
Intel fortran9.1使ってるんだけど、system()で定期的に外部プログラムを呼ぶとコミットチャージが時間とともに増え続けてしまうという
症状に悩まされていた。ところが、system()の代わりにsystemqq()を使うと、その症状が出なくなった。
こんな経験した人いる?
0164デフォルトの名無しさん2006/12/21(木) 01:03:54
SYSTEMってPOSIX互換のルーチンかい?
SYSTEMQQはQUICKWINからみか?
どっちも使わんなぁw

0165デフォルトの名無しさん2006/12/21(木) 20:44:11
>>164
じゃあ、外部コマンド起動したいときはどうやってるの?
0166デフォルトの名無しさん2006/12/22(金) 00:31:25
外部コマンド呼ばないw
Win32で出来る物はWin32でやる。
できないものは諦めるw
0167デフォルトの名無しさん2006/12/22(金) 00:48:23
コンソールアプリ無視していきなりWin32かよw
0168デフォルトの名無しさん2006/12/22(金) 01:26:17
おまいら仲良くやれよ
スクリプトで妥協しとけw
0169デフォルトの名無しさん2006/12/28(木) 23:25:36
オッペン化粧品!

OpenMPのいい参考サイトか本はアルカイダ?

あぁそれとMPIにしろとか言うなヨーロッパ。
0170デフォルトの名無しさん2006/12/28(木) 23:46:15
コンパイラの自動並列化だけでがまんs

俺も教えて欲しい。
尼損で検索したら、和書は1冊しか無かった・・・
0171デフォルトの名無しさん2006/12/29(金) 00:00:47
>>169
いやさ、さっぱり自動並列化されないから、少し知恵をつけてやるかと思って。
2CPUシングルマシンで軽く行きたい。

QuadCoreを買う口実も欲しいw
0172デフォルトの名無しさん2006/12/29(金) 03:02:52
えー、かなり漠然とした質問ですがちょっとアドバイスをもらえませんか?
ある元となる計算コードでは、セルの幅や高さがすべての領域で一定です。
計算する領域は長方形で、

NCX:セルの行(X方向)
NCY:セルの列(Y方向)
CW:列方向へのセルの幅
CH:行方向へのセルの幅

といった感じです。
また、それぞれのセルには通し番号が割り振られています。
(最初の行を小さいほうから順に1.2.3…と割り振っていって
 端に行ったら次の行に移ります)

↑Y
9.......
5678
1234  →X

このコードを元に、任意の列以降でセルの大きさを縦横それぞれ
半分にする(面積を1/4)にして(もちろん以降の行、列数は倍になります)
計算するプログラムを書きたいと思います。セルの大きさの変化は何段階か行われます。
(具体的にはY座標依存のある物理量と比較してセルを小さくするかどうか判別します)
01731722006/12/29(金) 03:03:23
(続き)
しかし、元のコードには例えばセルが何行、何列目かを判別するために

NY=(N-1)/NCX+1
NX=N-(NY-1)*NCX

のような表現が多様されています。(Nはセルの通し番号)
また、逆に行や列の指定からセル番号を判別するようなものもありますし、
座標指定に

X=NY*CH

みたいな事もしています。
NCX,NCY,CW,CHを配列にして、初期の大きさのセルの領域の行、列数を
NCX(1)、NCY(1)に、次の大きさのセルの行、列数をNCX(2)、NCY(2)に、
というようにセルの大きさで領域を分けて考えよう、と思ったのですが、
あるセルが何番目の領域に属するかをいちいち判別するのもめんどくさいですね。
ちょっと上記の判別の式が複雑になってきてしまいます。
(ループで非常に何度も通るところなので出来るかぎり簡単にしたいです)

各セルが何行何列目に属するかと何番目の領域に属するかを
配列に格納しておけばいいかとは思いますが、
プログラムの経験が浅いこともありかなり無駄なことをしていないか不安になってきました。

既存の構造を生かしたり(置換するだけですぱっと終了とか)
あまり余計なものを追加しないエレガントなやりかたってありますかね?
やっぱり地道にやるしかないでしょうか?長文すみません。
01741722006/12/29(金) 03:14:28
すみません、

(誤)X=NY*CH
(正)Y=NY*CH

です。
0175デフォルトの名無しさん2006/12/29(金) 20:26:22
>>173
サイズに依存する。
小さいならいったん既存の計算式で求めたセルサイズをテーブルとして保存すればよい。

サイズが大きくてメモリーギリギリまで使っているなら、1回ごとに計算するほうがいい。


567
238  のちな形でサイトを指定してもいいなら、判別の計算式も簡単になるかもしれない。
149  計算機学科の人からはしかられるが、高速でやるにはデータ構造と処理が
     切り離せないので、まぁ問題を理解し整理して自分で良く考えろw
01761722007/01/05(金) 18:17:30
>>175
遅レス申し訳ない。有難うございます。
やっぱりある程度地道にやるほか無さそうですね。
しこしこやってます。
0177デフォルトの名無しさん2007/01/08(月) 20:38:06
若干Fortranから逸れますが、わかる方ご教授ください。
IntelのVisual Fortranで作成したコンソールアプリから
VCで作ったLibファイルを呼び出したいです。

簡単に書くと、VCは
BOOL PrintMessage()
{
中略
}
という関数になっています。

これをFortranから呼び出すために、
自分なりにマニュアルを読み、
以下のようにコーディングしてみました。
0178デフォルトの名無しさん2007/01/08(月) 20:39:25
INTERFACE
LOGICAL FUNCTION PrintMessage()
!DEC$ ATTRIBUTES STDCALL :: PrintMessage
END FUNCTION
END INTERFACE

LOGICAL LX
LX = PrintMessage()

しかし、リンク時に_PrintMessageが見つかりません、と
リンクエラーが出ます。

解決方法はあるでしょうか?


なお、VCから上記VCを呼び出すケースもあるため、
両方Fortranで書けば?というのは無しでお願いしたいです。

一応環境としては、
Visual Studio .NET 2003 + Intel Visual Fortran v9.0
になります。

よろしくお願いします。
0179デフォルトの名無しさん2007/01/09(火) 00:52:12
>>178
呼び出し規約がSTDCALLの場合、外部名はデフォルトですべて小文字と解釈されてしまうので
大文字・小文字が混在する場合は以下の様にする

!DEC$ ATTRIBUTES STDCALL, DECORATE, ALIAS: 'PrintMessage' :: PrintMessage

C側の PrintMessage() 関数も __stdcall でコンパイルされている必要がある。
C++の場合は extern "C" も必要。

また、IVFではLOGICALの内部表現(整数値)が奇数のとき真、偶数のとき偽となるので
他言語の関数とLOGICALを受け渡しする場合は注意すること。
01801782007/01/09(火) 21:34:40
>>179
レスありがとうございます。

なるほど・・。
F側の大文字小文字対策はマニュアルに書いてありましたが、
いろいろ調整しても結果が同じだったので関係ないと思ってました。
C側の対策は全く見えてませんでした^^
正直Cはド素人なので上記のようにいわれてすぐに対応できませんが
参考にして調べてみます!
ありがとうございました。


0181デフォルトの名無しさん2007/01/09(火) 23:27:06
>>180
IntelFortranのマニュアル見るとちまちまと書いてあるよ。

DECORATE修飾子が新設されたので、DEC時代に場合分けして書いていたのが
すっきりしてうれしい。

0182デフォルトの名無しさん2007/01/10(水) 19:42:57
>>180
ATTRIBUTES STDCALL, ... ではなく ATTRIBUTES C, ... を使えばC言語の方はいじらなくてもおk。
0183デフォルトの名無しさん2007/01/12(金) 23:52:31
三つの数値データを与えてその三つの数値の最大値、最小値、中央値、
平均値、標準偏差、不偏分散を求められるプログラムを作成せよ。
わからなくて大変です。
お願いします
0184デフォルトの名無しさん2007/01/16(火) 12:41:49
Fortressどう思います?
数式をそのまま書けるとか、並列化にコンパイラレベルで対応とか・・・
なかなかよさそげですが。
ttp://japan.zdnet.com/news/devsys/story/0,2000056182,20340715,00.htm
ttp://slashdot.jp/developers/07/01/15/1521236.shtml
0185デフォルトの名無しさん2007/01/16(火) 12:45:26
>>183
てっとりばやく答えが欲しいなら
http://pc10.2ch.net/test/read.cgi/tech/1164121236/
に行くといいのでは?
0186デフォルトの名無しさん2007/01/16(火) 20:18:01
既に答えが出てる。 ていうかマルチ。
0187デフォルトの名無しさん2007/01/17(水) 03:15:36
>>184
Fortranの資産使えないのにFortran風にする意味がいまいち良く分からん。
0188デフォルトの名無しさん2007/01/19(金) 12:05:30
>>184
pseudocode をそのままコンパイルしてくれるならうれしい。
0189デフォルトの名無しさん2007/01/19(金) 12:55:53
>>187
え、使えないの?
0190デフォルトの名無しさん2007/01/19(金) 23:38:03
Salford ftn95でlapack95を使いたいねんけど、どーすればいいん??
0191デフォルトの名無しさん2007/01/20(土) 00:43:01
>>190
1.NetlibからLAPACKを拾ってくる。
2.どうにかしてblas.libとlapack.lib
0192デフォルトの名無しさん2007/01/20(土) 00:44:49
>>190
1.NetlibからLAPACKを拾ってくる。
2.どうにかしてblas.libとlapack.libをつくる。
3.NetlibからLAPACK95を拾ってくる。
4.どうにかしてlapack95.libとモジュールファイルをつくる。
5. > ftn95 hoge.f90
6. > slink hoge.obj lapack95.lib lapack.lib blas.lib
0193デフォルトの名無しさん2007/01/20(土) 08:07:50
>>192
どもども!
どうにかしてってところが問題だが、どうにかしてみます。
どうにかする方法がわかったら、またよろしゅ〜!
0194デフォルトの名無しさん2007/01/20(土) 11:45:48
77で動的配列ってできないの?
x(i,j)
ってしといて
ファイルからi,j読み込んでサイズ決めるみたいな感じにしたいんだけど・・
0195デフォルトの名無しさん2007/01/20(土) 13:15:50
>>194
言語規格としては出来ない。

ただ、コモンとか上のルーチンで大きなワーク配列を取っておいて、
いったん必要なサイズを知った上で下のサブルーチンで作業領域で整合配列を
切って使って似たようなことは出来る。

C言語もK&Rの付録を見るとmallocをそういう感じで実現する例を出している。
0196デフォルトの名無しさん2007/01/20(土) 13:38:47
90ならポインター使える。
PGIとか77でもポインター使える処理系もある。
ポインターの使えない77でもCとの合わせ技で可能。
0197デフォルトの名無しさん2007/01/20(土) 16:25:44
>>193
LAPACK(BLAS):
・netlibから lapack-3.1.0.tgz を取ってくる。

blas.lib:
・lapack-3.1.0\BLAS\SRC の中のソース(*.f)を全部コンパイルする。
・出来たオブジェクトファイルを slim で blas.lib にまとめる。
 slim *.obj /file:blas

lapack.lib:
・lapack-3.1.0\INSTALL の中の dlamch.f, dsecnd.f, ilaver.f, lsame.f, second.f, slamch.f を
lapack-3.1.0\SRC にコピーする。
但し、FTN95には second.f, dsecnd.f で使われている ETIME関数が無いので
ETIMEを自作するか CPU_CLOCK, SYSTEM_CLOCK辺りを使って書き換える。
・lapack-3.1.0\SRC の中のソースを全部コンパイルする。
この際、slaruv.f, dlaruv.f をコンパイルするときは最適化オプションを外す。
・出来たオブジェクトファイルを slim で lapack.lib にまとめる。

tmglib.lib:
・lapack-3.1.0\TESTING\MATGEN の中のソースを全部コンパイルする。
この際、slaran.f, dlaran.f をコンパイルするときは最適化オプションを外す。
・出来たオブジェクトファイルを slim で tmglib.lib にまとめる。
0198デフォルトの名無しさん2007/01/20(土) 16:27:59
(>>197の続き)

LAPACK95:
・netlibから lapack95.tgz を取ってきて展開する。
・lapack95\SRCに移動。
・la_auxmod.f90 をコンパイルする。 → la_auxmod.mod, la_precision.mod が出来る。
・f77_lapack_single_double_complex_dcomplex.f をコンパイルする。 → f77_lapack.mod が出来る。
・f95_lapack_single_double_complex_dcomplex.f をコンパイルする。 → f95_lapack.mod が出来る。
・la_csygst.f90, la_csygv.f90, la_csygvd.f90, la_csytrd.f90, la_zsygst.f90, la_zsygv.f90, la_zsygvd.f90, la_zsytrd.f90
以外の la_*.f90 をコンパイルする。
・出来たオブジェクトファイルを slim で lapack95.lib にまとめる。


以上で出来たライブラリファイル(*.lib)を環境変数 LIB で指定したフォルダへ、
モジュールファイル(*.mod)を環境変数 MOD_PATH で指定したフォルダへそれぞれ移す。
0199デフォルトの名無しさん2007/01/20(土) 17:04:13
関数名を引数に使いたいのですが、EXTERNAL文を呼び出し側で使っても
うまくいきません。
下のプログラムなのですが、何処が間違っているんでしょう?

External func
real func,SUM
write(*,*) SUM(func)
end

real Function SUM(f)
External func
real f
SUM = f(1.0)+f(2.0)
return
end

real Function func(x)
real x
func = x
return
end

0200デフォルトの名無しさん2007/01/20(土) 19:15:37
>>199
SUM() がF90の関数と混同されているんで内科医?
SUM0とかにすればおK
0201デフォルトの名無しさん2007/01/20(土) 19:22:59
>>199
External func → external func, SUM
02021992007/01/20(土) 22:07:45
>>200>>201、ご指摘の方法で解決することが出来ました。
有難うございます。
0203デフォルトの名無しさん2007/01/20(土) 22:37:50
>>197,198
ありがとう〜、格闘の末何とかなりました。
オレもあんたくらい、pcを自由にあやつりたいもんですわ!
0204デフォルトの名無しさん2007/01/21(日) 00:37:48
本来ならMakefileを書いて、テストプログラムも含めてmake(MK32)で処理させるべきなのだろうけど
FTN95の場合、他のコンパイラとオプションの指定方法が違ったりするから中々面倒くさい。
0205デフォルトの名無しさん2007/01/26(金) 07:14:03
質問です。
OPEN (4,FILE=RESULT.OUT,FORM='FORMATTED')
このRESULT.OUTを、あるIと言う数値を読み込んで
例えばI=5000ならRESULT5000.OUTのようにしたいんですが、
出来るでしょうか?要するに計算のステップ数に応じて
自動的にファイル名をつけて出力してやりたいんですが、
OPENの中身をいじるだけじゃダメですかね?
0206デフォルトの名無しさん2007/01/26(金) 10:04:30
>>205
その質問は千回くらい出ている。
過去ログ見れ

0207デフォルトの名無しさん2007/01/28(日) 18:26:34
自分のマシンのフォートランコンパイラコマンドを汁にはどうしたら良いですか?

VINELINUX使ってます。
0208デフォルトの名無しさん2007/01/28(日) 20:37:47
>>207
shell に g77 とか gfortran とか g95 とか ifort とか入れてみる。
使えるようなら no input files などと返ってくる。
なけりゃ自分でインストロールする。
0209デフォルトの名無しさん2007/01/28(日) 21:47:58
全部使えませんでした。
ifortいれたいのですが、どこでダウンロードできますか?
0210デフォルトの名無しさん2007/01/28(日) 21:54:39
>>209
つ google
02112092007/01/28(日) 22:35:38
何度もすみません。
インテルのコンパイラ入れようとしたら下記のメッセージで止まってしまいます。
解決方法を御存じのかたは教えてください。

./.././data/install_fc.sh: line 1459: ERROR: unable to find command "ls" !: command not found
./.././data/install_fc.sh: line 1463: Please add the location to the above commands to your PATH and re-run the script.: command not found
./.././data/install_fc.sh: line 1464: Please press Enter to continue...: command not found
0212デフォルトの名無しさん2007/01/28(日) 22:39:51
>>211
> 解決方法を御存じのかたは教えてください。
夜間中学で英語を学びなおす。
0213デフォルトの名無しさん2007/01/28(日) 22:48:29
つーか lsが見つからんて、どんな環境やねん
0214デフォルトの名無しさん2007/01/30(火) 00:02:48
>>211
ttp://www.google.co.jp/search?hl=ja&q=%22unable+to+find+command%22&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0215デフォルトの名無しさん2007/01/30(火) 01:02:12
EclispのPhortranってどうよ?

とくにLinux上のIntelコンパイラとの組み合わせの使い心地 知りたい
0216デフォルトの名無しさん2007/02/03(土) 07:25:11
Mac OS X 上のgfortran 4.0でコンパイルした時に
gfortran: spec failure: unrecognized spec option 'M'
というエラーがでるのですが何がまずのでしょう? ちなみに他のマシン(LINUX)のgfortranでは
エラーはでません。一応、走るのですが、writeでposition='append'を指定しても既存ファイルに
データを付け加えず、完全に上書きしてしまうので困っています。ちなみにLINUX上では
うまく行きます。
02172092007/02/04(日) 11:51:06
>>214
ありがとうございます。
感謝します。
0218デフォルトの名無しさん2007/02/15(木) 00:11:54
NAGのFortranBuilderのNAGFortran95コンパイラのVersionって5.0?それとも5.1?

5.1なら買いたいんだけど、誰か知ってる人いる?
0219デフォルトの名無しさん2007/02/16(金) 15:57:03
全角英数は気持ち悪いというセンスを身に着けてから出直してくれ。
0220デフォルトの名無しさん2007/02/16(金) 19:36:46
>>219
おい、おまえ





同感
0221デフォルトの名無しさん2007/02/17(土) 00:00:33
>>219
ごめん 訂正させてもらう

NAGのFortranBuilderのNAGFortran九五コンパイラのVersionって�X.0?それとも�X.�T?

�X.�Tなら買いたいんだけど、誰か知ってる人いる?

全角漢数字かローマ数字をつかえばいいわけだろ?
0222デフォルトの名無しさん2007/02/17(土) 00:07:15
つまらん
0223デフォルトの名無しさん2007/02/17(土) 00:22:25
フォートランって今でもリアルに使ってるとこあるのか?w
本物のプログラマは〜、の時代でもすでに時代遅れのダメ言語だったのに
0224デフォルトの名無しさん2007/02/17(土) 01:16:58
>>223
おまえ、ちょっとそこに正座しろ。
この世間知らずがw


いいか、電子計算機の本流はFortranだぞ!
スパコン・ランキングの機械で動いているプログラムは基本的にFortranだ。

大体マルチコアで並列化といっているが、MPIもOpenMPも対応コンパイラはFortranか
Cしかなくて、Cはあくまでおまけだ。大多数の人間はFortranでプログラム書いてる。

これから並列化が主流になるにつれ、Fortranの天下が再びやってくるのは間違いない!
悔い改めよ!さもなくば地獄の業火に焼かれるべし!
詳しくはマタヨシイエスのサイトを熟知すべし。
0225デフォルトの名無しさん2007/02/17(土) 01:22:52
唯一神Fortran
0226デフォルトの名無しさん2007/02/17(土) 01:36:08
>>221
「全角英数」の意味がわかるようになってから出直してくれ。
0227デフォルトの名無しさん2007/02/17(土) 01:43:01
>>216
gfortran どやっていれたんですか?
俺のmacにははいってないんだてど
0228デフォルトの名無しさん2007/02/17(土) 01:53:16
>>227
君のMacはハズレだったんだよ。
0229デフォルトの名無しさん2007/02/17(土) 01:54:03
>>226
おまいら,うぜーから他所でやれ.
0230デフォルトの名無しさん2007/02/17(土) 10:54:58
>>229
うるせー、>>218や>>221のようなグロは見たくねーんだよ。
0231デフォルトの名無しさん2007/02/17(土) 23:09:57
最近くだスレのほうがレベルが高いなw
0232デフォルトの名無しさん2007/02/21(水) 15:40:26
>>218 5.1を搭載
0233デフォルトの名無しさん2007/02/21(水) 22:54:23
>>232
�dクス!


nagのサイトに調べにいったんだが、Windows用はまだ5.0だったので、だめかと思ったが。

安いやつ買って見っかー でもライセンスがウゼーんだよな。
0234デフォルトの名無しさん2007/02/25(日) 00:31:39
Intel Visual Fortran 9.1に付属してくるデバッガ(idb)の詳しい日本語の資料や書籍ってないんでしょうか?
0235デフォルトの名無しさん2007/02/25(日) 17:39:49
エクセルソフトがコンパイラマニュアルの日本語訳を出していたが、デバッガもあったかな?
0236デフォルトの名無しさん2007/02/25(日) 23:30:36
>>235
XLsoftから日本語マニュアルを落としてみましたが、
詳しく載っているのはVisual StudioでのデバッグだけでIDBについては主要なコマンドの説明のみでした。
>IDB に関する詳細は、[スタート] メニューから利用可能なインテル・デバッガーのオンラインマニュアル (英語) を参照してください。
とのことで・・・このマニュアル、完全に日本語訳されてる訳じゃないんですね。
Language Referenceとか英文のままだし。
■ このスレッドは過去ログ倉庫に格納されています