[UP]


Manual Reference Pages  - M_CLI2 (3)

NAME

M_CLI2(3fm) - [ARGUMENTS::M_CLI2] - command line argument parsing using a prototype command (LICENSE:PD)

CONTENTS

Synopsis
Description
Example
Author
License

SYNOPSIS

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

DESCRIPTION

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.

EXAMPLE

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

AUTHOR

John S. Urban, 2019

LICENSE

Public Domain


M_CLI2 (3) March 11, 2021
Generated by manServer 1.08 from d0d60129-e669-4f01-a549-ed971fa1616b using man macros.