File: do_loop_08.f90

package info (click to toggle)
lfortran 0.61.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 61,892 kB
  • sloc: cpp: 181,767; f90: 92,175; python: 17,616; ansic: 10,170; yacc: 2,377; sh: 1,444; fortran: 892; makefile: 38; javascript: 15
file content (35 lines) | stat: -rw-r--r-- 786 bytes parent folder | download | duplicates (2)
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
program do_loop_08
    implicit none

    type :: string_t
        character(len=:), allocatable :: string_
    end type

    type(string_t) :: body(1,2)
    type(string_t), allocatable :: tbl(:)

    body(1,1)%string_ = "a"
    body(1,2)%string_ = "b"

    tbl = make_table(body)

    if (size(tbl) /= 3) error stop
    if (tbl(1)%string_ /= "x") error stop
    if (tbl(2)%string_ /= "x") error stop
    if (tbl(3)%string_ /= "x") error stop

    print *, "ok"

contains

    function make_table(body_cells) result(lines)
        type(string_t), intent(in) :: body_cells(:,:)
        type(string_t) :: lines(size(body_cells,1) + rank(body_cells))
        integer :: row

        do row = 1, size(lines)
            lines(row)%string_ = "x"
        end do
    end function

end program