!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ! ! glint_commandline.F90 - part of the Community Ice Sheet Model (CISM) ! !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ! ! Copyright (C) 2005-2014 ! CISM contributors - see AUTHORS file for list of contributors ! ! This file is part of CISM. ! ! CISM is free software: you can redistribute it and/or modify it ! under the terms of the Lesser GNU General Public License as published ! by the Free Software Foundation, either version 3 of the License, or ! (at your option) any later version. ! ! CISM is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! Lesser GNU General Public License for more details. ! ! You should have received a copy of the Lesser GNU General Public License ! along with CISM. If not, see . ! !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #include "config.inc" #ifdef HAVE_2003ARGS #define NARGS command_argument_count() #define GETARG get_command_argument #else #define NARGS iargc #define GETARG getarg #endif module glint_commandline use glimmer_global, only:fname_length implicit none character(len=5000) :: commandline_history !< complete command line character(len=fname_length) :: commandline_configname !< name of the configuration file character(len=fname_length) :: commandline_resultsname !< name of results file character(len=fname_length) :: commandline_climatename !< name of climate configuration file contains !> get the command line and parse it !! !! \author Magnus Hagdorn !! \date April 2009 subroutine glint_GetCommandline() implicit none integer numargs,nfiles integer :: i #ifndef HAVE_2003ARGS integer, external :: iargc #endif character(len=100) :: argument integer, dimension(100) :: argumentIdx ! defaults commandline_resultsname = 'results' ! get number of arguments and file names numargs = NARGS ! reconstruct command line to store commandline_history call GETARG(0,commandline_history) do i=1,numargs call GETARG(i,argument) commandline_history = trim(commandline_history)//" "//trim(argument) end do if (numargs > 0) then i=0 nfiles = 0 ! loop over command line arguments do while (i < numargs) i = i + 1 call GETARG(i,argument) ! check if it is an option if (argument(1:1) == '-') then select case (trim(argument)) case ('-h') call glint_commandlineHelp() stop case ('-r') i = i+1 if (i > numargs) then write(*,*) 'Error, expect name of output file to follow -o option' call glint_commandlineHelp() stop end if call GETARG(i,commandline_resultsname) case default write(*,*) 'Unkown option ',trim(argument) call glint_commandlineHelp() stop end select else ! it's not an option nfiles = nfiles+1 argumentIdx(nfiles) = i end if end do if (numargs >= 1) then call GETARG(1,commandline_configname) if (numargs > 1) then ! call GETARG(1,commandline_configname) call GETARG(2,commandline_climatename) endif else write(*,*) 'Need at least one argument' call glint_commandlineHelp() stop end if else write(*,*) 'Enter name of climate configuration file' read(*,'(a)') commandline_climatename write(*,*) 'Enter name of GLIDE configuration file to be read' read(*,'(a)') commandline_configname end if end subroutine glint_GetCommandline !> print out command line !! !! \author Magnus Hagdorn !! \date April 2009 subroutine glint_PrintCommandline() implicit none write(*,*) 'Entire commandline' write(*,*) trim(commandline_history) write(*,*) write(*,*) 'commandline_climatename: ',trim(commandline_climatename) write(*,*) 'commandline_configname: ', trim(commandline_configname) write(*,*) 'commandline_resultsname: ', trim(commandline_resultsname) end subroutine glint_PrintCommandline !> print help message !! !! \author Magnus Hagdorn !! \date April 2009 subroutine glint_commandlineHelp() implicit none character(len=500) :: pname call GETARG(0,pname) write(*,*) 'Usage: ',trim(pname),' [options] climname cfgname' write(*,*) 'where [options] are' write(*,*) ' -h: this message' write(*,*) ' -r : the name of the results file (default: results)' end subroutine glint_commandlineHelp end module glint_commandline