@@ -185,10 +185,11 @@ subroutine write_message(level)
185185
186186 integer , optional :: level ! verbosity level
187187
188- integer :: i_start ! starting position
189- integer :: i_end ! ending position
190- integer :: line_wrap ! length of line
191- integer :: length ! length of message
188+ integer :: i_start ! starting position
189+ integer :: i_end ! ending position
190+ integer :: line_wrap ! length of line
191+ integer :: length ! length of message
192+ integer :: last_space ! index of last space (relative to start)
192193
193194 ! Set length of line
194195 line_wrap = 80
@@ -209,11 +210,17 @@ subroutine write_message(level)
209210
210211 else
211212 ! Determine last space in current line
212- i_end = i_start + index (message(i_start+1 :i_start+ line_wrap), &
213+ last_space = index (message(i_start+1 :i_start+ line_wrap), &
213214 ' ' , BACK= .true. )
215+ if (last_space == 0 ) then
216+ i_end = min (length + 1 , i_start+ line_wrap) - 1
217+ write (ou, fmt= ' (1X,A)' ) message(i_start+1 :i_end)
218+ else
219+ i_end = i_start + last_space
220+ write (ou, fmt= ' (1X,A)' ) message(i_start+1 :i_end-1 )
221+ end if
214222
215223 ! Write up to last space
216- write (ou, fmt= ' (1X,A)' ) message(i_start+1 :i_end-1 )
217224
218225 ! Advance starting position
219226 i_start = i_end
0 commit comments