OSDN Git Service

gcc/fortran:
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gfortran.dg / fseek.f90
1 ! { dg-do run }
2
3 PROGRAM test_fseek
4   INTEGER, PARAMETER :: SEEK_SET = 0, SEEK_CUR = 1, SEEK_END = 2, fd=10
5   INTEGER :: ierr = 0
6
7   ! expected position: 12, one leading blank + 10 + newline
8   WRITE(fd, *) "1234567890"
9   IF (FTELL(fd) /= 12) CALL abort()
10
11   ! move backward from current position
12   CALL FSEEK(fd, -12, SEEK_CUR, ierr)
13   IF (ierr /= 0 .OR. FTELL(fd) /= 0) CALL abort()
14
15   ! move to negative position (error)
16   CALL FSEEK(fd, -1, SEEK_SET, ierr)
17   IF (ierr == 0 .OR. FTELL(fd) /= 0) CALL abort()
18
19   ! move forward from end (12 + 10)
20   CALL FSEEK(fd, 10, SEEK_END, ierr)
21   IF (ierr /= 0 .OR. FTELL(fd) /= 22) CALL abort()
22
23   ! set position (0)
24   CALL FSEEK(fd, 0, SEEK_SET, ierr)
25   IF (ierr /= 0 .OR. FTELL(fd) /= 0) CALL abort()
26
27   ! move forward from current position
28   CALL FSEEK(fd, 5, SEEK_CUR, ierr)
29   IF (ierr /= 0 .OR. FTELL(fd) /= 5) CALL abort()
30
31   CALL FSEEK(fd, HUGE(0_1), SEEK_SET, ierr)
32   IF (ierr /= 0 .OR. FTELL(fd) /= HUGE(0_1)) CALL abort()
33
34   CALL FSEEK(fd, HUGE(0_2), SEEK_SET, ierr)
35   IF (ierr /= 0 .OR. FTELL(fd) /= HUGE(0_2)) CALL abort()
36
37   CALL FSEEK(fd, HUGE(0_4), SEEK_SET, ierr)
38   IF (ierr /= 0 .OR. FTELL(fd) /= HUGE(0_4)) CALL abort()
39   
40   CALL FSEEK(fd, -HUGE(0_4), SEEK_CUR, ierr)
41   IF (ierr /= 0 .OR. FTELL(fd) /= 0) CALL abort()
42 END PROGRAM
43