33   character(*), 
intent(in):: date_str
    41   integer, 
intent(out):: year  
    42   integer, 
intent(out):: month 
    43   integer, 
intent(out):: day   
    44   integer, 
intent(out):: hour  
    45   integer, 
intent(out):: min   
    46   real(DP), 
intent(out):: sec  
    47   character(*), 
intent(out):: zone
    49   logical, 
intent(out), 
optional:: err
    68   integer:: start, length
    69   character(STRING):: str1, str2
    70   character(TOKEN):: zone_pm, zone_hrs, zone_min
    72   character(STRING):: cause_c
    73   character(*), 
parameter:: subname = 
'DCCalDateParseStr1'    82   call match( 
'[-]*#d+-#d+-#d+[#w#s]+#d+:#d+:#d+', date_str, & 
    85   if ( length > 0 ) 
then    86     str1 = date_str(start:)
    90       & 
'date_str=<%c> is invalid expression as date.', &
    91       & c1 = trim(date_str) )
    98   call match( 
'^[-]*#d+-', str1, & 
   100   str2 = str1(start:start+length-2)
   101   str1 = str1(start+length:)
   107   call match( 
'^#d+-', str1, & 
   109   str2 = str1(start:start+length-2)
   110   str1 = str1(start+length:)
   116   call match( 
'^#d+[#w#s]', str1, & 
   118   str2 = str1(start:start+length-2)
   119   str1 = str1(start+length:)
   125   call match( 
'#d+:', str1, & 
   127   str2 = str1(start:start+length-2)
   128   str1 = str1(start+length:)
   134   call match( 
'#d+:', str1, & 
   136   str2 = str1(start:start+length-2)
   137   str1 = str1(start+length:)
   143   call match( 
'#d+', str1, & 
   145   str2 = str1(start:start+length-1)
   146   str1 = str1(start+length:)
   148   call match( 
'^#.#d+', str1, & 
   151   if ( length > 0 ) 
then   152     str2 = trim(str2) // str1(start:start+length-1)
   153     str1 = str1(start+length:)
   160   call match( 
'[#+-]#d+:#d+', str1, & 
   162   if ( length > 0 ) 
then   163     zone_pm = str1(start:start)
   164     str1 = str1(start+1:start+length-1)
   166     call match( 
'^#d+:', str1, & 
   168     zone_hrs = str1(start:start+length-2)
   169     zone_min = str1(start+length:)
   170     zone = trim(zone_pm) // trim(zone_hrs) // 
':' // trim(zone_min)
   175   call dbgmessage(
'year=<%d> month=<%d> day=<%d> hour=<%d> min=<%d> sec=<%f>' // &
   177     & i = (/year, month, day, hour, min/), d = (/sec/), &
   184   call storeerror( stat, subname, err, cause_c )
 
integer, parameter, public token
単語やキーワードを保持する文字型変数の種別型パラメタ 
 
integer, parameter, public dc_ebaddate
 
subroutine, public storeerror(number, where, err, cause_c, cause_i)
 
integer, parameter, public dc_noerr
 
シンプルな正規表現関数 'match' を提供します. 
 
integer, parameter, public dp
倍精度実数型変数 
 
subroutine, public match(pattern, text, start, length)
 
subroutine, public dbgmessage(fmt, i, r, d, L, n, c1, c2, c3, ca)
 
subroutine, public beginsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca, version)
 
subroutine, public endsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca)
 
integer, parameter, public dc_ealreadyinit
 
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