program demo_set_args
use M_CLI2, only : filenames=>unnamed, set_args, get_args
use M_CLI2, only : get_args_fixed_size
implicit none
integer :: i
! DEFINE ARGS
real :: x, y, z
real :: p(3)
character(len=:),allocatable :: title
logical :: l, lbig
integer,allocatable :: ints(:)
!
! DEFINE COMMAND (TO SET INITIAL VALUES AND ALLOWED KEYWORDS)
! AND READ COMMAND LINE
call set_args(' &
! reals
& -x 1 -y 2.3 -z 3.4e2 &
! integer array
& -p -1,-2,-3 &
! always double-quote strings
& --title "my title" &
! set all logical values to F or T.
& -l F -L F &
! set allocatable size to zero if you like by using a delimiter
& -ints , &
! string should be a single character at a minimum
& --label " " &
& ')
! ASSIGN VALUES TO ELEMENTS
! SCALARS
call get_args('x',x)
call get_args('y',y)
call get_args('z',z)
call get_args('l',l)
call get_args('L',lbig)
call get_args('ints',ints) ! ALLOCATABLE ARRAY
call get_args('title',title) ! ALLOCATABLE STRING
call get_args_fixed_size('p',p) ! NON-ALLOCATABLE ARRAY
! USE VALUES
write(*,*)'x=',x
write(*,*)'y=',y
write(*,*)'z=',z
write(*,*)'p=',p
write(*,*)'title=',title
write(*,*)'ints=',ints
write(*,*)'l=',l
write(*,*)'L=',lbig
! UNNAMED VALUES
if(size(filenames).gt.0)then
write(*,'(i6.6,3a)')(i,'[',filenames(i),']',i=1,size(filenames))
endif
end program demo_set_args