program demo_specified
use M_CLI2, only : set_args, get_args, specified
implicit none
! DEFINE ARGS
integer :: flag
integer,allocatable :: ints(:)
real,allocatable :: twonames(:)
! IT IS A BAD IDEA TO NOT HAVE THE SAME DEFAULT VALUE FOR ALIASED
! NAMES BUT CURRENTLY YOU STILL SPECIFY THEM
call set_args('-flag 1 -f 1 -ints 1,2,3 -i 1,2,3 -twonames 11.3 -T 11.3')
! ASSIGN VALUES TO ELEMENTS CONDITIONALLY CALLING WITH SHORT NAME
call get_args('flag',flag)
if(specified('f'))call get_args('f',flag)
call get_args('ints',ints)
if(specified('i'))call get_args('i',ints)
call get_args('twonames',twonames)
if(specified('T'))call get_args('T',twonames)
! IF YOU WANT TO KNOW IF GROUPS OF PARAMETERS WERE SPECIFIED USE
! ANY(3f) and ALL(3f)
write(*,*)specified(['twonames','T '])
write(*,*)'ANY:',any(specified(['twonames','T ']))
write(*,*)'ALL:',all(specified(['twonames','T ']))
! FOR MUTUALLY EXCLUSIVE
if (all(specified(['twonames','T '])))then
write(*,*)'You specified both names -T and -twonames'
endif
! FOR REQUIRED PARAMETER
if (.not.any(specified(['twonames','T '])))then
write(*,*)'You must specify -T or -twonames'
endif
! USE VALUES
write(*,*)'flag=',flag
write(*,*)'ints=',ints
write(*,*)'twonames=',twonames
end program demo_specified