summaryrefslogtreecommitdiffstats
path: root/fortran/src/H5test_kind.f90
diff options
context:
space:
mode:
authorScot Breitenfeld <brtnfld@hdfgroup.org>2011-09-27 05:02:38 (GMT)
committerScot Breitenfeld <brtnfld@hdfgroup.org>2011-09-27 05:02:38 (GMT)
commit4af3cd2b7a89b2eeed05d5ec0b0641ca7c2545bc (patch)
tree01f90619962c447280074bb8d10ae5c7b2b9acbc /fortran/src/H5test_kind.f90
parenta07004c825e3a4e4b61269fd3e5f2b57092f073c (diff)
downloadhdf5-4af3cd2b7a89b2eeed05d5ec0b0641ca7c2545bc.zip
hdf5-4af3cd2b7a89b2eeed05d5ec0b0641ca7c2545bc.tar.gz
hdf5-4af3cd2b7a89b2eeed05d5ec0b0641ca7c2545bc.tar.bz2
[svn-r21421] Merged the Fortran 2003 changes from the trunk into the 1.8 branch, used:
svn merge -r 20506:21414 https://svn.hdfgroup.uiuc.edu/hdf5/trunk/fortran Tested: jam (gnu, intel, pgi compilers) Also merged effected non-Fortran files: svn merge -r21247:r21248 https://svn.hdfgroup.uiuc.edu/hdf5/trunk/src/libhdf5.settings.in
Diffstat (limited to 'fortran/src/H5test_kind.f90')
-rw-r--r--fortran/src/H5test_kind.f90119
1 files changed, 73 insertions, 46 deletions
diff --git a/fortran/src/H5test_kind.f90 b/fortran/src/H5test_kind.f90
index bdf5f5b..3182853 100644
--- a/fortran/src/H5test_kind.f90
+++ b/fortran/src/H5test_kind.f90
@@ -1,9 +1,12 @@
-!****h* fortran/src/H5test_kind.f90
+!****p* Program/H5test_kind
!
! NAME
-! H5test_kind
+! Executable: H5test_kind
!
-! FUNCTION
+! FILE
+! fortran/src/H5test_kind.f90
+!
+! PURPOSE
! This stand alone program is used at build time to generate the program
! H5fortran_detect.f90. It cycles through all the available KIND parameters for
! integers and reals. The appropriate program and subroutines are then generated
@@ -19,20 +22,20 @@
! condition is set in the configure variable "FORTRAN_HAVE_SIZEOF".
!
! COPYRIGHT
-! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-! Copyright by The HDF Group. *
-! Copyright by the Board of Trustees of the University of Illinois. *
-! All rights reserved. *
-! *
-! This file is part of HDF5. The full HDF5 copyright notice, including *
-! terms governing use, modification, and redistribution, is contained in *
-! the files COPYING and Copyright.html. COPYING can be found at the root *
-! of the source code distribution tree; Copyright.html can be found at the *
-! root level of an installed copy of the electronic HDF5 document set and *
-! is linked from the top-level documents page. It can also be found at *
-! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
-! access to either file, you may request a copy from help@hdfgroup.org. *
-! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+! Copyright by The HDF Group. *
+! Copyright by the Board of Trustees of the University of Illinois. *
+! All rights reserved. *
+! *
+! This file is part of HDF5. The full HDF5 copyright notice, including *
+! terms governing use, modification, and redistribution, is contained in *
+! the files COPYING and Copyright.html. COPYING can be found at the root *
+! of the source code distribution tree; Copyright.html can be found at the *
+! root level of an installed copy of the electronic HDF5 document set and *
+! is linked from the top-level documents page. It can also be found at *
+! http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
+! access to either file, you may request a copy from help@hdfgroup.org. *
+! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!
! AUTHOR
! Elena Pourma
@@ -42,7 +45,7 @@
PROGRAM test_kind
IMPLICIT NONE
INTEGER :: i, j, ii, ir, last, ikind_numbers(10), rkind_numbers(10)
- INTEGER :: jr, jd
+ INTEGER :: ji, jr, jd
last = -1
ii = 0
j = SELECTED_INT_KIND(18)
@@ -72,15 +75,15 @@ PROGRAM test_kind
ENDIF
ENDDO
-! Generate program information:
+! Generate program information:
WRITE(*,'(40(A,/))') &
-'!****h* fortran/src/H5fortran_detect.f90',&
+'!****h* ROBODoc/H5fortran_detect.f90',&
'!',&
'! NAME',&
'! H5fortran_detect',&
'! ',&
-'! FUNCTION',&
+'! PURPOSE',&
'! This stand alone program is used at build time to generate the header file',&
'! H5fort_type_defines.h. The source code itself was automatically generated by',&
'! the program H5test_kind.f90',&
@@ -110,12 +113,12 @@ WRITE(*,'(40(A,/))') &
'!',&
'!*****'
-! Generate a program
+! Generate a program
WRITE(*,*) "PROGRAM int_kind"
WRITE(*,*) "WRITE(*,*) "" /*generating header file*/ """
- j = 0
- WRITE(*, "("" CALL i"", i2.2,""()"")") j
+ ji = 0
+ WRITE(*, "("" CALL i"", i2.2,""()"")") ji
jr = 0
WRITE(*, "("" CALL r"", i2.2,""()"")") jr
jd = 0
@@ -130,62 +133,76 @@ WRITE(*,'(40(A,/))') &
ENDDO
WRITE(*,*) "END PROGRAM int_kind"
j = 0
+ ji = KIND(1)
WRITE(*, "("" SUBROUTINE i"", i2.2,""()"")") j
WRITE(*,*)" IMPLICIT NONE"
WRITE(*,*)" INTEGER :: a = 0"
WRITE(*,*)" INTEGER :: a_size"
+ WRITE(*,*)" CHARACTER(LEN=2) :: jchr2"
WRITE(*,*)" a_size = BIT_SIZE(a)"
WRITE(*,*)" IF (a_size .EQ. 8) THEN"
- WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_NATIVE_1"" "
+ WRITE(*,*)" WRITE(jchr2,'(I2)')",ji
+ WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_NATIVE_1_KIND "'//"//ADJUSTL(jchr2)"
WRITE(*,*)" endif"
WRITE(*,*)" IF (a_size .EQ. 16) THEN"
- WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_NATIVE_2"" "
+ WRITE(*,*)" WRITE(jchr2,'(I2)')",ji
+ WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_NATIVE_2_KIND "'//"//ADJUSTL(jchr2)"
WRITE(*,*)" endif"
WRITE(*,*)" IF (a_size .EQ. 32) THEN"
- WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_NATIVE_4"" "
+ WRITE(*,*)" WRITE(jchr2,'(I2)')",ji
+ WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_NATIVE_4_KIND "'//"//ADJUSTL(jchr2)"
WRITE(*,*)" ENDIF"
WRITE(*,*)" IF (a_size .EQ. 64) THEN"
- WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_NATIVE_8"" "
+ WRITE(*,*)" WRITE(jchr2,'(I2)')",ji
+ WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_NATIVE_8_KIND "'//"//ADJUSTL(jchr2)"
WRITE(*,*)" ENDIF"
WRITE(*,*)" IF (a_size .EQ. 128) THEN"
- WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_NATIVE_16"" "
+ WRITE(*,*)" WRITE(jchr2,'(I2)')",ji
+ WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_NATIVE_16_KIND "'//"//ADJUSTL(jchr2)"
WRITE(*,*)" ENDIF"
WRITE(*,*)" RETURN"
WRITE(*,*)"END SUBROUTINE"
- jr = 0
+ jr = KIND(1.0)
WRITE(*, "("" SUBROUTINE r"", i2.2,""()"")") j
WRITE(*,*)" IMPLICIT NONE"
WRITE(*,*)" REAL :: b(32)"
WRITE(*,*)" INTEGER :: a(1)"
WRITE(*,*)" INTEGER :: a_size"
WRITE(*,*)" INTEGER :: real_size"
+ WRITE(*,*)" CHARACTER(LEN=2) :: jchr2"
WRITE(*,*)" a_size = BIT_SIZE(a(1)) ! Size in bits for integer"
WRITE(*,*)" real_size = (SIZE(TRANSFER(b,a))*a_size)/SIZE(b)"
WRITE(*,*)" IF (real_size .EQ. 32) THEN"
- WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_REAL_NATIVE_4"" "
+ WRITE(*,*)" WRITE(jchr2,'(I2)')",jr
+ WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_REAL_NATIVE_4_KIND "'//"//ADJUSTL(jchr2)"
WRITE(*,*)" ENDIF"
WRITE(*,*)" IF (real_size .EQ. 64) THEN"
- WRITE(*,*)" write(*,*) ""#define H5_FORTRAN_HAS_REAL_NATIVE_8"" "
- WRITE(*,*)" endif"
+ WRITE(*,*)" WRITE(jchr2,'(I2)')",jr
+ WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_REAL_NATIVE_8_KIND "'//"//ADJUSTL(jchr2)"
+ WRITE(*,*)" ENDIF"
WRITE(*,*)" IF (real_size .EQ. 128) THEN"
- WRITE(*,*)" write(*,*) ""#define H5_FORTRAN_HAS_REAL_NATIVE_16"" "
+ WRITE(*,*)" WRITE(jchr2,'(I2)')",jr
+ WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_REAL_NATIVE_16_KIND "'//"//ADJUSTL(jchr2)"
WRITE(*,*)" ENDIF"
WRITE(*,*)" RETURN"
WRITE(*,*)"END SUBROUTINE"
- jd = 0
- WRITE(*, "("" SUBROUTINE d"", i2.2,""()"")") jd
+ jd = KIND(1.d0)
+ WRITE(*, "("" SUBROUTINE d"", i2.2,""()"")") j
WRITE(*,*)" IMPLICIT NONE"
WRITE(*,*)" DOUBLE PRECISION :: b=0"
WRITE(*,*)" INTEGER :: a(8)=0"
WRITE(*,*)" INTEGER :: a_size"
WRITE(*,*)" INTEGER :: b_size"
+ WRITE(*,*)" CHARACTER(LEN=2) :: jchr2"
WRITE(*,*)" a_size = BIT_SIZE(a(1))"
WRITE(*,*)" b_size = SIZE(transfer(b,a))*a_size"
WRITE(*,*)" IF (b_size .EQ. 64) THEN"
- WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_DOUBLE_NATIVE_8"" "
+ WRITE(*,*)" WRITE(jchr2,'(I2)')",jd
+ WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_DOUBLE_NATIVE_8_KIND "'//"//ADJUSTL(jchr2)"
WRITE(*,*)" ENDIF"
WRITE(*,*)" IF (b_size .EQ. 128) THEN"
- WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_DOUBLE_NATIVE_16"" "
+ WRITE(*,*)" WRITE(jchr2,'(I2)')",jd
+ WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_DOUBLE_NATIVE_16_KIND "'//"//ADJUSTL(jchr2)"
WRITE(*,*)" ENDIF"
WRITE(*,*)" RETURN"
WRITE(*,*)"END SUBROUTINE"
@@ -195,21 +212,27 @@ WRITE(*,'(40(A,/))') &
WRITE(*,*)" IMPLICIT NONE"
WRITE(*,*)" INTEGER(",j,") :: a = 0"
WRITE(*,*)" INTEGER :: a_size"
+ WRITE(*,*)" CHARACTER(LEN=2) :: jchr2"
WRITE(*,*)" a_size = BIT_SIZE(a)"
WRITE(*,*)" IF (a_size .EQ. 8) THEN"
- WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_INTEGER_1"" "
+ WRITE(*,*)" WRITE(jchr2,'(I2)')",j
+ WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_INTEGER_1_KIND "'//"//ADJUSTL(jchr2)"
WRITE(*,*)" ENDIF"
WRITE(*,*)" IF (a_size .EQ. 16) THEN"
- WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_INTEGER_2"" "
+ WRITE(*,*)" WRITE(jchr2,'(I2)')",j
+ WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_INTEGER_2_KIND "'//"//ADJUSTL(jchr2)"
WRITE(*,*)" ENDIF"
WRITE(*,*)" IF (a_size .EQ. 32) THEN"
- WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_INTEGER_4"" "
+ WRITE(*,*)" WRITE(jchr2,'(I2)')",j
+ WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_INTEGER_4_KIND "'//"//ADJUSTL(jchr2)"
WRITE(*,*)" ENDIF"
WRITE(*,*)" IF (a_size .EQ. 64) THEN"
- WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_INTEGER_8"" "
+ WRITE(*,*)" WRITE(jchr2,'(I2)')",j
+ WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_INTEGER_8_KIND "'//"//ADJUSTL(jchr2)"
WRITE(*,*)" ENDIF"
WRITE(*,*)" IF (a_size .EQ. 128) THEN"
- WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_INTEGER_16"" "
+ WRITE(*,*)" WRITE(jchr2,'(I2)')",j
+ WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_INTEGER_16_KIND "'//"//ADJUSTL(jchr2)"
WRITE(*,*)" ENDIF"
WRITE(*,*)" RETURN"
WRITE(*,*)" END SUBROUTINE"
@@ -222,16 +245,20 @@ WRITE(*,'(40(A,/))') &
WRITE(*,*)" INTEGER :: a(1)"
WRITE(*,*)" INTEGER :: a_size"
WRITE(*,*)" INTEGER :: real_size"
+ WRITE(*,*)" CHARACTER(LEN=2) :: jchr2"
WRITE(*,*)" a_size = BIT_SIZE(a(1)) ! Size in bits for integer"
WRITE(*,*)" real_size = (SIZE(TRANSFER(b,a))*a_size)/SIZE(b)"
WRITE(*,*)" IF (real_size .EQ. 32) THEN"
- WRITE(*,*)" WRITE(*,*) ""#define H5_FORTRAN_HAS_REAL_4"" "
+ WRITE(*,*)" WRITE(jchr2,'(I2)')",j
+ WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_REAL_4_KIND "'//"//ADJUSTL(jchr2)"
WRITE(*,*)" ENDIF"
WRITE(*,*)" IF (real_size .EQ. 64) THEN"
- WRITE(*,*)" write(*,*) ""#define H5_FORTRAN_HAS_REAL_8"" "
+ WRITE(*,*)" WRITE(jchr2,'(I2)')",j
+ WRITE(*,*)' WRITE(*,*) "#define H5_FORTRAN_HAS_REAL_8_KIND "'//"//ADJUSTL(jchr2)"
WRITE(*,*)" endif"
WRITE(*,*)" IF (real_size .EQ. 128) THEN"
- WRITE(*,*)" write(*,*) ""#define H5_FORTRAN_HAS_REAL_16"" "
+ WRITE(*,*)" WRITE(jchr2,'(I2)')",j
+ WRITE(*,'(A)')' WRITE(*,*) "#define H5_FORTRAN_HAS_REAL_16_KIND "'//"//ADJUSTL(jchr2)"
WRITE(*,*)" ENDIF"
WRITE(*,*)" RETURN"
WRITE(*,*)" END SUBROUTINE"