0

次のソースに問題があります。gfortran でコンパイルすると、正しく動作せず、2 つのエラー メッセージが表示されます。この問題を解決するにはどうすればよいですか? どんなコメントでも非常に役に立ちます。前もって感謝します。

  program driver
  integer i,ln,n,e,count,x,a,b,total
  character driverid*12,var*12,ch*12
  parameter (n=720321)

c パラメータ (n=55062) 次元 var(n),a(n),b(n)

  write(*,*) 'input run id(text)'
  read(*,55) driverid

55フォーマット(a)

  ln=index(driverid,' ')-1
  open(6,file=driverid(1:ln)//'.out',form='formatted'
 +,status='unknown')
  open(1,file=driverid(1:ln)//'.txt',status='old')


  do i=1,2
  read(1,*)
  end do

  read(1,*) (var(i),i=1,n)

  close(1)


  total=0      
  count=1
  do i=1,n
  b(i)=0
  read(var(i),*,iostat=e) x    
  if (e .eq. 0) then
    a(count)=x
    count=count+1
  else
    ln=index(var(i),' ')-1
    if (var(i)(ln-1:ln-1) .eq. 'r') then
     var(i)=var(i)(1:ln-2)
    else
     var(i)=var(i)(1:ln-1)
    end if
    read(var(i),'(i)') b(count-1)
  end if
  end do

  do i=1,count
   total=total+1+b(i)
  end do


  do i=1,total
   write(6,'(10i)') (a(i),j=1,b(i))
  end do

  close(6)

  end 

エラーメッセージは次のとおりです

$ gfortran driver.f driver.f:43.23:

    read(var(i),'(i)') b(count-1)
                   1

エラー: (1) driver.f:53.20 のフォーマット文字列には負でない幅が必要です:

   write(6,'(10i)') (a(i),j=1,b(i))
                1

エラー: (1) のフォーマット文字列には負でない幅が必要です

4

1 に答える 1

1

整数の形式を指定するときは、フィールド幅を指定する必要があります。柔軟にしたい場合は、ゼロに設定できます。

write(6, "(10I0)") ...
于 2013-02-26T09:49:03.310 に答える