`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 타입의 스칼라.

주의사항

ARRAYUNSIGNED일 수도 있어요.

반환값

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 — 배열 내 최솟값의 위치