1! Program to test the MINLOC and MAXLOC intrinsics 2program testmmloc 3 implicit none 4 integer, dimension (3, 3) :: a 5 integer, dimension (3) :: b 6 logical, dimension (3, 3) :: m, tr 7 integer i 8 character(len=10) line 9 10 a = reshape ((/1, 2, 3, 5, 4, 6, 9, 8, 7/), (/3, 3/)); 11 tr = .true. 12 13 b = minloc (a, 1) 14 if (b(1) .ne. 1) STOP 1 15 if (b(2) .ne. 2) STOP 2 16 if (b(3) .ne. 3) STOP 3 17 b = -1 18 write (line, 9000) minloc(a,1) 19 read (line, 9000) b 20 if (b(1) .ne. 1) STOP 4 21 if (b(2) .ne. 2) STOP 5 22 if (b(3) .ne. 3) STOP 6 23 24 m = .true. 25 m(1, 1) = .false. 26 m(1, 2) = .false. 27 b = minloc (a, 1, m) 28 if (b(1) .ne. 2) STOP 7 29 if (b(2) .ne. 2) STOP 8 30 if (b(3) .ne. 3) STOP 9 31 b = minloc (a, 1, m .and. tr) 32 if (b(1) .ne. 2) STOP 10 33 if (b(2) .ne. 2) STOP 11 34 if (b(3) .ne. 3) STOP 12 35 b = -1 36 write (line, 9000) minloc(a, 1, m) 37 read (line, 9000) b 38 if (b(1) .ne. 2) STOP 13 39 if (b(2) .ne. 2) STOP 14 40 if (b(3) .ne. 3) STOP 15 41 42 b(1:2) = minloc(a) 43 if (b(1) .ne. 1) STOP 16 44 if (b(2) .ne. 1) STOP 17 45 b = -1 46 write (line, 9000) minloc(a) 47 read (line, 9000) b 48 if (b(1) .ne. 1) STOP 18 49 if (b(2) .ne. 1) STOP 19 50 if (b(3) .ne. 0) STOP 20 51 52 b(1:2) = minloc(a, mask=m) 53 if (b(1) .ne. 2) STOP 21 54 if (b(2) .ne. 1) STOP 22 55 b(1:2) = minloc(a, mask=m .and. tr) 56 if (b(1) .ne. 2) STOP 23 57 if (b(2) .ne. 1) STOP 24 58 b = -1 59 write (line, 9000) minloc(a, mask=m) 60 read (line, 9000) b 61 if (b(1) .ne. 2) STOP 25 62 if (b(2) .ne. 1) STOP 26 63 if (b(3) .ne. 0) STOP 27 64 65 b = maxloc (a, 1) 66 if (b(1) .ne. 3) STOP 28 67 if (b(2) .ne. 3) STOP 29 68 if (b(3) .ne. 1) STOP 30 69 b = -1 70 write (line, 9000) maxloc(a, 1) 71 read (line, 9000) b 72 if (b(1) .ne. 3) STOP 31 73 if (b(2) .ne. 3) STOP 32 74 if (b(3) .ne. 1) STOP 33 75 76 m = .true. 77 m(1, 2) = .false. 78 m(1, 3) = .false. 79 b = maxloc (a, 1, m) 80 if (b(1) .ne. 3) STOP 34 81 if (b(2) .ne. 3) STOP 35 82 if (b(3) .ne. 2) STOP 36 83 b = maxloc (a, 1, m .and. tr) 84 if (b(1) .ne. 3) STOP 37 85 if (b(2) .ne. 3) STOP 38 86 if (b(3) .ne. 2) STOP 39 87 b = -1 88 write (line, 9000) maxloc(a, 1, m) 89 read (line, 9000) b 90 if (b(1) .ne. 3) STOP 40 91 if (b(2) .ne. 3) STOP 41 92 if (b(3) .ne. 2) STOP 42 93 94 b(1:2) = maxloc(a) 95 if (b(1) .ne. 1) STOP 43 96 if (b(2) .ne. 3) STOP 44 97 b = -1 98 write (line, 9000) maxloc(a) 99 read (line, 9000) b 100 if (b(1) .ne. 1) STOP 45 101 if (b(2) .ne. 3) STOP 46 102 103 b(1:2) = maxloc(a, mask=m) 104 if (b(1) .ne. 2) STOP 47 105 if (b(2) .ne. 3) STOP 48 106 b(1:2) = maxloc(a, mask=m .and. tr) 107 if (b(1) .ne. 2) STOP 49 108 if (b(2) .ne. 3) STOP 50 109 b = -1 110 write (line, 9000) maxloc(a, mask=m) 111 read (line, 9000) b 112 if (b(1) .ne. 2) STOP 51 113 if (b(2) .ne. 3) STOP 52 114 if (b(3) .ne. 0) STOP 53 115 1169000 format (3I3) 117end program 118