`FINDLOC` — 배열에서 값을 찾아 위치 반환
FINDLOC — 배열에서 값을 찾아 위치 반환
배열에서 특정 값이 들어 있는 위치를 찾아야 할 때가 있어요. 최댓값·최솟값 말고 임의의 값을 찾는 내장 변환 함수가 FINDLOC이에요.
출처: The GNU Fortran Compiler — FINDLOC (Search an array for a value)
본문
시그니처
RESULT = FINDLOC(ARRAY, VALUE, DIM [, MASK] [,KIND] [,BACK])
RESULT = FINDLOC(ARRAY, VALUE, [, MASK] [,KIND] [,BACK])
설명
VALUE 인자에 주어진 값을 가진 배열 원소의 위치를 결정해요. DIM 인자가 제공되면, 배열의 각 행에 대해 DIM 방향으로 VALUE 인자 원소와 같은 값을 가진 원소들의 위치를 결정해요.
MASK가 있으면 .TRUE.인 원소들만 고려해요. 배열에 VALUE와 같은 값을 가진 원소가 여러 개면, BACK이 없거나 .FALSE.면 배열 원소 순서상 첫 번째 원소의 위치를 돌려줘요. BACK이 true면 마지막 원소의 위치를 돌려줘요.
배열의 크기가 0이거나 MASK의 모든 원소가 .FALSE.면 결과는 0으로 채워진 배열이에요. 마찬가지로 DIM이 주어졌는데 특정 행을 따라 MASK 원소가 전부 0이면 그 행의 결과 값은 0이에요.
클래스
Transformational function (변환 함수)
인자
| 인자 | 설명 |
|---|---|
ARRAY |
내장 타입(intrinsic type)의 배열이어야 해요. |
VALUE |
ARRAY와 타입 합치(type conformance)가 되는 내장 타입의 스칼라. |
DIM |
(선택) INTEGER 타입의 스칼라. ARRAY의 랭크(rank) 1 이상의 값이어야 하며, 선택적 가상 인자(optional dummy argument)이면 안 돼요. |
MASK |
(선택) LOGICAL 타입이며 ARRAY와 합치 가능(conformable)해야 해요. |
KIND |
(선택) 결과의 kind 매개변수를 나타내는 INTEGER 스칼라 상수식. |
BACK |
(선택) LOGICAL 타입의 스칼라. |
주의사항
ARRAY는 UNSIGNED일 수도 있어요.
반환값
DIM이 없으면 결과는 ARRAY의 랭크와 같은 길이의 rank-one 배열이에요. DIM이 있으면 결과는 ARRAY의 랭크보다 하나 적은 랭크의 배열이며, 크기는 ARRAY에서 DIM 차원을 뺀 크기와 대응돼요. DIM이 있고 ARRAY의 랭크가 1이면 결과는 스칼라예요. 선택 인자 KIND가 있으면 결과는 kind KIND의 정수이고, 없으면 기본 kind예요.
예제
program test_findloc
integer :: a(4) = [1, 2, 5, 5]
print *, findloc(a, 5) ! 위치 3
end program test_findloc
표준
Fortran 2008 이후.
더 알아보기
MAXLOC— 배열 내 최댓값의 위치MINLOC— 배열 내 최솟값의 위치