get_args_fixed_size Interface

public interface get_args_fixed_size

Contents


Module Procedures

private subroutine get_fixedarray_class(keyword, generic, delimiters)

NAME

get_args(3f) - [ARGUMENTS:M_CLI2] return keyword values when parsing
command line arguments
(LICENSE:PD)

SYNOPSIS

get_args(3f) and its convenience functions:

 use M_CLI2, only : get_args
 ! convenience functions
 use M_CLI2, only : dget, iget, lget, rget, sget, cget
 use M_CLI2, only : dgets, igets, lgets, rgets, sgets, cgets

 subroutine get_args(name,value,delimiters)

  character(len=*),intent(in) :: name

  type(${TYPE}),allocatable,intent(out) :: value(:)
  ! or
  type(${TYPE}),allocatable,intent(out) :: value

  character(len=*),intent(in),optional :: delimiters

  where ${TYPE} may be from the set
          {real,doubleprecision,integer,logical,complex,character(len=:)}

DESCRIPTION

GET_ARGS(3f) returns the value of keywords after SET_ARGS(3f) has
been called to parse the command line. For fixed-length CHARACTER
variables see GET_ARGS_FIXED_LENGTH(3f). For fixed-size arrays see
GET_ARGS_FIXED_SIZE(3f).

As a convenience multiple pairs of keywords and variables may be
specified if and only if all the values are scalars and the CHARACTER
variables are fixed-length or pre-allocated.

OPTIONS

 NAME        name of commandline argument to obtain the value of
 VALUE       variable to hold returned value. The kind of the value
             is used to determine the type of returned value. May
             be a scalar or allocatable array. If type is CHARACTER
             the scalar must have an allocatable length.
 DELIMITERS  By default the delimiter for array values are comma,
             colon, and whitespace. A string containing an alternate
             list of delimiter characters may be supplied.

CONVENIENCE FUNCTIONS

There are convenience functions that are replacements for calls to
get_args(3f) for each supported default intrinsic type

  o scalars -- dget(3f), iget(3f), lget(3f), rget(3f), sget(3f),
               cget(3f)
  o vectors -- dgets(3f), igets(3f), lgets(3f), rgets(3f),
               sgets(3f), cgets(3f)

D is for DOUBLEPRECISION, I for INTEGER, L for LOGICAL, R for REAL,
S for string (CHARACTER), and C for COMPLEX.

If the functions are called with no argument they will return the
UNNAMED array converted to the specified type.

EXAMPLE

