🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
FORTRAN

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

Q&A

解決済

1回答

1303閲覧

fortran エラーメッセージの意味について

kjdijcd

総合スコア5

FORTRAN

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

0グッド

0クリップ

投稿2019/12/13 07:14

前提・実現したいこと

vizualstudio2005を用いてfortranのプログラムを書いているのですが、
以下のようなエラーメッセージが出ました.
エラーメッセージがこれしか出なかったのでどこに問題があるのかわかりません。
おそらく以下の文字定義の個所に問題があると思うのですが、定義できる数は決まっているのでしょうか.
教えてください。

発生している問題・エラーメッセージ

complication aborted (code3)

該当のソースコード

fortran

fotran

1CHARACTER(len = 4), DIMENSION(0:5000) :: & 2 number = (/'000','001','002','003', '004', '005', '006', '007', '008', '009', '010', '011', '012', '013', '014', '015', '016', '017', '018', '019', '020', '021', '022', '023', '024', '025', '026', '027', '028', '029', '030', '031', '032', '033', '034', '035', '036', '037', '038', '039', '040', '041', '042', '043', '044', '045', '046', '047', '048', '049', '050', '051', '052', '053', '054', '055', '056', '057', '058', '059', '060', '061', '062', '063', '064', '065', '066', '067', '068', '069', '070', '071', '072', '073', '074', '075', '076', '077', '078', '079', '080', '081', '082', '083', '084', '085', '086', '087', '088', '089', '090', '091', '092', '093', '094', '095', '096', '097', '098', '099', '100',....以後文字数の関係で省略...'5000'/)

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

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

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

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

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

dodox86

2019/12/13 07:20 編集

ご提示のコードを見て思っただけですが、極端に1行の長さが長い、と言うことはありませんか。'100'..省略..'5000' /) となっていたので。 そうであれば、データ項目数を少なくしてみたり、1行の幅を短く(100~200文字ほど)してみるとか試してみてはいかがでしょうか。
kjdijcd

2019/12/19 07:03

ありがとうございます。試してみます。
guest

回答1

0

ベストアンサー

fortran 90 の規格では1行の長さは、自由形式では 132 桁までとなっているので、エラーが出ているものと思われます。

普通は適宜改行を入れて継続行にしてやればいいのですが、継続行は 39 までなので今度はこちらの制限に引っ掛かりそうですね。

処理系独自の拡張があるので、規格にこだわらなければ何とかなるかもしれませんが・・・

手で打ち込むより、初期化ルーチンを呼ぶことにして、文字変数を内部ファイルとして以下のような感じでやる方法があります。4 桁になっていますが適宜修正してください。

fortran

1 character(len=4) :: number(0:10) 2 do i = 0, 10 3 write(number(i), '(I4.4)') i 4 end do 5 6 print '(a)', number 7end
$gfortran -std=gnu *.f95 -o main $main 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010

投稿2019/12/17 07:35

編集2019/12/17 07:43
curehoney

総合スコア249

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

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

kjdijcd

2019/12/19 07:07

ありがとうございます。参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問