FortranでUnterminated character constant beginning at (1)
というエラーメッセージが出たので、本記事では、この解決方法を紹介します。
原因1
Unterminated character constant beginning at (1)
は、日本語訳すると(1)から始まる文字列の定数が未終了ですよということです。
一番多い原因として、文字列が”(シングルクォーテーション)や””(ダブルクォーテーション)で囲まれていないことが多いです。
例
implicit none
write(*,*)"Hello World
stop
end
実行結果
write(*,*)"Hello World
1
Error: Unterminated character constant beginning at (1)
原因1に対する解決方法
文字列を’’(シングルクォーテーション)か””(ダブルクォーテーション)で囲むことでエラーメッセージを回避できます。
write(*,*)"Hello World"
原因2
文字列が’’(シングルクォーテーション)や””(ダブルクォーテーション)で囲まれているにもかかわらず、Unterminated character constant beginning at (1)
というエラーメッセージが出ることがあります。
私が遭遇したのは、こちらのエラーでした。
文字列云々ではなく、一行に認識できる文字数(132文字、空白を含む)を超えるとどうやらエラーメッセージが出るようです。
例
implicit none
character(400),parameter::FILE_pres3D = "/home/hogehoge/cdata41/RCE_out/DATA/3D/"//trim(var_pres4D)//"_"//trim(periods)//".pe000000.nc"
stop
end
実行結果
e/hogehoge/cdata41/RCE_out/DATA/3D/"//trim(var_pres4D)//"_"//trim(periods)//".pe0
1
Error: Unterminated character constant beginning at (1)
環境によっては、Line truncated at (1) [-Werror=line-truncation]
というエラーメッセージも出るようです。
原因2に対する解決方法
長いコードを書く場合は、適時に&を入れ、改行することでエラーメッセージを回避することができます。
character(400),parameter::FILE_pres3D = "/home/hogehoge/cdata41/RCE_out/DATA/3D/"&
//trim(var_pres4D)//"_"//trim(periods)//".pe000000.nc"
本記事では、 Unterminated character constant beginning at (1)
の解決方法として紹介しましたが、長いコードが原因でのエラーメッセージは、様々ありますので、適時&を入れて改行しましょう。