Sample program to demostrate the list* module.
Sample program to demostrate the list* module. This modules port lists to fortran 2003.
1program example_list
2
8
9implicit none
10type(integerlist) :: list_int
11type(reallist) :: list_real
12type(characterlist) :: list_char
13type(mixlist) :: list_mix
14
15class(*),pointer :: val
16integer values(10)
17integer i,n
18
19type mytype
20 integer :: i
21 real :: r
22end type mytype
23type(mytype) :: ir=mytype(3,6.)
24
25type charmylen
26 character(len=10) :: char10
27end type charmylen
28type(charmylen) :: mychar
29
30
31
34print *,"display real list"
36
37
38
39
40call list_char%append("hello world")
41call list_char%append("bye bye baby")
42print *,"display char list"
43call list_char%display()
44
45
46
47do i=1, 10
48 call list_int%append(i)
49enddo
50print *,"display integer list"
51call list_int%display()
52print *
53call list_int%rewind()
54i = 1
55do while(list_int%element())
56 values(i) = list_int%current()
57 call list_int%next()
58 i = i + 1
59end do
60print *,"display integer vector from list"
61print *, values
62
63
64values =list_int%toarray()
65print *,"display integer vector from list with toarray"
66print *, values
67
68
69call list_int%forward()
70i = 1
71do while(list_int%element())
72 values(i) = list_int%current()
73 call list_int%prev()
74 i = i + 1
75end do
76print *,"display inverse integer vector from list"
77print *, values
78
79print *,"seek return status =", list_int%seek(3)
80print *,"list index 3 =", list_int%current()
81
82
83print *,"delete(5) return status =", list_int%delete(5)
84print *,"display integer vector with 5 removed"
85call list_int%display()
86
87print *,"display reverse integer vector with 5 removed"
88call list_int%forward()
89do while(list_int%element())
90 print*, "index:",list_int%currentindex()," value:",list_int%current()
91 call list_int%prev()
92end do
93
94
95print *,"delete(1) return status =", list_int%delete(1)
96print *,"display integer vector with 1 removed"
97call list_int%display()
98
99n=list_int%countelements()
100print *,"number of list elements=",n
101
102print *,"delete(",n,")"
103print *,"return status =", list_int%delete(n)
104print *,"display integer vector with last removed"
105call list_int%display()
106
107print *,"delete return status =", list_int%delete()
108print *,"display integer vector with everithings removed"
109call list_int%display()
110
111
112do i=1, 10
114enddo
118
119
120
121
122
123
124
125mychar%char10="ciao ciao"
127
128print *,"display mix list"
130
131print *,"print mix list with cast"
134
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
154
155end do
156
157end program example_list
Definition of constants to be used for declaring variables of a desired type.
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.
class to use lists in fortran 2003.