Ich brauche eine portable Funktion/ein Unterprogramm, um die Position des letzten Nicht-Leerzeichens in einer Zeichenfolge zu ermitteln . Ich habe zwei Möglichkeiten gefunden: LEN_TRIM
y LNBLNK
. Allerdings scheinen die verschiedenen Compiler unterschiedliche Standards zu haben. Die offizielle Dokumentation für die folgenden Compiler legt nahe, dass LEN_TRIM auf den folgenden Plattformen Teil des Fortran 95-Standards ist:
Es scheint jedoch, dass bei Compilern, die vor dem F95-Standard veröffentlicht wurden, nichts garantiert ist. Meine Erfahrung ist, dass ältere Compiler entweder LEN_TRIM
ou LNBLNK
, aber nicht unbedingt beides. Meine Lösung bestand darin, Präprozessor-Bedingungen zu verwenden:
#ifdef USE_LEN_TRIM
iNameLen = LEN_TRIM(cabase)
iExtLen = LEN_TRIM(caext)
#else
iNameLen = LNBLNK(cabase)
iExtLen = LNBLNK(caext)
#endif
und dann passieren -DUSE_LEN_TRIM
an den Präprozessor. Allerdings bin ich kein großer Fan von Präprozessor-Bedingungen und zusätzlichen Kompilierzeit-Flags. Haben Sie irgendwelche Vorschläge für eine portable (vor dem Fortran 95-Standard) Funktion, die die Position des letzten Nicht-Leerzeichens in einer Zeichenfolge zu lokalisieren?