4 INTEGER, PARAMETER :: SEEK_SET = 0, SEEK_CUR = 1, SEEK_END = 2, fd=10
7 ! expected position: 12, one leading blank + 10 + newline
8 WRITE(fd, *) "1234567890"
9 IF (FTELL(fd) /= 12) CALL abort()
11 ! move backward from current position
12 CALL FSEEK(fd, -12, SEEK_CUR, ierr)
13 IF (ierr /= 0 .OR. FTELL(fd) /= 0) CALL abort()
15 ! move to negative position (error)
16 CALL FSEEK(fd, -1, SEEK_SET, ierr)
17 IF (ierr == 0 .OR. FTELL(fd) /= 0) CALL abort()
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()
24 CALL FSEEK(fd, 0, SEEK_SET, ierr)
25 IF (ierr /= 0 .OR. FTELL(fd) /= 0) CALL abort()
27 ! move forward from current position
28 CALL FSEEK(fd, 5, SEEK_CUR, ierr)
29 IF (ierr /= 0 .OR. FTELL(fd) /= 5) CALL abort()
31 CALL FSEEK(fd, HUGE(0_1), SEEK_SET, ierr)
32 IF (ierr /= 0 .OR. FTELL(fd) /= HUGE(0_1)) CALL abort()
34 CALL FSEEK(fd, HUGE(0_2), SEEK_SET, ierr)
35 IF (ierr /= 0 .OR. FTELL(fd) /= HUGE(0_2)) CALL abort()
37 CALL FSEEK(fd, HUGE(0_4), SEEK_SET, ierr)
38 IF (ierr /= 0 .OR. FTELL(fd) /= HUGE(0_4)) CALL abort()
40 CALL FSEEK(fd, -HUGE(0_4), SEEK_CUR, ierr)
41 IF (ierr /= 0 .OR. FTELL(fd) /= 0) CALL abort()