string 内の最後の非空白文字の位置を特定するための移植可能な関数/サブルーチンが必要です。LEN_TRIM
との 2 つのオプションが見つかりまし LNBLNK
た。ただし、コンパイラごとに標準が異なるようです。次のコンパイラの公式ドキュメントは、LEN_TRIM が次のプラットフォームの Fortran 95 標準の一部であることを示唆しています。
ただし、F95 標準より前にリリースされたコンパイラでは何も保証されていないようです。 私の経験では、古いコンパイラは または のいずれかを指定する可能性がありますLEN_TRIM
がLNBLNK
、必ずしも両方を指定するとは限りません。私の解決策は、プリプロセッサ条件を使用することでした:
#ifdef USE_LEN_TRIM
iNameLen = LEN_TRIM(cabase)
iExtLen = LEN_TRIM(caext)
#else
iNameLen = LNBLNK(cabase)
iExtLen = LNBLNK(caext)
#endif
そして-DUSE_LEN_TRIM
、プリプロセッサに渡します。ただし、私はプリプロセッサの条件と追加のコンパイル時フラグの大ファンではありません。 文字列内の空白以外の最後の文字の位置を特定する移植可能な (Fortran 95 標準より前の) 関数について何か提案はありますか?