GET_COMMAND_ARGUMENT — 명령줄 인자 가져오기
GET_COMMAND_ARGUMENT — 명령줄 인자 가져오기
프로그램을 실행할 때 넘긴 명령줄 인자를 하나씩 꺼내야 할 때가 있어요. 옵션을 파싱하거나 파일 이름을 받아야 할 때 'N번째 인자가 뭐지?'가 필요하죠. GET_COMMAND_ARGUMENT는 프로그램이 호출될 때 명령줄로 전달된 NUMBER번째 인자를 가져오는 내장 서브루틴이에요.
본문
CALL GET_COMMAND_ARGUMENT(NUMBER [, VALUE, LENGTH, STATUS])
설명(Description)
프로그램이 실행될 때 명령줄로 전달된 NUMBER번째 인자를 가져와요.
분류(Class)
서브루틴
인자(Arguments)
NUMBER— 타입이INTEGER이고 기본 kind인 스칼라여야 해요.NUMBER≥ 0이어야 해요.VALUE— (선택) 타입이CHARACTER이고 기본 kind인 스칼라여야 해요.LENGTH— (선택) 타입이INTEGER이고 기본 kind인 스칼라여야 해요.STATUS— (선택) 타입이INTEGER이고 기본 kind인 스칼라여야 해요.
반환값(Return value)
GET_COMMAND_ARGUMENT가 반환된 뒤 VALUE 인자에는 NUMBER번째 명령줄 인자가 담겨요. VALUE가 인자를 담지 못하면 VALUE의 길이에 맞춰 잘라져요. 명령줄에 지정된 인자가 NUMBER보다 적으면 VALUE는 공백(blank)으로 채워져요. NUMBER = 0이면 VALUE는 프로그램 이름으로 설정돼요(이 기능을 지원하는 시스템에서). LENGTH 인자는 NUMBER번째 명령줄 인자의 길이를 담아요. 인자 검색에 실패하면 STATUS는 양수, VALUE에 잘려진 명령줄 인자가 담겨 있으면 -1, 그 외 경우엔 0이에요.
예제
PROGRAM test_get_command_argument
INTEGER :: i
CHARACTER(len=32) :: arg
i = 0
DO
CALL get_command_argument(i, arg)
IF (LEN_TRIM(arg) == 0) EXIT
WRITE (*,*) TRIM(arg)
i = i+1
END DO
END PROGRAM
i를 0부터 올려가며 인자를 하나씩 꺼내고, 더 이상 인자가 없어 arg가 비면 루프를 빠져나와요. LEN_TRIM으로 앞뒤 공백을 뺀 길이가 0이 되는 순간이 '마지막 인자 다음'이라는 뜻이에요. 이 패턴이 명령줄 인자를 전부 순회하는 가장 흔한 방법이에요.
표준(Standard)
Fortran 2003 이상이에요.
같이 보기
GET_COMMAND — Get the entire command line, COMMAND_ARGUMENT_COUNT — Get number of command line arguments