File: string_93.f90

package info (click to toggle)
lfortran 0.59.0-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 56,736 kB
  • sloc: cpp: 168,052; f90: 74,272; python: 17,537; ansic: 7,705; yacc: 2,345; sh: 1,334; fortran: 895; makefile: 37; javascript: 15
file content (42 lines) | stat: -rw-r--r-- 1,121 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
program w1
  implicit none

  call notstring_test ()

contains

  subroutine notstring_test ()

    character(7), parameter :: notstring_dataa(7) =  &
        ["candy  ",   'x      ',   "not bad",   'bad    ', 'not    ',  &
         'is not ',   'no     ']
    character(10), parameter :: notstring_expected(7) =  &
        ['not candy ', 'not x     ', 'not bad   ', 'not bad   ', 'not       ',  &
         'not is not', 'not no    ']
    character(len (notstring_expected)) :: notstring_results(size (notstring_dataa))

    integer :: i

! notString
    ! The following line causes an 'Unhandled Exception'.
    notstring_results = [(notstring (notstring_dataa(i)), i=1, size (notstring_dataa))]
    print *, merge ('passed', 'failed',  &
        all (notstring_results == notstring_expected))

  end subroutine

  function notstring (str)
    character(*), intent(in) :: str
    character(:), allocatable :: notstring

    if (len (str) < 3) then
      notstring = 'not ' // str
    else if (str(1:3) /= 'not') then
      notstring = 'not ' // str
    else
      notstring = str
    end if

  end function

end program