1 :
仕様書無しさん :
03/05/07 16:01 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | FORTRAN専用スレッドでちゅう。 \  ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ /) /) _ / ⌒ ヽ | / | ●_ ●  ̄▼▼\>> (〇 ~ 〇 |> ヽ ___ | |_/ ̄|_/ |_/ |_/
2 :
仕様書無しさん :03/05/07 16:02
終了でちゅう
オトシオン
4 :
仕様書無しさん :03/05/07 16:22
科学計算以外で生き残っている分野ってあるのか?>fortran
5 :
仕様書無しさん :03/05/07 16:25
6 :
剛万太郎 ◆uuJAVAsys2 :03/05/07 17:03
やっほー ふぉーと らん らん らん また、つまらぬものを書いてしまった
フォーミュラー トランスレーション 懐かしい。これで、よくプログラミングしたものだ。
Ratfor使ってたやついる?
9 :
仕様書無しさん :03/05/13 05:27
おお、Ratfor懐かしいね。昔~し、使ってたような記憶が微かに…(w そもそも何だっけ、Ratforって。なんて聞くくらいだから、殆ど憶えておらず、 役に立つ情報を持っている可能性はほぼゼロに近いですが…(爆
あぼーん
あぼーん
12 :
仕様書無しさん :03/05/13 08:13
ん? fortran95はCより新しい仕様の言語ですが それを知らずにこき下ろしてるの? まぁ,俺はなんでも使うけどね. スパコンは当然Fortranだよ.
オォ!FORTRANスレなんてあったんだ。なつかしぃ。 以前、FORTRAN+GKSで地図情報システムなんていうのが 作られていましたね。 Ratforはソースコードを一生懸命勉強して、Cに置き換えたりして C言語の勉強をした記憶があります。
14 :
仕様書無しさん :03/05/14 11:17
f2jでFortranソースをJavaソースに変換しようと挑戦中。 20年前のFortranソース全部大文字で読みにくい。
15 :
仕様書無しさん :03/05/15 22:12
今学校で習ってるage
小文字でプログラム書くヤツや7文字以上の名前使うヤツは不可。単位やらん。
>>16 > 小文字でプログラム書くヤツや7文字以上の名前使うヤツは不可。単位やらん。
それで初心者を惑わしたつもりか?
それとも、本気か?
ネタでなく本気だったら考え直せ。
全部小文字にしろとはいわん。大文字小文字混在だ。
Smalltalk, Java形式のコ-ディングガイドラインが美しいと思うのだが。
7文字以上で動かないならまだしも7文字O.K.なら許容すべき
Java API ではArrayIndexOutOfBoundsExceptionという長いクラスが存在するのだ。
アフォを言うな。6文字大文字縛りこそFORTRANの真骨頂だ。 CALL EF0337(I,XA) この邪悪さがなきゃFORTRANじゃないやい。ぷんぷん。
あ、ついでに算術型GOTOラヴ。.EQ.もね。
20 :
仕様書無しさん :03/05/16 00:10
CALL SUB1(X, Y, *100, *200, Z) なんてのもおすすめ。
21 :
仕様書無しさん :03/05/16 00:34
コーディングにはマジックを使っていますが。 修正液は使用不可!
22 :
仕様書無しさん :03/05/16 00:35
UFTN知ってる奴いる? $BRANCH $DO
23 :
仕様書無しさん :03/05/16 00:39
地球シミュレーターでもFORTRAN、それがいいんじゃねぇか。 ちなみにこういうの見ると萌えちゃうね! CALL SUB01(A01,A02,A03,B01,B02,B03,C01,C02,C03 &,D01,D02,D03,E01,E02,E03,F01,F02,F03 &,WORK01,WORK02,WORK03,WORK04,WORK05,WORK06 &,WORK07,WORK08,WORK09,WORK10,WORK11,WORK12 &,WORK13,WORK14,WORK15,WORK16,WORK17,WORK18 &,N1,N2,N3,JFLAG1,JFLAG2,JFLAG3)
データは全てCOMMON渡し そして CALL SUB123 これ最強
>>12 ん?
C99 は FORTRAN 95 より新しい仕様の言語ですが
つか、誰かがこき下してるように見えましたか?
被害妄想かな?
うちの学校ではFortran77習ってたんだけど、 いざ2種情報受けようとしたら、その年から90に変わって 友達みんな落ちてたなぁ。 俺はそのずっと前にCで取っていたから問題なかったけど。
equivalenc だったかな?なんて使ったことある人いる? 当時は構造体が無くて(今はどうか知らんが) 配列に数種類の型を混在させたいときに使っていたのだよ! 変数はヒープ領域しか使えず、(動的メモリーが使用不可) その変数はロード時にご丁寧に全て初期化してくれるおかげで、 起動にえらく時間がかかったり、 メモリーが足りなくて、配列を追加できないときは、 使っていなさそうな配列をケツからこっそり使ったりと、 当時はいろいろと苦労しました。 フォートランで画面のメニューとかも作ったりしていました。(一部Cとかアセンブラ使用)
20年前のソースはgoto文ばかりでキモイ。 オブジェクト指向だったら読みやすいのに。
・本物のプログラマは、GOTO を恐れずに使う。 ・本物のプログラマは、5ページにわたる長い DO ループを混乱せずに書ける。 ・本物のプログラマは 算術 IF ステートメントを好む -- こうするとコードがもっと面白くなる。 ・FORTRAN では IF 文や REPEAT...UNTIL、や CASE 文が構造化されていないので、 本物のプログラマはこれらを使わないことを気に病む必要はない。 そのうえ、これらの文は GOTO 指定で必要に応じて代替可能である。
今から水道料金を計算するプログラム書きます 基本料+使用料に応じた単価 使用料に応じた単価ってのがネックだろうな(;´д`)
100 CONTINUE
あぼーん
とりあえずできたと(´д`;;) 基本料\620でつ REAL Q,C WRITE(*,*)'INPUT YOUR WATER QUANTITY)' READ(*,*)Q IF(Q.LT.7) THEN WRITE(*,*) '620YEN' ELSE IF(Q.GE.7.AND.Q.LE.20) THEN C=(620+(143*Q))*1.05 WRITE(*,*) C,'YEN' (中略) ELSE IF(Q.GE.201) THEN C=(620+(315*Q))*1.05 WRITE(*,*) C,'YEN' END IF STOP END
34 :
仕様書無しさん :03/05/22 21:52
助けてください…FORTRANの課題なのですが 「入力した数xまでの累乗(10乗まで)を求めるプログラムを作成せよ」 と言うモノです。たとえば 25を入力すると25の10乗まで 「1^1 1^2 1^3 1^4 1^5 1^6 1^7 1^8 1^9 1^10 2^2 2^2 2^3 … ……中略… 25^1 25^2 25^3 25^4 25^5 25^6 25^7 25^8 25^9 25^10」 が出力されるようなプログラムです。 ソースは 以下を参考に続きを考えて下さい。 dimension nn(10),xx(100),dx(100,10) data nn/1,2,3,4,5,6,7,8,9,10/ parameter(imax=10000) write(*,*) 'please enter a number for x ' read (*,*) x write(*,200) (nn(ii),ii=1,10) ixmax=x do ix=1,ixmax xx(ix)=real(ix) x=xx(ix) xm=x do in=1,10 dx(ix,in)=xn 200 format(f5.1,3x,10f7.4) というのですがFORTRANはあまりやった事がないので困っています。 どうか助けてください。よろしくお願いします。
こんにちは。フォートラン初心者です。リナックス上でフリーソフトを使って フォートランのコンパイルってできるんですか?詳しい方教えて下さい。
>>34 ソースを全然参考にせずに作ってみますた
program hoge
implicit none;integer::i,m,n;read*,m;do i=1,m;print*,(real(i)**n,n=1,10);enddo;
end program hoge
>>35 g77
>>36 ありがとうございます。コンパイルしたら完璧に動きました。
シンプルなソースなので分かりやすいです。このプログラムに
結果をテキストファイルに出力する部分を追加するにはどうすればいいのでしょう?
課題はソースを見ると多分2次元配列を使っているようなので
もしよろしければ2次元配列を使った場合も教えていただけませんか?
お手数をおかけしてすみませんが、よろしくお願いします。
>>37 なんとか3行に収まった(w
program hage
implicit none;integer::i,m,n;real,allocatable::r(:,:);read*,m;allocate(r(1:10,m));forall(n=1:10,i=1:m)r(n,i)=real(i)**n;print*,r
end program hage
$ hage > hage.txt
で結果を hage.txt に出力
それが嫌なら print の代わりに open/write/close を使う。
でもこれ、「FORTRAN77」の課題で提出したら落第だよ(w
>>38 度々ありがとうございます。
なるほど、二次元配列でもきれいにまとまるのですね。
参考にさせてもらいopen/write/close を使ってみましたが
うまくできませんでした。FORTRANって難しいです。
で…ご指摘ずばりです。これ「FORTRAN77」の課題なんです。
「C言語」しか知らないプログラム初心者なので
質問ばかりですみませんが「FORTRAN77」ではなぜダメなのでしょう?
read(*,*) n do i=1,n do j=1,n write (*,*) i**n enddo enddo stop end enddoがダメならcontinueに変更
× write(*,*) i**n ○ write(*,*) i**j だった。
42 :
仕様書無しさん :03/05/23 23:53
integer x, i, j, imax, jmax read*,x parameter ( imax = 10 ) jmax = x integer score( imax , jmax ) * do j = 1, jmax do i = 1, imax score(i,j) = i ** j end do end do * write(*,900) ' :', ( i, i = 1, imax) write(*,* ) '--+---------------------------' do j = 1, jmax write(*,910) j,':', ( score(i,j), i = 1, imax) end do * 900 format( A, 10I3 ) 910 format( I3, A, 10I3 ) * stop end
>>44 情報ありがとうございます。
Fortranは種類によってかなり違うのですね。
>42 はどこが間違っているのでしょう?
使っている文法は「FORTRAN77」で大丈夫そうなのですが…
>>45 型宣言文はすべての実行文の前に置かれなくてはなりません。
また、PROGRAM文内で宣言される配列のサイズは定数でなければなりません。
あぼーん
お代官様、お、おねがいですから、せ、せめて、implicit noneだけは 使わせてください。 ・・・ダメ。
IMPLICIT INTEGER(A-H, O-Z), REAL(I-N) っと。
お代官様、お、おねがいですから、せ、せめて、do whileだけは 使わせてください。 ・・・ダメ。
52 :
仕様書無しさん :03/06/13 20:01
FORTRANはGOTOがいっぱい使えて楽しいな♪
GOTOはやめとけって… 後からそのソース見る奴の苦労も少しは考えてください…
54 :
仕様書無しさん :03/06/28 01:01
GOTOを使わなくても簡単にスパゲッティが出来ちゃうのが FORTRANのすばらしいところ。 IF (HAGE) 10,17,12 こうして今日も過去の遺物のために睡眠時間が削られていく・・・。
教えていただきたいことがあります。フォートランには ハイパボリックアークタンジェントの命令言語はないのでしょうか? atanh と入力すると undefined reference to 'atanh_' とエラー が出てしまいます。 使っているフォートランはg77です
ざっと、言語リファレンス見てみたけど、 atanhなる内部コマンドは、Fortranには存在しないぽ atanh(z) = 1/2*log((1+z)/(1-z))で定義されてるから、 適当に置き換えて計算するぽ
>>56 お返事ありがとうございます。勉強になりました。atanhはないんですねぇ。
置き換えて計算してみます。
あぼーん
今時資格試験にFORTRAN出題するの勘弁してください
>>59 センター試験みたいに行番号付きBASICで出題されるよりマシだろ。
ところで、今時FORTRANが出題される資格試験って何?
情報処理技術者試験からは外されたよね。
>>60 電気主任技術者試験。
今年は免除みたいでホッ。
今更昔の本引っ張り出してくるのもマンドクセ('A‘)
あぼーん
∧_∧ ∧_∧ ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。 =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕 = ◎――――――◎ 山崎渉&ぼるじょあ
あぼーん
65 :
仕様書無しさん :03/09/02 02:51
このままdat落ちさせるのは惜しい。 ネタキボンヌ
66 :
仕様書無しさん :03/09/03 21:28
Open Watcom Fortranって、character型をread文で、読み込めなくない?
>66 そういうまともな質問はム板のFORTRANスレで聞いた方がいいと思うぞ。 OpenWatcomはFORTRANの方は使ってなかったが なんか書式指定がないと実行時エラーになるな。 ていうかこの処理系、TRIM関数無いの?
68 :
仕様書無しさん :03/09/03 23:49
昔、情報処理技術者試験(だけ)のために勉強したな。 使ったこと無い
69 :
supermathmania ◆ViEu89Okng :03/09/08 12:34
WRITE(*,*)が出来てから、行番号の使いどころって有るのだろうか?
7カラム目の美学は健在でつか?
71 :
supermathmania ◆ViEu89Okng :03/09/08 12:48
固定形式だと、継続行が19までしか続けられない。(それだけあれば十分か?) Re:>70 自由形式はF90からだと聞いている。
continue、go to、common、equivalenceの美学
73 :
仕様書無しさん :03/09/13 02:22
>>69 あるよ。read文でのEOFの検出時処理とか。
74 :
supermathmania ◆ViEu89Okng :03/09/17 13:47
continue,break,go toは使ったことあるが、 common,equivalenceなんて知らない。 私は新しい世代だったのか!
75 :
仕様書無しさん :03/09/17 14:14
entry は健在ですか?。 算術if文は健在ですか?。 健在なら 「continue、go to、common、equivalence」の仲間に入れて欲しい。
76 :
supermathmania ◆ViEu89Okng :03/09/18 15:42
entryなんて知らない。算術ifなんて使ったことない。
continueを打つたびに、くまのプーさんのものまねで 「なぁにもしないをしてるんだよ」ってつぶやいてます。
空白を無視してくれるFORTRANは とっても2ch向きな言語です。 PRO GRAM HAGE D O10I=1,101 WRI T E(*,*)'HAGE!' 10 CONT INU E S TO P E N D
大文字…好き
-i_dynamic
-Vaxlib
-cm -w
83 :
仕様書無しさん :03/11/19 22:46
WRITE(*,*) '隣の空き地に囲いができたったね。' WRITE(*,*) '' WRITE(*,*) '( ・∀・)つ〃∩ ヘェーヘェーヘェー'
ENTRY あったな。 Cより強力じゃん。
85 :
仕様書無しさん :04/01/27 23:22
CONTINUE
END
次世代のFORTRANはまだでつか?
FORTRAN XPとか?
なんでびじゅある何たらどっとネットが必要なのさintel visual fortran
Lahey Fujitsu Fortran では正常に動くのに、 Compaq Visual Fortran じゃー実行エラーになるんだろう? アドバイスお願いします。 ちなみに、こんな実行エラーです。 forrtl: severe (157): Program Exception - access violation Image PC Routine Line Source sp.exe 0040958A Unknown Unknown Unknown sp.exe 00402226 Unknown Unknown Unknown sp.exe 0040167C Unknown Unknown Unknown sp.exe 0044D9E9 Unknown Unknown Unknown sp.exe 0043ED84 Unknown Unknown Unknown kernel32.dll 77E414C7 Unknown Unknown Unknown
92 :
仕様書無しさん :04/02/29 05:55
>>91 > アドバイスお願いします。
> ちなみに、こんな実行エラーです。
( ´д)ヒソ(´д`)ヒソ(д` )ヒソ
アンノウン!アンノウン!アンノウン!アンノウン!アンノウン!アンノウン!
Intel Fortran ってどうよ?
95 :
仕様書無しさん :04/03/22 16:24
今時新規のプロジェクトでFORTRAN使うようなものってあります?
FORTRANで新規の社内業務用プログラム作ってるよ。 専業PGじゃなくて機械屋の片手間だけど。 今時、固定フォーマットのFORTRAN77だよ。(さすがにDO~END DOは使うけど) はぁ、せめてFortran95で書きたいなぁ・・・
97 :
仕様書無しさん :04/03/25 21:28
懐かしいなFORTRAN。 だがここでみんなが言ってるFORTRANと俺の知ってるFORTRANはどうやら別物のようだ。 もう忘れちゃったけど確か「100 IF UNKO=KUSAI THEN GOTO 300」みたいなのを 延々と書いていくような感じだったな。 高校の授業でやったんだけど、よくもまぁあんなものに1年も・・・何考えてんだか。 あれで「情報処理」なんだから笑っちまう。 俺には厨房の時にハマったファミリーベーシックの方が難かった。
だから implicit none しましょうよ...
64h
>>98 は
FORTRAN と BASIC を混同してる香具師。
100 IF( UNKO .EQ. KUSAI ) GOTO 300 だったけ?
だれか、漏れの宿題手伝ってくれる方いませぬか・・・ FORTRAN77です。
104 :
仕様書無しさん。 :04/05/27 11:31
きたいageもの
105 :
仕様書無しさん :04/05/27 21:57
fortran77ソースからフローチャート描いてくれるツールない?
106 :
仕様書無しさん :04/05/27 22:02
fortran77ソースからフローチャート描いてくれるツールない?
(´Д⊂(´Д⊂(´Д⊂(´Д⊂(´Д⊂(´Д⊂(´Д⊂(´Д⊂(´Д⊂ (´Д⊂ x^2=y^2+z^2 (´Д⊂ (´Д⊂ を満足する解を (´Д⊂ (´Д⊂ 全部出す。ソースかいてくだちゃい (´Д⊂ (´Д⊂ 1<x,y,z<50のあたいでつ。 (´Д⊂ (´Д⊂ お優しい方おながいします。 (´Д⊂ (´Д⊂(´Д⊂(´Д⊂(´Д⊂(´Д⊂(´Д⊂(´Д⊂(´Д⊂(´Д⊂
for ( int i=1; i<50; ++i ) { for ( int j=1; j<50; ++j ) { for ( int k=1; k<50; ++k ) { if ( Math.pow(i,2)== ( Math.pow(j,2) + Math.pow(k,2) ) ) { System.out.println( "x=[" + i + "] / y=[" + j + "] / z=[" + k + "]" ); } } } } // 適当過ぎか? // しかも動かしてねぇ。 // さらにはfortranじゃねーし。(w
// 動いたんで、完全版を貼っておくぜ public class Keisankamo { public static void main(String[] args) { Keisankamo k = new Keisankamo(); k.doIt(); } public void doIt() { for (int i = 1; i < 50; ++i) { for (int j = 1; j < 50; ++j) { for (int k = 1; k < 50; ++k) { if (Math.pow(i, 2) == (Math.pow(j, 2) + Math.pow(k, 2))) { System.out.println("x=[" + i + "] / y=[" + j + "] / z=[" + k + "]"); } } } } } }
>>108 >>109 ありがとうございます。(´Д⊂
プログラムはさわり程度しかやったことないので
わかんないんですが
intとかがでてるんですが
これってC言語ですか?
良かったじゃないか
>>107 。親切な人がいて。
でもJavaをFORTRANに変換するのと、
この問題を素でFORTRANで書くのとどちらが難しいか
が、オレには判断つかないが(W
ワロタ
* 単なる暇潰し INTEGER I INTEGER J INTEGER K DO 10 I=1,49 DO 10 J=1,49 DO 10 K=1,49 IF( I*I .EQ. J*J+K*K ) WRITE(*.*) I, J, K 10 CONTINUE STOP END
実はこれって授業のレポートというか
最後に3問107をあわせた問題を
やって結果をプリントアウトして
先生にだすんです。
4年ていなので、必修はとっておかないとあとがないんでつ・・・
もうすでに一回やっておりますんで・・・
>>113 さん
このソースもうってみます。
皆さんどうもありがとうございます。
わからなかったら、また質問してもいいですか?
(´Д⊂)ミンナヤサシイ。
(´Д⊂)オイラハウレチイデツ。
INTEGER K=0 DO 10 I=0,12 K=IFACT(12)/IFACT(12-I)*IFACT(I) PRINT *,'K=',K 10CONTINUE END FUNCTION IFACT(N) IFACT=1 DO 20 I=1,N 20IFACT=IFACT*I RETURN END このソースなんですが 12C12~12C1までをあらわせということなんですが なんか出力したら変な数字が出たのですが どこを直せばよいのかわからないので お力添えしていただけないでしょうか? お願いします。(´Д⊂)(´Д⊂)
>>115 処理系が手元に無いので正解かどうかはわかんないけど
12の階乗は479001600なのでオーバーフローを起こしているのかもね
「INTEGER*8」って書ける?整数の宣言を全部直してやってみたら?
#正解だったら随分厳しい先生だと思う・・・
>>115 「12C12~12C1」というのは”組合せ”のことかな?
だとしたら、落ち着いて組合せの定義とプログラムをよく見比べれば
すぐに解決すると思うぞ。
プログラミング初心者なら式の計算順序も復習しておこう。
>>116 さん
>>117 さん
どうもありがとうございます。
12C12~12C1は組み合わせです。
ですので
出力結果は普通
12
66
220
495
792
924
792
495
220
66
12
になるのに対して
この
>>115 のソースからは上から下に
大きくなる結果で中には負の値までありました。
>K=IFACT(12)/IFACT(12-I)*IFACT(I)
私的にはこの部分がどこかおかしいのかと思っているのですが
実際のところはわからないので
定義の見直し、また整数の宣言の見直しのほうをやってみたいと思います。
ただ、わたしも処理系がないので、明日にでも確認してみたいと思います。
長文申し訳ないですが、ありがとうございます。
また結果のほうもご報告させていただきたいと思っております。
明日確認ということだったんですが
月曜日には提出ということもありましたので
ノートPCのほうにRed Hat Linuxをインストールして
確認しましたところ
K=IFACT(12)/IFACT(12-I)*IFACT(I)←の部分を
K=(IFACT(12)/IFACT(12-I))/IFACT(I)
確かこんな感じに直したところ出力が正常になりました。
>>116 さん
>>117 さん
ご指摘のほどありがとうございました。
あと
>>116 さん
#正解だったら随分厳しい先生だと思う・・・
ということなんですが、どういう意味のことなんでしょうか?
一応FORTRANの先生は結構頭が良くプログラムに関してもたけている?
とはいわれているらしいんですが・・・(真意のほどは不明です。)
生徒「え~そんなの無理ですよ~!!」というと
先生「じゃ~また来年!!」といいます。
こんな先生です。何言っても上記のような言葉をだしますので
生徒はマジ切れですw
>>119 それが普通だろ。
何も理解してないのにお情けだけで単位もらって卒業しても
後で苦労するのは自分自身だし、そんな奴らの相手をさせら
れる人にも迷惑がかかる。
# とウチの新入りの面倒見ててつくづく思いますた
121 :
仕様書無しさん :04/06/09 13:40
a
122 :
仕様書無しさん :04/06/09 21:51
☆ チン マチクタビレタ~ マチクタビレタ~ ☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヽ ___\(\・∀・) < Fortran2003完全準拠の処理系マダ~? \_/⊂ ⊂_ ) \__________ / ̄ ̄ ̄ ̄ ̄ ̄ /| | ̄ ̄ ̄ ̄ ̄ ̄ ̄| | | .愛媛みかん. |/
☆ チン マチクタビレタ~ マチクタビレタ~ ☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヽ ___\(\・∀・) < なんかいいねたないの~? \_/⊂ ⊂_ ) \__________ / ̄ ̄ ̄ ̄ ̄ ̄ /| | ̄ ̄ ̄ ̄ ̄ ̄ ̄| | | .愛媛みかん. |/
124 :
仕様書無しさん :04/07/03 15:56
文関数を使ってプログラムを書いたら以下のようなコンパイルエラーが出てしまいました。 --------------------------------------------------------------------- f(x)=1/(x+3) ^ "Kadai05_1_integral.f90", 行 = 7, 桁 = 3: エラー: IMPLICIT NONE が局所スコープに指定されているため、文関数 "F" には明示的な型を指定しなければなりません。 f90comp: 34 ソース行 f90comp: 1 個のエラー、0 個の警告、0 個の他のメッセージ、0 個の ANSI --------------------------------------------------------------------- implicit noneを使ったままで文関数を定義したいのですがどうしたらいいのでしょうか?
>>124 文関数はFortran95の廃止予定事項です。
内部関数を使用することをお勧めします。
答を自分で書いてるじゃん > 文関数 "F" には明示的な型を指定しなければなりません。
127 :
仕様書無しさん :04/07/04 16:18
>>126 それがよく分かんないんですけど。具体的にどうしたら良いのか教えてください。
129 :
仕様書無しさん :04/07/04 17:58
>>128 廃止"予定"事項なのでFortran95ではまだ使えます。
Fortran90で廃止予定事項として上がっていた物のうち
実数型制御変数を使ったDOループやPAUSE文などは
Fortran95で廃止されています。
ただ、規格上は廃止されていても実際のコンパイラでは
これらの機能を使える物がほとんどのようですが。
(オプション等でエラーや警告が出るようにはなります)
131 :
仕様書無しさん :04/07/31 23:26
至急、質問があります。 FFT(高速フーリエ変換)のプログラムを作ってます。 今まで処理データ数が16000個くらいで、順調に計算できていました。 しかし、データ数を70000個くらいに増やすと、出力ファイルに 『*』印がたくさん出てきます。 ちなみに言語はフォートランで出力はCSV形式で出力してます。 これはフォーマットの設定が悪いんでしょうか?
>>131 マルチポストするような奴には教えてやらん。
133 :
仕様書無しさん :04/08/04 22:55
申し訳ありませんが質問なのですが。 character*10 cc real array(10) array(5)=5.0 write(cc,'(A)') 'array' として、character の cc を使ってarrayの中身を表示することは可能でしょうか? イメージ的には write(*,*) cc(5) のような感じです。(上のままではコンパイル通りませんが)
>>133 最終的には,文字列が加工できるから使う変数を動的に変えられるだろうな,って話?
135 :
仕様書無しさん :04/08/04 23:40
>134 その通りです。 でも、やり方がわかりません。何か別にうまい方法があるのかもしれませんが。
>>135 こういう方法を使わないアルゴリズムを作れませんか?
高級言語なら,文字列からシンボルを引くことができます.
C 言語でも似たようなことができ,関数へのポインタと文字列をメンバにした
構造体を用意します.
fortran はよく知りませんが,関数へのポインタを変数に入れられましたよね?
文字列の配列を作って,さらに関数へのポインタを入れる配列をインデックスを揃えて
作るとかは? ...できるのかな ;-D
>>136 すでに存在する巨大なfortranプログラム+巨大なinclude fileをベースに
一部変更する必要があり、その中で上のような事ができれば便利だと
感じたので質問してみました。
何か別の方法を考えてみます。
>>136-137 EXTERNALを使えば関数へのポインタを引数に取れるけど
変数に代入したり、配列にするのは無理。
intrinsic cos
external bar2, bar3
write(*,*) foo(cos, 0.)
a = 2.
write(*,*) foo(bar2, a)
write(*,*) foo(bar3, a)
end
real function foo(f,x)
external f
foo = f(x)
end
real function bar2(x)
bar2 = x**2
end
real function bar3(x)
bar3 = x**3
end
あとはこのページが参考になるかな?
ttp://user.ecc.u-tokyo.ac.jp/~tt37103/tips/f90/function_pointer.html
140 :
仕様書無しさん :04/08/14 00:36
DIMENSION A(100)というのの100のところは最大で、どのくらいまでできるんでしょうか? DIMENSION A(131072)までは、プログラムが実行されるのに、 DIMENSION A(262144)にすると、 「Stack Overflow Re-ling program with bigger stack value. stack:reserve,commit.Will attempt to trace back」 「Stack Overflow: at address=541718,esp=547f6 00541718 routine at address 541718[+0000]」 って出てプログラムが実行できないんです。
>>140 処理系に依る。
FTN95だと
DIMENSION A(300000)
とかでもできた。
142 :
仕様書無しさん :04/08/21 06:51
143 :
仕様書無しさん :04/08/22 17:20
>>140 コンパイル・オプションで、スタックのサイズを変えられないの?
あとは、動的にメモリを取得するとか。
144 :
仕様書無しさん :04/08/22 23:14
>>140 コンパイル・オプションで、スタックのサイズを変えられないの?
あとは、動的にメモリを取得するとか。
>>139 Fortran 2003ならprocedure pointer (関数・サブルーチンへのポインタ)が使えるんだけどね。
いかんせん、Fortran 2003準拠の処理系がまだないのが…
>>145 お、いつのまにかFortran2003なんて出てたんですね。っていうか2000は?
148 :
仕様書無しさん :04/10/04 20:47:49
社会保険庁のシステムがFORTRANで組まれているという話をよく聞きますが、なんででしょう? この手の業種はかつてはCOBOLが一般的だったような気がするのですが。。。
149 :
仕様書無しさん :04/10/04 22:30:31
おいおい、ところどころ宿題スレになってんな。 もっとマ板らしいネタスレにしようぜ。 俺はFORTRAN使ったことない
おれはある
俺は今でも使ってる
俺はFORTRANで書かれている
154 :
仕様書無しさん :04/10/13 02:36:04
FORTRAN77(の方言)で、メモリを動的確保するサブルーチン/関数 はありますか。
Fortranでいいフリーのデバッガってないですかね? gdbも一応Fortranに対応しているようですが,世の中の情報が少なくて困ります. あと,静的なツールもフリーでご存知の方いらっしゃったらお願いします.当方はctagsを使っているのですが...
open watcom
157 :
仕様書無しさん :04/11/02 00:33:15
わからない問題がいくつかあるんですが暇つぶしに解いてくれる猛者はいませんか??
158 :
仕様書無しさん :04/11/02 01:35:39
いないか(´Д⊂グスン
159 :
仕様書無しさん :04/11/02 01:42:26
sdf
160 :
仕様書無しさん :04/11/02 01:44:21
助けてくれるんですか??
161 :
仕様書無しさん :04/11/18 11:11:48
分からない問題があるのですが助けてくれる方いませんか??
以下のようなプログラでは、配列Aの部分配列(スライス)をポインタPと結合しています。 このとき、ポインタの下限値 lbound(P)が1、上限値 ubound(P) が 4 になってしまうんだけど、なんとかポインタの下限値を結合先と一致させる方法はありませんか?ポインタの下限値と上限値をそれぞれ 0 と 3にしたいのです。 program main integer,dimension(0:3,0:3,0:3,0:10),target :: A integer,dimension(:,:,:),pointer :: P p => A(:,:,:,2) print *, lbound(P), ubound(P) print *, lbound(A), ubound(A) end program main ちなみに、以下のように、配列A全体を結合させると、結合先と添字の下限値が一致しますが、目的はこのようなコードではありません。 program main integer,dimension(0:3,0:3,0:3),target :: A integer,dimension(:,:,:),pointer :: P p => A print *, lbound(P), ubound(P) print *, lbound(A), ubound(A) end program main
164 :
仕様書無しさん :04/11/23 19:11:21
フリーのfortranコンパイラを探しています。 Windows用の。
165 :
仕様書無しさん :04/11/23 19:12:10
フリーのfortranコンパイラを探しています。 Windows用の。
フリーのfortranコンパイラを探しています。 Windows用の。 全裸で
ここはプログラ「マ」板ですから,
>>164 は釣りだと思います.
いや,「探しているプログラマ」というのを演出しているのかも.
フリーのfortranプログラマを探しています。 Windows用の。
169 :
164 :04/11/25 20:47:12
フリーの100万円探しています。 Windows用の
170 :
仕様書無しさん :04/11/26 00:05:48
まだVisualFortranってあるの?
Power Stationって何
>>171 1. かつてMicrosoftで出してたWindows 上のFORTRAN
Microsoft Fortran
↓
Microsoft Fortran Powerstation
(↓ 実は別物)
DEC Visual Fortran
↓
Compaq Visual Fortran
↓
(HPに会社ごと身売り HPブランドではVFは放置)
(↓ 実は別物?)
Intel Visual Fortran
2. 昔のIBMのEWS(RS/6000)も、POWERSTATION という名前だったような気がする。
174 :
仕様書無しさん :04/12/11 07:53:55
>>172 CVFとIVFの関係は、フロントエンド部がCVFを元にしており、
バックエンドがIntel独自という関係ではないかな?
つまり半分別物。
175 :
仕様書無しさん :04/12/18 09:12:10
>>163 一般的には、部分配列を取ると、コンパイラ側でいったん非明示的ワーク配列に展開してそれを改めて引き渡したりしている。
今の状況では、本来メモリー的にはすでに連続しているので必要ないのだが、多分ワークに展開されていると思う。
非明示的ワーク配列の添え字が1から始まるという事情で、ポインター側の添え字も1から始まることになってしまうのだろう。
1個目と2個目のプログラムの挙動の違いはそういうことだと推測される。
したがって、手動で明示的に3次元の0から始まるワーク配列に展開して、それにポインタを割り付けるしかないと言うことになる。
多分オーバーヘッド的にはあまり変わらないと思う。
ただし、以上はいくつか他の場合の挙動に基づく推測なので、正しくないかも。
176 :
175 :04/12/18 09:14:47
>>175 の補足
program main
integer,target :: A(0:3,0:3,0:3)
integer,pointer :: P(:,:,:), q(:,:,:)
p => A
q => A(:,:,:)
print *
print *, lbound(P), ubound(P)
print *
print *, lbound(q), ubound(q)
print *
print *, lbound(A), ubound(A)
end program main
出力結果 by DVF
0 0 0 3 3 3
1 1 1 4 4 4
0 0 0 3 3 3
♪おおブレネリ あなたのおうちはどこ わたしのおうちは スイッツァランドよ きれいな湖水の ほとりなのよ ヤッ~ホ~
178 :
仕様書無しさん :
04/12/25 16:45:14 FORTRAN IV YOU !