1! { dg-do run } 2! { dg-options "-fbackslash" } 3 4 character(kind=1,len=20) :: s1 5 character(kind=4,len=20) :: s4 6 7 call test_adjust1 (" foo bar ", 4_" foo bar ") 8 s1 = " foo bar " ; s4 = 4_" foo bar " 9 call test_adjust2 (s1, s4) 10 11 call test_adjust1 (" foo bar \xFF", 4_" foo bar \xFF") 12 s1 = " foo bar \xFF" ; s4 = 4_" foo bar \xFF" 13 call test_adjust2 (s1, s4) 14 15 call test_adjust1 ("\0 foo bar \xFF", 4_"\0 foo bar \xFF") 16 s1 = "\0 foo bar \xFF" ; s4 = 4_"\0 foo bar \xFF" 17 call test_adjust2 (s1, s4) 18 19 s4 = "\0 foo bar \xFF" 20 if (adjustl (s4) /= adjustl (4_"\0 foo bar \xFF ")) call abort 21 if (adjustr (s4) /= adjustr (4_"\0 foo bar \xFF ")) call abort 22 23 s4 = " \0 foo bar \xFF" 24 if (adjustl (s4) /= adjustl (4_" \0 foo bar \xFF ")) call abort 25 if (adjustr (s4) /= adjustr (4_" \0 foo bar \xFF ")) call abort 26 27 s4 = 4_" \U12345678\xeD bar \ufd30" 28 if (adjustl (s4) /= & 29 adjustl (4_" \U12345678\xeD bar \ufd30 ")) call abort 30 if (adjustr (s4) /= & 31 adjustr (4_" \U12345678\xeD bar \ufd30 ")) call abort 32 33contains 34 35 subroutine test_adjust1 (s1, s4) 36 37 character(kind=1,len=*) :: s1 38 character(kind=4,len=*) :: s4 39 40 character(kind=1,len=len(s4)) :: t1 41 character(kind=4,len=len(s1)) :: t4 42 43 if (len(s1) /= len(s4)) call abort 44 if (len(t1) /= len(t4)) call abort 45 46 if (len_trim(s1) /= len_trim (s4)) call abort 47 48 t1 = adjustl (s4) 49 t4 = adjustl (s1) 50 if (t1 /= adjustl (s1)) call abort 51 if (t4 /= adjustl (s4)) call abort 52 if (len_trim (t1) /= len_trim (t4)) call abort 53 if (len_trim (adjustl (s1)) /= len_trim (t4)) call abort 54 if (len_trim (adjustl (s4)) /= len_trim (t1)) call abort 55 56 if (len_trim (t1) /= len (trim (t1))) call abort 57 if (len_trim (s1) /= len (trim (s1))) call abort 58 if (len_trim (t4) /= len (trim (t4))) call abort 59 if (len_trim (s4) /= len (trim (s4))) call abort 60 61 t1 = adjustr (s4) 62 t4 = adjustr (s1) 63 if (t1 /= adjustr (s1)) call abort 64 if (t4 /= adjustr (s4)) call abort 65 if (len_trim (t1) /= len_trim (t4)) call abort 66 if (len_trim (adjustr (s1)) /= len_trim (t4)) call abort 67 if (len_trim (adjustr (s4)) /= len_trim (t1)) call abort 68 if (len (t1) /= len_trim (t1)) call abort 69 if (len (t4) /= len_trim (t4)) call abort 70 71 if (len_trim (t1) /= len (trim (t1))) call abort 72 if (len_trim (s1) /= len (trim (s1))) call abort 73 if (len_trim (t4) /= len (trim (t4))) call abort 74 if (len_trim (s4) /= len (trim (s4))) call abort 75 76 end subroutine test_adjust1 77 78 subroutine test_adjust2 (s1, s4) 79 80 character(kind=1,len=20) :: s1 81 character(kind=4,len=20) :: s4 82 83 character(kind=1,len=len(s4)) :: t1 84 character(kind=4,len=len(s1)) :: t4 85 86 if (len(s1) /= len(s4)) call abort 87 if (len(t1) /= len(t4)) call abort 88 89 if (len_trim(s1) /= len_trim (s4)) call abort 90 91 t1 = adjustl (s4) 92 t4 = adjustl (s1) 93 if (t1 /= adjustl (s1)) call abort 94 if (t4 /= adjustl (s4)) call abort 95 if (len_trim (t1) /= len_trim (t4)) call abort 96 if (len_trim (adjustl (s1)) /= len_trim (t4)) call abort 97 if (len_trim (adjustl (s4)) /= len_trim (t1)) call abort 98 99 if (len_trim (t1) /= len (trim (t1))) call abort 100 if (len_trim (s1) /= len (trim (s1))) call abort 101 if (len_trim (t4) /= len (trim (t4))) call abort 102 if (len_trim (s4) /= len (trim (s4))) call abort 103 104 t1 = adjustr (s4) 105 t4 = adjustr (s1) 106 if (t1 /= adjustr (s1)) call abort 107 if (t4 /= adjustr (s4)) call abort 108 if (len_trim (t1) /= len_trim (t4)) call abort 109 if (len_trim (adjustr (s1)) /= len_trim (t4)) call abort 110 if (len_trim (adjustr (s4)) /= len_trim (t1)) call abort 111 if (len (t1) /= len_trim (t1)) call abort 112 if (len (t4) /= len_trim (t4)) call abort 113 114 if (len_trim (t1) /= len (trim (t1))) call abort 115 if (len_trim (s1) /= len (trim (s1))) call abort 116 if (len_trim (t4) /= len (trim (t4))) call abort 117 if (len_trim (s4) /= len (trim (s4))) call abort 118 119 end subroutine test_adjust2 120 121end 122