M_CLI2(3fm) - [ARGUMENTS::M_CLI2] - command line argument parsing using a prototype command (LICENSE:PD)
Synopsis
Description
Example
Author
License
Available procedures and variables:
use M_CLI2, only : set_args, get_args, unnamed, remaining, args use M_CLI2, only : get_args_fixed_length, get_args_fixed_size use M_CLI2, only : specified ! convenience functions use M_CLI2, only : dget, iget, lget, rget, sget, cget use M_CLI2, only : dgets, igets, lgets, rgets, sgets, cgets
Allow for command line parsing much like standard Unix command line parsing using a simple prototype.Typically one call to SET_ARGS(3f) is made to define the command arguments, set default values and parse the command line. Then a call is made to GET_ARGS(3f) for each command keyword to obtain the argument values.
The documentation for SET_ARGS(3f) and GET_ARGS(3f) provides further details.
Sample program using type conversion routines
program demo_M_CLI2 use M_CLI2, only : set_args, get_args use M_CLI2, only : filenames=>unnamed use M_CLI2, only : get_args_fixed_length, get_args_fixed_size implicit none integer :: i integer,parameter :: dp=kind(0.0d0) ! ! DEFINE ARGS real :: x, y, z real(kind=dp),allocatable :: point(:) logical :: l, lbig logical,allocatable :: logicals(:) character(len=:),allocatable :: title ! VARIABLE LENGTH character(len=40) :: label ! FIXED LENGTH real :: p(3) ! FIXED SIZE logical :: logi(3) ! FIXED SIZE ! ! DEFINE AND PARSE (TO SET INITIAL VALUES) COMMAND LINE ! o set a value for all keywords. ! o double-quote strings ! o set all logical values to F or T. ! o value delimiter is comma, colon, or space call set_args( & & -x 1 -y 2 -z 3 & & -p -1 -2 -3 & & --point 11.11, 22.22, 33.33e0 & & --title "my title" -l F -L F & & --logicals F F F F F & & -logi F T F & ! note space between quotes is required & --label " " & & ) ! ASSIGN VALUES TO ELEMENTS call get_args(x,x) ! SCALARS call get_args(y,y) call get_args(z,z) call get_args(l,l) call get_args(L,lbig) call get_args(title,title) ! ALLOCATABLE STRING call get_args(point,point) ! ALLOCATABLE ARRAYS call get_args(logicals,logicals) ! ! for NON-ALLOCATABLE VARIABLES! for non-allocatable string call get_args_fixed_length(label,label)
! for non-allocatable arrays call get_args_fixed_size(p,p) call get_args_fixed_size(logi,logi) ! ! USE VALUES write(*,*)x=,x, y=,y, z=,z, x+y+z write(*,*)p=,p write(*,*)point=,point write(*,*)title=,title write(*,*)label=,label write(*,*)l=,l write(*,*)L=,lbig write(*,*)logicals=,logicals write(*,*)logi=,logi ! ! unnamed strings ! if(size(filenames).gt.0)then write(*,(i6.6,3a))(i,[,filenames(i),],i=1,size(filenames)) endif ! end program demo_M_CLI2
John S. Urban, 2019
Public Domain
M_CLI2 (3) | March 11, 2021 |