diff options
author | Frank Baker <fbaker@hdfgroup.org> | 2003-10-10 15:53:24 (GMT) |
---|---|---|
committer | Frank Baker <fbaker@hdfgroup.org> | 2003-10-10 15:53:24 (GMT) |
commit | c4b72f1579cbfcf7ad8ad3f5318cd425cf35feb8 (patch) | |
tree | ee747086b93e6b90f294a3093ff507c97bb34aa2 /doc/html/RM_H5D.html | |
parent | 90fb9e2a77fc4ff7cf894fea7bc06b5c4ffc851c (diff) | |
download | hdf5-c4b72f1579cbfcf7ad8ad3f5318cd425cf35feb8.zip hdf5-c4b72f1579cbfcf7ad8ad3f5318cd425cf35feb8.tar.gz hdf5-c4b72f1579cbfcf7ad8ad3f5318cd425cf35feb8.tar.bz2 |
[svn-r7599]
Purpose:
Integrate Fortran90 interfaces into C RM.
Solution:
Remove "Non-C APIs" sections.
Add "Fortran90 Interfaces" sections with F90 descriptions.
Platforms tested:
IE 5, Safari
Diffstat (limited to 'doc/html/RM_H5D.html')
-rw-r--r-- | doc/html/RM_H5D.html | 425 |
1 files changed, 360 insertions, 65 deletions
diff --git a/doc/html/RM_H5D.html b/doc/html/RM_H5D.html index 17505db..71ac11c 100644 --- a/doc/html/RM_H5D.html +++ b/doc/html/RM_H5D.html @@ -221,10 +221,20 @@ facilitate moving easily between them.</i> <dt><strong>Returns:</strong> <dd>Returns a non-negative value if successful; otherwise returns a negative value. -<dt><strong>Non-C API(s):</strong> - <dd><a href="fortran/h5d_FORTRAN.html#h5dclose_f" - target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0></a> - <!-- +<dt><strong>Fortran90 Interface:</strong> h5dclose_f + <dd> + <pre> +SUBROUTINE h5dclose_f(dset_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +END SUBROUTINE h5dclose_f + </pre> + + <!--<dt><strong>Non-C API(s):</strong> + <dd> + <img src="Graphics/Java.gif"> <img src="Graphics/C++.gif"> --> @@ -325,10 +335,29 @@ facilitate moving easily between them.</i> <dt><strong>Returns:</strong> <dd>Returns a dataset identifier if successful; otherwise returns a negative value. -<dt><strong>Non-C API(s):</strong> - <dd><a href="fortran/h5d_FORTRAN.html#h5dcreate_f" - target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0></a> - <!-- +<dt><strong>Fortran90 Interface:</strong> h5dcreate_f + <dd> + <pre> +SUBROUTINE h5dcreate_f(loc_id, name, type_id, space_id, dset_id, & + hdferr, creation_prp) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the dataset + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier + INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier + INTEGER(HID_T), INTENT(OUT) :: dset_id ! Dataset identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: creation_prp + ! Dataset creation propertly + ! list identifier , default + ! value is H5P_DEFAULT_F (6) +END SUBROUTINE h5dcreate_f + </pre> + + <!--<dt><strong>Non-C API(s):</strong> + <dd> + <img src="Graphics/Java.gif"> <img src="Graphics/C++.gif"> --> @@ -373,10 +402,23 @@ facilitate moving easily between them.</i> <dt><strong>Returns:</strong> <dd>Returns a non-negative value if successful; otherwise returns a negative value. -<dt><strong>Non-C API(s):</strong> - <dd><a href="fortran/h5d_FORTRAN.html#h5dextend_f" - target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0></a> - <!-- +<dt><strong>Fortran90 Interface:</strong> h5dextend_f + <dd> + <pre> +SUBROUTINE h5dextend_f(dataset_id, size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier + INTEGER(HSIZE_T), DIMENSION(*), INTENT(IN) :: size + ! Array containing + ! dimensions' sizes + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +END SUBROUTINE h5dextend_f + </pre> + + <!--<dt><strong>Non-C API(s):</strong> + <dd> + <img src="Graphics/Java.gif"> <img src="Graphics/C++.gif"> --> @@ -447,10 +489,25 @@ facilitate moving easily between them.</i> <dt><strong>Returns:</strong> <dd>Returns a non-negative value if successful; otherwise returns a negative value. -<dt><strong>Non-C API(s):</strong> - <dd><a href="fortran/h5d_FORTRAN.html#h5dfill_f" - target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0></a> - <!-- +<dt><strong>Fortran90 Interface:</strong> h5dfill_f + <dd> + <pre> +SUBROUTINE h5dfill_f(fill_value, space_id, buf, hdferr) + IMPLICIT NONE + TYPE, INTENET(IN) :: fill_value ! Fill value; may be have one of the + ! following types: + ! INTEGER, REAL, DOUBLE PRECISION, CHARACTER + INTEGER(HID_T), INTENT(IN) :: space_id ! Memory dataspace selection identifier + TYPE, DIMENSION(*) :: buf ! Memory buffer to fill in; must have + ! the same datatype as fill value + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +END SUBROUTINE h5dfill_f + </pre> + + <!--<dt><strong>Non-C API(s):</strong> + <dd> + <img src="Graphics/Java.gif"> <img src="Graphics/C++.gif"> --> @@ -480,10 +537,23 @@ facilitate moving easily between them.</i> <dt><strong>Returns:</strong> <dd>Returns a dataset creation property list identifier if successful; otherwise returns a negative value. -<dt><strong>Non-C API(s):</strong> - <dd><a href="fortran/h5d_FORTRAN.html#h5dget_create_plist_f" - target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0></a> - <!-- +<dt><strong>Fortran90 Interface:</strong> h5dget_create_plist_f + <dd> + <pre> +SUBROUTINE h5dget_create_plist_f(dataset_id, creation_prp, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier + INTEGER(HID_T), INTENT(OUT) :: creation_id ! Dataset creation + ! property list identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +END SUBROUTINE h5dget_create_plist_f + + </pre> + + <!--<dt><strong>Non-C API(s):</strong> + <dd> + <img src="Graphics/Java.gif"> <img src="Graphics/C++.gif"> --> @@ -511,11 +581,17 @@ facilitate moving easily between them.</i> <dt><strong>Returns:</strong> <dd>Returns the offset in bytes; otherwise returns <code>HADDR_UNDEF</code>, a negative value. +<dt><strong>Fortran90 Interface:</strong> + <dd>None. <!-- -<dt><strong>Non-C API(s):</strong> - <dd><a href="fortran/h5d_FORTRAN.html#h5dget_offset_f" - target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0></a> ---> <!-- + <pre> +SUBROUTINE + </pre> +--> + + <!--<dt><strong>Non-C API(s):</strong> + <dd> + <img src="Graphics/Java.gif"> <img src="Graphics/C++.gif"> --> @@ -544,10 +620,21 @@ facilitate moving easily between them.</i> <dt><strong>Returns:</strong> <dd>Returns a dataspace identifier if successful; otherwise returns a negative value. -<dt><strong>Non-C API(s):</strong> - <dd><a href="fortran/h5d_FORTRAN.html#h5dget_space_f" - target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0></a> - <!-- +<dt><strong>Fortran90 Interface:</strong> h5dget_space_f + <dd> + <pre> +SUBROUTINE h5dget_space_f(dataset_id, dataspace_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier + INTEGER(HID_T), INTENT(OUT) :: dataspace_id ! Dataspace identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +END SUBROUTINE h5dget_space_f + </pre> + + <!--<dt><strong>Non-C API(s):</strong> + <dd> + <img src="Graphics/Java.gif"> <img src="Graphics/C++.gif"> --> @@ -597,10 +684,25 @@ facilitate moving easily between them.</i> <dt><strong>Returns:</strong> <dd>Returns a non-negative value if successful; otherwise returns a negative value. -<dt><strong>Non-C API(s):</strong> - <dd><a href="fortran/h5d_FORTRAN.html#h5dget_space_status_f" - target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0></a> - <!-- +<dt><strong>Fortran90 Interface:</strong> h5dget_space_status_f + <dd> + <pre> +SUBROUTINE h5dget_space_status_f(dset_id, flag, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER, INTENET(OUT) :: flag ! Status flag ; possible values: + ! H5D_SPACE_STS_ERROR_F + ! H5D_SPACE_STS_NOT_ALLOCATED_F + ! H5D_SPACE_STS_PART_ALLOCATED_F + ! H5D_SPACE_STS_ALLOCATED_F + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +END SUBROUTINE h5dget_space_status_f + </pre> + + <!--<dt><strong>Non-C API(s):</strong> + <dd> + <img src="Graphics/Java.gif"> <img src="Graphics/C++.gif"> --> @@ -631,10 +733,21 @@ facilitate moving easily between them.</i> <dd>Returns the amount of storage space allocated for the dataset, not counting meta data; otherwise returns 0 (zero). -<dt><strong>Non-C API(s):</strong> - <dd><a href="fortran/h5d_FORTRAN.html#h5dget_storage_size_f" - target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0></a> - <!-- +<dt><strong>Fortran90 Interface:</strong> h5dget_storage_size_f + <dd> + <pre> +SUBROUTINE h5dget_storage_size_f(dset_id, size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HSIZE_T), INTENT(OUT) :: size ! Amount of storage required for dataset + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +END SUBROUTINE h5dget_storage_size_f + </pre> + + <!--<dt><strong>Non-C API(s):</strong> + <dd> + <img src="Graphics/Java.gif"> <img src="Graphics/C++.gif"> --> @@ -667,10 +780,21 @@ facilitate moving easily between them.</i> <dt><strong>Returns:</strong> <dd>Returns a datatype identifier if successful; otherwise returns a negative value. -<dt><strong>Non-C API(s):</strong> - <dd><a href="fortran/h5d_FORTRAN.html#h5dget_type_f" - target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0></a> - <!-- +<dt><strong>Fortran90 Interface:</strong> h5dget_type_f + <dd> + <pre> +SUBROUTINE h5dget_type_f(dataset_id, datatype_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dataset_id ! Dataset identifier + INTEGER(HID_T), INTENT(OUT) :: datatype_id ! Datatype identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +END SUBROUTINE h5dget_type_f + </pre> + + <!--<dt><strong>Non-C API(s):</strong> + <dd> + <img src="Graphics/Java.gif"> <img src="Graphics/C++.gif"> --> @@ -724,11 +848,17 @@ facilitate moving easily between them.</i> <dd>Returns the return value of the last operator if it was non-zero, or zero if all elements have been processed. Otherwise returns a negative value. +<dt><strong>Fortran90 Interface:</strong> + <dd>None. <!-- -<dt><strong>Non-C API(s):</strong> - <dd><a href="fortran/h5d_FORTRAN.html#h5diterate_f" - target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0></a> ---> <!-- + <pre> +SUBROUTINE + </pre> +--> + + <!--<dt><strong>Non-C API(s):</strong> + <dd> + <img src="Graphics/Java.gif"> <img src="Graphics/C++.gif"> --> @@ -760,10 +890,22 @@ facilitate moving easily between them.</i> <dt><strong>Returns:</strong> <dd>Returns a dataset identifier if successful; otherwise returns a negative value. -<dt><strong>Non-C API(s):</strong> - <dd><a href="fortran/h5d_FORTRAN.html#h5dopen_f" - target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0></a> - <!-- +<dt><strong>Fortran90 Interface:</strong> h5dopen_f + <dd> + <pre> +SUBROUTINE h5dopen_f(loc_id, name, dset_id, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: loc_id ! File or group identifier + CHARACTER(LEN=*), INTENT(IN) :: name ! Name of the dataset + INTEGER(HID_T), INTENT(OUT) :: dset_id ! Dataset identifier + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +END SUBROUTINE h5dopen_f + </pre> + + <!--<dt><strong>Non-C API(s):</strong> + <dd> + <img src="Graphics/Java.gif"> <img src="Graphics/C++.gif"> --> @@ -930,10 +1072,78 @@ facilitate moving easily between them.</i> <dt><strong>Returns:</strong> <dd>Returns a non-negative value if successful; otherwise returns a negative value. -<dt><strong>Non-C API(s):</strong> - <dd><a href="fortran/h5d_FORTRAN.html#h5dread_f" - target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0></a> - <!-- +<dt><strong>Fortran90 Interface:</strong> h5dread_f (for all datatypes except object and dataset region references) + <dd> + <pre> +SUBROUTINE h5dread_f(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + TYPE, INTENT(INOUT) :: buf ! Data buffer; may be a scalar or an array + DIMENSION(*), INTEGER(HSIZE_T), INTENT(IN) :: dims + ! Array to hold corresponding dimension + ! sizes of data buffer buf; dim(k) has + ! value of the k-th dimension of buffer buf; + ! values are ignored if buf is a scalar + ! + ! Deprecated type, will be removed in + ! Release 1.6: + ! INTEGER, INTENT(IN) :: dims(7) + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id + ! Memory dataspace identfier + ! Default value is H5S_ALL_F + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id + ! File dataspace identfier + ! Default value is H5S_ALL_F + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp + ! Transfer property list identifier + ! Default value is H5P_DEFAULT_F + +END SUBROUTINE h5dread_f + </pre> + +<dt><strong>Fortran90 Interface:</strong> h5dread_f (for object reference and dataset region reference datatypes) + <dd> + <pre> +SUBROUTINE h5dread_f(dset_id, mem_type_id, buf, n, hdferr, & + mem_space_id, file_space_id, xfer_prp) + + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + DIMENSION(*), INTEGER(HSIZE_T), INTENT(IN) :: dims + ! Array to hold corresponding dimension + ! sizes of data buffer buf; dim(k) has + ! value of the k-th dimension of buffer buf; + ! values are ignored if buf is a scalar + ! + ! Deprecated type, will be removed in + ! Release 1.6: + ! INTEGER, DIMENSION(7), INTENT(IN) :: dims + TYPE(hobj_ref_t_f), DIMENSION(dims(1)), INTENT(INOUT) :: buf + ! Data buffer of rank 1 + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id + ! Memory dataspace identfier + ! Default value is H5S_ALL_F + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id + ! File dataspace identfier + ! Default value is H5S_ALL_F + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp + ! Transfer property list identifier + ! Default value is H5P_DEFAULT_F + +END SUBROUTINE h5dread_f + </pre> + + <!--<dt><strong>Non-C API(s):</strong> + <dd> + <img src="Graphics/Java.gif"> <img src="Graphics/C++.gif"> --> @@ -975,15 +1185,25 @@ facilitate moving easily between them.</i> <dt><strong>Returns:</strong> <dd>Returns non-negative value if successful; otherwise returns a negative value. -<dt><strong>Non-C API(s):</strong> +<dt><strong>Fortran90 Interface:</strong> h5dvlen_get_max_len_f <dd>There is no direct FORTRAN couterpart for the C function <code>H5Dvlen_get_buf_size</code>; corresponding functionality is provided by the FORTRAN function - <a href="fortran/h5d_FORTRAN.html#h5dvlen_get_max_len_f" - target="FortranWin"><code>h5dvlen_get_max_len_f</code></a>. + <code>h5dvlen_get_max_len_f</code></a>. <br> - <a href="fortran/h5d_FORTRAN.html#h5dvlen_get_max_len_f" - target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0 ></a> + <pre> +SUBROUTINE h5dvlen_get_max_len_f(dset_id, size, hdferr) + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: type_id ! Datatype identifier + INTEGER(HID_T), INTENT(IN) :: space_id ! Dataspace identifier + + INTEGER(SIZE_T), INTENT(OUT) :: elem_len ! Maximum length of the element + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure +END SUBROUTINE h5dvlen_get_max_len_f + </pre> + <!-- <img src="Graphics/Java.gif"> <img src="Graphics/C++.gif"> @@ -1034,11 +1254,17 @@ facilitate moving easily between them.</i> <dt><strong>Returns:</strong> <dd>Returns non-negative value if successful; otherwise returns a negative value. +<dt><strong>Fortran90 Interface:</strong> + <dd>None. <!-- -<dt><strong>Non-C API(s):</strong> - <dd><a href="fortran/h5d_FORTRAN.html#h5dvlen_reclaim_f" - target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0></a> ---> <!-- + <pre> +SUBROUTINE + </pre> +--> + + <!--<dt><strong>Non-C API(s):</strong> + <dd> + <img src="Graphics/Java.gif"> <img src="Graphics/C++.gif"> --> @@ -1223,10 +1449,79 @@ facilitate moving easily between them.</i> <dt><strong>Returns:</strong> <dd>Returns a non-negative value if successful; otherwise returns a negative value. -<dt><strong>Non-C API(s):</strong> - <dd><a href="fortran/h5d_FORTRAN.html#h5dwrite_f" - target="FortranWin"><img src="Graphics/FORTRAN.gif" border=0></a> - <!-- +<dt><strong>Fortran90 Interface:</strong> h5dwrite_f (for all datatypes except object and dataset region references) + <dd> + <pre> +SUBROUTINE h5dwrite_f(dset_id, mem_type_id, buf, dims, hdferr, & + mem_space_id, file_space_id, xfer_prp) + + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + TYPE, INTENT(IN) :: buf ! Data buffer; may be a scalar or an array + DIMENSION(*), INTEGER(HSIZE_T), INTENT(IN) :: dims + ! Array to hold corresponding dimension + ! sizes of data buffer buf; dim(k) has + ! value of the k-th dimension of buffer buf; + ! values are ignored if buf is a scalar + ! + ! Deprecated type, will be removed in + ! Release 1.6: + ! INTEGER, INTENT(IN) :: dims(7) + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id + ! Memory dataspace identfier + ! Default value is H5S_ALL_F + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id + ! File dataspace identfier + ! Default value is H5S_ALL_F + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp + ! Transfer property list identifier + ! Default value is H5P_DEFAULT_F + +END SUBROUTINE h5dwrite_f + + </pre> + +<dt><strong>Fortran90 Interface:</strong> h5dwrite_f (for object reference and dataset region reference datatypes) + <dd> + <pre> +SUBROUTINE h5dwrite_f(dset_id, mem_type_id, buf, n, hdferr, & + mem_space_id, file_space_id, xfer_prp) + + IMPLICIT NONE + INTEGER(HID_T), INTENT(IN) :: dset_id ! Dataset identifier + INTEGER(HID_T), INTENT(IN) :: mem_type_id ! Memory datatype identifier + DIMENSION(*), INTEGER(HSIZE_T), INTENT(IN) :: dims + ! Array to hold corresponding dimension + ! sizes of data buffer buf; dim(k) has + ! value of the k-th dimension of buffer buf; + ! values are ignored if buf is a scalar + ! + ! Deprecated type, will be removed in + ! Release 1.6: + ! INTEGER, DIMENSION(7), INTENT(IN) :: dims + TYPE(hobj_ref_t_f), DIMENSION(dims(1)), INTENT(INOUT) :: buf + ! Data buffer of rank 1 + INTEGER, INTENT(OUT) :: hdferr ! Error code + ! 0 on success and -1 on failure + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: mem_space_id + ! Memory dataspace identfier + ! Default value is H5S_ALL_F + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: file_space_id + ! File dataspace identfier + ! Default value is H5S_ALL_F + INTEGER(HID_T), OPTIONAL, INTENT(IN) :: xfer_prp + ! Transfer property list identifier + ! Default value is H5P_DEFAULT_F + +END SUBROUTINE h5dwrite_f + </pre> + + <!--<dt><strong>Non-C API(s):</strong> + <dd> + <img src="Graphics/Java.gif"> <img src="Graphics/C++.gif"> --> |