gtool5 Fortran 90/95 ライブラリ 1.0.0-rc5
English
Loading...
Searching...
No Matches
gtdata_internal_map Module Reference

Data Types

type  gt_dimmap
type  map_table_entry
interface  dimrange

Functions/Subroutines

subroutine dimrange_by_dimno (var, dimno, dimlo, dimhi)
subroutine map_dup (var, source_var)
subroutine, public map_create (var, class, cid, ndims, allcount, stat)
subroutine, public maptabadd (mapid, vid)
subroutine, public maptabdelete (var, err)
subroutine, public map_lookup (var, vid, map, ndims)
subroutine map_set (var, map, stat)
subroutine, public var_class (var, class, cid)
subroutine map_set_ndims (var, ndims, stat)
subroutine map_set_rank (var, rank, stat)
subroutine, public map_to_internal_specs (var, specs, ndims)
subroutine map_allocate (map, ndims)
subroutine map_apply (var, map)
subroutine map_resize (var, ndims)
subroutine gtvar_dump (var)
integer function dimord_skip_compact (dimord, map)

Detailed Description

gtool 変数のマップテーブル管理

gtool 変数というのは実はマップ表のキーとなる整数ハンドルである。 マップ表 maptab には実体表のエントリ番号と次元書き換え/イテレータ の表が載っている。

このレベルにおける参照カウントは作らないことにする。つまり、 マップ表と実体表は一対一対応するし、 ユーザがハンドルをコピーするのは勝手である。 もちろんユーザには必ずただ1回 当該ハンドルを close すなわち maptabdelete する義務がある。

Function/Subroutine Documentation

◆ dimord_skip_compact()

integer function gtdata_internal_map::dimord_skip_compact ( integer, intent(in) dimord,
type(gt_dimmap), dimension(:), intent(in) map )

縮約次元番号に対する外部次元番号を検索

次元表の中で非縮退次元だけを数えた次元番号 dimord の次元を 特定し、外部向けの次元番号を返す。

Parameters
[in]dimord縮約次元番号
[in]map次元マップ配列
Returns
外部次元番号 (見つからない場合は -1)

Definition at line 826 of file gtdata_internal_map.f90.

827 use dc_trace, only: dbgmessage
828 integer, intent(in):: dimord
829 type(GT_DIMMAP), intent(in):: map(:)
830 integer:: nd, id
831 result = -1
832 nd = 0
833 do, id = 1, size(map)
834 if (map(id)%count < 2) cycle
835 nd = nd + 1
836 if (nd < dimord) cycle
837 result = id
838 call dbgmessage('compact dim skip: %d <= %d', i=(/result, dimord/))
839 exit
840 enddo
デバッグ時の追跡用モジュール
Definition dc_trace.f90:150
subroutine, public dbgmessage(fmt, i, r, d, l, n, c1, c2, c3, ca)
Definition dc_trace.f90:680

References dc_trace::dbgmessage().

Here is the call graph for this function:

◆ dimrange_by_dimno()

subroutine gtdata_internal_map::dimrange_by_dimno ( type(gt_variable), intent(in) var,
integer, intent(in) dimno,
integer, intent(out) dimlo,
integer, intent(out) dimhi )

指定された次元の内部的添字番号範囲を取得

Parameters
[in]var変数ハンドル
[in]dimno次元番号
[out]dimlo次元の下限
[out]dimhi次元の上限

Definition at line 155 of file gtdata_internal_map.f90.

156 use gtdata_types, only: gt_variable
157 use gtdata_generic, only: open, close
159 type(gt_variable), intent(in):: var
160 integer, intent(in):: dimno
161 integer, intent(out):: dimlo, dimhi
162 type(gt_variable):: dimvar
163 integer:: vid
164 call open(dimvar, var, dimno, count_compact=.true., &
165 & inherit_slice=.false.)
166 call map_lookup(dimvar, vid=vid)
167 call dimrange(vid, dimlo, dimhi)
168 call close(dimvar)

◆ gtvar_dump()

subroutine gtdata_internal_map::gtvar_dump ( type(gt_variable), intent(in) var)

デバッグ用変数プロパティのダンプ

Parameters
[in]var変数ハンドル

Definition at line 767 of file gtdata_internal_map.f90.

