J'ai besoin d'une fonction/sous-routine portable pour localiser la position du dernier caractère non vide dans une chaîne. J'ai trouvé deux options: LEN_TRIM
et LNBLNK
. Cependant, différents compilateurs semblent avoir des normes différentes. La documentation officielle pour les compilateurs suivants suggère que LEN_TRIM fait partie de la norme Fortran 95 sur les plates-formes suivantes:Chaînes de caractères dans Fortran: Portable LEN_TRIM et LNBLNK?
Cependant, il semble que rien n'est garanti sur les compilateurs sortis avant la norme F95. Mon expérience a été que les anciens compilateurs pourraient spécifier soit LEN_TRIM
ou LNBLNK
, mais pas nécessairement les deux. Ma solution a été d'utiliser conditionals préprocesseur:
#ifdef USE_LEN_TRIM
iNameLen = LEN_TRIM(cabase)
iExtLen = LEN_TRIM(caext)
#else
iNameLen = LNBLNK(cabase)
iExtLen = LNBLNK(caext)
#endif
puis passer -DUSE_LEN_TRIM
au préprocesseur. Cependant, je ne suis pas un grand fan de conditionnels préprocesseur & drapeaux supplémentaires à la compilation. Avez-vous des suggestions pour une fonction portable (avant la norme Fortran 95) qui localise la position du dernier caractère non vide dans une chaîne?
mhmhmh. On dirait que c'est le cas, bien que je ne parierais pas dessus. testé à la fois sur g95 et g77. –
LEN == F77 standard; TRIM == F95 standard – Pete