OSDN Git Service

PR debug/43329
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gfortran.dg / trim_1.f90
1 ! { dg-do run }
2
3 ! Torture-test TRIM and LEN_TRIM for correctness.
4
5
6 ! Given a total string length and a trimmed length, construct an
7 ! appropriate string and check gfortran gets it right.
8
9 SUBROUTINE check_trim (full_len, trimmed_len)
10   IMPLICIT NONE
11   INTEGER, INTENT(IN) :: full_len, trimmed_len
12   CHARACTER(LEN=full_len) :: string
13
14   string = ""
15   IF (trimmed_len > 0) THEN
16     string(trimmed_len:trimmed_len) = "x"
17   END IF
18
19   IF (LEN (string) /= full_len &
20       .OR. LEN_TRIM (string) /= trimmed_len &
21       .OR. LEN (TRIM (string)) /= trimmed_len &
22       .OR. TRIM (string) /= string (1:trimmed_len)) THEN
23     PRINT *, full_len, trimmed_len
24     PRINT *, LEN (string), LEN_TRIM (string)
25     CALL abort ()
26   END IF
27 END SUBROUTINE check_trim
28
29
30 ! The main program, check with various combinations.
31
32 PROGRAM main
33   IMPLICIT NONE
34   INTEGER :: i, j
35
36   DO i = 0, 20
37     DO j = 0, i
38       CALL check_trim (i, j)
39     END DO
40   END DO
41 END PROGRAM main