1program tests
2
3  use tst_utils
4
5  implicit none
6
7  type(variable_t) :: va , vb
8  real(sp) :: a, b(2), c(2,2)
9  real(sp), pointer :: pa =>null(), pb(:)=>null(), pc(:,:)=>null()
10  logical :: success
11
12#include "variable_declarations_.inc"
13
14  a      = 1.0_sp
15  b(:)   = 2._sp
16  c(:,:) = 3._sp
17
18  ! do 'va = a'
19  call assign(va,a)
20  ps0 = transfer(va%enc,ps0)
21  print '(a2,tr1,f4.2)',va%t,ps0%p
22  ! associate pa with va 'pa => va'
23  call associate(pa,va,success=success)
24  if ( success ) then
25     print *,'Success: ',pa
26  else
27     stop 9
28  end if
29  if ( associatd(pa,va) ) then
30     print *,'Associated: ',pa
31  else
32     stop 9
33  end if
34  if ( .not. associatd(pb,va) ) then
35     print *,'Correctly non-associated'
36  else
37     stop 9
38  end if
39
40  call assign(va,b)
41  call assign(b,va)
42  ps1 = transfer(va%enc,ps1)
43  print '(a2,2(tr1,f4.2))',va%t,ps1%p
44  if ( any(b /= ps1%p) ) stop 9
45
46  call assign(va,c)
47  ps2 = transfer(va%enc,ps2)
48  print '(a2,4(tr1,f4.2))',va%t,ps2%p
49  if ( any(c /= ps2%p) ) stop 9
50
51  call assign(va,1)
52  pi0 = transfer(va%enc,pi0)
53  print '(a2,tr1,i0)',va%t,pi0%p
54  if ( 1 /= pi0%p ) stop 9
55
56  call delete(va)
57
58end program tests
59