Unterminated character constant beginning at (1) 解決方法

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) の解決方法として紹介しましたが、長いコードが原因でのエラーメッセージは、様々ありますので、適時&を入れて改行しましょう。