Ошибка GFORTRAN: неотрицательная ширина, требуемая в строке формата в (1)

StackOverflow https://stackoverflow.com/questions/5327205

  •  25-10-2019
  •  | 
  •  

Вопрос

Рассматриваемый код таково:

  subroutine PG_TLab_Write(c30,r,d)
  implicit none
  character*30 c30,leftjust
  real*4 r
  integer*4 d,k
  if (d.eq.0) then
    write(c30,'(i30)') nint(r)
  elseif (d.gt.0) then
    write(c30,'(f30.<d>)') r
  else
    k = abs(d)
    write(c30,'(1pe30.<k>') r
  endif
  c30 = leftjust(c30)
  if (d.lt.0) then
    k = index(c30,'E')
    c30 = c30(1:k-1)//'x10\\u'//c30(k+1:24)
  endif
  return
  end

Это действительно старый (плохой) код, и я не программист Фортрана. Ошибка, которую он дает, является следующей:

Error: Nonnegative width required in format string at (1) pg-util.f:561.26:

Это дает ошибки в последних 2 операторах записи в сегменте.

У меня вопрос, как мне сделать D и K без знака целых числа, чтобы это собрало?

Это было полезно?

Решение

Вы не можете сделать D и K без подписи, так как у Фортрана нет непознанных целых чисел.

Я предполагаю, что предполагая, что строка 561 в сообщении об ошибке относится к следующей линии в разложенной вами фрагменте, заключается в том, что проблема в выражении формата переменной (u003Ck> вещь). Выражения переменных формата являются расширением стандарта, который не поддерживается GFORTRAN. Увидеть Раздел о выражениях формата переменных в руководстве GFORTRAN Для примера, как сделать эквивалентную вещь стандартной соответствующей способностью.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top