gtool5 Fortran 90/95 ライブラリ 1.0.0-rc5
English
Loading...
Searching...
No Matches
gtdata_netcdf_generic.f90
Go to the documentation of this file.
1!>
2!> @file gtdata_netcdf_generic.f90
3!>
4!> @author Eizi TOYODA, Yasuhiro MORIKAWA
5!> @copyright Copyright (C) GFD Dennou Club, 2000-2026. All rights reserved. <br/>
6!> License is BSD-2-Clause. See [COPYRIGHT](@ref COPYRIGHT) in detail
7!>
8!> @en
9!> @brief Generic interface declarations for abstract netCDF interface
10!> @enden
11!>
12!> @ja
13!> @brief 抽象 netCDF インターフェイスの総称宣言
14!> @endja
15!>
16
17!>
18!> @en
19!> @brief Generic interface declarations for abstract netCDF interface
20!>
21!> This module provides generic interface declarations for the abstract
22!> netCDF layer. In the an library, "variables" rather than "files" are
23!> opened and closed. Everything is treated as variables and their attributes.
24!>
25!> ## Main interfaces
26!>
27!> | Interface | Description |
28!> |-----------|-------------|
29!> | Open | Open a variable |
30!> | Close | Close a variable |
31!> | Create | Create a variable |
32!> | Inquire | Query variable properties |
33!> | Get | Read data from a variable |
34!> | Put | Write data to a variable |
35!> | get_attr | Get attribute value |
36!> | Put_Attr | Set attribute value |
37!> | del_attr | Delete an attribute |
38!> | copy_attr | Copy an attribute |
39!> | attr_rewind | Reset attribute iterator |
40!> | attr_next | Get next attribute name |
41!> | var_search | Search for variables |
42!>
43!> @enden
44!>
45!> @ja
46!> @brief 抽象 netCDF インターフェイスの総称宣言
47!>
48!> このモジュールは抽象 netCDF 層の総称インターフェイス宣言を提供します。
49!> an ライブラリでは「ファイル」ではなく「変数」を開いたり閉じたりします。
50!> すべてのものは変数とその属性として扱われます。
51!>
52!> ## 主なインターフェイス
53!>
54!> | インターフェイス | 説明 |
55!> |-----------------|------|
56!> | Open | 変数を開く |
57!> | Close | 変数を閉じる |
58!> | Create | 変数を作成 |
59!> | Inquire | 変数属性を問い合わせ |
60!> | Get | 変数からデータを読込 |
61!> | Put | 変数にデータを書込 |
62!> | get_attr | 属性値を取得 |
63!> | Put_Attr | 属性値を設定 |
64!> | del_attr | 属性を削除 |
65!> | copy_attr | 属性をコピー |
66!> | attr_rewind | 属性イテレータをリセット |
67!> | attr_next | 次の属性名を取得 |
68!> | var_search | 変数を検索 |
69!>
70!> @endja
71!>
73 !
74
75 implicit none
76
77 !---------------------------------------------------------------------------
78 !> @en Basic open/close operations @enden
79 !> @ja 基本開閉動作 @endja
80 !---------------------------------------------------------------------------
81
82 !>
83 !> @en
84 !> @brief Open a netCDF variable
85 !>
86 !> In the an library, "variables" are opened/closed, not "files".
87 !> Everything is treated as variables and their attributes.
88 !> @enden
89 !>
90 !> @ja
91 !> @brief netCDF 変数を開く
92 !>
93 !> an ライブラリでは「ファイル」ではなく「変数」を開きます。
94 !> すべてのものは変数とその属性として扱われます。
95 !> @endja
96 !>
97 interface open
98 !>
99 !> @en
100 !> @brief Open a variable by URL
101 !>
102 !> Opens the variable identified by url and stores it in var.
103 !> A variable is either a netCDF variable or a netCDF dimension.
104 !> If writable is .true., opens in write mode (default: .false.).
105 !> @enden
106 !>
107 !> @ja
108 !> @brief URL で変数を開く
109 !>
110 !> url で識別される変数を開き var に格納します。
111 !> 変数とは netCDF 変数または netCDF 次元です。
112 !> writable が .true. なら書込モードで開きます (デフォルト: .false.)。
113 !> @endja
114 !>
115 recursive subroutine gdncvaropen(var, url, writable, err)
117 type(gd_nc_variable), intent(out):: var
118 character(len = *), intent(in):: url
119 logical, intent(in), optional:: writable
120 logical, intent(out), optional:: err
121 end subroutine gdncvaropen
122 !>
123 !> @en
124 !> @brief Open a dimension variable by dimension order
125 !>
126 !> Opens the variable corresponding to the dimord-th dimension
127 !> of an already opened variable src_var.
128 !> @enden
129 !>
130 !> @ja
131 !> @brief 次元順序で次元変数を開く
132 !>
133 !> 既に開かれた変数 src_var の dimord 番目の次元にあたる変数を開きます。
134 !> @endja
135 !>
136 subroutine gdncvaropenbydimord(var, src_var, dimord, err)
138 type(gd_nc_variable), intent(out):: var
139 type(gd_nc_variable), intent(in):: src_var
140 integer, intent(in):: dimord
141 logical, intent(out), optional:: err
142 end subroutine gdncvaropenbydimord
143 end interface
144
145 interface search_dim
146 integer function gdncsearchdim(var, dimname)
148 type(gd_nc_variable), intent(in):: var
149 character(len = *), intent(in):: dimname
150 end function gdncsearchdim
151 end interface
152
153 !>
154 !> @en
155 !> @brief Create a new netCDF variable
156 !> @enden
157 !> @ja
158 !> @brief 新しい netCDF 変数を作成
159 !> @endja
160 !>
161 interface create
162 !>
163 !> @en
164 !> @brief Create a dependent variable
165 !>
166 !> Creates a variable with dimensions dims at location url.
167 !> If xtype is omitted, defaults to real.
168 !> To create a zero-dimensional variable, pass a zero-length array for dims.
169 !> @enden
170 !>
171 !> @ja
172 !> @brief 従属変数を作成
173 !>
174 !> 場所 url に次元 dims を持った変数を作成します。
175 !> xtype を省略すると real とみなされます。
176 !> ゼロ次元変数を作るには dims に長さゼロの配列を渡します。
177 !> @endja
178 !>
179 subroutine gdncvarcreate(var, url, xtype, dims, overwrite, err)
181 type(gd_nc_variable), intent(out):: var
182 character(len = *), intent(in):: url
183 character(len = *), intent(in):: xtype
184 type(gd_nc_variable), intent(in):: dims(:)
185 logical, intent(in), optional:: overwrite
186 logical, intent(out), optional:: err
187 end subroutine gdncvarcreate
188 !>
189 !> @en
190 !> @brief Create a dimension variable
191 !>
192 !> Creates a dimension variable with the specified length.
193 !> @enden
194 !>
195 !> @ja
196 !> @brief 次元変数を作成
197 !>
198 !> 長さ length の次元変数を作成します。
199 !> @endja
200 !>
201 subroutine gdncvarcreated(var, url, xtype, length, overwrite, err)
203 type(gd_nc_variable), intent(out):: var
204 character(len = *), intent(in):: url
205 character(len = *), intent(in):: xtype
206 integer, intent(in):: length
207 logical, intent(in), optional:: overwrite
208 logical, intent(out), optional:: err
209 end subroutine gdncvarcreated
210 end interface
211
212 interface
213 subroutine gdncvardel(varname, hint, stat)
214 character(len = *), intent(in):: varname
215 character(len = *), intent(in):: hint
216 integer, intent(out):: stat
217 end subroutine gdncvardel
218 end interface
219
220 interface close
221 subroutine gdncvarclose(var, err)
223 type(gd_nc_variable), intent(in):: var
224 logical, intent(out), optional:: err
225 end subroutine gdncvarclose
226 end interface
227
228 !---------------------------------------------------------------------------
229 !> @en Variable inquiry @enden
230 !> @ja 変数に関する問い合わせ @endja
231 !---------------------------------------------------------------------------
232
233 !> @en For debugging purposes @enden
234 !> @ja デバッグ用 @endja
235 interface tostring
236 function gdncvartostring(var) result(result)
237 use dc_types, only: string
239 character(string):: result
240 type(gd_nc_variable), intent(in):: var
241 end function gdncvartostring
242 end interface
243
244 interface inquire
245
246 subroutine gdncvarinquire(var, ndims, dimlen, growable, name, url, xtype)
248 type(gd_nc_variable), intent(in):: var
249 integer, intent(out), optional:: ndims !< @en Number of dimensions @enden @ja 次元数 @endja
250 integer, intent(out), optional:: dimlen !< @en Dimension length (for 1D variables) @enden @ja 次元長 (1次元変数の場合) @endja
251 logical, intent(out), optional:: growable !< @en Whether variable has unlimited dimension @enden @ja 成長可能次元を持つか @endja
252 character(*), intent(out), optional:: name !< @en Variable name after '?' @enden @ja '?' 以降の変数名 @endja
253 character(*), intent(out), optional:: url !< @en Full URL including filename @enden @ja ファイル名を含む完全URL @endja
254 character(*), intent(out), optional:: xtype !< @en Variable type name @enden @ja 変数の型名 @endja
255 end subroutine gdncvarinquire
256
257 !> @en Array argument must have ndims elements @enden
258 !> @ja 引数は ndims 個でなければならない @endja
259 subroutine gdncvarinquireia(var, dimlen)
261 type(gd_nc_variable), intent(in):: var
262 integer, intent(out):: dimlen(:)
263 end subroutine gdncvarinquireia
264
265 subroutine gdncattrinquire(var, attrname, xtype)
267 type(gd_nc_variable), intent(in):: var
268 character(len=*), intent(in):: attrname
269 character(len=*), intent(out), optional:: xtype
270 end subroutine gdncattrinquire
271
272 end interface
273
274 interface inquireplus
275
276 subroutine gdncattrinquireplus(var, attrname, varid, nf_attrname)
278 type(gd_nc_variable), intent(in):: var
279 character(len=*), intent(in):: attrname
280 integer, intent(out):: varid
281 character(len=*), intent(out):: nf_attrname
282 end subroutine gdncattrinquireplus
283
284 end interface
285
286 !---------------------------------------------------------------------------
287 !> @en
288 !> @brief Attribute operations
289 !>
290 !> From the an library's perspective that everything is a variable,
291 !> global attributes are treated as variable attributes.
292 !> When reading attributes, variable attributes are searched first,
293 !> then global attributes.
294 !> @enden
295 !>
296 !> @ja
297 !> @brief 属性操作
298 !>
299 !> すべては変数という an ライブラリの立場から、
300 !> 大域属性は変数属性とみなされます。
301 !> 属性読み取り時には変数属性の次に大域属性を検索します。
302 !> @endja
303 !---------------------------------------------------------------------------
304
305 !>
306 !> @en
307 !> @brief Reset attribute iterator
308 !>
309 !> To get all attributes of a variable, first call attr_rewind(var),
310 !> then call attr_next(var, name, [end]) in a loop.
311 !> @enden
312 !>
313 !> @ja
314 !> @brief 属性イテレータをリセット
315 !>
316 !> 変数の全属性を取得するには、まず attr_rewind(var) を呼び、
317 !> ループ内で attr_next(var, name, [end]) を呼び出します。
318 !> @endja
319 !>
320 interface attr_rewind
321 subroutine gdncvarattrrewind(var)
323 type(gd_nc_variable), intent(in):: var
324 end subroutine gdncvarattrrewind
325 end interface
326
327 interface attr_next
328 subroutine gdncvarattrnext(var, name, end)
330 type(gd_nc_variable), intent(in):: var
331 character(len = *), intent(out):: name
332 logical, intent(out), optional:: end
333 end subroutine gdncvarattrnext
334 end interface
335
336 !>
337 !> @en
338 !> @brief Get attribute value
339 !>
340 !> Gets the attribute name of variable var and stores it in value.
341 !> If the attribute doesn't exist or value is too short, default is used.
342 !> Type conversion is performed as needed.
343 !> @enden
344 !>
345 !> @ja
346 !> @brief 属性値を取得
347 !>
348 !> 変数 var の属性 name を取得して value に格納します。
349 !> 属性が存在しないか value の長さが不足している場合は
350 !> default が補われます。必要に応じて型変換が行われます。
351 !> @endja
352 !>
353 interface get_attr
354
355 subroutine gdncattrgetchar(var, name, value, default, stat)
357 type(gd_nc_variable), intent(in):: var
358 character(len = *), intent(in):: name
359 character(len = *), intent(out):: value
360 character(len = *), intent(in):: default
361 integer, intent(out):: stat
362 end subroutine gdncattrgetchar
363
364 subroutine gdncvargetattrlogical(var, name, value, default)
366 type(gd_nc_variable), intent(in):: var
367 character(len = *), intent(in):: name
368 logical, intent(out):: value
369 logical, intent(in), optional:: default
370 end subroutine gdncvargetattrlogical
371
372 !>
373 !> @en
374 !> @brief Get numeric attribute (stat return codes)
375 !> - stat = -1: attribute does not exist
376 !> - stat = 0..size(value): attribute fully read, size is stat
377 !> - stat > size(value): array too short, needs stat elements
378 !> @enden
379 !>
380 !> @ja
381 !> @brief 数値属性を取得 (stat 戻り値)
382 !> - stat = -1: 属性が存在しない
383 !> - stat = 0..size(value): 属性を全部読み取った、サイズは stat 個
384 !> - stat > size(value): 配列長不足、stat 個必要
385 !> @endja
386 !>
387 subroutine gdncattrgetreal(var, name, value, stat, default)
389 type(gd_nc_variable), intent(in):: var
390 character(len = *), intent(in):: name
391 real, intent(out):: value(:)
392 integer, intent(out):: stat
393 real, intent(in), optional:: default
394 end subroutine gdncattrgetreal
395
396 subroutine gdncattrgetdouble(var, name, value, stat, default)
397 use dc_types, only: dp
399 type(gd_nc_variable), intent(in):: var
400 character(len = *), intent(in):: name
401 real(DP), intent(out):: value(:)
402 integer, intent(out):: stat
403 real(DP), intent(in), optional:: default
404 end subroutine gdncattrgetdouble
405
406 subroutine gdncattrgetint(var, name, value, stat, default)
408 type(gd_nc_variable), intent(in):: var
409 character(len = *), intent(in):: name
410 integer, intent(out):: value(:)
411 integer, intent(out):: stat
412 integer, intent(in), optional:: default
413 end subroutine gdncattrgetint
414
415 end interface
416
417 !>
418 !> @en
419 !> @brief Set attribute value
420 !>
421 !> Stores value in attribute name of variable var.
422 !> The attribute type is set to match the type of value.
423 !> Logical values are stored as single character: T for true, F for false.
424 !> @enden
425 !>
426 !> @ja
427 !> @brief 属性値を設定
428 !>
429 !> 変数 var の属性 name に value を格納します。
430 !> 属性の型は value の型に適合するように設定されます。
431 !> 論理型は 1 文字の文字型として格納され、真は T、偽は F となります。
432 !> @endja
433 !>
434 interface put_attr
435
436 subroutine gdncvarputattrreal(var, name, value, err)
438 type(gd_nc_variable), intent(in):: var
439 character(len = *), intent(in):: name
440 real, intent(in):: value(:)
441 logical, intent(out), optional:: err
442 end subroutine gdncvarputattrreal
443
444 subroutine gdncvarputattrdouble(var, name, value, err)
445 use dc_types, only: dp
447 type(gd_nc_variable), intent(in):: var
448 character(len = *), intent(in):: name
449 real(DP), intent(in):: value(:)
450 logical, intent(out), optional:: err
451 end subroutine gdncvarputattrdouble
452
453 subroutine gdncvarputattrint(var, name, value, err)
455 type(gd_nc_variable), intent(in):: var
456 character(len = *), intent(in):: name
457 integer, intent(in):: value(:)
458 logical, intent(out), optional:: err
459 end subroutine gdncvarputattrint
460
461 subroutine gdncvarputattrlogical(var, name, value, err)
463 type(gd_nc_variable), intent(in):: var
464 character(len = *), intent(in):: name
465 logical, intent(in):: value
466 logical, intent(out), optional:: err
467 end subroutine gdncvarputattrlogical
468
469 subroutine gdncvarputattrchar(var, name, value, xtype, err)
471 type(gd_nc_variable), intent(in):: var
472 character(len = *), intent(in):: name
473 character(len = *), intent(in):: value
474 character(len = *), intent(in), optional:: xtype
475 logical, intent(out), optional:: err
476 end subroutine gdncvarputattrchar
477
478 end interface
479
480 interface del_attr
481 subroutine gdncvardelattr(var, name, err)
483 type(gd_nc_variable), intent(in):: var
484 character(len = *), intent(in):: name
485 logical, intent(out), optional:: err
486 end subroutine gdncvardelattr
487 end interface
488
489 interface copy_attr
490 subroutine gdncvarattrcopy(to, attrname, from, stat)
492 type(gd_nc_variable), intent(in):: to
493 character(len = *), intent(in):: attrname
494 type(gd_nc_variable), intent(in):: from
495 integer, intent(out):: stat
496 end subroutine gdncvarattrcopy
497 end interface
498
499 !---------------------------------------------------------------------------
500 !> @en Data I/O @enden
501 !> @ja データ入出力 @endja
502 !---------------------------------------------------------------------------
503
504 !> @en Read data from a variable @enden
505 !> @ja 変数からデータを読込 @endja
506 interface get
507
508 subroutine gdncvargetreal(var, start, count, stride, imap, &
509 & siz, value, iostat)
511 type(gd_nc_variable), intent(in):: var
512 integer, intent(in):: start(:)
513 integer, intent(in):: count(:)
514 integer, intent(in):: stride(:)
515 integer, intent(in):: imap(:)
516 integer, intent(in):: siz
517 real, intent(out):: value(siz)
518 integer, intent(out):: iostat
519 end subroutine gdncvargetreal
520
521 subroutine gdncvargetdouble(var, start, count, stride, imap, &
522 & siz, value, iostat)
523 use dc_types, only: dp
525 type(gd_nc_variable), intent(in):: var
526 integer, intent(in):: start(:)
527 integer, intent(in):: count(:)
528 integer, intent(in):: stride(:)
529 integer, intent(in):: imap(:)
530 integer, intent(in):: siz
531 real(DP), intent(out):: value(siz)
532 integer, intent(out):: iostat
533 end subroutine gdncvargetdouble
534
535 subroutine gdncvargetint(var, start, count, stride, imap, &
536 & siz, value, iostat)
537 use dc_types, only: dp
539 type(gd_nc_variable), intent(in):: var
540 integer, intent(in):: start(:)
541 integer, intent(in):: count(:)
542 integer, intent(in):: stride(:)
543 integer, intent(in):: imap(:)
544 integer, intent(in):: siz
545 integer, intent(out):: value(siz)
546 integer, intent(out):: iostat
547 end subroutine gdncvargetint
548
549 end interface
550
551 !> @en Write data to a variable @enden
552 !> @ja 変数にデータを書込 @endja
553 interface put
554
555 subroutine gdncvarputreal(var, start, count, stride, imap, &
556 & siz, value, iostat)
558 type(gd_nc_variable), intent(in):: var
559 integer, intent(in):: start(:)
560 integer, intent(in):: count(:)
561 integer, intent(in):: stride(:)
562 integer, intent(in):: imap(:)
563 integer, intent(in):: siz
564 real, intent(in):: value(siz)
565 integer, intent(out):: iostat
566 end subroutine gdncvarputreal
567
568 subroutine gdncvarputdouble(var, start, count, stride, imap, &
569 & siz, value, iostat)
570 use dc_types, only: dp
572 type(gd_nc_variable), intent(in):: var
573 integer, intent(in):: start(:)
574 integer, intent(in):: count(:)
575 integer, intent(in):: stride(:)
576 integer, intent(in):: imap(:)
577 integer, intent(in):: siz
578 real(DP), intent(in):: value(siz)
579 integer, intent(out):: iostat
580 end subroutine gdncvarputdouble
581
582 subroutine gdncvarputint(var, start, count, stride, imap, &
583 & siz, value, iostat)
585 type(gd_nc_variable), intent(in):: var
586 integer, intent(in):: start(:)
587 integer, intent(in):: count(:)
588 integer, intent(in):: stride(:)
589 integer, intent(in):: imap(:)
590 integer, intent(in):: siz
591 integer, intent(in):: value(siz)
592 integer, intent(out):: iostat
593 end subroutine gdncvarputint
594
595 subroutine gdncvarputchar(var, start, count, stride, imap, &
596 & siz, value, iostat)
598 type(gd_nc_variable), intent(in):: var
599 integer, intent(in):: start(:)
600 integer, intent(in):: count(:)
601 integer, intent(in):: stride(:)
602 integer, intent(in):: imap(:)
603 integer, intent(in):: siz
604 character(*), intent(in):: value(siz)
605 integer, intent(out):: iostat
606 end subroutine gdncvarputchar
607
608 end interface
609
610 !---------------------------------------------------------------------------
611 !> @en Search for variables by filename @enden
612 !> @ja ファイル名から変数を検索 @endja
613 !---------------------------------------------------------------------------
614
615 !> @en Search for variables @enden
616 !> @ja 変数を検索 @endja
617 interface var_search
618
619 subroutine gdncvarsearchinit(iter, urlBase)
621 type(gd_nc_variable_search), intent(out):: iter
622 character(len = *), intent(in):: urlBase
623 end subroutine gdncvarsearchinit
624
625 subroutine gdncvarsearchnext(iter, url, end)
627 type(gd_nc_variable_search), intent(inout):: iter
628 character(len = *), intent(out):: url
629 logical, intent(out):: end
630 end subroutine gdncvarsearchnext
631
632 end interface
633
634 !>
635 !> @en
636 !> @brief Emergency sync
637 !>
638 !> This routine does not call StoreError itself because it may be
639 !> called from SysDepAbort.
640 !> @enden
641 !>
642 !> @ja
643 !> @brief 非常脱出用同期
644 !>
645 !> このルーチンは SysDepAbort からも呼ばれるため、
646 !> 自分で StoreError することはありません。
647 !> @endja
648 !>
649 interface
650 subroutine gdncvarsync(var, stat)
652 type(gd_nc_variable), intent(in), optional:: var
653 integer, intent(out), optional:: stat
654 end subroutine gdncvarsync
655 end interface
656
657 !> @en Internal routine for an layer @enden
658 !> @ja an 層の内部使用ルーチン @endja
659 interface
660 subroutine gdncxtypename(ixtype, xtype)
661 integer, intent(in):: ixtype
662 character(*), intent(out):: xtype
663 end subroutine gdncxtypename
664 end interface
665
666end module gtdata_netcdf_generic
subroutine gdncattrgetchar(var, name, value, default, stat)
subroutine gdncattrgetreal(var, name, value, stat, default)
subroutine gdncattrgetdouble(var, name, value, stat, default)
subroutine gdncattrgetint(var, name, value, stat, default)
subroutine gdncattrinquire(var, attrname, xtype)
subroutine gdncattrinquireplus(var, attrname, varid, nf_attrname)
integer function gdncsearchdim(var, dimname)
subroutine gdncvarattrnext(var, name, vend)
subroutine gdncvarattrrewind(var)
subroutine gdncvarattrcopy(to, attrname, from, stat)
subroutine gdncvargetattrlogical(var, name, value, default)
subroutine gdncvarclose(var, err)
subroutine gdncvarcreate(var, url, xtype, dims, overwrite, err)
subroutine gdncvarcreated(var, url, xtype, length, overwrite, err)
subroutine gdncvardelattr(var, name, err)
subroutine gdncvargetreal(var, start, cnt, stride, imap, siz, val, iostat)
subroutine gdncvargetint(var, start, cnt, stride, imap, siz, val, iostat)
subroutine gdncvargetdouble(var, start, cnt, stride, imap, siz, val, iostat)
subroutine gdncvarinquire(var, ndims, dimlen, growable, name, url, xtype)
subroutine gdncvarinquireia(var, dimlen)
recursive subroutine gdncvaropen(var, url, writable, err)
subroutine gdncvaropenbydimord(var, src_var, dimord, err)
subroutine gdncvarputattrchar(var, name, val, xtype, err)
subroutine gdncvarputattrint(var, name, value, err)
subroutine gdncvarputattrreal(var, name, value, err)
subroutine gdncvarputattrdouble(var, name, value, err)
subroutine gdncvarputchar(var, start, count, stride, imap, siz, value, iostat)
subroutine gdncvarputint(var, start, count, stride, imap, siz, value, iostat)
subroutine gdncvarputreal(var, start, count, stride, imap, siz, value, iostat)
subroutine gdncvarputdouble(var, start, count, stride, imap, siz, value, iostat)
subroutine gdncvarsearchnext(iter, url, end)
subroutine gdncvarsearchinit(iter, urlbase)
character(string) function gdncvartostring(var)
an 層の内部使用ルーチン
変数にデータを書込
変数に関する問い合わせ
ファイル名から変数を検索
種別型パラメタを提供します。
Definition dc_types.f90:55
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition dc_types.f90:137
integer, parameter, public dp
倍精度実数型変数
Definition dc_types.f90:92