Changeset 5747
- Timestamp:
- Jul 1, 2025, 5:54:33 PM (2 days ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/misc/strings_mod.f90
r5746 r5747 6 6 PUBLIC :: maxlen, init_printout, msg, get_in, lunout, prt_level 7 7 PUBLIC :: strLower, strHead, strStack, strCount, strReduce, strClean, strIdx 8 PUBLIC :: strUpper, strTail, strStackm, strParse, strReplace, strFind, find, cat8 PUBLIC :: strUpper, strTail, strStackm, strParse, strReplace, strFind, find, duplicate, cat 9 9 PUBLIC :: dispTable, dispOutliers, dispNameList 10 10 PUBLIC :: is_numeric, bool2str, int2str, real2str, dble2str … … 27 27 INTERFACE strFind; MODULE PROCEDURE strFind_1, strFind_m; END INTERFACE strFind 28 28 INTERFACE find; MODULE PROCEDURE strFind_1, strFind_m, intFind_1, intFind_m, booFind; END INTERFACE find 29 INTERFACE duplicate; MODULE PROCEDURE dupl_s, dupl_i, dupl_r, dupl_l; END INTERFACE duplicate 29 30 INTERFACE dispOutliers; MODULE PROCEDURE dispOutliers_1, dispOutliers_2; END INTERFACE dispOutliers 30 31 INTERFACE reduceExpr; MODULE PROCEDURE reduceExpr_1, reduceExpr_m; END INTERFACE reduceExpr … … 449 450 IF(PRESENT(n)) n = SIZE(out(:), DIM=1) 450 451 END FUNCTION booFind 452 !============================================================================================================================== 453 454 455 !============================================================================================================================== 456 !=== DUPLICATE A VECTOR "v(:)" "n" times ====================================================================================== 457 !============================================================================================================================== 458 SUBROUTINE dupl_s(v, n, vdup) 459 CHARACTER(LEN=*), INTENT(IN) :: v(:) 460 INTEGER, INTENT(IN) :: n 461 CHARACTER(LEN=maxlen), ALLOCATABLE, INTENT(OUT) :: vdup(:) 462 !------------------------------------------------------------------------------------------------------------------------------ 463 INTEGER :: nv, i 464 nv = SIZE(v) 465 ALLOCATE(vdup(n*nv)) 466 DO i = 1, n; vdup(1+(i-1)*nv:i*nv) = v; END DO 467 END SUBROUTINE dupl_s 468 !============================================================================================================================== 469 SUBROUTINE dupl_i(v, n, vdup) 470 INTEGER, INTENT(IN) :: v(:) 471 INTEGER, INTENT(IN) :: n 472 INTEGER, ALLOCATABLE, INTENT(OUT) :: vdup(:) 473 !------------------------------------------------------------------------------------------------------------------------------ 474 INTEGER :: nv, i 475 nv = SIZE(v) 476 ALLOCATE(vdup(n*nv)) 477 DO i = 1, n; vdup(1+(i-1)*nv:i*nv) = v; END DO 478 END SUBROUTINE dupl_i 479 !============================================================================================================================== 480 SUBROUTINE dupl_r(v, n, vdup) 481 REAL, INTENT(IN) :: v(:) 482 INTEGER, INTENT(IN) :: n 483 REAL, ALLOCATABLE, INTENT(OUT) :: vdup(:) 484 !------------------------------------------------------------------------------------------------------------------------------ 485 INTEGER :: nv, i 486 nv = SIZE(v) 487 ALLOCATE(vdup(n*nv)) 488 DO i = 1, n; vdup(1+(i-1)*nv:i*nv) = v; END DO 489 END SUBROUTINE dupl_r 490 !============================================================================================================================== 491 SUBROUTINE dupl_l(v, n, vdup) 492 LOGICAL, INTENT(IN) :: v(:) 493 INTEGER, INTENT(IN) :: n 494 LOGICAL, ALLOCATABLE, INTENT(OUT) :: vdup(:) 495 !------------------------------------------------------------------------------------------------------------------------------ 496 INTEGER :: nv, i 497 nv = SIZE(v) 498 ALLOCATE(vdup(n*nv)) 499 DO i = 1, n; vdup(1+(i-1)*nv:i*nv) = v; END DO 500 END SUBROUTINE dupl_l 451 501 !============================================================================================================================== 452 502
Note: See TracChangeset
for help on using the changeset viewer.