[UP]


Manual Reference Pages  - switch (3)

NAME

switch(3f) - [M_strings:ARRAY] converts between CHARACTER scalar and array of single characters (LICENSE:PD)

CONTENTS

Synopsis
Description
Examples
Author
License

SYNOPSIS

pure function switch(array) result ((string))

character(len=1),intent(in) :: array(:) character(len=SIZE(array)) :: string

or

pure function switch((string)) result ((array))

    character(len=1),intent(in) :: array(:)
    character(len=SIZE(array))  :: string

DESCRIPTION

SWITCH(3f): generic function that switches CHARACTER (string) to an (array) of single characters or an (array) of single characters to a CHARACTER (string). Useful in passing strings to C. New Fortran features may supersede these routines.

EXAMPLES

Sample program:

   program demo_switch
   use M_strings, only : switch, isalpha, islower, nospace
   character(len=*),parameter :: dashes=’-----------------------------------’
   character(len=*),parameter :: string=’This is a string of letters’
   character(len=1024)        :: line

! First, examples of standard Fortran features write(*,*)[’A’,’=’,’=’,’=’,’=’,’=’].eq.’=’ ! returns array [F,T,T,T,T,T] write(*,*)all([’=’,’=’,’=’,’=’,’=’,’=’].eq.’=’) ! this would return T write(*,*)all([’A’,’=’,’=’,’=’,’=’,’=’].eq.’=’) ! this would return F

! so to test if the string DASHES is all dashes using SWITCH(3f) is if(all(switch(dashes).eq.’-’))then write(*,*)’DASHES is all dashes’ endif

! so to test is a string is all letters ! isalpha(3f) returns .true. only if character is a letter write(*,*) all(isalpha(switch(dashes))) ! false because dashes are not a letter write(*,*) all(isalpha(switch(string))) ! false because of spaces write(*,*) all(isalpha(switch(nospace(string)))) ! true because removed whitespace

! to see if a string is all uppercase write(*,*) string ! show the string write(*,’(1x,*("[",a,"]":))’) switch(string) ! converted to character array write(*,’(*(l3))’) islower(switch(string))

line=nospace(string) ! we need a string that is all letters write(*,*)’LINE=’,trim(line) write(*,*) islower(switch(nospace(string))) ! all true except first character write(*,*) all(islower(switch(nospace(string)))) ! should be false write(*,*) all(islower(switch(nospace(string(2:))))) ! should be true

end program demo_switch

Expected output

   >  F T T T T T
   >  T
   >  F
   >  DASHES is all dashes
   >  F
   >  F
   >  T
   >  This is a string of letters
   >  [T][h][i][s][ ][i][s][ ][a][ ][s][t][r][i][n][g][ ][o][f][ ][l][e][t][t][e][r][s]
   >   F  T  T  T  F  T  T  F  T  F  T  T  T  T  T  T  F  T  T  F  T  T  T  T  T  T  T
   >  LINE=Thisisastringofletters
   >  F T T T T T T T T T T T T T T T T T T T T T
   >  F
   >  T

AUTHOR

John S. Urban

LICENSE

Public Domain


switch (3) July 05, 2020
Generated by manServer 1.08 from 3a76f809-b306-4cd3-bb81-5210a96b7846 using man macros.