get_args_fixed_size – M_CLI2
Author: John S. Urban
Description: command line parsing

# get_args_fixed_size Interface

- 3 statements
- Source File

## public interface get_args_fixed_size

### Contents

### Module Procedures

get_fixedarray_class

## Module Procedures

### private subroutine get_fixedarray_class(keyword, generic, delimiters)

## NAME

    get_args(3f) - [ARGUMENTS:M_CLI2] return keyword values when parsing
    command line arguments
    (LICENSE:PD)

## SYNOPSIS

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=:)}

## DESCRIPTION

    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.

## OPTIONS

     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.

## CONVENIENCE FUNCTIONS

    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.

## EXAMPLE

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

## AUTHOR

      John S. Urban, 2019

## LICENSE

      Public Domain

## NAME

    get_args_fixed_length(3f) - [ARGUMENTS:M_CLI2] return keyword values
    for fixed-length string when parsing command line
    (LICENSE:PD)

## SYNOPSIS

    subroutine get_args_fixed_length(name,value)

     character(len=*),intent(in)  :: name
     character(len=:),allocatable :: value
     character(len=*),intent(in),optional :: delimiters

## DESCRIPTION

    get_args_fixed_length(3f) returns the value of a string
    keyword when the string value is a fixed-length CHARACTER
    variable.

## OPTIONS

    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.

## EXAMPLE

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

## AUTHOR

      John S. Urban, 2019

## LICENSE

      Public Domain

## NAME

    get_args_fixed_size(3f) - [ARGUMENTS:M_CLI2] return keyword values
    for fixed-size array when parsing command line arguments
    (LICENSE:PD)

## SYNOPSIS

    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

## DESCRIPTION

    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.

## OPTIONS

    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.

## EXAMPLE

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:

## AUTHOR

      John S. Urban, 2019

## LICENSE

      Public Domain

#### Arguments

Type | Intent | Optional | Attributes |  | Name |
--- | --- | --- | --- | --- | --- | ---
character(len=*), | intent(in) |  |  | :: | keyword |
class(*) |  |  |  | :: | generic(:) |
character(len=*), | intent(in), | optional |  | :: | delimiters |