1! Copyright 2005-2018 ECMWF. 2! 3! This software is licensed under the terms of the Apache Licence Version 2.0 4! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. 5! 6! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by 7! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. 8 9integer function kind_of_size_t() 10 integer(2), dimension(2) :: x2 = (/1, 2/) 11 integer(4), dimension(2) :: x4 = (/1, 2/) 12 integer(8), dimension(2) :: x8 = (/1, 2/) 13 character(len=1) :: ret 14 15 kind_of_size_t=-1 16 17 call check_size_t(x2(1),x2(2),ret) 18 if (ret == 't') then 19 kind_of_size_t=2 20 return 21 endif 22 23 call check_size_t(x4(1),x4(2),ret) 24 if (ret == 't') then 25 kind_of_size_t=4 26 return 27 endif 28 29 call check_size_t(x8(1),x8(2),ret) 30 if (ret == 't') then 31 kind_of_size_t=8 32 return 33 endif 34 35end function kind_of_size_t 36 37integer function kind_of_long() 38 integer(2), dimension(2) :: x2 = (/1, 2/) 39 integer(4), dimension(2) :: x4 = (/1, 2/) 40 integer(8), dimension(2) :: x8 = (/1, 2/) 41 character(len=1) :: ret 42 43 kind_of_long=-1 44 45 call check_long(x2(1),x2(2),ret) 46 if (ret == 't') then 47 kind_of_long=2 48 return 49 endif 50 51 call check_long(x4(1),x4(2),ret) 52 if (ret == 't') then 53 kind_of_long=4 54 return 55 endif 56 57 call check_long(x8(1),x8(2),ret) 58 if (ret == 't') then 59 kind_of_long=8 60 return 61 endif 62 63end function kind_of_long 64 65integer function kind_of_int() 66 integer(2), dimension(2) :: x2 = (/1, 2/) 67 integer(4), dimension(2) :: x4 = (/1, 2/) 68 integer(8), dimension(2) :: x8 = (/1, 2/) 69 character(len=1) :: ret 70 71 kind_of_int=-1 72 73 call check_int(x2(1),x2(2),ret) 74 if (ret == 't') then 75 kind_of_int=2 76 return 77 endif 78 79 call check_int(x4(1),x4(2),ret) 80 if (ret == 't') then 81 kind_of_int=4 82 return 83 endif 84 85 call check_int(x8(1),x8(2),ret) 86 if (ret == 't') then 87 kind_of_int=8 88 return 89 endif 90 91end function kind_of_int 92 93integer function kind_of_float() 94 real(4), dimension(2) :: x4 = (/1., 2./) 95 real(8), dimension(2) :: x8 = (/1., 2./) 96 character(len=1) :: ret 97 98 kind_of_float=-1 99 100 call check_float(x4(1),x4(2),ret) 101 if (ret == 't') then 102 kind_of_float=4 103 return 104 endif 105 106 call check_float(x8(1),x8(2),ret) 107 if (ret == 't') then 108 kind_of_float=8 109 return 110 endif 111 112end function kind_of_float 113 114integer function kind_of_double() 115 real(4), dimension(2) :: real4 = (/1., 2./) 116 real(8), dimension(2) :: real8 = (/1., 2./) 117 character(len=1) :: ret 118 119 kind_of_double=-1 120 121 call check_double(real4(1),real4(2),ret) 122 if (ret == 't') then 123 kind_of_double=4 124 return 125 endif 126 127 call check_double(real8(1),real8(2),ret) 128 if (ret == 't') then 129 kind_of_double=8 130 return 131 endif 132 133end function kind_of_double 134 135program kind_h 136 integer :: size 137 integer, dimension(2) :: i 138 integer(kind=2), dimension(2) :: i2 139 integer(kind=4), dimension(2) :: i4 140 real(kind=4), dimension(2) :: r4 141 real(kind=8), dimension(2) :: r8 142 143 print *,"integer,public,parameter :: kindOfInt=",kind_of_int() 144 print *,"integer,public,parameter :: kindOfLong=",kind_of_long() 145 print *,"integer,public,parameter :: kindOfSize_t=",kind_of_size_t() 146 print *,"integer,public,parameter :: kindOfSize=",kind_of_size_t() 147 print *,"integer,public,parameter :: kindOfDouble=",kind_of_double() 148 print *,"integer,public,parameter :: kindOfFloat=",kind_of_float() 149 call f_sizeof(i(1),i(2),size) 150 print *,"integer,public,parameter :: sizeOfInteger=",size 151 call f_sizeof(i2(1),i2(2),size) 152 print *,"integer,public,parameter :: sizeOfInteger2=",size 153 call f_sizeof(i4(1),i4(2),size) 154 print *,"integer,public,parameter :: sizeOfInteger4=",size 155 call f_sizeof(r4(1),r4(2),size) 156 print *,"integer,public,parameter :: sizeOfReal4=",size 157 call f_sizeof(r8(1),r8(2),size) 158 print *,"integer,public,parameter :: sizeOfReal8=",size 159 160end program kind_h 161 162