subroutine cla_help(cmd_name)
character(len=*) :: cmd_name
integer(kind=int_kind) :: i
character(len=256) :: cmd_usage
cmd_usage = ""
do i=1,cla_num
if (cla_registry(i)%kind == cla_flag) then
cmd_usage = trim(cmd_usage) // " [" // trim(cla_registry(i)%key) // "]"
else
cmd_usage = trim(cmd_usage) // " [" // trim(cla_registry(i)%key) // "=" // &
trim(cla_registry(i)%default) // "]"
endif
enddo
do i=1,cla_posarg_num
cmd_usage = trim(cmd_usage) // " " // trim(cla_posarg_registry(i)%key)
enddo
write(stdout,*)'General usage:'
write(stdout,*)' ',cmd_name, trim(cmd_usage)
write(stdout,*)' '
write(stdout,*)'Options and flags {default values}:'
if (cla_num == 0) write(stdout,*)"None"
do i=1,cla_num
if (cla_registry(i)%kind == cla_flag) then
write(stdout,'(1x,a,1x,a24,":",4x,a)')trim(cla_registry(i)%key), &
trim(cla_registry(i)%longkey), &
trim(cla_registry(i)%description)
else
write(stdout,'(1x,a,1x,a24,":",4x,a,2x,"{",a,"}")')trim(cla_registry(i)%key), &
trim(cla_registry(i)%longkey), &
trim(cla_registry(i)%description), &
trim(cla_registry(i)%default)
endif
end do
write(stdout,*)' '
write(stdout,*)'Positional arguments:'
if (cla_posarg_num == 0) write(stdout,*)"None"
do i=1,cla_posarg_num
write(stdout,'(1x,a,":",1x,a,4x,a)')trim(cla_posarg_registry(i)%key), &
trim(cla_posarg_registry(i)%description)
end do
write(stdout,*)' '
write(stdout,*)'Also, -?, -h, -H, -help, --help, and --usage are recognized.'
write(stdout,*)' '
end subroutine cla_help