14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
31 implicit none
32 type(GT_VARIABLE), intent(in):: var
33 integer, intent(in):: dimord
34 integer, intent(out), optional:: start
35 integer, intent(out), optional:: count
36 integer, intent(out), optional:: stride
37 logical, intent(in), optional:: count_compact
38 type(GT_DIMMAP), allocatable:: map(:)
39 integer:: vid, udimord, ndims
40 logical:: allmode
41continue
42 allmode = .true.
43 if (present(count_compact)) allmode = count_compact
45 if (vid < 0 .or. ndims <= 0) goto 999
46 allocate(map(ndims))
48 if (allmode) then
49 udimord = dimord
50 else
52 endif
53 if (udimord < 1 .or. udimord > size(map)) goto 997
54
55 if (present(start)) start = map(udimord)%start
56 if (present(count)) count = map(udimord)%count
57 if (present(stride)) stride = map(udimord)%stride
58 deallocate(map)
59 return
60
61997 continue
62 deallocate(map)
63999 continue
64 if (present(start)) start = -1
65 if (present(count)) count = -1
66 if (present(stride)) stride = -1
subroutine, public map_lookup(var, vid, map, ndims)
integer function dimord_skip_compact(dimord, map)