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