768 use gtdata_types, only: gt_variable
770 use dc_trace, only: debug, dbgmessage
771 type(gt_variable), intent(in):: var
772 integer:: idim, imap
773 logical:: dbg_mode
774 continue
775 call debug( dbg_mode )
776 if (.not. dbg_mode) return
777 imap = var%mapid
778 if (imap < 1 .or. imap > size(maptab)) then
779 call dbgmessage('[gt_variable %d: invalid id]', i=(/imap/))
780 return
781 endif
782 if (associated(maptab(imap)%map)) then
783 call dbgmessage('[gt_variable %d: ndims=%d, map.size=%d]', &
784 & i=(/imap, maptab(imap)%ndims, size(maptab(imap)%map)/))
785 do, idim = 1, size(maptab(imap)%map)
786 call dbgmessage('[dim%d dimno=%d ofs=%d step=%d' &
787 &// ' all=%d start=%d count=%d stride=%d url=%c]', &
788 & c1=trim(maptab(imap)%map(idim)%url), &
789 & i=(/idim, maptab(imap)%map(idim)%dimno, &
790 & maptab(imap)%map(idim)%offset, &
791 & maptab(imap)%map(idim)%step, &
792 & maptab(imap)%map(idim)%allcount, &
793 & maptab(imap)%map(idim)%start, &
794 & maptab(imap)%map(idim)%count, &
795 & maptab(imap)%map(idim)%stride/))
796 enddo
797 else
798 call dbgmessage('[gt_variable %d: ndims=%d, map=null]', &
799 & i=(/imap, maptab(imap)%ndims/))
800 endif
801 call vartable_dump(maptab(imap)%vid)
subroutine, public vartable_dump(vid)

References dc_trace::dbgmessage(), and gtdata_internal_vartable::vartable_dump().

Here is the call graph for this function:

◆ map_allocate()

subroutine gtdata_internal_map::map_allocate ( type(gt_dimmap), dimension(:), pointer map,
integer, intent(in) ndims )

次元マップエントリを割り当て初期化

Parameters
[out]map割り当てられたマップ配列へのポインタ
[in]ndims割り当てるエントリ数

Definition at line 655 of file gtdata_internal_map.f90.

656 type(GT_DIMMAP), pointer:: map(:)
657 integer, intent(in):: ndims
658 if (ndims <= 0) then
659 nullify(map)
660 return
661 endif
662 allocate(map(1:ndims))
663 map(1:ndims)%dimno = -1
664 map(1:ndims)%url = ' '
665 map(1:ndims)%allcount = 0
666 map(1:ndims)%offset = 0
667 map(1:ndims)%step = 1
668 map(1:ndims)%start = 1
669 map(1:ndims)%count = 0
670 map(1:ndims)%stride = 1
671 map(1:ndims)%scalar = .false.

◆ map_apply()

subroutine gtdata_internal_map::map_apply ( type(gt_variable), intent(inout) var,
type(gt_dimmap), dimension(:), pointer map )

変数にマップテーブルを適用

Parameters
[in,out]var変数ハンドル
[in,out]map適用する次元マップ (解放され置き換えられる)

Definition at line 687 of file gtdata_internal_map.f90.

688 use gtdata_types, only: gt_variable
689 type(GT_VARIABLE), intent(inout):: var
690 type(GT_DIMMAP), pointer:: map(:)
691 type(GT_DIMMAP), pointer:: tmpmap(:), varmap
692 integer:: i, nd
693 nd = size(map)
694 allocate(tmpmap(nd))
695 do, i = 1, nd
696 tmpmap(i)%allcount = map(i)%allcount
697 tmpmap(i)%count = map(i)%count
698 if (map(i)%dimno > 0) then
699 varmap => maptab(var%mapid)%map(map(i)%dimno)
700 tmpmap(i)%url = varmap%url
701 tmpmap(i)%dimno = varmap%dimno
702 tmpmap(i)%offset = varmap%offset + map(i)%offset
703 tmpmap(i)%step = varmap%step * map(i)%step
704 else
705 tmpmap(i)%url = map(i)%url
706 tmpmap(i)%dimno = 0
707 tmpmap(i)%offset = map(i)%offset
708 tmpmap(i)%step = map(i)%step
709 endif
710 enddo
711 deallocate(map)
712 map => tmpmap

◆ map_create()

subroutine, public gtdata_internal_map::map_create ( type(gt_variable), intent(out) var,
integer, intent(in) class,
integer, intent(in) cid,
integer, intent(in) ndims,
integer, dimension(:), intent(in) allcount,
integer, intent(out) stat )

指定されたプロパティで変数を作成

