Character strings
| Fixed length | |
| Concatenate // | |
| Trim and adjustl | |
| Compare strings |
Fixed length
A character variable has a fixed length set at declaration: character(len=20) reserves twenty slots no matter how short the text is.
Short values are padded with blanks, so len always reports 20 while len_trim counts only up to the last visible character.
program fixed
implicit none
character(len=20) :: name
name = "Ada"
print *, len(name)
print *, len_trim(name)
end program fixed
./fixed
20
3
Concatenate //
The // operator glues strings together: first // blank // last builds one longer value from three pieces.
Joining exact length pieces avoids stray blanks, so the result prints as Ada Lynn.
program concat
implicit none
character(len=3) :: first
character(len=4) :: last
first = "Ada"
last = "Lynn"
print *, first // " " // last
end program concat
./concat
Ada Lynn
Trim and adjustl
Padding blanks get in the way of brackets and messages, so trim cuts trailing blanks and adjustl pushes text to the left.
Brackets make the blanks visible: the raw value keeps its leading blanks while the adjusted one starts at once.
program tidy
implicit none
character(len=10) :: raw
raw = " Ada"
print *, len_trim(raw)
print *, "[" // raw // "]"
print *, "[" // adjustl(raw) // "]"
end program tidy
./tidy
6
[ Ada ]
[Ada ]
Compare strings
Comparison operators test equality and order: == checks for equal text while /=, <, and > cover the remaining cases.
Shorter values are padded with blanks before the test, so same length variables compare exactly as written.
program compare
implicit none
character(len=4) :: a
character(len=4) :: b
a = "Ada"
b = "Bob"
if (a == b) then
print *, "same"
else
print *, "different"
end if
end program compare
./compare
different
Next: Formatted IO
Article author: Arthur Isaev