LLT(3) - [CHARACTER:COMPARE] ASCII Lexical less than
result = llt(string_a, stringb)
elemental logical function llt(string_a, string_b)character(len=*),intent(in) :: string_a character(len=*),intent(in) :: string_b
o STRING_A is default character or an ASCII character string o STRING_B is the same type and kind as STRING_A o the result is a default logical
LLT(3) determines whether one string is lexically less than another string, where the two strings are interpreted as containing ASCII character codes. If the STRING_A and STRING_B are not the same length, the shorter is compared as if spaces were appended to it to form a value that has the same length as the longer.
In general, the lexical comparison intrinsics LGE, LGT, LLE, and LLT differ from the corresponding intrinsic operators .ge., .gt., .le., and [char46]lt., in that the latter use the processor’s character ordering (which is not ASCII on some targets), whereas the former always use the ASCII ordering.
o STRING_A : string to be tested o STRING_B : string to compare to STRING_A
Returns .true. if string_a < string_b, and .false. otherwise, based on the ASCII collating sequence.
If both input arguments are null strings, .false. is always returned.
If either string contains a character not in the ASCII character set, the result is processor dependent.
Sample program:
program demo_llt implicit none integer :: iResults:print *,’the ASCII collating sequence for printable characters’ write(*,’(1x,19a)’)(char(i),i=32,126) ! ASCII order
! basics print *,’case matters’ write(*,*) llt(’abc’,’ABC’) ! [F] lowercase is > uppercase write(*,*) llt(’abc’,’abc ’) ! [F] trailing spaces ! If both strings are of zero length the result is false. write(*,*) llt(’’,’’) ! [F] write(*,*) llt(’’,’a’) ! [T] the null string is padded write(*,*) llt(’a’,’’) ! [F] print *,’elemental’ write(*,*) llt(’abc’,[’abc’,’123’]) ! [F F] scalar and array write(*,*) llt([’cba’, ’123’],’abc’) ! [F T] write(*,*) llt([’abc’,’123’],[’cba’,’123’]) ! [T F] both arrays end program demo_llt
> the ASCII collating sequence for printable characters > !"#$%&’()*+,-./012 > 3456789:;<=>?@ABCDE > FGHIJKLMNOPQRSTUVWX > YZ[\]^_‘abcdefghijk > lmnopqrstuvwxyz{|}~ > case matters > F > F > F > T > F > elemental > F F > F T > T F
FORTRAN 77
LGE(3), LGT(3), LLE(3))
Functions that perform operations on character strings, return lengths of arguments, and search for certain arguments:
Fortran intrinsic descriptions (license: MIT) @urbanjost
o ELEMENTAL: ADJUSTL(3), ADJUSTR(3), INDEX(3), SCAN(3), VERIFY(3) o NONELEMENTAL: LEN_TRIM(3), LEN(3), REPEAT(3), TRIM(3)
Nemo Release 3.1 | llt (3) | February 23, 2025 |