変数 var を作成する。内部種別 class, 内部識別子 cid, 外見的次元数 ndims, 外見的次元長 allcount(:) を与える。 オフセットゼロを仮定して諸元の初期化が行われる。

Parameters
[out]var作成された変数ハンドル
[in]class内部種別 (VTB_CLASS_NETCDF 等)
[in]cid内部識別子
[in]ndims次元数
[in]allcount次元長の配列
[out]statステータスコード

Definition at line 246 of file gtdata_internal_map.f90.

247 use gtdata_types, only: gt_variable
250 type(gt_variable), intent(out):: var
251 integer, intent(in):: class, cid, ndims, allcount(:)
252 integer, intent(out):: stat
253 type(GT_DIMMAP), pointer:: map(:)
254 integer:: vid, i
255 continue
256
257 stat = dc_noerr
258 if ( ndims < 0 ) then
259 stat = gt_enomoredims
260 goto 999
261 end if
262 call vartableadd(vid, class, cid)
263 call maptabadd(var%mapid, vid)
264 if (ndims > 0) then
265 call map_allocate(map, ndims)
266 maptab(var%mapid)%ndims = ndims
267 maptab(var%mapid)%map => map
268
269 do, i = 1, ndims
270 map(i)%dimno = i
271 map(i)%allcount = allcount(i)
272 map(i)%count = allcount(i)
273 map(i)%offset = 0
274 map(i)%start = 1
275 map(i)%step = 1
276 map(i)%stride = 1
277 map(i)%scalar = .false.
278 enddo
279 else
280 ! スカラー変数 (ndims = 0) の場合
281 call map_allocate(map, 1)
282 maptab(var%mapid)%ndims = 0
283 maptab(var%mapid)%map => map
284 map(1)%dimno = 1
285 map(1)%allcount = 1
286 map(1)%count = 1
287 map(1)%offset = 0
288 map(1)%start = 1
289 map(1)%step = 1
290 map(1)%stride = 1
291 map(1)%scalar = .true.
292 end if
293
294999 continue
295 return
エラー処理用モジュール
Definition dc_error.f90:454
integer, parameter, public dc_noerr
エラー等を保持
Definition dc_error.f90:468
integer, parameter, public gt_enomoredims
-101 以下: データ構造のエラー
Definition dc_error.f90:507
subroutine, public vartableadd(vid, class, cid)
integer function, public ndims(vid)

References dc_error::dc_noerr, dc_error::gt_enomoredims, map_allocate(), maptabadd(), gtdata_internal_vartable::ndims(), and gtdata_internal_vartable::vartableadd().

Here is the call graph for this function:

◆ map_dup()

subroutine gtdata_internal_map::map_dup ( type(gt_variable), intent(out) var,
type(gt_variable), intent(in) source_var )

変数を複製

Parameters
[out]var複製された変数ハンドル
[in]source_varコピー元の変数ハンドル

Definition at line 184 of file gtdata_internal_map.f90.

185 use gtdata_types, only: gt_variable
187 use dc_trace, only: dbgmessage
188 type(gt_variable), intent(out):: var
189 type(gt_variable), intent(in):: source_var
190 integer:: vid, mid1, mid2, vid2, nd, class, cid
191 call map_lookup(source_var, vid=vid)
192 if (vid < 0) then
193 var = gt_variable(-1)
194 return
195 endif
196 if (vid == 0) then
197 vid2 = 0
198 else
199 call vartablelookup(vid, class=class, cid=cid)
200 call vartableadd(vid2, class, cid)
201 endif
202 call maptabadd(var%mapid, vid2)
203 mid1 = source_var%mapid
204 mid2 = var%mapid
205 maptab(mid2)%ndims = maptab(mid1)%ndims
206 if (associated(maptab(mid1)%map)) then
207 nd = size(maptab(mid1)%map)
208 allocate(maptab(mid2)%map(nd))
209 maptab(mid2)%map(1:nd) = maptab(mid1)%map(1:nd)
210 else
211 nullify(maptab(mid2)%map)
212 endif
213 call dbgmessage('map_dup mapid(%d from %d) vid(%d from %d)', &
214 & i=(/mid2, mid1, maptab(mid2)%vid, maptab(mid1)%vid/))
subroutine, public vartablelookup(vid, class, cid)

References dc_trace::dbgmessage(), map_lookup(), maptabadd(), gtdata_internal_vartable::vartableadd(), and gtdata_internal_vartable::vartablelookup().

