Changeset 5748 for LMDZ6/trunk/libf/misc
- Timestamp:
- Jul 2, 2025, 12:00:08 PM (8 months ago)
- Location:
- LMDZ6/trunk/libf/misc
- Files:
-
- 3 edited
-
readTracFiles_mod.f90 (modified) (46 diffs)
-
strings_mod.f90 (modified) (24 diffs)
-
write_field.f90 (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/misc/readTracFiles_mod.f90
r5746 r5748 3 3 USE strings_mod, ONLY: msg, find, get_in, dispTable, strHead, strReduce, strFind, strStack, strIdx, & 4 4 removeComment, cat, maxlen, checkList, strParse, strReplace, strTail, strCount, reduceExpr, & 5 int2str, str2int, real2str, str2real, bool2str, str2bool5 num2str, str2int, str2real, str2bool 6 6 7 7 IMPLICIT NONE … … 993 993 lerr = .FALSE. 994 994 IF(nam(1) == 'iq') THEN 995 tmp2 = int2str([(iq, iq=1, nq)])995 tmp2 = num2str([(iq, iq=1, nq)]) 996 996 tmp = tmp2 997 997 ELSE … … 1086 1086 tr(iq)%nqChildren = SIZE(iqDescen) 1087 1087 END DO 1088 CALL addKey('iqDescen', strStack( int2str(iqDescen)), tr(iq)%keys)1088 CALL addKey('iqDescen', strStack(num2str(iqDescen)), tr(iq)%keys) 1089 1089 CALL addKey('nqDescen', SIZE(iqDescen), tr(iq)%keys) 1090 1090 tr(iq)%iqDescen = iqDescen … … 1328 1328 np = SUM([(COUNT(tracers(:)%name == addPhase(i%trac(it), i%phase(ip:ip))), ip=1, npha)]) 1329 1329 lerr = np /= npha 1330 CALL msg(TRIM( int2str(np))//' phases instead of '//TRIM(int2str(npha))//' for '//TRIM(i%trac(it)), modname, lerr)1330 CALL msg(TRIM(num2str(np))//' phases instead of '//TRIM(num2str(npha))//' for '//TRIM(i%trac(it)), modname, lerr) 1331 1331 IF(lerr) RETURN 1332 1332 END DO … … 1334 1334 nz = SUM([(COUNT(i%trac == TRIM(i%trac(it))//'_'//i%zone(iz)), iz=1, nzon)]) 1335 1335 lerr = nz /= nzon 1336 CALL msg(TRIM( int2str(nz))//' tagging zones instead of '//TRIM(int2str(nzon))//' for '//TRIM(i%trac(it)), modname, lerr)1336 CALL msg(TRIM(num2str(nz))//' tagging zones instead of '//TRIM(num2str(nzon))//' for '//TRIM(i%trac(it)), modname, lerr) 1337 1337 IF(lerr) RETURN 1338 1338 END DO … … 1375 1375 IF(iIso == ixIso) RETURN !--- Nothing to do if the index is already OK 1376 1376 lerr = iIso<=0 .OR. iIso>SIZE(isotopes) 1377 CALL msg('Inconsistent isotopes family index '//TRIM( int2str(iIso))//': should be > 0 and <= '&1378 //TRIM( int2str(SIZE(isotopes)))//'"', ll = lerr .AND. lV)1377 CALL msg('Inconsistent isotopes family index '//TRIM(num2str(iIso))//': should be > 0 and <= '& 1378 //TRIM(num2str(SIZE(isotopes)))//'"', ll = lerr .AND. lV) 1379 1379 IF(lerr) RETURN 1380 1380 ixIso = iIso !--- Update currently selected family index … … 1424 1424 LOGICAL, OPTIONAL, INTENT(IN) :: lOverWrite 1425 1425 !------------------------------------------------------------------------------------------------------------------------------ 1426 CALL addKey_s11(key, int2str(ival), ky, lOverWrite)1426 CALL addKey_s11(key, num2str(ival), ky, lOverWrite) 1427 1427 END SUBROUTINE addKey_i11 1428 1428 !============================================================================================================================== … … 1433 1433 LOGICAL, OPTIONAL, INTENT(IN) :: lOverWrite 1434 1434 !------------------------------------------------------------------------------------------------------------------------------ 1435 CALL addKey_s11(key, real2str(rval), ky, lOverWrite)1435 CALL addKey_s11(key, num2str(rval), ky, lOverWrite) 1436 1436 END SUBROUTINE addKey_r11 1437 1437 !============================================================================================================================== … … 1442 1442 LOGICAL, OPTIONAL, INTENT(IN) :: lOverWrite 1443 1443 !------------------------------------------------------------------------------------------------------------------------------ 1444 CALL addKey_s11(key, bool2str(lval), ky, lOverWrite)1444 CALL addKey_s11(key, num2str(lval), ky, lOverWrite) 1445 1445 END SUBROUTINE addKey_l11 1446 1446 !============================================================================================================================== … … 1462 1462 !------------------------------------------------------------------------------------------------------------------------------ 1463 1463 INTEGER :: itr 1464 DO itr = 1, SIZE(ky); CALL addKey_s11(key, int2str(ival), ky(itr), lOverWrite); END DO1464 DO itr = 1, SIZE(ky); CALL addKey_s11(key, num2str(ival), ky(itr), lOverWrite); END DO 1465 1465 END SUBROUTINE addKey_i1m 1466 1466 !============================================================================================================================== … … 1472 1472 !------------------------------------------------------------------------------------------------------------------------------ 1473 1473 INTEGER :: itr 1474 DO itr = 1, SIZE(ky); CALL addKey_s11(key, real2str(rval), ky(itr), lOverWrite); END DO1474 DO itr = 1, SIZE(ky); CALL addKey_s11(key, num2str(rval), ky(itr), lOverWrite); END DO 1475 1475 END SUBROUTINE addKey_r1m 1476 1476 !============================================================================================================================== … … 1482 1482 !------------------------------------------------------------------------------------------------------------------------------ 1483 1483 INTEGER :: itr 1484 DO itr = 1, SIZE(ky); CALL addKey_s11(key, bool2str(lval), ky(itr), lOverWrite); END DO1484 DO itr = 1, SIZE(ky); CALL addKey_s11(key, num2str(lval), ky(itr), lOverWrite); END DO 1485 1485 END SUBROUTINE addKey_l1m 1486 1486 !============================================================================================================================== … … 1502 1502 !------------------------------------------------------------------------------------------------------------------------------ 1503 1503 INTEGER :: itr 1504 DO itr = 1, SIZE(ky); CALL addKey_s11(key, int2str(ival(itr)), ky(itr), lOverWrite); END DO1504 DO itr = 1, SIZE(ky); CALL addKey_s11(key, num2str(ival(itr)), ky(itr), lOverWrite); END DO 1505 1505 END SUBROUTINE addKey_imm 1506 1506 !============================================================================================================================== … … 1512 1512 !------------------------------------------------------------------------------------------------------------------------------ 1513 1513 INTEGER :: itr 1514 DO itr = 1, SIZE(ky); CALL addKey_s11(key, real2str(rval(itr)), ky(itr), lOverWrite); END DO1514 DO itr = 1, SIZE(ky); CALL addKey_s11(key, num2str(rval(itr)), ky(itr), lOverWrite); END DO 1515 1515 END SUBROUTINE addKey_rmm 1516 1516 !============================================================================================================================== … … 1522 1522 !------------------------------------------------------------------------------------------------------------------------------ 1523 1523 INTEGER :: itr 1524 DO itr = 1, SIZE(ky); CALL addKey_s11(key, bool2str(lval(itr)), ky(itr), lOverWrite); END DO1524 DO itr = 1, SIZE(ky); CALL addKey_s11(key, num2str(lval(itr)), ky(itr), lOverWrite); END DO 1525 1525 END SUBROUTINE addKey_lmm 1526 1526 !============================================================================================================================== … … 1676 1676 LOGICAL :: lD 1677 1677 lD = .TRUE.; IF(PRESENT(lDisp)) lD = lDisp 1678 s = 'key "'//TRIM(strStack(keyn, '/'))//'" for tracer nr. '//TRIM( int2str(itr))1678 s = 'key "'//TRIM(strStack(keyn, '/'))//'" for tracer nr. '//TRIM(num2str(itr)) 1679 1679 lerr = .TRUE. 1680 1680 IF(lerr .AND. PRESENT(ky)) val = fgetKey(ky) !--- "ky" … … 1706 1706 !------------------------------------------------------------------------------------------------------------------------------ 1707 1707 CHARACTER(LEN=maxlen) :: sval, s 1708 IF( PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, int2str(def), lDisp)1708 IF( PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, num2str(def), lDisp) 1709 1709 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, lDisp=lDisp) 1710 1710 IF(lerr) RETURN 1711 1711 val = str2int(sval) 1712 1712 lerr = val == -HUGE(1) 1713 s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM( int2str(itr))//' is not'1713 s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM(num2str(itr))//' is not' 1714 1714 CALL msg(TRIM(s)//' an integer: '//TRIM(sval), modname, lerr) 1715 1715 END FUNCTION getKeyByIndex_im11 … … 1724 1724 !------------------------------------------------------------------------------------------------------------------------------ 1725 1725 CHARACTER(LEN=maxlen) :: sval, s 1726 IF( PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, real2str(def), lDisp)1726 IF( PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, num2str(def), lDisp) 1727 1727 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, lDisp=lDisp) 1728 1728 IF(lerr) RETURN 1729 1729 val = str2real(sval) 1730 1730 lerr = val == -HUGE(1.) 1731 s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM( int2str(itr))//' is not'1731 s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM(num2str(itr))//' is not' 1732 1732 CALL msg(TRIM(s)//' a real: '//TRIM(sval), modname, lerr) 1733 1733 END FUNCTION getKeyByIndex_rm11 … … 1743 1743 CHARACTER(LEN=maxlen) :: sval, s 1744 1744 INTEGER :: ival 1745 IF( PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, bool2str(def), lDisp)1745 IF( PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, num2str(def), lDisp) 1746 1746 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, lDisp=lDisp) 1747 1747 IF(lerr) RETURN 1748 1748 ival = str2bool(sval) 1749 1749 lerr = ival == -1 1750 s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM( int2str(itr))//' is not'1750 s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM(num2str(itr))//' is not' 1751 1751 CALL msg(TRIM(s)//' a boolean: '//TRIM(sval), modname, lerr) 1752 1752 IF(.NOT.lerr) val = ival == 1 … … 1778 1778 CHARACTER(LEN=maxlen) :: sval, s 1779 1779 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:) 1780 IF( PRESENT(def)) lerr = getKeyByIndex_sm11([keyn], sval, itr, ky, int2str(def), lDisp)1780 IF( PRESENT(def)) lerr = getKeyByIndex_sm11([keyn], sval, itr, ky, num2str(def), lDisp) 1781 1781 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11([keyn], sval, itr, ky, lDisp=lDisp) 1782 1782 IF(lerr) RETURN … … 1785 1785 val = str2int(svals) 1786 1786 lerr = ANY(val == -HUGE(1)) 1787 s = 'key "'//TRIM(keyn)//'" of tracer nr. '//TRIM( int2str(itr))//' is not'1787 s = 'key "'//TRIM(keyn)//'" of tracer nr. '//TRIM(num2str(itr))//' is not' 1788 1788 CALL msg(TRIM(s)//' an integer: '//TRIM(sval), modname, lerr) 1789 1789 END FUNCTION getKeyByIndex_i1m1 … … 1799 1799 CHARACTER(LEN=maxlen) :: sval, s 1800 1800 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:) 1801 IF( PRESENT(def)) lerr = getKeyByIndex_sm11([keyn], sval, itr, ky, real2str(def), lDisp)1801 IF( PRESENT(def)) lerr = getKeyByIndex_sm11([keyn], sval, itr, ky, num2str(def), lDisp) 1802 1802 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11([keyn], sval, itr, ky, lDisp=lDisp) 1803 1803 lerr = strParse(sval, ',', svals) … … 1805 1805 val = str2real(svals) 1806 1806 lerr = ANY(val == -HUGE(1.)) 1807 s = 'key "'//TRIM(keyn)//'" of tracer nr. '//TRIM( int2str(itr))//' is not'1807 s = 'key "'//TRIM(keyn)//'" of tracer nr. '//TRIM(num2str(itr))//' is not' 1808 1808 CALL msg(TRIM(s)//' a real: '//TRIM(sval), modname, lerr) 1809 1809 END FUNCTION getKeyByIndex_r1m1 … … 1820 1820 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:) 1821 1821 INTEGER, ALLOCATABLE :: ivals(:) 1822 IF( PRESENT(def)) lerr = getKeyByIndex_sm11([keyn], sval, itr, ky, bool2str(def), lDisp)1822 IF( PRESENT(def)) lerr = getKeyByIndex_sm11([keyn], sval, itr, ky, num2str(def), lDisp) 1823 1823 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11([keyn], sval, itr, ky, lDisp=lDisp) 1824 1824 lerr = strParse(sval, ',', svals) … … 1826 1826 ivals = str2bool(svals) 1827 1827 lerr = ANY(ivals == -1) 1828 s = 'key "'//TRIM(keyn)//'" of tracer nr. '//TRIM( int2str(itr))//' is not'1828 s = 'key "'//TRIM(keyn)//'" of tracer nr. '//TRIM(num2str(itr))//' is not' 1829 1829 CALL msg(TRIM(s)//' a boolean: '//TRIM(sval), modname, lerr) 1830 1830 IF(.NOT.lerr) val = ivals == 1 … … 1856 1856 CHARACTER(LEN=maxlen) :: sval, s 1857 1857 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:) 1858 IF( PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, int2str(def), lDisp)1858 IF( PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, num2str(def), lDisp) 1859 1859 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, lDisp=lDisp) 1860 1860 IF(lerr) RETURN … … 1863 1863 val = str2int(svals) 1864 1864 lerr = ANY(val == -HUGE(1)) 1865 s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM( int2str(itr))//' is not'1865 s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM(num2str(itr))//' is not' 1866 1866 CALL msg(TRIM(s)//' an integer: '//TRIM(sval), modname, lerr) 1867 1867 END FUNCTION getKeyByIndex_imm1 … … 1877 1877 CHARACTER(LEN=maxlen) :: sval, s 1878 1878 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:) 1879 IF( PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, real2str(def), lDisp)1879 IF( PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, num2str(def), lDisp) 1880 1880 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, lDisp=lDisp) 1881 1881 IF(lerr) RETURN … … 1884 1884 val = str2real(svals) 1885 1885 lerr = ANY(val == -HUGE(1.)) 1886 s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM( int2str(itr))//' is not'1886 s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM(num2str(itr))//' is not' 1887 1887 CALL msg(TRIM(s)//' a real: '//TRIM(sval), modname, lerr) 1888 1888 END FUNCTION getKeyByIndex_rmm1 … … 1899 1899 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:) 1900 1900 INTEGER, ALLOCATABLE :: ivals(:) 1901 IF( PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, bool2str(def), lDisp)1901 IF( PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, num2str(def), lDisp) 1902 1902 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_sm11(keyn, sval, itr, ky, lDisp=lDisp) 1903 1903 IF(lerr) RETURN … … 1906 1906 ivals = str2bool(svals) 1907 1907 lerr = ANY(ivals == -1) 1908 s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM( int2str(itr))//' is not'1908 s = 'key "'//TRIM(strStack(keyn, '/'))//'" of tracer nr. '//TRIM(num2str(itr))//' is not' 1909 1909 CALL msg(TRIM(s)//' a boolean: '//TRIM(sval), modname, lerr) 1910 1910 IF(.NOT.lerr) val = ivals == 1 … … 2011 2011 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:), tname(:) 2012 2012 LOGICAL, ALLOCATABLE :: ll(:) 2013 IF( PRESENT(def)) lerr = getKeyByIndex_smmm(keyn, svals, ky, tname, int2str(def), lDisp)2013 IF( PRESENT(def)) lerr = getKeyByIndex_smmm(keyn, svals, ky, tname, num2str(def), lDisp) 2014 2014 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_smmm(keyn, svals, ky, tname, lDisp=lDisp) 2015 2015 IF(lerr) RETURN … … 2033 2033 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:), tname(:) 2034 2034 LOGICAL, ALLOCATABLE :: ll(:) 2035 IF( PRESENT(def)) lerr = getKeyByIndex_smmm(keyn, svals, ky, tname, real2str(def), lDisp)2035 IF( PRESENT(def)) lerr = getKeyByIndex_smmm(keyn, svals, ky, tname, num2str(def), lDisp) 2036 2036 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_smmm(keyn, svals, ky, tname, lDisp=lDisp) 2037 2037 IF(lerr) RETURN … … 2055 2055 LOGICAL, ALLOCATABLE :: ll(:) 2056 2056 INTEGER, ALLOCATABLE :: ivals(:) 2057 IF( PRESENT(def)) lerr = getKeyByIndex_smmm(keyn, svals, ky, tname, bool2str(def), lDisp)2057 IF( PRESENT(def)) lerr = getKeyByIndex_smmm(keyn, svals, ky, tname, num2str(def), lDisp) 2058 2058 IF(.NOT.PRESENT(def)) lerr = getKeyByIndex_smmm(keyn, svals, ky, tname, lDisp=lDisp) 2059 2059 IF(lerr) RETURN … … 2164 2164 !------------------------------------------------------------------------------------------------------------------------------ 2165 2165 CHARACTER(LEN=maxlen) :: sval, s 2166 IF( PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, int2str(def), lDisp)2166 IF( PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, num2str(def), lDisp) 2167 2167 IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, lDisp=lDisp) 2168 2168 IF(lerr) RETURN … … 2181 2181 !------------------------------------------------------------------------------------------------------------------------------ 2182 2182 CHARACTER(LEN=maxlen) :: sval, s 2183 IF( PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, real2str(def), lDisp)2183 IF( PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, num2str(def), lDisp) 2184 2184 IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, lDisp=lDisp) 2185 2185 IF(lerr) RETURN … … 2199 2199 CHARACTER(LEN=maxlen) :: sval, s 2200 2200 INTEGER :: ival 2201 IF( PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, bool2str(def), lDisp)2201 IF( PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, num2str(def), lDisp) 2202 2202 IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, lDisp=lDisp) 2203 2203 IF(lerr) RETURN … … 2232 2232 CHARACTER(LEN=maxlen) :: sval, s 2233 2233 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:) 2234 IF( PRESENT(def)) lerr = getKeyByName_sm11([keyn], sval, tname, ky, int2str(def), lDisp)2234 IF( PRESENT(def)) lerr = getKeyByName_sm11([keyn], sval, tname, ky, num2str(def), lDisp) 2235 2235 IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11([keyn], sval, tname, ky, lDisp=lDisp) 2236 2236 IF(lerr) RETURN … … 2252 2252 CHARACTER(LEN=maxlen) :: sval, s 2253 2253 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:) 2254 IF( PRESENT(def)) lerr = getKeyByName_sm11([keyn], sval, tname, ky, real2str(def), lDisp)2254 IF( PRESENT(def)) lerr = getKeyByName_sm11([keyn], sval, tname, ky, num2str(def), lDisp) 2255 2255 IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11([keyn], sval, tname, ky, lDisp=lDisp) 2256 2256 IF(lerr) RETURN … … 2273 2273 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:) 2274 2274 INTEGER, ALLOCATABLE :: ivals(:) 2275 IF( PRESENT(def)) lerr = getKeyByName_sm11([keyn], sval, tname, ky, bool2str(def), lDisp)2275 IF( PRESENT(def)) lerr = getKeyByName_sm11([keyn], sval, tname, ky, num2str(def), lDisp) 2276 2276 IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11([keyn], sval, tname, ky, lDisp=lDisp) 2277 2277 IF(lerr) RETURN … … 2308 2308 CHARACTER(LEN=maxlen) :: sval, s 2309 2309 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:) 2310 IF( PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, int2str(def), lDisp)2310 IF( PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, num2str(def), lDisp) 2311 2311 IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, lDisp=lDisp) 2312 2312 IF(lerr) RETURN … … 2328 2328 CHARACTER(LEN=maxlen) :: sval, s 2329 2329 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:) 2330 IF( PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, real2str(def), lDisp)2330 IF( PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, num2str(def), lDisp) 2331 2331 IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, lDisp=lDisp) 2332 2332 IF(lerr) RETURN … … 2349 2349 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:) 2350 2350 INTEGER, ALLOCATABLE :: ivals(:) 2351 IF( PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, bool2str(def), lDisp)2351 IF( PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, num2str(def), lDisp) 2352 2352 IF(.NOT.PRESENT(def)) lerr = getKeyByName_sm11(keyn, sval, tname, ky, lDisp=lDisp) 2353 2353 IF(lerr) RETURN … … 2447 2447 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:) 2448 2448 LOGICAL, ALLOCATABLE :: ll(:) 2449 IF( PRESENT(def)) lerr = getKeyByName_smmm(keyn, svals, tname, ky, int2str(def), lDisp)2449 IF( PRESENT(def)) lerr = getKeyByName_smmm(keyn, svals, tname, ky, num2str(def), lDisp) 2450 2450 IF(.NOT.PRESENT(def)) lerr = getKeyByName_smmm(keyn, svals, tname, ky, lDisp=lDisp) 2451 2451 IF(lerr) RETURN … … 2467 2467 CHARACTER(LEN=maxlen), ALLOCATABLE :: svals(:) 2468 2468 LOGICAL, ALLOCATABLE :: ll(:) 2469 IF( PRESENT(def)) lerr = getKeyByName_smmm(keyn, svals, tname, ky, real2str(def), lDisp)2469 IF( PRESENT(def)) lerr = getKeyByName_smmm(keyn, svals, tname, ky, num2str(def), lDisp) 2470 2470 IF(.NOT.PRESENT(def)) lerr = getKeyByName_smmm(keyn, svals, tname, ky, lDisp=lDisp) 2471 2471 IF(lerr) RETURN … … 2488 2488 LOGICAL, ALLOCATABLE :: ll(:) 2489 2489 INTEGER, ALLOCATABLE :: ivals(:) 2490 IF( PRESENT(def)) lerr = getKeyByName_smmm(keyn, svals, tname, ky, bool2str(def), lDisp)2490 IF( PRESENT(def)) lerr = getKeyByName_smmm(keyn, svals, tname, ky, num2str(def), lDisp) 2491 2491 IF(.NOT.PRESENT(def)) lerr = getKeyByName_smmm(keyn, svals, tname, ky, lDisp=lDisp) 2492 2492 IF(lerr) RETURN -
LMDZ6/trunk/libf/misc/strings_mod.f90
r5747 r5748 1 1 MODULE strings_mod 2 3 USE, INTRINSIC :: ISO_FORTRAN_ENV, ONLY: REAL64, REAL32 2 4 3 5 IMPLICIT NONE … … 8 10 PUBLIC :: strUpper, strTail, strStackm, strParse, strReplace, strFind, find, duplicate, cat 9 11 PUBLIC :: dispTable, dispOutliers, dispNameList 10 PUBLIC :: is_numeric, bool2str, int2str, real2str, dble2str 11 PUBLIC :: reduceExpr, str2bool, str2int, str2real, str2dble 12 PUBLIC :: addQuotes, checkList, removeComment 12 PUBLIC :: is_numeric, num2str, str2bool, str2int, str2real, str2dble 13 PUBLIC :: reduceExpr, addQuotes, checkList, removeComment 13 14 14 15 INTERFACE get_in; MODULE PROCEDURE getin_s, getin_i, getin_r, getin_l; END INTERFACE get_in 16 INTERFACE num2str; MODULE PROCEDURE bool2str, int2str, real2str, dble2str; END INTERFACE num2str 15 17 INTERFACE msg; MODULE PROCEDURE msg_1, msg_m; END INTERFACE msg 16 18 INTERFACE strHead; MODULE PROCEDURE strHead_1, strHead_m; END INTERFACE strHead … … 21 23 INTERFACE strCount; MODULE PROCEDURE strCount_m1, strCount_11, strCount_1m; END INTERFACE strCount 22 24 INTERFACE strReplace; MODULE PROCEDURE strReplace_1, strReplace_m; END INTERFACE strReplace 23 INTERFACE cat; MODULE PROCEDURE horzcat_s00, horzcat_i00, horzcat_r00, & !horzcat_d00, &24 horzcat_s10, horzcat_i10, horzcat_r10, & !horzcat_d10, &25 horzcat_s11, horzcat_i11, horzcat_r11, & !horzcat_d11, &26 horzcat_s21, horzcat_i21, horzcat_r21;END INTERFACE cat !horzcat_d2127 INTERFACE strFind; MODULE PROCEDURE strFind_1, strFind_m; END INTERFACE strFind25 INTERFACE cat; MODULE PROCEDURE horzcat_s00, horzcat_i00, horzcat_r00, horzcat_d00, & 26 horzcat_s10, horzcat_i10, horzcat_r10, horzcat_d10, & 27 horzcat_s11, horzcat_i11, horzcat_r11, horzcat_d11, & 28 horzcat_s21, horzcat_i21, horzcat_r21; END INTERFACE cat !horzcat_d21 29 INTERFACE strFind; MODULE PROCEDURE strFind_1, strFind_m; END INTERFACE strFind 28 30 INTERFACE find; MODULE PROCEDURE strFind_1, strFind_m, intFind_1, intFind_m, booFind; END INTERFACE find 29 31 INTERFACE duplicate; MODULE PROCEDURE dupl_s, dupl_i, dupl_r, dupl_l; END INTERFACE duplicate … … 68 70 INTEGER, INTENT(IN) :: def 69 71 val = def; CALL getin(nam, val) 70 IF(val/=def) WRITE(lunout,*)TRIM(nam)//' = '//TRIM( int2str(val))72 IF(val/=def) WRITE(lunout,*)TRIM(nam)//' = '//TRIM(num2str(val)) 71 73 END SUBROUTINE getin_i 72 74 !============================================================================================================================== … … 78 80 REAL, INTENT(IN) :: def 79 81 val = def; CALL getin(nam, val) 80 IF(val/=def) WRITE(lunout,*)TRIM(nam)//' = '//TRIM( real2str(val))82 IF(val/=def) WRITE(lunout,*)TRIM(nam)//' = '//TRIM(num2str(val)) 81 83 END SUBROUTINE getin_r 82 84 !============================================================================================================================== … … 88 90 LOGICAL, INTENT(IN) :: def 89 91 val = def; CALL getin(nam, val) 90 IF(val.NEQV.def) WRITE(lunout,*)TRIM(nam)//' = '//TRIM( bool2str(val))92 IF(val.NEQV.def) WRITE(lunout,*)TRIM(nam)//' = '//TRIM(num2str(val)) 91 93 END SUBROUTINE getin_l 92 94 !============================================================================================================================== … … 953 955 FUNCTION horzcat_r00(r0, r1, r2, r3, r4, r5, r6, r7, r8, r9) RESULT(out) 954 956 IMPLICIT NONE 955 REAL , INTENT(IN) :: r0956 REAL , OPTIONAL, TARGET, INTENT(IN) :: r1, r2, r3, r4, r5, r6, r7, r8, r9957 REAL , ALLOCATABLE :: out(:)958 REAL , POINTER:: r957 REAL(KIND=REAL32), INTENT(IN) :: r0 958 REAL(KIND=REAL32), OPTIONAL, TARGET, INTENT(IN) :: r1, r2, r3, r4, r5, r6, r7, r8, r9 959 REAL(KIND=REAL32), ALLOCATABLE :: out(:) 960 REAL(KIND=REAL32), POINTER :: r 959 961 INTEGER :: ncol, iv 960 962 LOGICAL :: pre(9) … … 975 977 FUNCTION horzcat_r10(r0, r1, r2, r3, r4, r5, r6, r7, r8, r9) RESULT(out) 976 978 IMPLICIT NONE 977 REAL , INTENT(IN) :: r0(:), r1978 REAL , OPTIONAL, INTENT(IN) :: r2, r3, r4, r5, r6, r7, r8, r9979 REAL , ALLOCATABLE :: out(:), tmp(:)979 REAL(KIND=REAL32), INTENT(IN) :: r0(:), r1 980 REAL(KIND=REAL32), OPTIONAL, INTENT(IN) :: r2, r3, r4, r5, r6, r7, r8, r9 981 REAL(KIND=REAL32), ALLOCATABLE :: out(:), tmp(:) 980 982 INTEGER :: nc 981 983 nc = SIZE(r0) … … 987 989 FUNCTION horzcat_r11(r0, r1, r2, r3, r4, r5, r6, r7, r8, r9) RESULT(out) 988 990 IMPLICIT NONE 989 REAL , INTENT(IN) :: r0(:)990 REAL , OPTIONAL, TARGET, INTENT(IN) :: r1(:), r2(:), r3(:), r4(:), r5(:), r6(:), r7(:), r8(:), r9(:)991 REAL , ALLOCATABLE :: out(:,:)992 REAL , POINTER :: r(:)993 INTEGER :: nrow, ncol, iv, n994 LOGICAL :: pre(9)991 REAL(KIND=REAL32), INTENT(IN) :: r0(:) 992 REAL(KIND=REAL32), OPTIONAL, TARGET, INTENT(IN) :: r1(:), r2(:), r3(:), r4(:), r5(:), r6(:), r7(:), r8(:), r9(:) 993 REAL(KIND=REAL32), ALLOCATABLE :: out(:,:) 994 REAL(KIND=REAL32), POINTER :: r(:) 995 INTEGER :: nrow, ncol, iv, n 996 LOGICAL :: pre(9) 995 997 !------------------------------------------------------------------------------------------------------------------------------ 996 998 pre(:) = [PRESENT(r1),PRESENT(r2),PRESENT(r3),PRESENT(r4),PRESENT(r5),PRESENT(r6),PRESENT(r7),PRESENT(r8),PRESENT(r9)] … … 1012 1014 FUNCTION horzcat_r21(r0, r1, r2, r3, r4, r5, r6, r7, r8, r9) RESULT(out) 1013 1015 IMPLICIT NONE 1014 REAL , INTENT(IN) :: r0(:,:), r1(:)1015 REAL , OPTIONAL, INTENT(IN) :: r2(:), r3(:), r4(:), r5(:), r6(:), r7(:), r8(:), r9(:)1016 REAL , ALLOCATABLE :: out(:,:), tmp(:,:)1016 REAL(KIND=REAL32), INTENT(IN) :: r0(:,:), r1(:) 1017 REAL(KIND=REAL32), OPTIONAL, INTENT(IN) :: r2(:), r3(:), r4(:), r5(:), r6(:), r7(:), r8(:), r9(:) 1018 REAL(KIND=REAL32), ALLOCATABLE :: out(:,:), tmp(:,:) 1017 1019 INTEGER :: nc 1018 1020 nc = SIZE(r0, 2) … … 1024 1026 FUNCTION horzcat_d00(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9) RESULT(out) 1025 1027 IMPLICIT NONE 1026 DOUBLE PRECISION, INTENT(IN) :: d01027 DOUBLE PRECISION, OPTIONAL, TARGET, INTENT(IN) :: d1, d2, d3, d4, d5, d6, d7, d8, d91028 DOUBLE PRECISION, ALLOCATABLE :: out(:)1029 DOUBLE PRECISION, POINTER :: d1028 REAL(KIND=REAL64), INTENT(IN) :: d0 1029 REAL(KIND=REAL64), OPTIONAL, TARGET, INTENT(IN) :: d1, d2, d3, d4, d5, d6, d7, d8, d9 1030 REAL(KIND=REAL64), ALLOCATABLE :: out(:) 1031 REAL(KIND=REAL64), POINTER :: d 1030 1032 INTEGER :: ncol, iv 1031 1033 LOGICAL :: pre(9) … … 1046 1048 FUNCTION horzcat_d10(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9) RESULT(out) 1047 1049 IMPLICIT NONE 1048 DOUBLE PRECISION, INTENT(IN) :: d0(:), d11049 DOUBLE PRECISION, OPTIONAL, INTENT(IN) :: d2, d3, d4, d5, d6, d7, d8, d91050 DOUBLE PRECISION, ALLOCATABLE :: out(:), tmp(:)1050 REAL(KIND=REAL64), INTENT(IN) :: d0(:), d1 1051 REAL(KIND=REAL64), OPTIONAL, INTENT(IN) :: d2, d3, d4, d5, d6, d7, d8, d9 1052 REAL(KIND=REAL64), ALLOCATABLE :: out(:), tmp(:) 1051 1053 INTEGER :: nc 1052 1054 nc = SIZE(d0) … … 1058 1060 FUNCTION horzcat_d11(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9) RESULT(out) 1059 1061 IMPLICIT NONE 1060 DOUBLE PRECISION, INTENT(IN) :: d0(:)1061 DOUBLE PRECISION, OPTIONAL, TARGET, INTENT(IN) :: d1(:), d2(:), d3(:), d4(:), d5(:), d6(:), d7(:), d8(:), d9(:)1062 DOUBLE PRECISION, ALLOCATABLE :: out(:,:)1063 DOUBLE PRECISION, POINTER :: d(:)1062 REAL(KIND=REAL64), INTENT(IN) :: d0(:) 1063 REAL(KIND=REAL64), OPTIONAL, TARGET, INTENT(IN) :: d1(:), d2(:), d3(:), d4(:), d5(:), d6(:), d7(:), d8(:), d9(:) 1064 REAL(KIND=REAL64), ALLOCATABLE :: out(:,:) 1065 REAL(KIND=REAL64), POINTER :: d(:) 1064 1066 INTEGER :: nrow, ncol, iv, n 1065 1067 LOGICAL :: pre(9) … … 1082 1084 FUNCTION horzcat_d21(d0, d1, d2, d3, d4, d5, d6, d7, d8, d9) RESULT(out) 1083 1085 IMPLICIT NONE 1084 DOUBLE PRECISION, INTENT(IN) :: d0(:,:), d1(:)1085 DOUBLE PRECISION, OPTIONAL, INTENT(IN) :: d2(:), d3(:), d4(:), d5(:), d6(:), d7(:), d8(:), d9(:)1086 DOUBLE PRECISION, ALLOCATABLE :: out(:,:), tmp(:,:)1086 REAL(KIND=REAL64), INTENT(IN) :: d0(:,:), d1(:) 1087 REAL(KIND=REAL64), OPTIONAL, INTENT(IN) :: d2(:), d3(:), d4(:), d5(:), d6(:), d7(:), d8(:), d9(:) 1088 REAL(KIND=REAL64), ALLOCATABLE :: out(:,:), tmp(:,:) 1087 1089 INTEGER :: nc 1088 1090 nc = SIZE(d0, 2) … … 1159 1161 d(1,ic) = TRIM(titles(ic)) 1160 1162 SELECT CASE(p(ic:ic)) 1161 CASE('s'); d(2:nmx,ic) = s(:,is) ; is = is + 11162 CASE('i'); d(2:nmx,ic) = int2str(i(:,ii) ); ii = ii + 11163 CASE('r'); d(2:nmx,ic) = real2str(r(:,ir),rFm); ir = ir + 11163 CASE('s'); d(2:nmx,ic) = s(:,is) ; is = is + 1 1164 CASE('i'); d(2:nmx,ic) = num2str(i(:,ii) ); ii = ii + 1 1165 CASE('r'); d(2:nmx,ic) = num2str(r(:,ir),rFm); ir = ir + 1 1164 1166 END SELECT 1165 1167 END DO … … 1260 1262 d(1,ic) = TRIM(titles(ic)) 1261 1263 SELECT CASE(p(ic:ic)) 1262 CASE('s'); d(2:nrow,ic) = s(:,is) ; is = is + 11263 CASE('i'); d(2:nrow,ic) = int2str(i(:,ii) ); ii = ii + 11264 CASE('r'); d(2:nrow,ic) = real2str(r(:,ir),rFm); ir = ir + 11264 CASE('s'); d(2:nrow,ic) = s(:,is) ; is = is + 1 1265 CASE('i'); d(2:nrow,ic) = num2str(i(:,ii) ); ii = ii + 1 1266 CASE('r'); d(2:nrow,ic) = num2str(r(:,ir),rFm); ir = ir + 1 1265 1267 END SELECT 1266 1268 END DO … … 1362 1364 IF(.NOT.ANY(m)) CYCLE !--- no outlayers for tracer "itr" 1363 1365 v = TRIM(vnm(MIN(itr,SIZE(vnm))))//'('//TRIM(s) !--- "<name>(" 1364 IF(nv == 1) ttl(rk) = TRIM(v)//','// int2str(itr)//')' !--- "<name>(i,j,itr)" (single name)1366 IF(nv == 1) ttl(rk) = TRIM(v)//','//num2str(itr)//')' !--- "<name>(i,j,itr)" (single name) 1365 1367 IF(nv /= 1) ttl(rk) = TRIM(v)//')' !--- "<nam(itr)>(i,j)" (one name each table/itr index) 1366 1368 IF(rk==2) lerr = dispTable('ir', ttl, i=cat(PACK(ki,m)), r=cat(PACK(a(ib:ie),m)), & … … 1485 1487 CHARACTER(LEN=*), INTENT(IN) :: str 1486 1488 CHARACTER(LEN=*), INTENT(OUT) :: val 1487 DOUBLE PRECISION,ALLOCATABLE :: vl(:)1489 REAL(KIND=REAL64), ALLOCATABLE :: vl(:) 1488 1490 INTEGER, ALLOCATABLE :: id(:) 1489 1491 CHARACTER(LEN=maxlen), ALLOCATABLE :: ky(:) … … 1491 1493 !------------------------------------------------------------------------------------------------------------------------------ 1492 1494 CHARACTER(LEN=1024) :: s 1493 DOUBLE PRECISION:: v, vm, vp1495 REAL(KIND=REAL64) :: v, vm, vp 1494 1496 INTEGER :: i, ni, io 1495 1497 lerr = .FALSE. … … 1500 1502 IF(lerr) RETURN !--- Problem with the parsing 1501 1503 vl = str2dble(ky) !--- Conversion to doubles 1502 lerr = ANY(vl >= HUGE(1. d0))1504 lerr = ANY(vl >= HUGE(1._REAL64)) 1503 1505 CALL msg('Some values are non-numeric in: '//TRIM(s), ll=lerr) 1504 1506 IF(lerr) RETURN !--- Non-numerical values found … … 1519 1521 END DO 1520 1522 END DO 1521 val = dble2str(vl(1))1523 val = num2str(vl(1)) 1522 1524 1523 1525 END FUNCTION reduceExpr_basic … … 1581 1583 END FUNCTION str2int 1582 1584 !============================================================================================================================== 1583 ELEMENTAL REAL FUNCTION str2real(str) RESULT(out)1585 ELEMENTAL REAL(KIND=REAL32) FUNCTION str2real(str) RESULT(out) 1584 1586 IMPLICIT NONE 1585 1587 CHARACTER(LEN=*), INTENT(IN) :: str 1586 1588 INTEGER :: ierr 1587 1589 READ(str,*,IOSTAT=ierr) out 1588 IF(ierr/=0) out = -HUGE(1. )1590 IF(ierr/=0) out = -HUGE(1._REAL32) 1589 1591 END FUNCTION str2real 1590 1592 !============================================================================================================================== 1591 ELEMENTAL DOUBLE PRECISIONFUNCTION str2dble(str) RESULT(out)1593 ELEMENTAL REAL(KIND=REAL64) FUNCTION str2dble(str) RESULT(out) 1592 1594 IMPLICIT NONE 1593 1595 CHARACTER(LEN=*), INTENT(IN) :: str 1594 1596 INTEGER :: ierr 1595 1597 READ(str,*,IOSTAT=ierr) out 1596 IF(ierr/=0) out = -HUGE(1. d0)1598 IF(ierr/=0) out = -HUGE(1._REAL64) 1597 1599 END FUNCTION str2dble 1598 1600 !============================================================================================================================== … … 1617 1619 ELEMENTAL CHARACTER(LEN=maxlen) FUNCTION real2str(r,fmt) RESULT(out) 1618 1620 IMPLICIT NONE 1619 REAL ,INTENT(IN) :: r1621 REAL(KIND=REAL32), INTENT(IN) :: r 1620 1622 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: fmt 1621 1623 !------------------------------------------------------------------------------------------------------------------------------ … … 1627 1629 ELEMENTAL CHARACTER(LEN=maxlen) FUNCTION dble2str(d,fmt) RESULT(out) 1628 1630 IMPLICIT NONE 1629 DOUBLE PRECISION,INTENT(IN) :: d1631 REAL(KIND=REAL64), INTENT(IN) :: d 1630 1632 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: fmt 1631 1633 !------------------------------------------------------------------------------------------------------------------------------ -
LMDZ6/trunk/libf/misc/write_field.f90
r5270 r5748 5 5 USE netcdf, ONLY: nf90_sync, nf90_put_var, nf90_enddef, nf90_def_dim, nf90_unlimited, & 6 6 nf90_clobber, nf90_create, nf90_def_var, nf90_double 7 USE strings_mod, ONLY: int2str7 USE strings_mod, ONLY: num2str 8 8 IMPLICIT NONE; PRIVATE 9 9 PUBLIC WriteField … … 156 156 write (id,'("----- Field '//name//'",//)') 157 157 Dim=shape(Field) 158 MaxLen= int2str(len(trim(int2str(Dim(1)))))159 ColumnSize=20+6+3+len(trim( int2str(Dim(1))))158 MaxLen=num2str(len(trim(num2str(Dim(1))))) 159 ColumnSize=20+6+3+len(trim(num2str(Dim(1)))) 160 160 Nb=0 161 161 Pos=2 … … 164 164 165 165 if (MOD(nb,NbCol)==0) then 166 form='(t'//trim( int2str(pos))// ',i'//trim(MaxLen) //'," ---> ",g22.16,/)'166 form='(t'//trim(num2str(pos))// ',i'//trim(MaxLen) //'," ---> ",g22.16,/)' 167 167 Pos=2 168 168 else 169 form='(t'//trim( int2str(pos))// ',i'//trim(MaxLen) //'," ---> ",g22.16," | ",)'169 form='(t'//trim(num2str(pos))// ',i'//trim(MaxLen) //'," ---> ",g22.16," | ",)' 170 170 Pos=Pos+ColumnSize 171 171 endif … … 198 198 199 199 Dim=shape(Field) 200 offset=len(trim( int2str(Dim(1))))+len(trim(int2str(Dim(2))))+3200 offset=len(trim(num2str(Dim(1))))+len(trim(num2str(Dim(2))))+3 201 201 ColumnSize=20+6+3+offset 202 202 … … 210 210 211 211 if (MOD(nb,NbCol)==0) then 212 form='(t'//trim( int2str(pos))// &213 ',"('//trim( int2str(j))//',' &214 //trim( int2str(i))//')",t' &215 //trim( int2str(pos+offset)) &212 form='(t'//trim(num2str(pos))// & 213 ',"('//trim(num2str(j))//',' & 214 //trim(num2str(i))//')",t' & 215 //trim(num2str(pos+offset)) & 216 216 //'," ---> ",g22.16,/)' 217 217 Pos=2 218 218 else 219 form='(t'//trim( int2str(pos))// &220 ',"('//trim( int2str(j))//',' &221 //trim( int2str(i))//')",t' &222 //trim( int2str(pos+offset)) &219 form='(t'//trim(num2str(pos))// & 220 ',"('//trim(num2str(j))//',' & 221 //trim(num2str(i))//')",t' & 222 //trim(num2str(pos+offset)) & 223 223 //'," ---> ",g22.16," | ")' 224 224 Pos=Pos+ColumnSize … … 256 256 257 257 Dim=shape(Field) 258 offset=len(trim( int2str(Dim(1))))+len(trim(int2str(Dim(2))))+len(trim(int2str(Dim(3))))+4258 offset=len(trim(num2str(Dim(1))))+len(trim(num2str(Dim(2))))+len(trim(num2str(Dim(3))))+4 259 259 ColumnSize=22+6+3+offset 260 260 … … 273 273 274 274 if (MOD(nb,NbCol)==0) then 275 form='(t'//trim( int2str(pos))// &276 ',"('//trim( int2str(k))//',' &277 //trim( int2str(j))//',' &278 //trim( int2str(i))//')",t' &279 //trim( int2str(pos+offset)) &275 form='(t'//trim(num2str(pos))// & 276 ',"('//trim(num2str(k))//',' & 277 //trim(num2str(j))//',' & 278 //trim(num2str(i))//')",t' & 279 //trim(num2str(pos+offset)) & 280 280 //'," ---> ",g22.16,/)' 281 281 Pos=2 282 282 else 283 form='(t'//trim( int2str(pos))// &284 ',"('//trim( int2str(k))//',' &285 //trim( int2str(j))//',' &286 //trim( int2str(i))//')",t' &287 //trim( int2str(pos+offset)) &283 form='(t'//trim(num2str(pos))// & 284 ',"('//trim(num2str(k))//',' & 285 //trim(num2str(j))//',' & 286 //trim(num2str(i))//')",t' & 287 //trim(num2str(pos+offset)) & 288 288 //'," ---> ",g22.16," | ")' 289 289 ! d�pent de l'impl�mention, sur compaq, c'est necessaire
Note: See TracChangeset
for help on using the changeset viewer.
