12 use fckit_configuration_module,
only: fckit_configuration
16 use string_utils,
only: swap_name_member
32 character(len=*),
intent(in) :: str
33 integer,
intent(in) :: maxlen
35 character(len=maxlen) :: maxlenstr
37 write (maxlenstr, *) maxlen
40 call abor1_ftn(
'Reading '//trim(str)//
'from configuration. Too long, max length = '//trim(maxlenstr))
50 type(datetime),
intent(in) :: vdate
51 character(len=*),
optional,
intent(out) :: datest
52 integer,
optional,
intent(out) :: date(6)
53 character(len=4),
optional,
intent(out) :: yyyy
54 character(len=2),
optional,
intent(out) :: mm
55 character(len=2),
optional,
intent(out) :: dd
56 character(len=2),
optional,
intent(out) :: hh
57 character(len=2),
optional,
intent(out) :: min
58 character(len=2),
optional,
intent(out) :: ss
61 integer(kind=c_int) :: idate, isecs
65 call datetime_to_ifs(vdate, idate, isecs)
66 dateloc(1) = idate/10000
67 dateloc(2) = idate/100 - dateloc(1)*100
68 dateloc(3) = idate - (dateloc(1)*10000 + dateloc(2)*100)
69 dateloc(4) = isecs/3600
70 dateloc(5) = (isecs - dateloc(4)*3600)/60
71 dateloc(6) = isecs - (dateloc(4)*3600 + dateloc(5)*60)
73 if (
present(datest)) &
74 write(datest,
'(I4,I0.2,I0.2,A1,I0.2,I0.2,I0.2)') dateloc(1),dateloc(2),dateloc(3),
"_",&
75 dateloc(4),dateloc(5),dateloc(6)
78 if (
present(date)) date = dateloc
81 if (
present(yyyy))
write(yyyy,
'(I4) ') dateloc(1)
82 if (
present(mm ))
write(mm ,
'(I0.2)') dateloc(2)
83 if (
present(dd ))
write(dd ,
'(I0.2)') dateloc(3)
84 if (
present(hh ))
write(hh ,
'(I0.2)') dateloc(4)
85 if (
present(min ))
write(min ,
'(I0.2)') dateloc(5)
86 if (
present(ss ))
write(ss ,
'(I0.2)') dateloc(6)
95 character(len=*),
intent(in) :: inputstr
96 character(len=*),
intent(in) :: search
97 character(len=*),
intent(in) :: replace
98 character(len(inputstr)+100) :: outputstr
104 nt = len_trim(search)
105 nr = len_trim(replace)
108 i = index(outputstr,search(:nt)) ;
if (i == 0)
exit
109 outputstr = outputstr(:i-1) // replace(:nr) // outputstr(i+nt:)
119 type(fckit_configuration),
intent(in) :: f_conf
120 character(len=*),
intent(in) :: varstring
121 character(len=*),
intent(out) :: var
122 character(len=*),
optional,
intent(in) :: default
123 logical,
optional,
intent(in) :: memberswap
125 character(len=:),
allocatable :: str
127 if (.not. f_conf%get(trim(varstring),str))
then
129 if (
present(default))
then
132 call abor1_ftn(
"fv3jedi_io_utils_mod.string_from_conf: "//trim(varstring)// &
133 " not found in config and no default provided. Aborting")
138 if (
present(memberswap) .and. memberswap)
call swap_name_member(f_conf, str)
144 if (
allocated(str))
deallocate(str)