FORTRAN専用スレッド

このエントリーをはてなブックマークに追加
1仕様書無しさん

/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| FORTRAN専用スレッドでちゅう。

   ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    /)  /)       _
   /  ⌒  ヽ       | /
  | ●_ ●   ̄▼▼\>>
  (〇 〜  〇      |>
    ヽ    ___  |
    |_/ ̄|_/  |_/ |_/ 
2仕様書無しさん:03/05/07 16:02
終了でちゅう
3仕様書無しさん:03/05/07 16:09
オトシオン
4仕様書無しさん:03/05/07 16:22
科学計算以外で生き残っている分野ってあるのか?>fortran
5仕様書無しさん:03/05/07 16:25
>>4
科学計算ができれば十分です。
6剛万太郎 ◆uuJAVAsys2 :03/05/07 17:03
やっほー ふぉーと らん らん らん




また、つまらぬものを書いてしまった
7仕様書無しさん:03/05/07 18:41
フォーミュラー
トランスレーション

懐かしい。これで、よくプログラミングしたものだ。
8仕様書無しさん:03/05/07 20:52
Ratfor使ってたやついる?
9仕様書無しさん:03/05/13 05:27
おお、Ratfor懐かしいね。昔〜し、使ってたような記憶が微かに…(w
そもそも何だっけ、Ratforって。なんて聞くくらいだから、殆ど憶えておらず、
役に立つ情報を持っている可能性はほぼゼロに近いですが…(爆
10あぼーん:あぼーん
あぼーん
11あぼーん:あぼーん
あぼーん
12仕様書無しさん:03/05/13 08:13
ん?
fortran95はCより新しい仕様の言語ですが
それを知らずにこき下ろしてるの?

まぁ,俺はなんでも使うけどね.
スパコンは当然Fortranだよ.
13(^v^)-666:03/05/13 09:16
オォ!FORTRANスレなんてあったんだ。なつかしぃ。
以前、FORTRAN+GKSで地図情報システムなんていうのが
作られていましたね。

Ratforはソースコードを一生懸命勉強して、Cに置き換えたりして
C言語の勉強をした記憶があります。
14仕様書無しさん:03/05/14 11:17
f2jでFortranソースをJavaソースに変換しようと挑戦中。

20年前のFortranソース全部大文字で読みにくい。
15仕様書無しさん:03/05/15 22:12
今学校で習ってるage
16仕様書無しさん:03/05/15 22:30
小文字でプログラム書くヤツや7文字以上の名前使うヤツは不可。単位やらん。
17仕様書無しさん:03/05/15 22:36
>>16
> 小文字でプログラム書くヤツや7文字以上の名前使うヤツは不可。単位やらん。
それで初心者を惑わしたつもりか?
それとも、本気か?

ネタでなく本気だったら考え直せ。
全部小文字にしろとはいわん。大文字小文字混在だ。
Smalltalk, Java形式のコ−ディングガイドラインが美しいと思うのだが。
7文字以上で動かないならまだしも7文字O.K.なら許容すべき
Java API ではArrayIndexOutOfBoundsExceptionという長いクラスが存在するのだ。
18仕様書無しさん:03/05/15 23:11
アフォを言うな。6文字大文字縛りこそFORTRANの真骨頂だ。
    CALL EF0337(I,XA)
この邪悪さがなきゃFORTRANじゃないやい。ぷんぷん。
19仕様書無しさん:03/05/15 23:13
あ、ついでに算術型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)
24仕様書無しさん:03/05/16 01:05
データは全てCOMMON渡し
そして
      CALL SUB123
これ最強
25仕様書無しさん:03/05/16 02:59
>>12
ん?
C99 は FORTRAN 95 より新しい仕様の言語ですが
つか、誰かがこき下してるように見えましたか?

被害妄想かな?
26仕様書無しさん:03/05/16 04:22
うちの学校ではFortran77習ってたんだけど、
いざ2種情報受けようとしたら、その年から90に変わって
友達みんな落ちてたなぁ。

俺はそのずっと前にCで取っていたから問題なかったけど。
27仕様書無しさん:03/05/17 09:34
equivalenc だったかな?なんて使ったことある人いる?

当時は構造体が無くて(今はどうか知らんが)
配列に数種類の型を混在させたいときに使っていたのだよ!

変数はヒープ領域しか使えず、(動的メモリーが使用不可)
その変数はロード時にご丁寧に全て初期化してくれるおかげで、
起動にえらく時間がかかったり、
メモリーが足りなくて、配列を追加できないときは、
使っていなさそうな配列をケツからこっそり使ったりと、
当時はいろいろと苦労しました。

フォートランで画面のメニューとかも作ったりしていました。(一部Cとかアセンブラ使用)
2814:03/05/17 12:43
20年前のソースはgoto文ばかりでキモイ。
オブジェクト指向だったら読みやすいのに。
29The Real Programmer Stories:03/05/17 19:09
・本物のプログラマは、GOTO を恐れずに使う。
・本物のプログラマは、5ページにわたる長い DO ループを混乱せずに書ける。
・本物のプログラマは 算術 IF ステートメントを好む -- こうするとコードがもっと面白くなる。
・FORTRAN では IF 文や REPEAT...UNTIL、や CASE 文が構造化されていないので、
 本物のプログラマはこれらを使わないことを気に病む必要はない。
 そのうえ、これらの文は GOTO 指定で必要に応じて代替可能である。
30学生:03/05/19 21:52
今から水道料金を計算するプログラム書きます
基本料+使用料に応じた単価

使用料に応じた単価ってのがネックだろうな(;´д`)
31仕様書無しさん:03/05/20 00:30
 100 CONTINUE
32あぼーん:あぼーん
あぼーん
33仕様書無しさん:03/05/22 21:14
とりあえずできたと(´д`;;)
基本料\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はあまりやった事がないので困っています。
どうか助けてください。よろしくお願いします。
35kana:03/05/22 22:50
こんにちは。フォートラン初心者です。リナックス上でフリーソフトを使って
フォートランのコンパイルってできるんですか?詳しい方教えて下さい。
36仕様書無しさん:03/05/22 23:09
>>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
3734:03/05/23 00:23
>>36
ありがとうございます。コンパイルしたら完璧に動きました。
シンプルなソースなので分かりやすいです。このプログラムに
結果をテキストファイルに出力する部分を追加するにはどうすればいいのでしょう?

課題はソースを見ると多分2次元配列を使っているようなので
もしよろしければ2次元配列を使った場合も教えていただけませんか?
お手数をおかけしてすみませんが、よろしくお願いします。
38仕様書無しさん:03/05/23 01:39
>>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
3934:03/05/23 11:22
>>38
度々ありがとうございます。
なるほど、二次元配列でもきれいにまとまるのですね。
参考にさせてもらいopen/write/close を使ってみましたが
うまくできませんでした。FORTRANって難しいです。
で…ご指摘ずばりです。これ「FORTRAN77」の課題なんです。
「C言語」しか知らないプログラム初心者なので
質問ばかりですみませんが「FORTRAN77」ではなぜダメなのでしょう?
40仕様書無しさん:03/05/23 12:56
read(*,*) n
do i=1,n
 do j=1,n
  write (*,*) i**n
 enddo
enddo
stop
end

enddoがダメならcontinueに変更
4140:03/05/23 12:59
× 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
43仕様書無しさん:03/05/23 23:54
>>42
コンパイルエラーが出ます。
44仕様書無しさん:03/05/24 16:20
>>39
> 「C言語」しか知らないプログラム初心者なので
学校の課題で出る程度のプログラムなら
基本的な文法を覚えれば、Cと大差なく書ける。
ttp://yakko.pharm.kumamoto-u.ac.jp/KH/fortran_guide.html

> 「FORTRAN77」ではなぜダメなのでしょう?
>>36, >>38 はFortran90/95 の文法で書かれているから。
Fortran90から追加された機能については↓
ttp://www.ip.media.kyoto-u.ac.jp/edu/lec/htomita/f90.html
4534:03/05/24 21:30
>>44
情報ありがとうございます。
Fortranは種類によってかなり違うのですね。

>42 はどこが間違っているのでしょう?
使っている文法は「FORTRAN77」で大丈夫そうなのですが…
46仕様書無しさん:03/05/25 22:29
>>45
型宣言文はすべての実行文の前に置かれなくてはなりません。
また、PROGRAM文内で宣言される配列のサイズは定数でなければなりません。
47あぼーん:あぼーん
あぼーん
48仕様書無しさん:03/05/31 17:52
お代官様、お、おねがいですから、せ、せめて、implicit noneだけは
使わせてください。
・・・ダメ。
49仕様書無しさん:03/05/31 18:17
IMPLICIT INTEGER(A-H, O-Z), REAL(I-N)
っと。
50仕様書無しさん:03/06/01 09:58
こちらもどうぞ


プログラム板

Fortran
http://pc2.2ch.net/test/read.cgi/tech/1003214738/l50
51仕様書無しさん:03/06/08 16:45
お代官様、お、おねがいですから、せ、せめて、do whileだけは
使わせてください。
・・・ダメ。
52仕様書無しさん:03/06/13 20:01
FORTRANはGOTOがいっぱい使えて楽しいな♪
53仕様書無しさん:03/06/15 09:07
GOTOはやめとけって…

後からそのソース見る奴の苦労も少しは考えてください…
54仕様書無しさん:03/06/28 01:01
GOTOを使わなくても簡単にスパゲッティが出来ちゃうのが
FORTRANのすばらしいところ。

IF (HAGE) 10,17,12

こうして今日も過去の遺物のために睡眠時間が削られていく・・・。
55えうれか:03/07/07 01:07
教えていただきたいことがあります。フォートランには 
ハイパボリックアークタンジェントの命令言語はないのでしょうか?
atanh と入力すると undefined reference to 'atanh_' とエラー
が出てしまいます。
使っているフォートランはg77です
56仕様書無しさん:03/07/07 04:10
ざっと、言語リファレンス見てみたけど、
atanhなる内部コマンドは、Fortranには存在しないぽ

atanh(z) = 1/2*log((1+z)/(1-z))で定義されてるから、
適当に置き換えて計算するぽ
57えうれか:03/07/09 05:02
>>56
お返事ありがとうございます。勉強になりました。atanhはないんですねぇ。
置き換えて計算してみます。
58あぼーん:あぼーん
あぼーん
59仕様書無しさん:03/07/18 09:41
今時資格試験にFORTRAN出題するの勘弁してください
60仕様書無しさん:03/07/19 02:48
>>59
センター試験みたいに行番号付きBASICで出題されるよりマシだろ。

ところで、今時FORTRANが出題される資格試験って何?
情報処理技術者試験からは外されたよね。
61仕様書無しさん:03/07/19 20:14
>>60
電気主任技術者試験。
今年は免除みたいでホッ。
今更昔の本引っ張り出してくるのもマンドクセ('A‘)
62あぼーん:あぼーん
あぼーん
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
64あぼーん:あぼーん
あぼーん
65仕様書無しさん:03/09/02 02:51
このままdat落ちさせるのは惜しい。
ネタキボンヌ
66仕様書無しさん:03/09/03 21:28
Open Watcom Fortranって、character型をread文で、読み込めなくない?
67仕様書無しさん:03/09/03 23:11
>66
そういうまともな質問はム板のFORTRANスレで聞いた方がいいと思うぞ。
OpenWatcomはFORTRANの方は使ってなかったが
なんか書式指定がないと実行時エラーになるな。
ていうかこの処理系、TRIM関数無いの?
68仕様書無しさん :03/09/03 23:49
昔、情報処理技術者試験(だけ)のために勉強したな。
使ったこと無い
69supermathmania ◆ViEu89Okng :03/09/08 12:34
WRITE(*,*)が出来てから、行番号の使いどころって有るのだろうか?
70仕様書無しさん:03/09/08 12:39
7カラム目の美学は健在でつか?
71supermathmania ◆ViEu89Okng :03/09/08 12:48
固定形式だと、継続行が19までしか続けられない。(それだけあれば十分か?)

Re:>70 自由形式はF90からだと聞いている。
72仕様書無しさん:03/09/12 23:52
continue、go to、common、equivalenceの美学
73仕様書無しさん:03/09/13 02:22
>>69
あるよ。read文でのEOFの検出時処理とか。
74supermathmania ◆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」の仲間に入れて欲しい。
76supermathmania ◆ViEu89Okng :03/09/18 15:42
entryなんて知らない。算術ifなんて使ったことない。
77仕様書無しさん:03/09/22 01:30
continueを打つたびに、くまのプーさんのものまねで
「なぁにもしないをしてるんだよ」ってつぶやいてます。
78仕様書無しさん:03/09/22 01:47
空白を無視してくれるFORTRANは
とっても2ch向きな言語です。

   PRO GRAM HAGE
   D O10I=1,101
   WRI T E(*,*)'HAGE!'
 10 CONT INU E
   S TO P
   E N D
79仕様書無しさん:03/10/01 20:59
大文字…好き
80仕様書無しさん:03/10/13 22:10
-i_dynamic
81仕様書無しさん:03/10/13 22:11
-Vaxlib
82仕様書無しさん:03/11/01 23:55
-cm -w
83仕様書無しさん:03/11/19 22:46
WRITE(*,*) '隣の空き地に囲いができたったね。'
WRITE(*,*) ''
WRITE(*,*) '( ・∀・)つ〃∩ ヘェーヘェーヘェー'

84仕様書無しさん:03/11/24 21:59
ENTRY あったな。
Cより強力じゃん。
85仕様書無しさん:04/01/27 23:22
CONTINUE
86仕様書無しさん:04/01/29 20:37
END
87仕様書無しさん:04/02/04 10:41
次世代のFORTRANはまだでつか?
88仕様書無しさん:04/02/04 19:26
FORTRAN XPとか?
89仕様書無しさん:04/02/04 20:52
これかな?
Fortran 2003 Final Committee Draft
ttp://www.swcp.com/~walt/fcd_announce.html

主な追加項目はオブジェクト指向プログラミングとCとの互換性等々・・・
後は自分で読んでくれ。
90仕様書無しさん:04/02/21 21:38
なんでびじゅある何たらどっとネットが必要なのさintel visual fortran
91仕様書無しさん:04/02/29 05:11
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
> アドバイスお願いします。
> ちなみに、こんな実行エラーです。

( ´д)ヒソ(´д`)ヒソ(д` )ヒソ
93仕様書無しさん:04/02/29 21:00
アンノウン!アンノウン!アンノウン!アンノウン!アンノウン!アンノウン!
94仕様書無しさん:04/03/14 12:39
Intel Fortran ってどうよ?
95仕様書無しさん:04/03/22 16:24
今時新規のプロジェクトでFORTRAN使うようなものってあります?
96仕様書無しさん:04/03/23 22:51
FORTRANで新規の社内業務用プログラム作ってるよ。
専業PGじゃなくて機械屋の片手間だけど。

今時、固定フォーマットのFORTRAN77だよ。(さすがにDO〜END DOは使うけど)
はぁ、せめてFortran95で書きたいなぁ・・・
97仕様書無しさん:04/03/25 21:28
ヒューリンクス、AMD64対応のFortranコンパイラを発売
ttp://pcweb.mycom.co.jp/news/2004/03/24/018.html
98仕様書無しさん:04/03/27 12:02
懐かしいなFORTRAN。
だがここでみんなが言ってるFORTRANと俺の知ってるFORTRANはどうやら別物のようだ。
もう忘れちゃったけど確か「100 IF UNKO=KUSAI THEN GOTO 300」みたいなのを
延々と書いていくような感じだったな。

高校の授業でやったんだけど、よくもまぁあんなものに1年も・・・何考えてんだか。
あれで「情報処理」なんだから笑っちまう。
俺には厨房の時にハマったファミリーベーシックの方が難かった。
99仕様書無しさん:04/03/27 22:34
だから implicit none しましょうよ...
100仕様書無しさん:04/04/02 20:28
64h
101仕様書無しさん:04/05/25 01:18
>>98
FORTRAN と BASIC を混同してる香具師。
102仕様書無しさん:04/05/25 18:31
100 IF( UNKO .EQ. KUSAI ) GOTO 300
だったけ?
103仕様書なしさん:04/05/26 23:25
だれか、漏れの宿題手伝ってくれる方いませぬか・・・
FORTRAN77です。
104仕様書無しさん。:04/05/27 11:31
きたいageもの
105仕様書無しさん:04/05/27 21:57
fortran77ソースからフローチャート描いてくれるツールない?
106仕様書無しさん:04/05/27 22:02
fortran77ソースからフローチャート描いてくれるツールない?
107仕様書なしさん:04/05/28 02:11
(´Д⊂(´Д⊂(´Д⊂(´Д⊂(´Д⊂(´Д⊂(´Д⊂(´Д⊂(´Д⊂
(´Д⊂  x^2=y^2+z^2              (´Д⊂
(´Д⊂  を満足する解を             (´Д⊂
(´Д⊂  全部出す。ソースかいてくだちゃい    (´Д⊂
(´Д⊂  1<x,y,z<50のあたいでつ。        (´Д⊂
(´Д⊂  お優しい方おながいします。       (´Д⊂
(´Д⊂(´Д⊂(´Д⊂(´Д⊂(´Д⊂(´Д⊂(´Д⊂(´Д⊂(´Д⊂
108仕様書無しさん:04/05/28 10:26
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
109仕様書無しさん:04/05/28 10:30
// 動いたんで、完全版を貼っておくぜ
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 + "]");
}
}
}
}
}
}
110107:04/05/28 11:12
>>108
>>109
ありがとうございます。(´Д⊂
プログラムはさわり程度しかやったことないので
わかんないんですが
intとかがでてるんですが
これってC言語ですか?
111仕様書無しさん:04/05/28 11:18
良かったじゃないか>>107。親切な人がいて。
でもJavaをFORTRANに変換するのと、
この問題を素でFORTRANで書くのとどちらが難しいか
が、オレには判断つかないが(W
112仕様書無しさん:04/05/28 13:51
ワロタ
113仕様書無しさん:04/05/28 14:14
* 単なる暇潰し
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
114107:04/05/28 14:35
実はこれって授業のレポートというか
最後に3問107をあわせた問題を
やって結果をプリントアウトして
先生にだすんです。

4年ていなので、必修はとっておかないとあとがないんでつ・・・
もうすでに一回やっておりますんで・・・

>>113さん
このソースもうってみます。

皆さんどうもありがとうございます。
わからなかったら、また質問してもいいですか?

(´Д⊂)ミンナヤサシイ。
(´Д⊂)オイラハウレチイデツ。
115107:04/05/28 15:45
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までをあらわせということなんですが
なんか出力したら変な数字が出たのですが
どこを直せばよいのかわからないので
お力添えしていただけないでしょうか?
お願いします。(´Д⊂)(´Д⊂)

116仕様書無しさん:04/05/28 18:00
>>115
処理系が手元に無いので正解かどうかはわかんないけど
12の階乗は479001600なのでオーバーフローを起こしているのかもね
「INTEGER*8」って書ける?整数の宣言を全部直してやってみたら?
#正解だったら随分厳しい先生だと思う・・・
117仕様書無しさん:04/05/28 19:56
>>115
「12C12〜12C1」というのは”組合せ”のことかな?
だとしたら、落ち着いて組合せの定義とプログラムをよく見比べれば
すぐに解決すると思うぞ。
プログラミング初心者なら式の計算順序も復習しておこう。
118115:04/05/28 23:00
>>116さん>>117さん
どうもありがとうございます。
12C12〜12C1は組み合わせです。
ですので
出力結果は普通
12
66
220
495
792
924
792
495
220
66
12
になるのに対して
この>>115のソースからは上から下に
大きくなる結果で中には負の値までありました。

>K=IFACT(12)/IFACT(12-I)*IFACT(I)
私的にはこの部分がどこかおかしいのかと思っているのですが
実際のところはわからないので
定義の見直し、また整数の宣言の見直しのほうをやってみたいと思います。

ただ、わたしも処理系がないので、明日にでも確認してみたいと思います。

長文申し訳ないですが、ありがとうございます。
また結果のほうもご報告させていただきたいと思っております。
119115:04/05/29 02:19
明日確認ということだったんですが
月曜日には提出ということもありましたので
ノート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

120仕様書無しさん:04/05/30 02:11
>>119
それが普通だろ。

何も理解してないのにお情けだけで単位もらって卒業しても
後で苦労するのは自分自身だし、そんな奴らの相手をさせら
れる人にも迷惑がかかる。

# とウチの新入りの面倒見ててつくづく思いますた
121仕様書無しさん:04/06/09 13:40
a
122仕様書無しさん:04/06/09 21:51
         ☆ チン     マチクタビレタ〜
                         マチクタビレタ〜
        ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・) <  Fortran2003完全準拠の処理系マダ〜?
             \_/⊂ ⊂_ )   \__________
           / ̄ ̄ ̄ ̄ ̄ ̄ /|
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
        | .愛媛みかん.  |/
123仕様書無しさん:04/06/17 15:32
☆ チン     マチクタビレタ〜
                         マチクタビレタ〜
        ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・) <  なんかいいねたないの〜?
             \_/⊂ ⊂_ )   \__________
           / ̄ ̄ ̄ ̄ ̄ ̄ /|
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
        | .愛媛みかん.  |/

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を使ったままで文関数を定義したいのですがどうしたらいいのでしょうか?
125仕様書無しさん:04/07/03 16:11
>>124
文関数はFortran95の廃止予定事項です。
内部関数を使用することをお勧めします。
126仕様書無しさん:04/07/03 22:57
答を自分で書いてるじゃん

> 文関数 "F" には明示的な型を指定しなければなりません。
127仕様書無しさん:04/07/04 16:18
>>126
それがよく分かんないんですけど。具体的にどうしたら良いのか教えてください。
128仕様書無しさん:04/07/04 17:42
>>127
http://www.g.dendai.ac.jp/lecture/fortran/fort12.html

「文関数」の意味が分からずgoogleで「fortran 文関数」で
検索したら一発で出てきた.
real f
を追加すれば良いかな.
function〜end functionしか使ったことがなかった.

Fortran95以降f(x)=云々は廃止され,全てfunctionで定義
しないといけないということですか.
129仕様書無しさん:04/07/04 17:58
>>128
どうもです。ありがとうございました。
130仕様書無しさん:04/07/04 22:59
>>128
廃止"予定"事項なのでFortran95ではまだ使えます。

Fortran90で廃止予定事項として上がっていた物のうち
実数型制御変数を使ったDOループやPAUSE文などは
Fortran95で廃止されています。

ただ、規格上は廃止されていても実際のコンパイラでは
これらの機能を使える物がほとんどのようですが。
(オプション等でエラーや警告が出るようにはなります)
131仕様書無しさん:04/07/31 23:26
至急、質問があります。
FFT(高速フーリエ変換)のプログラムを作ってます。
今まで処理データ数が16000個くらいで、順調に計算できていました。
しかし、データ数を70000個くらいに増やすと、出力ファイルに
『*』印がたくさん出てきます。
ちなみに言語はフォートランで出力はCSV形式で出力してます。
これはフォーマットの設定が悪いんでしょうか?
132仕様書無しさん:04/07/31 23:59
>>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)

のような感じです。(上のままではコンパイル通りませんが)
134仕様書無しさん:04/08/04 23:34
>>133
最終的には,文字列が加工できるから使う変数を動的に変えられるだろうな,って話?
135仕様書無しさん:04/08/04 23:40
>134
その通りです。
でも、やり方がわかりません。何か別にうまい方法があるのかもしれませんが。
136仕様書無しさん:04/08/04 23:49
>>135
こういう方法を使わないアルゴリズムを作れませんか?
高級言語なら,文字列からシンボルを引くことができます.
C 言語でも似たようなことができ,関数へのポインタと文字列をメンバにした
構造体を用意します.

fortran はよく知りませんが,関数へのポインタを変数に入れられましたよね?
文字列の配列を作って,さらに関数へのポインタを入れる配列をインデックスを揃えて
作るとかは? ...できるのかな ;-D
137仕様書無しさん:04/08/04 23:55
>>136
すでに存在する巨大なfortranプログラム+巨大なinclude fileをベースに
一部変更する必要があり、その中で上のような事ができれば便利だと
感じたので質問してみました。

何か別の方法を考えてみます。
138仕様書無しさん:04/08/05 01:17
>>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
139仕様書無しさん:04/08/06 19:27
>>138
できないとなると悲しいな.
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]」
って出てプログラムが実行できないんです。
141仕様書無しさん:04/08/14 22:13
>>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
コンパイル・オプションで、スタックのサイズを変えられないの?
あとは、動的にメモリを取得するとか。
145仕様書無しさん:04/08/28 21:37
>>139
Fortran 2003ならprocedure pointer (関数・サブルーチンへのポインタ)が使えるんだけどね。
いかんせん、Fortran 2003準拠の処理系がまだないのが…
146仕様書無しさん:04/08/29 00:32
>>145
お、いつのまにかFortran2003なんて出てたんですね。っていうか2000は?
147仕様書無しさん:04/08/29 00:41
>>146
ttp://www.itscj.ipsj.or.jp/committees/sc22/sc22fortran.html
>従来,通称Fortran 2000と呼んできたが,2003年度に開催されたWG 5会議において,
>通称Fortran 2003と呼ぶことが決議された.

規格制定が遅れたんで名前が変わっちゃいました。
148仕様書無しさん:04/10/04 20:47:49
社会保険庁のシステムがFORTRANで組まれているという話をよく聞きますが、なんででしょう?
この手の業種はかつてはCOBOLが一般的だったような気がするのですが。。。
149仕様書無しさん:04/10/04 22:30:31
おいおい、ところどころ宿題スレになってんな。
もっとマ板らしいネタスレにしようぜ。

俺はFORTRAN使ったことない
150仕様書無しさん:04/10/04 22:50:45
おれはある
151仕様書無しさん:04/10/05 00:45:27
俺は今でも使ってる
152仕様書無しさん:04/10/05 07:52:17
俺はFORTRANで書かれている
153仕様書無しさん:04/10/05 23:58:42
>>152
名前は6文字以下ね
154仕様書無しさん:04/10/13 02:36:04
FORTRAN77(の方言)で、メモリを動的確保するサブルーチン/関数
はありますか。

155仕様書無しさん:04/10/15 18:27:05
Fortranでいいフリーのデバッガってないですかね?

gdbも一応Fortranに対応しているようですが,世の中の情報が少なくて困ります.

あと,静的なツールもフリーでご存知の方いらっしゃったらお願いします.当方はctagsを使っているのですが...

156仕様書無しさん:04/10/16 10:04:18
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
分からない問題があるのですが助けてくれる方いませんか??
162仕様書無しさん:04/11/18 23:28:45
>>161
タダじゃいや。
163仕様書無しさん:04/11/20 07:05:07
以下のようなプログラでは、配列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用の。
166仕様書無しさん:04/11/24 22:59:55
フリーのfortranコンパイラを探しています。
Windows用の。
















全裸で
167仕様書無しさん:04/11/25 00:34:13
ここはプログラ「マ」板ですから,>>164 は釣りだと思います.
いや,「探しているプログラマ」というのを演出しているのかも.
168仕様書無しさん:04/11/25 01:02:59
フリーのfortranプログラマを探しています。
Windows用の。
169164:04/11/25 20:47:12
フリーの100万円探しています。
Windows用の
170仕様書無しさん:04/11/26 00:05:48
まだVisualFortranってあるの?
171仕様書無しさん:04/11/26 19:26:28
Power Stationって何
172仕様書無しさん:04/12/03 01:47:29
>>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 という名前だったような気がする。
173仕様書無しさん:04/12/03 20:15:04
>>172
おお、サンクス

流れが良くわかったよ
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から始まるワーク配列に展開して、それにポインタを割り付けるしかないと言うことになる。
多分オーバーヘッド的にはあまり変わらないと思う。

ただし、以上はいくつか他の場合の挙動に基づく推測なので、正しくないかも。
176175: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
177仕様書無しさん:04/12/22 07:37:50
♪おおブレネリ あなたのおうちはどこ
わたしのおうちは スイッツァランドよ
きれいな湖水の ほとりなのよ
ヤッ〜ホ〜
178仕様書無しさん
FORTRAN IV YOU !