Мне нужна переносимая функция / подпрограмма, чтобы найти позицию последнего непустого символа в строке . Я нашел два варианта: LEN_TRIM
и 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) функции, которая определяет местоположение последнего непустого символа в строке?