#!/usr/bin/env ruby
# -*- f90 -*-
# vi: set sw=4 ts=8:
require("lib-rb2f90-macro")
require("optparse")
#
# "sysdepenv-****.f90" Generator with Ruby.
#
opt = OptionParser.new
opt.on('--envtype=VAL') {|v| $envtype = v}
opt.parse!(ARGV)
$envtype = "NOSTD" unless $envtype
print <<"__EndOfFortran90Code__"
!--
#{rb2f90_header_comment}!
!++
!
!== SysdepEnv - 環境依存性ルーチン (環境変数取得)
!
! Authors:: Yasuhiro MORIKAWA
! Version:: $Id: sysdepenv.rb2f90,v 1.2 2009-03-22 02:17:31 morikawa Exp $
! Tag Name:: $Name: gtool5-20090704 $
! Copyright:: Copyright (C) GFD Dennou Club, 2006. All rights reserved.
! License:: See COPYRIGHT[link:../../COPYRIGHT]
!
! Fortran 95 以前の大抵の処理系では GETENV というサービスサブルーチンが
! 用意されている. (Fortran90/95 の規格には含まれていない).
! Fortran 2003 規格には GET_ENVIRONMENT_VARIABLE というサブルーチンが
! 規定されている. これらを使えない処理系では適宜対処が必要である.
!
__EndOfFortran90Code__
print <<"__EndOfFortran90Code__"
subroutine SysdepEnvGet(env, str)
!
! この手続きは *env* に指定した環境変数の値を *str* へ返します.
! *env* 指定した環境変数が定義されていない場合は空文字が *str* へ
! 返ります.
! 処理系が GET_ENVIRONMENT_VARIABLE() または
! GETENV() を有していない場合は常に空文字が *str* へ
! 返ります.
!
! This procedure returns environment variable which is specified
! by *env* to *str*.
! If the environment variable is not set, blank is returned to *str*.
! If GET_ENVIRONMENT_VARIABLE() or
! GETENV() is not implemented, blank is returned to *str*
! at all times.
!
implicit none
character(len = *), intent(in) :: env ! 環境変数名
character(len = *), intent(out) :: str ! 環境変数の値
continue
#{ifelse($envtype, "NOGETENV", %Q{
str = ''
}, $envtype, "F2003STD", %Q{
call get_environment_variable(trim(adjustl(env)), str)
}, %Q{
call getenv(trim(adjustl(env)), str)
})}
end subroutine SysdepEnvGet
__EndOfFortran90Code__
print <<"__EndOfFooter__"
!--
! vi:set readonly sw=4 ts=8:
!
#{rb2f90_emacs_readonly}!
!++
__EndOfFooter__