get_args(3f) - [ARGUMENTS:M_CLI2] return keyword values when parsing
command line arguments
(LICENSE:PD)
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=:)}
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.
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.
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.
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
John S. Urban, 2019
Public Domain
get_args_fixed_length(3f) - [ARGUMENTS:M_CLI2] return keyword values
for fixed-length string when parsing command line
(LICENSE:PD)
subroutine get_args_fixed_length(name,value)
character(len=*),intent(in) :: name
character(len=:),allocatable :: value
character(len=*),intent(in),optional :: delimiters
get_args_fixed_length(3f) returns the value of a string
keyword when the string value is a fixed-length CHARACTER
variable.
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.
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
John S. Urban, 2019
Public Domain
get_args_fixed_size(3f) - [ARGUMENTS:M_CLI2] return keyword values
for fixed-size array when parsing command line arguments
(LICENSE:PD)
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
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.
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.
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:
John S. Urban, 2019
Public Domain
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | keyword | |||
class(*) | :: | generic(:) | ||||
character(len=*), | intent(in), | optional | :: | delimiters |