Nelle istruzioni di assegnazione e di lettura, le stringhe possono essere troncate se la lunghezza della variabile in ricezione non è abbastanza lunga. Che cosa succede se la lunghezza assegnata ad una variabile è più corta della lunghezza della stringa che ci si aspetta che l’identificatore possa avere? Il programma che segue ne dimostra l’effetto.
PROGRAM Fortran_stringa
CHARACTER(LEN=5), PARAMETER :: M = ‘Smith’, N = ‘TEXAS’
CHARACTER(LEN=4), PARAMETER :: X = ‘Smith’
CHARACTER(LEN=6), PARAMETER :: Y = ‘TEXAS’
! La trappola della stringa di troncamento
WRITE(*,*) “La trappola della stringa di troncamento:”
WRITE(*,*) ‘IS ‘, M, ‘ STILL IN ‘, N, ‘?’
WRITE(*,*) ‘IS ‘, X, ‘ STILL IN ‘, Y, ‘?’
END PROGRAM Fortran_stringa
-Output del programmma
La trappola della stringa di troncamento:
IS Smith STILL IN TEXAS?
IS Smit STILL IN TEXAS ?
Discussione
Tutti i nomi in questo programma sono alias di costanti.
Nella sezione dichiarativa del programma gli alias M ed N non dovrebbero avere alcun problema in quanto la lunghezza dei nomi e la lunghezza delle strighe risultano d’accordo. Poiché la lunghezza di X è di 4 ed è più corta della lunghezza della stringa ‘Smith’, X riceve solo i caratteri più a sinistra di 4 caratteri. Ora diamo un’occhiata a Y. Poiché la lunghezza di Y è superiore alla lunghezza della stringa ‘Texas’, degli spazi saranno aggiunti alla fine per riempirla fino a 6 caratteri. Così, Y diventa in realtà ‘Texas’. L’output dovrebbe apparire simile al seguente:
IS Smith STILL IN TEXAS?
IS Smit STILL IN TEXAS ?
Sulla seconda riga, è facilmente visibile che l’originale Smith diventa Smit e l’originale TEXAS diventa TEXAS_, dove _ indica uno spazio.
Link correlati all’argomento
- Elementi di calcolo numerico con il Fortran