! Copyright (C) GFD Dennou Club, 2000.  All rights reserved
! sysdeparg.f90 - 環境依存性ルーチン (コマンドライン)

! 通常の処理系では iargc, getarg というサービスサブルーチンが
! つけられている。これを使えない処理系では適宜対処が必要である。
! 日立コンパイラでは上記サービスサブルーチンの挙動が違うので注意。

integer function SysdepArgCount() result(result)
    implicit none
    interface
        integer function iargc()
        end function
    end interface
    result = iargc()
end function

subroutine SysdepArgGet(idx_given, result)
    use dc_string, only: VSTRING, assignment(=), len
    implicit none
    integer, intent(in):: idx_given
    type(VSTRING), intent(out):: result
    character(len = 256):: buf
    integer:: idx
    integer:: argc
    interface
        integer function iargc()
        end function
    end interface
    ! 日立 ofort90 では idx + 1 
    argc = iargc()
    if (idx_given < 0) then
        idx = argc + 1 + idx_given
    else
        idx = idx_given
    endif
    if (idx > argc) then
        result = ""
    else
        call getarg(idx, buf)
        result = trim(buf)
    endif
end subroutine