Here is the call graph for this function:

◆ map_lookup()

subroutine, public gtdata_internal_map::map_lookup ( type(gt_variable), intent(in) var,
integer, intent(out), optional vid,
type(gt_dimmap), dimension(:), intent(out), optional map,
integer, intent(out), optional ndims )

マップテーブルエントリを検索

Parameters
[in]var変数ハンドル
[out]vid変数テーブルエントリID (省略可能)
[out]map次元マップ配列 (省略可能)
[out]ndims次元数 (省略可能)

Definition at line 412 of file gtdata_internal_map.f90.

413 use gtdata_types, only: gt_variable
414 type(GT_VARIABLE), intent(in):: var
415 integer, intent(out), optional:: vid
416 type(GT_DIMMAP), intent(out), optional:: map(:)
417 integer, intent(out), optional:: ndims
418 if (.not. allocated(maptab)) goto 999
419 if (var%mapid <= 0 .or. var%mapid > size(maptab)) goto 999
420 if (maptab(var%mapid)%vid == vid_invalid) goto 999
421 if (present(vid)) vid = maptab(var%mapid)%vid
422 if (present(map)) map(:) = maptab(var%mapid)%map(1:size(map))
423 if (present(ndims)) ndims = maptab(var%mapid)%ndims
424 return
425999 continue
426 if (present(vid)) vid = vid_invalid
427 if (present(map)) then
428 map(:)%dimno = -1
429 map(:)%url = " "
430 endif
431 if (present(ndims)) ndims = 0

◆ map_resize()

subroutine gtdata_internal_map::map_resize ( type(gt_variable), intent(in) var,
integer, intent(in) ndims )

変数の次元テーブルのサイズを変更

Parameters
[in]var変数ハンドル
[in]ndims次元テーブルの新しいサイズ

Definition at line 728 of file gtdata_internal_map.f90.

729 use gtdata_types, only: gt_variable
730 type(GT_VARIABLE), intent(in):: var
731 integer, intent(in):: ndims
732 type(GT_DIMMAP), pointer:: newmap(:)
733 type(GT_DIMMAP), pointer:: tmpmap(:)
734 integer:: n
735 if (associated(maptab(var%mapid)%map)) then
736 tmpmap => maptab(var%mapid)%map
737 call map_allocate(newmap, ndims)
738 n = min(size(tmpmap), ndims)
739 newmap(1:n) = tmpmap(1:n)
740 deallocate(tmpmap)
741 maptab(var%mapid)%map => newmap
742 newmap(n+1:ndims)%dimno = -1
743 newmap(n+1:ndims)%url = ' '
744 newmap(n+1:ndims)%allcount = 0
745 newmap(n+1:ndims)%offset = 0
746 newmap(n+1:ndims)%step = 1
747 newmap(n+1:ndims)%start = 1
748 newmap(n+1:ndims)%count = 0
749 newmap(n+1:ndims)%stride = 1
750 else
751 call map_allocate(maptab(var%mapid)%map, ndims)
752 n = 1
753 endif

References map_allocate().

Here is the call graph for this function:

◆ map_set()

subroutine gtdata_internal_map::map_set ( type(gt_variable), intent(in) var,
type(gt_dimmap), dimension(:), intent(in) map,
integer, intent(out) stat )

マップテーブルの値を設定

Parameters
[in]var変数ハンドル
[in]map設定する次元マップ配列
[out]statステータスコード

Definition at line 449 of file gtdata_internal_map.f90.

450 use gtdata_types, only: gt_variable
451 use dc_error, only: nf90_enotvar, gt_enomoredims, dc_noerr
452 type(gt_variable), intent(in):: var
453 type(GT_DIMMAP), intent(in):: map(:)
454 integer, intent(out):: stat
455 if (.not. allocated(maptab)) goto 999
456 if (var%mapid <= 0 .or. var%mapid > size(maptab)) goto 999
457 if (maptab(var%mapid)%vid == vid_invalid) goto 999
458 if (size(map) > size(maptab(var%mapid)%map)) then
459 stat = gt_enomoredims
460 return
461 endif
462 maptab(var%mapid)%map(1:size(map)) = map(:)
463 stat = dc_noerr
464 return
465999 continue
466 stat = nf90_enotvar

References dc_error::dc_noerr, and dc_error::gt_enomoredims.

◆ map_set_ndims()

subroutine gtdata_internal_map::map_set_ndims ( type(gt_variable), intent(in) var,
integer, intent(in) ndims,
integer, intent(out) stat )

