Мне нужна портативная функция/подпрограмма, чтобы найти положение последнего непустого символа в строке. Я нашел два варианта: LEN_TRIM
и LNBLNK
. Однако разные компиляторы, похоже, имеют разные стандарты. Официальная документация для следующих компиляторов предполагает, что LEN_TRIM является частью стандарта Fortran 95 на следующих платформах:Символьные строки в Фортране: портативные LEN_TRIM и LNBLNK?
Однако, это что ничего не гарантировано в компиляторах, выпущенных до стандарта 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) функции, которые определяют местоположение последнего непустого символа в строке?
mhmhmh. похоже, что делает, хотя я бы не стал делать ставку на него. протестированы как на g95, так и на g77. –
LEN == F77 стандарт; TRIM == Стандарт F95 – Pete