c     Main part
      PROGRAM main

      COMMON /input/ Xmin, Xmax, Xstep, Ymin, Ymax, Ystep

c     PRINT *, rad

      CALL inputf
      CALL outputf
      END

c     Input values from file
      SUBROUTINE inputf

      COMMON /input/ Xmin, Xmax, Xstep, Ymin, Ymax, Ystep

      OPEN (1, FILE='input.txt', ACTION='READ', STATUS='OLD', ERR=1)
      READ (1, *, ERR=1) Xmin, Xmax, Xstep, Ymin, Ymax, Ystep
      CLOSE (1)
      IF (Xmin .GT. Xmax .OR. Ymin .GT. Ymax) GOTO 1
      GOTO 2
         
    1 PAUSE 'Error: please check the input file'
      STOP
    2 END

c     Write cosec(x+y) result in output file
      SUBROUTINE outputf

      COMMON /input/ Xmin, Xmax, Xstep, Ymin, Ymax, Ystep

      PARAMETER (rad = 3.1415927 / 180)
      COSEC(t) = 1 / SIN(t * rad)

      OPEN (2, FILE='output.txt', ACTION='WRITE', ERR=3)

c     Peredelat'
      OPEN (5, FILE='temp.txt', ACTION='WRITE', ERR=3)
c temp
      IF(MOD((Xmax - Xmin),Xstep).EQ.0)THEN
        iXparts = (Xmax - Xmin) / Xstep + 1
      ELSE
        iXparts = (Xmax - Xmin) / Xstep + 2
      END IF

      IF(MOD((Ymax - Ymin),Ystep).EQ.0)THEN
        iYparts = (Ymax - Ymin) / Ystep + 1
      ELSE
        iYparts = (Ymax - Ymin) / Ystep + 2
      END IF
c     Peredelat'

c     Draw the table top
      WRITE (2, 13) '|     y\x    '
      ri = Xmin
      DO i = 0, iXparts - 2
         WRITE (2, 10) ri
         ri = ri + Xstep
      END DO
      WRITE (2, 10) Xmax
      WRITE (2, 14)
      
      DO i = 0, iXparts
        WRITE (2, 12)
      END DO
      WRITE (2, 14)
      
      ry = Ymin
      DO i = 0, iYparts - 2
        rx = Xmin
        WRITE(2, 10) ry
c temp TEST 2!!!!!!!!
c        WRITE (5, 22) ry
c        WRITE (5, 22) rx
c        WRITE (5, 22) rx + ry
c        WRITE (5, 14)
c temp
        DO j = 0, iXparts - 2
c temp
        WRITE (5, 22) ry
        WRITE (5, 22) rx
        WRITE (5, 22) rx + ry
        WRITE (5, 14)
   22   FORMAT (F12.7' '\)
c temp   
          IF(MOD((rx + ry), 180.0) .EQ. 0) THEN
            WRITE (2, 15) 'undefined'
          ELSE
            WRITE (2, 10) COSEC(rx + ry)
          END IF
          rx = rx + Xstep
        END DO
        IF(MOD((ry + Xmax), 180.0) .EQ. 0) THEN
          WRITE (2, 15) 'undefined'
        ELSE
          WRITE (2, 10) COSEC(ry + Xmax)
        END IF
        WRITE (2, 14)
        ry = ry + Ystep
        DO j = 0, iXparts
          WRITE (2, 12)
        END DO
        WRITE (2, 14)
      END DO
      
      WRITE(2, 10) Ymax
      rx = Xmin
        DO i = 0, iXparts - 2
          IF(MOD((rx + Ymax), 180.0) .EQ. 0) THEN
            WRITE(2, 15) 'undefined'
          ELSE
            WRITE(2, 10) COSEC(rx + Ymax)
          rx = rx + Xstep
          END IF
        END DO
      IF(MOD((Xmax + Ymax), 180.0) .EQ. 0) THEN
        WRITE(2, 15) 'undefined'
      ELSE
        WRITE (2, 10) COSEC(Xmax + Ymax)
      END IF
      WRITE (2, 14)

      GOTO 4
    3 PAUSE 'Error: please check the output file'
      STOP

   10 FORMAT ('|'E11.4' '\)
   11 FORMAT ('|'F11.4' '\)
   12 FORMAT ('|'12('—')\)
   13 FORMAT (A\)
   14 FORMAT ('|'1x)
   15 FORMAT ('|  'A9' '\)
    4 END