変数の次元数を変更

Parameters
[in]var変数ハンドル
[in]ndims新しい次元数
[out]statステータスコード

Definition at line 509 of file gtdata_internal_map.f90.

510 use gtdata_types, only: gt_variable
511 use dc_error, only: nf90_enotvar, gt_enomoredims, dc_noerr
512 type(gt_variable), intent(in):: var
513 integer, intent(in):: ndims
514 integer, intent(out):: stat
515 integer:: vid
516 call map_lookup(var, vid=vid)
517 if (vid == vid_invalid) then
518 stat = nf90_enotvar
519 return
520 endif
521 if (.not. associated(maptab(var%mapid)%map)) then
522 if (ndims == 0) then
523 stat = dc_noerr
524 maptab(var%mapid)%ndims = 0
525 else
526 stat = gt_enomoredims
527 endif
528 else
529 if (ndims > size(maptab(var%mapid)%map)) then
530 stat = gt_enomoredims
531 else
532 stat = dc_noerr
533 maptab(var%mapid)%ndims = ndims
534 endif
535 endif

References dc_error::dc_noerr, dc_error::gt_enomoredims, and map_lookup().

Here is the call graph for this function:

◆ map_set_rank()

subroutine gtdata_internal_map::map_set_rank ( type(gt_variable), intent(in) var,
integer, intent(in) rank,
integer, intent(out) stat )

変数のランクを指定値に減少

変数 var のランク(非縮退次元数)を rank に減らすように count 値を1に減らす。ランクを増やすことや外見次元数の操作はしない。

Parameters
[in]var変数ハンドル
[in]rank目標ランク
[out]statステータスコード

Definition at line 560 of file gtdata_internal_map.f90.

561 use gtdata_types, only: gt_variable
562 use dc_error, only: nf90_enotvar, gt_enomoredims, dc_noerr
563 type(gt_variable), intent(in):: var
564 integer, intent(in):: rank
565 integer, intent(out):: stat
566 type(GT_DIMMAP), pointer:: tmpmap(:)
567 integer:: ndims
568 integer:: vid, nd
569 call map_lookup(var, vid, ndims=ndims)
570 if (vid == vid_invalid) then
571 stat = nf90_enotvar
572 return
573 endif
574 if (ndims < rank) then
575 stat = gt_enomoredims
576 return
577 endif
578 tmpmap => maptab(var%mapid)%map
579 do, nd = ndims, 1, -1
580 if (count(tmpmap(1:ndims)%count > 1) <= rank) exit
581 tmpmap(nd)%count = 1
582 enddo
583 stat = dc_noerr

References dc_error::dc_noerr, dc_error::gt_enomoredims, and map_lookup().

Here is the call graph for this function:

◆ map_to_internal_specs()

subroutine, public gtdata_internal_map::map_to_internal_specs ( type(gt_variable), intent(in) var,
integer, dimension(:, :), pointer specs,
integer, intent(out), optional ndims )

マップテーブルをnetCDF内部仕様に変換

マップ表から netCDF の引数にふさわしい start, count, stride, imap を作成する。ただし、stride が負になるばあいは対策されていない。 (暫定的に gdncvarget/gdncvarput が対応している)

Parameters
[in]var変数ハンドル
[out]specsspecs配列へのポインタ (内部で割り当て)
[out]ndims内部次元数 (省略可能)

Definition at line 609 of file gtdata_internal_map.f90.

610 use gtdata_types, only: gt_variable
611 use gtdata_internal_vartable, only: num_dimensions => ndims
612 type(gt_variable), intent(in):: var
613 integer, pointer:: specs(:, :)
614 integer, intent(out), optional:: ndims
615 type(GT_DIMMAP), pointer:: it
616 integer:: vid, i, j, imap, internal_ndims
617 integer:: external_ndims
618 continue
619 call map_lookup(var, vid, ndims=external_ndims)
620 internal_ndims = num_dimensions(vid)
621 if (present(ndims)) ndims = internal_ndims
622 allocate(specs(max(1, internal_ndims), 4))
623 specs(:, 1) = 1
624 specs(:, 2) = 1
625 specs(:, 3) = 1
626 specs(:, 4) = 0
627 imap = 1
628 do, i = 1, size(maptab(var%mapid)%map)
629 it => maptab(var%mapid)%map(i)
630 j = it%dimno
631 if (j > 0 .and. j <= internal_ndims) then
632 specs(j, 1) = it%start + it%offset
633 specs(j, 2) = it%count
634 if (i > external_ndims) specs(j, 2) = 1
635 specs(j, 3) = it%stride * it%step
636 specs(j, 4) = imap
637 endif
638 imap = imap * it%count
639 enddo