Sample program:

 program demo_get_args
 use M_CLI2,  only : filenames=>unnamed, set_args, get_args
 implicit none
 integer                      :: i
  ! Define ARGS
 real                         :: x, y, z
 real,allocatable             :: p(:)
 character(len=:),allocatable :: title
 logical                      :: l, lbig
  ! Define and parse (to set initial values) command line
  !   o only quote strings and use double-quotes
  !   o set all logical values to F or T.
 call set_args('         &
    & -x 1 -y 2 -z 3     &
    & -p -1,-2,-3        &
    & --title "my title" &
    & -l F -L F          &
    & --label " "        &
    & ')
  ! Assign values to elements
  ! Scalars
 call get_args('x',x,'y',y,'z',z,'l',l,'L',lbig)
  ! Allocatable string
 call get_args('title',title)
  ! Allocatable arrays
 call get_args('p',p)
  ! Use values
 write(*,'(1x,g0,"=",g0)')'x',x, 'y',y, 'z',z
 write(*,*)'p=',p
 write(*,*)'title=',title
 write(*,*)'l=',l
 write(*,*)'L=',lbig
 if(size(filenames) > 0)then
    write(*,'(i6.6,3a)')(i,'[',filenames(i),']',i=1,size(filenames))
 endif
 end program demo_get_args

AUTHOR

  John S. Urban, 2019

LICENSE

  Public Domain

NAME

get_args_fixed_length(3f) - [ARGUMENTS:M_CLI2] return keyword values
for fixed-length string when parsing command line
(LICENSE:PD)

SYNOPSIS

subroutine get_args_fixed_length(name,value)

 character(len=*),intent(in)  :: name
 character(len=:),allocatable :: value
 character(len=*),intent(in),optional :: delimiters

DESCRIPTION

get_args_fixed_length(3f) returns the value of a string
keyword when the string value is a fixed-length CHARACTER
variable.

OPTIONS

NAME   name of commandline argument to obtain the value of

VALUE  variable to hold returned value.
       Must be a fixed-length CHARACTER variable.

DELIMITERS  By default the delimiter for array values are comma,
            colon, and whitespace. A string containing an alternate
            list of delimiter characters may be supplied.

EXAMPLE

Sample program:

 program demo_get_args_fixed_length
 use M_CLI2,  only : set_args, get_args_fixed_length
 implicit none

  ! Define args
 character(len=80)   :: title
  ! Parse command line
 call set_args(' --title "my title" ')
  ! Assign values to variables
 call get_args_fixed_length('title',title)
  ! Use values
 write(*,*)'title=',title

 end program demo_get_args_fixed_length

AUTHOR

  John S. Urban, 2019

LICENSE

  Public Domain

NAME

get_args_fixed_size(3f) - [ARGUMENTS:M_CLI2] return keyword values
for fixed-size array when parsing command line arguments
(LICENSE:PD)

SYNOPSIS

subroutine get_args_fixed_size(name,value)

 character(len=*),intent(in) :: name
 [real|doubleprecision|integer|logical|complex] :: value(NNN)
    or
 character(len=MMM) :: value(NNN)

 character(len=*),intent(in),optional :: delimiters

DESCRIPTION

get_args_fixed_size(3f) returns the value of keywords for fixed-size
arrays after set_args(3f) has been called.  On input on the command
line all values of the array must be specified.

OPTIONS

NAME        name of commandline argument to obtain the value of

VALUE       variable to hold returned values. The kind of the value
            is used to determine the type of returned value. Must be
            a fixed-size array. If type is CHARACTER the length must
            also be fixed.

DELIMITERS  By default the delimiter for array values are comma,
            colon, and whitespace. A string containing an alternate
            list of delimiter characters may be supplied.

EXAMPLE

Sample program:

 program demo_get_args_fixed_size
 use M_CLI2,  only : set_args, get_args_fixed_size
 implicit none
 integer,parameter   :: dp=kind(0.0d0)
 ! DEFINE ARGS
 real                :: x(2)
 real(kind=dp)       :: y(2)
 integer             :: p(3)
 character(len=80)   :: title(1)
 logical             :: l(4), lbig(4)
 complex             :: cmp(2)
 ! DEFINE AND PARSE (TO SET INITIAL VALUES) COMMAND LINE
 !   o only quote strings
 !   o set all logical values to F or T.
 call set_args(' &
    & -x 10.0,20.0 &
    & -y 11.0,22.0 &
    & -p -1,-2,-3 &
    & --title "my title" &
    & -l F,T,F,T -L T,F,T,F  &
    & --cmp 111,222.0,333.0e0,4444 &
    & ')
 ! ASSIGN VALUES TO ELEMENTS
    call get_args_fixed_size('x',x)
    call get_args_fixed_size('y',y)
    call get_args_fixed_size('p',p)
    call get_args_fixed_size('title',title)
    call get_args_fixed_size('l',l)
    call get_args_fixed_size('L',lbig)
    call get_args_fixed_size('cmp',cmp)
 ! USE VALUES
    write(*,*)'x=',x
    write(*,*)'p=',p
    write(*,*)'title=',title
    write(*,*)'l=',l
    write(*,*)'L=',lbig
    write(*,*)'cmp=',cmp
 end program demo_get_args_fixed_size

Results:

AUTHOR

  John S. Urban, 2019

LICENSE

  Public Domain

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: keyword
class(*) :: generic(:)
character(len=*), intent(in), optional :: delimiters