codice:
	
      program giro_forze
      
      implicit none
      integer i, j
      
      double precision acc(12733), ang(12733)
      double precision acci, angi
      double precision mod, theta
      double precision r(921,5)
      double precision mod1, mod2, mod3, mod4
      double precision x1, x2, x3, x4
      double precision y1, y2, y3, y4
      double precision z1, z2, z3, z4
      double precision theta1, theta2
      double precision xm1, xm2
      double precision ym1, ym2
      double precision zm1, zm2
      double precision x, y, z
      
      open(21,file='01 - Dati Giro.txt',status='old')
      
        read(21,*)
        do i=1,12733
          read(21,*)acc(i),ang(i)
        end do
      open(22,file='02 - rette carico ant 04.txt',status='old')
      
        do i=1,921
          read(22,*)(r(i,j),j=1,5)
        end do
      open(23,file='04 - ciclo carico ant 04.txt',status='unknown')
23    format(1x,i8,3(f12.3,3x))
      
      do i=1,12733
      
        acci=acc(i)
        angi=ang(i)
        
        if (angi.lt.0.0d+00) then
          theta=angi+1.8d+00
          mod=-acci
        else
          theta=angi
          mod=acci
        end if
        
        j=1
100     continue
        if ((r(j,1).le.theta).and.((r(j,1)+5.0d+00).gt.theta)) then
          if  ((r(j,2).le.mod).and.(r(j+1,2).gt.mod)) then
            x1=r(j,3)
            x2=r(j+1,3)
            y1=r(j,4)
            y2=r(j+1,4)
            z1=r(j,5)
            z2=r(j+1,5)
            mod1=r(j,2)
            mod2=r(j+1,2)
            theta1=r(j,1)
          else
            j=j+1
            go to 100
          end if
        else
          j=j+1
          go to 100
        end if
        
        j=24
200     continue
        if (((r(j,1)-5.0d+00).le.theta).and.(r(j,1).gt.theta)) then
          if  ((r(j,2).le.mod).and.(r(j+1,2).gt.mod)) then
            x3=r(j,3)
            x4=r(j+1,3)
            y3=r(j,4)
            y4=r(j+1,4)
            z3=r(j,5)
            z4=r(j+1,5)
            mod3=r(j,2)
            mod4=r(j+1,2)
            theta2=r(j,1)
          else
            j=j+1
            go to 200
          end if
        else
          j=j+1
          go to 200
        end if
        xm1=x1+(x2-x1)/(mod2-mod1)*(mod-mod1)
        xm2=x3+(x4-x3)/(mod4-mod3)*(mod-mod3)
        x=xm1+(xm2-xm1)/(theta2-theta1)*(theta-theta1)
        
        ym1=y1+(y2-y1)/(mod2-mod1)*(mod-mod1)
        ym2=y3+(y4-y3)/(mod4-mod3)*(mod-mod3)
        y=ym1+(ym2-ym1)/(theta2-theta1)*(theta-theta1)
        
        zm1=z1+(z2-z1)/(mod2-mod1)*(mod-mod1)
        zm2=z3+(z4-z3)/(mod4-mod3)*(mod-mod3)
        z=zm1+(zm2-zm1)/(theta2-theta1)*(theta-theta1)
        write(23,23)i,x,y,z
      end do
      close(21)
      close(22)
      close(23)
      stop
      end
 
In questa versione il file smette di essere stampato per i=551, mentre nella versione con subroutine (che ha molti più file di input, output e continui richiami di 3 subroutine) tutti i file di output si bloccano ad i=372. La riga di output 552 (o 373) riportano un valore troncato oltre il quale non avviene più la stampa dei dati.