Text Data Processing
Trimmed Text
Normalize Padding
Fixed-length character variables often carry padding. adjustl, trim, and len_trim make the visible text explicit.
Program
Play the program to choose the amount of left padding and normalize the label.
trimmed_text.f90
Replay: real traced execution (multi-file project)
program trimmed_text_demo
implicit none
integer :: pad_count
integer :: visible
character(len=20) :: raw
character(len=20) :: cleaned
pad_count = 2
raw = repeat(' ', pad_count) // 'beta '
cleaned = adjustl(raw)
visible = len_trim(cleaned)
print '(A, 1X, I0)', trim(cleaned), visible
end program trimmed_text_demo
program trimmed_text_demo
implicit none
integer :: pad_count
integer :: visible
character(len=20) :: raw
character(len=20) :: cleaned
pad_count = 0
raw = repeat(' ', pad_count) // 'beta '
cleaned = adjustl(raw)
visible = len_trim(cleaned)
print '(A, 1X, I0)', trim(cleaned), visible
end program trimmed_text_demo
program trimmed_text_demo
implicit none
integer :: pad_count
integer :: visible
character(len=20) :: raw
character(len=20) :: cleaned
pad_count = 4
raw = repeat(' ', pad_count) // 'beta '
cleaned = adjustl(raw)
visible = len_trim(cleaned)
print '(A, 1X, I0)', trim(cleaned), visible
end program trimmed_text_demo
pad_count ← 2
8pad_count = 29raw = repeat(' ', pad_count) // 'beta 'values this step2pad_countraw ← beta
8pad_count = 29raw = repeat(' ', pad_count) // 'beta '10cleaned = adjustl(raw)values this step beta raw2pad_countcleaned ← beta
9raw = repeat(' ', pad_count) // 'beta '10cleaned = adjustl(raw)11visible = len_trim(cleaned)values this stepbetacleaned beta rawvisible ← 4
10cleaned = adjustl(raw)11visible = len_trim(cleaned)12print '(A, 1X, I0)', trim(cleaned), visiblevalues this step4visiblebetacleanedprint '(A, 1X, I0)', trim(cleaned), visible
11 visible = len_trim(cleaned)12 print '(A, 1X, I0)', trim(cleaned), visible13end program trimmed_text_demooutputbeta 4values this stepbetacleaned4visible
pad_count ← 0
8pad_count = 09raw = repeat(' ', pad_count) // 'beta 'values this step0pad_countraw ← beta
8pad_count = 09raw = repeat(' ', pad_count) // 'beta '10cleaned = adjustl(raw)values this stepbeta raw0pad_countcleaned ← beta
9raw = repeat(' ', pad_count) // 'beta '10cleaned = adjustl(raw)11visible = len_trim(cleaned)values this stepbetacleanedbeta rawvisible ← 4
10cleaned = adjustl(raw)11visible = len_trim(cleaned)12print '(A, 1X, I0)', trim(cleaned), visiblevalues this step4visiblebetacleanedprint '(A, 1X, I0)', trim(cleaned), visible
11 visible = len_trim(cleaned)12 print '(A, 1X, I0)', trim(cleaned), visible13end program trimmed_text_demooutputbeta 4values this stepbetacleaned4visible
pad_count ← 4
8pad_count = 49raw = repeat(' ', pad_count) // 'beta 'values this step4pad_countraw ← beta
8pad_count = 49raw = repeat(' ', pad_count) // 'beta '10cleaned = adjustl(raw)values this step beta raw4pad_countcleaned ← beta
9raw = repeat(' ', pad_count) // 'beta '10cleaned = adjustl(raw)11visible = len_trim(cleaned)values this stepbetacleaned beta rawvisible ← 4
10cleaned = adjustl(raw)11visible = len_trim(cleaned)12print '(A, 1X, I0)', trim(cleaned), visiblevalues this step4visiblebetacleanedprint '(A, 1X, I0)', trim(cleaned), visible
11 visible = len_trim(cleaned)12 print '(A, 1X, I0)', trim(cleaned), visible13end program trimmed_text_demooutputbeta 4values this stepbetacleaned4visible
repeat
`repeat(' ', pad_count)` creates a controlled amount of padding.
adjustl
`adjustl` moves visible text to the left side of the character value.
len_trim
`len_trim` counts non-padding characters.