libsim  Versione 7.1.7
example_list.F03

Sample program to demostrate the list* module. This modules port lists to fortran 2003.

1 program example_list
2 
3 use list_mix
4 use list_integer
5 use list_real
7 use kinds
8 
9 implicit none
10 type(integerlist) :: list_int
11 type(reallist) :: list_real
12 type(characterlist) :: list_char
13 type(mixlist) :: list_mix
14 
15 class(*),pointer :: val
16 integer values(10)
17 integer i,n
18 
19 type mytype
20  integer :: i
21  real :: r
22 end type mytype
23 type(mytype) :: ir=mytype(3,6.)
24 
25 type charmylen
26  character(len=10) :: char10
27 end type charmylen
28 type(charmylen) :: mychar
29 
30 
31  ! real list
32 call list_real%append(3.14)
33 call list_real%append(6.28)
34 print *,"display real list"
35 call list_real%display()
36 
37 !!$! do not work !!!
38 !!$! compiler bug ?
39 !!$ ! char fixed len (10) list
40 call list_char%append("hello world")
41 call list_char%append("bye bye baby")
42 print *,"display char list"
43 call list_char%display()
44 
45 
46  ! test integer list
47 do i=1, 10
48  call list_int%append(i)
49 enddo
50 print *,"display integer list"
51 call list_int%display()
52 print *
53 call list_int%rewind()
54 i = 1
55 do while(list_int%element())
56  values(i) = list_int%current()
57  call list_int%next()
58  i = i + 1
59 end do
60 print *,"display integer vector from list"
61 print *, values
62 
63 !more easy
64 values =list_int%toarray()
65 print *,"display integer vector from list with toarray"
66 print *, values
67 
68 ! reverse
69 call list_int%forward()
70 i = 1
71 do while(list_int%element())
72  values(i) = list_int%current()
73  call list_int%prev()
74  i = i + 1
75 end do
76 print *,"display inverse integer vector from list"
77 print *, values
78 
79 print *,"seek return status =", list_int%seek(3)
80 print *,"list index 3 =", list_int%current()
81 
82  ! test remove
83 print *,"delete(5) return status =", list_int%delete(5)
84 print *,"display integer vector with 5 removed"
85 call list_int%display()
86 ! reverse
87 print *,"display reverse integer vector with 5 removed"
88 call list_int%forward()
89 do while(list_int%element())
90  print*, "index:",list_int%currentindex()," value:",list_int%current()
91  call list_int%prev()
92 end do
93 
94 
95 print *,"delete(1) return status =", list_int%delete(1)
96 print *,"display integer vector with 1 removed"
97 call list_int%display()
98 
99 n=list_int%countelements()
100 print *,"number of list elements=",n
101 
102 print *,"delete(",n,")"
103 print *,"return status =", list_int%delete(n)
104 print *,"display integer vector with last removed"
105 call list_int%display()
106 
107 print *,"delete return status =", list_int%delete()
108 print *,"display integer vector with everithings removed"
109 call list_int%display()
110 
111  ! test mix list
112 do i=1, 10
113  call list_mix%append(i)
114 enddo
115 call list_mix%append(1.23)
116 call list_mix%append(4d0)
117 call list_mix%append(ir)
118  ! this do not work !
119  ! compiler bug ???
120  ! call list_mix%append("test1")
121  ! call list_mix%append("test2")
122 
123  ! but this should work
124 
125 mychar%char10="ciao ciao"
126 call list_mix%append(mychar)
127 
128 print *,"display mix list"
129 call list_mix%display()
130 
131 print *,"print mix list with cast"
132 call list_mix%rewind()
133 do while (list_mix%element())
134 
135  val => list_mix%current()
136  select type (x => val)
137  type is (integer)
138  print *,x
139  type is (real)
140  print *,x
141  type is (doubleprecision)
142  print *,x
143  type is (integer(kind=int_b))
144  print *,x
145  type is (character(*))
146  print *,x
147  type is (mytype)
148  print *,x%i,x%r
149  type is (charmylen)
150  print *,x%char10
151  end select
152 
153  call list_mix%next()
154 
155 end do
156 
157 end program example_list
Definition of constants to be used for declaring variables of a desired type.
Definition: kinds.F90:251
class to use character lists in fortran 2003 WARNING !!!! CHAR LEN IS FIXED TO listcharmaxlen.
class to use lists in fortran 2003.
class to use lists in fortran 2003.
Definition: list_mix.F03:58
class to use lists in fortran 2003.
Definition: list_real.F03:58

Generated with Doxygen.