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

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

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

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

解決済

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

Tubasa1995
Tubasa1995

総合スコア83

FORTRAN

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

2回答

0グッド

0クリップ

4516閲覧

投稿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’

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答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

総合スコア8386

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

FORTRAN

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