Le module "Varying length character strings" n'est plus d'actualité aujourd'hui depuis que les allocations dynamiques sont devenues possibles.
Il y a donc deux possibilités pour la déclaration des chaînes de caractères :
1. À l'ancienne, avec une longueur prédéterminée (option LEN);
2. Avec l'option ALLOCATABLE pour une longueur variable inconnue à la déclaration.
Dans les deux cas, il faut procéder à leur initialisation. Cette initialisation doit être précédée du mot clé ALLOCATE pour les chaînes de longueur variable. Et si cette allocation est faite en dehors d'une procédure, ne pas oublier DEALLOCATE (l'équivalent de free() en C) pour les fuites de mémoire. Tout ceci est décrit dans mon article de GLMF de sept 2019 à la page 46.
Depuis F77, il y a eu d'autres procédures prédéfinies (l'équivalent de la "libc") ajoutées concernant les manipulations sur les chaînes comme ADJUSTL et ADJUSTR qui permettent de justifier à droite ou à gauche une chaîne. À INDEX ont été ajoutés SCAN et VERIFY.
Du fait des allocations dynamiques, le recours à Valgrind est plus que recommandé. Au passage, il permet de dépister des variables non initialisées qui n'ont pas été dépistées par gfortran. À noter que Valgrind a ses exigences concernant la compilation de la libc. (Il est très possible que Valgrind ne soit pas immédiatement utilisable sur votre distribution.) Et, tant qu'on y est, il y a aussi gdb. Ces deux outils sont contraignants pour la machine hébergeant la chaîne de compilation. Personnellement, je suis sous Gentoo et je suis obligé d'activer l'option [FEATURES="splitdebug"] dans "/etc/portage/make.conf". Ceci fait que tout exécutable de la distro est scindé en deux : l'exécutable strippé étant dans "/usr/bin" et la partie contenant les symboles de débug étant dans "/usr/lib/debug". Mais ceci concerne seulement les sources packagées par la distro ; penser à activer les options de compilation GCC "-Og" et "-ggdb" pour vos propres compilations.
[^] # Re: Pas que le calcul
Posté par Denis Bernard . En réponse au journal Des nouvelles de Fortran. Évalué à 4.
Le module "Varying length character strings" n'est plus d'actualité aujourd'hui depuis que les allocations dynamiques sont devenues possibles.
Il y a donc deux possibilités pour la déclaration des chaînes de caractères :
1. À l'ancienne, avec une longueur prédéterminée (option LEN);
2. Avec l'option ALLOCATABLE pour une longueur variable inconnue à la déclaration.
Dans les deux cas, il faut procéder à leur initialisation. Cette initialisation doit être précédée du mot clé ALLOCATE pour les chaînes de longueur variable. Et si cette allocation est faite en dehors d'une procédure, ne pas oublier DEALLOCATE (l'équivalent de free() en C) pour les fuites de mémoire. Tout ceci est décrit dans mon article de GLMF de sept 2019 à la page 46.
Depuis F77, il y a eu d'autres procédures prédéfinies (l'équivalent de la "libc") ajoutées concernant les manipulations sur les chaînes comme ADJUSTL et ADJUSTR qui permettent de justifier à droite ou à gauche une chaîne. À INDEX ont été ajoutés SCAN et VERIFY.
Du fait des allocations dynamiques, le recours à Valgrind est plus que recommandé. Au passage, il permet de dépister des variables non initialisées qui n'ont pas été dépistées par gfortran. À noter que Valgrind a ses exigences concernant la compilation de la libc. (Il est très possible que Valgrind ne soit pas immédiatement utilisable sur votre distribution.) Et, tant qu'on y est, il y a aussi gdb. Ces deux outils sont contraignants pour la machine hébergeant la chaîne de compilation. Personnellement, je suis sous Gentoo et je suis obligé d'activer l'option [FEATURES="splitdebug"] dans "/etc/portage/make.conf". Ceci fait que tout exécutable de la distro est scindé en deux : l'exécutable strippé étant dans "/usr/bin" et la partie contenant les symboles de débug étant dans "/usr/lib/debug". Mais ceci concerne seulement les sources packagées par la distro ; penser à activer les options de compilation GCC "-Og" et "-ggdb" pour vos propres compilations.