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

# parse Subroutine

- 33 statements
- Source File

## subroutine parse(name)

### Uses

- - M_CLI2

### Arguments

Type | Intent | Optional | Attributes |  | Name |
--- | --- | --- | --- | --- | --- | ---
character(len=*) |  |  |  | :: | name |

### Contents

### Variables

help_text version_text

### Source Code

parse

## Variables

Type | Visibility | Attributes |  | Name |  | Initial |
--- | --- | --- | --- | --- | --- | --- | ---
character(len=:), | public, | allocatable | :: | help_text(:) |  |  |
character(len=:), | public, | allocatable | :: | version_text(:) |  |  |

## Source Code

         subroutine parse(name)
         !x! PUT EVERYTHING TO DO WITH COMMAND PARSING HERE FOR CLARITY
         use M_CLI2, only : set_args, get_args, get_args_fixed_length
         use M_CLI2, only : get_subcommand, set_mode
         character(len=*)              :: name    ! the subcommand name
         character(len=:),allocatable  :: help_text(:), version_text(:)
            call set_mode('response_file')
         ! define version text
            version_text=[character(len=80) :: &
               '@(#)PROGRAM:     demo_get_subcommand            >', &
               '@(#)DESCRIPTION: My demo program  >', &
               '@(#)VERSION:     1.0 20200715     >', &
               '@(#)AUTHOR:      me, myself, and I>', &
               '@(#)LICENSE:     Public Domain    >', &
               '' ]
             ! general help for "demo_get_subcommand --help"
             help_text=[character(len=80) :: &
              ' allowed subcommands are          ', &
              '   * run  -l -L --title -x -y -z  ', &
              '   * test -l -L --title           ', &
              '' ]
            ! find the subcommand name by looking for first word on command
            ! not starting with dash
            name = get_subcommand()
            select case(name)
            case('run')
             help_text=[character(len=80) :: &
              '                                  ', &
              ' Help for subcommand "run"        ', &
              '                                  ', &
              '' ]
             call set_args( &
             & '-x 1 -y 2 -z 3 --title "my title" -l F -L F',&
             & help_text,version_text)
             call get_args('x',x)
             call get_args('y',y)
             call get_args('z',z)
             call get_args_fixed_length('title',title)
             call get_args('l',l)
             call get_args('L',l_)
            case('test')
             help_text=[character(len=80) :: &
              '                                  ', &
              ' Help for subcommand "test"       ', &
              '                                  ', &
              '' ]
             call set_args(&
             & '--title "my title" -l F -L F --testname "Test"',&
             & help_text,version_text)
             call get_args_fixed_length('title',title)
             call get_args('l',l)
             call get_args('L',l_)
             call get_args_fixed_length('testname',testname)
            case default
             ! process help and version
             call set_args(' ',help_text,version_text)
             write(*,'(*(a))')'unknown or missing subcommand [',trim(name),']'
             write(*,'(a)')[character(len=80) ::  &
             ' allowed subcommands are          ', &
             '   * run  -l -L -title -x -y -z   ', &
             '   * test -l -L -title            ', &
             '' ]
             stop
            end select
         end subroutine parse