Вот общее решение, которое вы можете принять для своего кода. Для входной строки msg
она печатает строки длиной не более 40 символов (при необходимости настройте MAX_LINE_LEN
ниже). Строки разделены только пробелами.
implicit none
character(:), allocatable :: msg
msg = '50, 25, 76, 38, 19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, &
&20, 10, 5, 16, 8, 4, 2, 1,'
call print_msg(msg)
contains
recursive subroutine print_msg(msg)
character(*), intent(in) :: msg
integer, parameter :: MAX_LINE_LEN = 40
integer :: length
if (len(msg) <= MAX_LINE_LEN) then
length = len(trim(msg))
else if (index(msg(:MAX_LINE_LEN), ' ') > 0) then
length = index(msg(:MAX_LINE_LEN), ' ', back=.true.)
else
length = MAX_LINE_LEN
end if
write(*, '(*(g0))') msg(:length)
if (len(msg) > MAX_LINE_LEN) then
call print_msg(msg(length+1:))
end if
end subroutine print_msg
end program
Вывод
50, 25, 76, 38, 19, 58, 29, 88, 44, 22,
11, 34, 17, 52, 26, 13, 40, 20, 10, 5,
16, 8, 4, 2, 1,