References map_lookup(), and gtdata_internal_vartable::ndims().

Here is the call graph for this function:

◆ maptabadd()

subroutine, public gtdata_internal_map::maptabadd ( integer, intent(out) mapid,
integer, intent(in) vid )

マップテーブルにエントリを追加

すでに実体表に追加されたエントリ番号 vid を指定して、 マップ表にエントリを追加する。

Parameters
[out]mapidマップテーブルエントリID
[in]vid変数テーブルエントリID

Definition at line 317 of file gtdata_internal_map.f90.

318 integer, intent(out):: mapid
319 integer, intent(in):: vid
320 type(MAP_TABLE_ENTRY), allocatable:: tmp_maptab(:)
321 integer:: i, n
322 ! 必要なら初期確保
323 if (.not. allocated(maptab)) then
324 allocate(maptab(maptab_init_size))
325 maptab(:)%vid = vid_invalid
326 do, n = 1, maptab_init_size
327 nullify(maptab(n)%map)
328 enddo
329 endif
330 ! 空き地があればそこに割り当て
331 do, i = 1, size(maptab)
332 if (maptab(i)%vid == vid_invalid) then
333 mapid = i
334 maptab(mapid)%vid = vid
335 return
336 endif
337 enddo
338 ! 空き地はなかったのだから倍幅確保
339 n = size(maptab)
340 allocate(tmp_maptab(n))
341 tmp_maptab(:) = maptab(:)
342 deallocate(maptab)
343 allocate(maptab(n * 2))
344 ! 確保したところはクリア
345 maptab(1:n) = tmp_maptab(1:n)
346 do, i = n + 1, (2 * size(tmp_maptab))
347 maptab(i)%vid = vid_invalid
348 nullify(maptab(i)%map)
349 enddo
350 deallocate(tmp_maptab)
351 mapid = n + 1
352 maptab(mapid)%vid = vid

◆ maptabdelete()

subroutine, public gtdata_internal_map::maptabdelete ( type(gt_variable), intent(in) var,
logical, intent(out), optional err )

変数をマップテーブルから削除

変数 var をマップ表から削除する。 実体表には手をつけない。

Parameters
[in]var削除する変数ハンドル
[out]errエラーフラグ (省略可能)

Definition at line 374 of file gtdata_internal_map.f90.

375 use dc_error, only: nf90_enotvar, storeerror, dc_noerr
376 use gtdata_types, only: gt_variable
377 use dc_trace, only: dbgmessage
378 implicit none
379 type(gt_variable), intent(in):: var
380 logical, intent(out), optional:: err
381 integer:: mapid
382 mapid = var%mapid
383 if (.not. allocated(maptab)) goto 999
384 if (mapid <= 0 .or. mapid > size(maptab)) goto 999
385 if (maptab(mapid)%vid == vid_invalid) goto 999
386 maptab(mapid)%vid = vid_invalid
387 if (associated(maptab(mapid)%map)) deallocate(maptab(mapid)%map)
388 call storeerror(dc_noerr, 'maptabdelete', err)
389 call dbgmessage('gtdata_internal_map table %d deleted', i=(/mapid/))
390 return
391999 continue
392 call storeerror(nf90_enotvar, 'maptabdelete', err)
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition dc_error.f90:891

References dc_trace::dbgmessage(), dc_error::dc_noerr, and dc_error::storeerror().

Here is the call graph for this function:

◆ var_class()

subroutine, public gtdata_internal_map::var_class ( type(gt_variable), intent(in) var,
integer, intent(out), optional class,
integer, intent(out), optional cid )

変数の内部種別と識別子を取得

Parameters
[in]var変数ハンドル
[out]class内部種別 (省略可能)
[out]cid内部識別子 (省略可能)

Definition at line 484 of file gtdata_internal_map.f90.

485 use gtdata_types, only: gt_variable
487 type(gt_variable), intent(in):: var
488 integer, intent(out), optional:: class, cid
489 integer:: vid
490 call map_lookup(var, vid=vid)
491 call vartablelookup(vid, class=class, cid=cid)

References map_lookup(), and gtdata_internal_vartable::vartablelookup().

Here is the call graph for this function: