質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

Q&A

解決済

2回答

8843閲覧

Fortran 「Error: Invalid character in name at (1)」、「Error: Expecting END IF statement at (1)」

Tubasa1995

総合スコア83

FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

0グッド

0クリップ

投稿2021/09/08 12:03

Fortran初心者です。急遽Fortranを使わなくいけなくなり、また大至急なのでゆっくり勉強する時間がないので、必要なことのみ調べながらやっています。

現在、ある関数を作っています。
ここでやりたいこととして
1.Doループにより「ntcabs = 1」のときに、「array.csv」ファイルから値を読みこんで「n_array(n)」というは配列に格納して、これは関数終了後も保持しておきたい。その後、その配列の1つ目の値を「direchlet_pressure」に代入したい。
2.「ntcabs = 1」以外の時は、「ntcabs = 1」のときに処理しで保持している配列「n_array(n)」から、「ntcabs」番目の値を「direchlet_pressure に代入したい。

というような処理をしたいと思っていますが、コンパイルのときにエラーが出て、原因がよく分かりません。どなたか教えてくれませんか。

コード

program readcsv implicit none integer :: n = 100 real pressure integer i real, save n_array(n) real direchlet_pressure integer :: ntcabs = 0 do ntcabs = 1, n if(ntcabs==1)then open (17, file='array.csv', status='old') read (17, '()') ! ヘッダ行の読み飛ばし  do i = 1, n read (17, *) pressure n_array(i) = pressure !配列のi番目にcsvファイルのi番目を格納  end do  direchlet_pressure = n_array(1)  print *,n_array(1) !出力したい配列要素 close (17) else direchlet_pressure = n_array(ntcabs) end do end program readcsv

エラー

tsubasa@tsubasa-VirtualBox:~/fortran$ gfortran readcsv.f95 readcsv.f95:7:7: real, save n_array(n) 1 Error: Invalid character in name at (1) readcsv.f95:25:5: end do 1 Error: Expecting END IF statement at (1) readcsv.f95:26:3: end program readcsv 1 Error: Expecting END IF statement at (1) f951: Error: Unexpected end of file in ‘readcsv.f95’

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

コンパイル通すだけなら、
1 real, save :: n_array(100)
2 end if がない(ifの)
3 空白に全角スペースがある。
最近のfortranは、わからん!

投稿2021/09/08 12:36

ikapy

総合スコア1167

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

最近のFORTRANは知らないのですが、

real, save n_array(n)

これって :: が必要なのでは?

FORTRAN

1real, save :: n_array(n)

投稿2021/09/08 12:10

itagagaki

総合スコア8402

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問