Intrinsic Functions
본 장에서는 Intrinsic Functions의 기본 개념과 각 함수에 대해서 설명한다.
개요
Intrinsic function는 일시적인 데이터 항목으로 해당 함수가 기술된 statement를 실행하는 경우에 값이 정해지고 참조할 수 있다. Intrinsic Function 이름은 COBOL 워드이다.
실행되는 서비스에 따라 크게 산술, 통계, 날짜/시간, 재무, 문자처리, 기타 함수로 분류할 수 있다. 함수는 그 이름을 필요한 인자와 함께 지정하여 Procedure division의 statement에서 사용하며 실행 후 결과값으로 영숫자, 숫자, 또는 정수 값을 반환한다.
함수 지정
function-identifier는 그 함수 타입의 데이터 항목을 사용할 수 있는 곳이라면 어디든 지정할 수 있다. 함수의 인수는 같은 함수에 대한 다른 평가를 포함하여 그 결과가 인수 조건을 만족할 경우, 임의의 함수 또는 함수를 포함한 식에 포함시킬 수 있다.
function-identifier의 일반적인 포맷은 다음과 같다.
-
인수
인수 설명 function-name-1
function-name-1에는 반드시 하나의 Instrinsic Function 이름을 기술한다.
argument-1
argument-1에는 함수의 인수 조건을 만족하는 식별자, 리터럴(constant variable을 제외한) 또는 산술식이어야 한다. argument-1에는 날짜 필드가 올 수 없다.
reference-modifier
영숫자 함수 타입에 대해서만 지정 가능하다.
함수 정의와 평가
함수의 특성은 다음과 같은 것들이 있다.
-
영숫자 타입의 함수일 경우, 반환값 사이즈
-
숫자 및 정수 타입의 함수일 경우에는 반환값의 부호 및 정수 타입 여부
-
그 외에 함수에 따라서 반환되는 값
이와 같이 함수가 반환하는 값의 타입과 특성은 그 함수의 인수에 의해 결정된다. 인수의 타입과 가변 여부는 함수 정의에 따라 달라진다.
Intrinsic Function의 평가는 컨텍스트에 영향을 받지 않는다. 즉, 함수 평가는 함수 이외의 조작이나 연산이나 조작에 영향을 주지 않는다. 단, 함수의 평가는 인수의 속성에 의해 영향을 받는 경우가 있다.
Procedure division 내의 statement에서는 각각의 함수 정의는 그와 같은 위치에 있는 identifier에 관련된 참조 변경이나 수식이 있을 경우, 그들이 평가될 때 동시에 평가된다.
함수 타입
Intrinsic Function은 임의의 데이터 항목으로 사용되며 다음과 같은 타입이 있다.
타입 | 설명 |
---|---|
영숫자(Alphanumeric) |
영숫자 타입 함수는 영숫자 클래스와 카테고리에 속한다. 반환값은 암묵적으로 USAGE DISPLAY 속성을 갖는다. 반환값의 문자의 길이는 함수 정의에 의해 결정된다. |
숫자(Numeric) |
숫자 타입 함수는 숫자 클래스와 카테고리에 속한다. 반환값은 항상 부호를 고려한다. 숫자 타입 함수는 산술식 안에서만 또는 MOVE statement의 소스로만 사용될 수 있다. INTEGER 또는 INTEGER-PART을 사용해서 결과값을 정수로 변환할 수 있을지라도, 정수를 지정해야 하는 곳에서는 숫자 타입 함수를 사용할 수 없다. |
정수 (Integer) |
정수 타입 함수는 숫자 클래스와 카테고리에 속한다. 반환값은 항상 부호를 고려한다. 정수 타입 함수는 산술식 안에서만 사용되거나 또는 MOVE statement의 소스로만 사용될 수 있다. 정수를 지정해야 하고 부호도 붙일 수 있는 경우, 정수 타입의 함수를 사용할 수 있다. |
인수
인수는 함수의 값을 정하기 위해 사용되는 값이다. 함수에 따라서 인수가 필요없는 경우도 있고 하나만 필요로 하거나 여러 개를 필요로 하는 경우도 있다. 또 가변 갯수의 인수를 지정할 수 있는 함수도 있다. 특정 식별자나 산술식, 또는 정수를 지정할 수 있으며 각각의 인수가 해석, 평가되고 최종적으로 함수의 값이 정해진다. 지정할 수 있는 인수의 타입은 다음과 같다.
타입 | 설명 |
---|---|
영문자 |
영문자 타입의 기본 데이터 항목 또는 영문자만을 포함한 리터럴을 지정한다. 인수의 크기가 함수 값을 정하는데 사용되기도 한다. |
영숫자 |
영문자, 영숫자 타입의 기본 데이터 항목 또는 영숫자 리터럴을 지정한다. 인수의 크기가 함수의 값을 정하는데 사용되기도 한다. |
정수 |
결과로써 항상 정수값을 갖는 산술식을 지정한다. 연산부호를 포함한 산술식의 값이 함수의 값을 결정하는데 사용된다. |
숫자 |
산술식을 지정한다. 연산부호를 포함한 산술식의 값이 함수의 값을 정하는데 사용된다. |
함수의 개별 인수에 대한 상세한 내용은 각 함수의 설명을 참고한다. 의미있는 함수의 값을 구하기 위해 인수로 설정할 수 있는 값의 범위에 제약이 있는 경우가 있다. 적합하지 않는 인수를 지정할 경우 반환되는 값은 보장할 수 없다. |
다음은 인수 안의 소문자를 대문자로 바꾸는 영숫자 타입의 함수 UPPER-CASE의 사용 예제이다. statement는 HELLO를 DATA-NAME에 MOVE시킨다.
MOVE FUNCTION UPPER-CASE ('hello') TO DATA-NAME.
다음은 숫자 타입 함수의 사용 예제이다. statment는 숫자 함수 SUM을 사용하여 A, B 및 C의 값을 더하여 그 결과를 NUM-ITEM에 저장한다.
COMPUTE NUM-ITEM = FUNCTION SUM (A B C)
함수 정의
함수 정의(Function definition)는 Intrinsic Function에 각 함수의 인자 타입, 함수 타입 및 반환값을 지정한다.
인수 타입과 함수 타입은 다음과 같은 생략형 문자를 사용한다.
생략형 | 설명 |
---|---|
A |
영문자 |
I |
정수 |
N |
숫자 |
X |
영숫자 |
O |
함수에 정의되는 그 외의 타입 (포인터, 함수 포인터, 프러시저 포인터 등) |
다음은 Intrinsic Function의 인수와 함수 타입, 반환값을 정리한 표이다.
함수 | 인수 | 함수 타입 | 반환값 |
---|---|---|---|
N1 |
N |
N1의 역코사인(COS) |
|
N1, I2 |
N |
N1의 금리로 I2 기간에 걸쳐 받게 될 연금의 최초투자액 비율 |
|
N1 |
N |
N1의 역사인(SIN) |
|
N1 |
N |
N1의 역탄젠트(TAN) |
|
I1 |
X |
collating sequence에서 연도 I1 위치의 문자 |
|
N1 |
N |
N1의 코사인(COS) |
|
None |
X |
현재 시각과 그리니치 표준시와의 시간차 |
|
I1 |
I |
정수로 표현된 날짜에 해당하는 표준 포맷의 날짜 (YYYYMMDD) |
|
I1, I2 |
I |
I1 (windowed 서양력 YYMMDD)에 해당하는 연도를 I2와 실행할 때의 연도와 합에 가까운 연도로 변경한 표준 포맷의 날짜 (YYYYMMDD) |
|
I1 |
I |
정수로 표현된 표준 포맷의 날짜 (YYYYMMDD) |
|
I1, I2 |
I |
I1 (windowed 서양력, 연도별 통산 날짜 포맷 YYDDD)에 해당하는 연도를 I2의 실행할 때의 연도와 합에 가까운 연도로 변경한 표준 포맷의 날짜 (YYYYMMDD) |
|
I1 |
I |
I1의 팩토리얼 값 |
|
N1 |
I |
N1을 넘지않는 최대 정수값 |
|
I1 |
I |
표준 포맷의 날짜 (YYYYMMDD)에 해당하는 정수로 표현된 날짜 |
|
I1 |
I |
연도별 통산날짜 (YYYYDDD)에 해당하는 정수로 표현된 날짜 |
|
N1 |
I |
N1의 정수 부분 |
|
A1, N1, O1, or X1 |
I |
인수의 길이(Natinal 문자 위치, 영숫자 위치 또는 바이트, 인수의 타입에 따라 달라질 수 있다.) |
|
N1 |
N |
N1의 로그값 (자연 로그) |
|
N1 |
N |
N1의 로그10 값 (상용 로그) |
|
A1 or X1 |
X |
인수 안의 모든 문자를 소문자로 변환 |
|
A1 ... |
X |
최대 인수의 값 (함수 타입은 인수에 의해 결정) |
|
I1 ... |
I |
최대 인수의 값 (함수 타입은 인수에 의해 결정) |
|
N1 ... |
N |
최대 인수의 값 (함수 타입은 인수에 의해 결정) |
|
X1 ... |
X |
최대 인수의 값 (함수 타입은 인수에 의해 결정) |
|
N1 ... |
N |
인수들의 산술평균 |
|
N1 ... |
N1 |
인수들의 중간값 |
|
N1 .... |
N |
인수의 최솟값과 최댓값의 평균 |
|
A1 ... |
X |
최소 인수의 값 (함수 타입은 인수에 의해 결정) |
|
I1 ... |
I |
최소 인수의 값 (함수 타입은 인수에 의해 결정) |
|
N1 ... |
N |
최소 인수의 값 (함수 타입은 인수에 의해 결정) |
|
X1 .... |
X |
최소 인수의 값 (함수 타입은 인수에 의해 결정) |
|
I1, I2 |
I |
I1 의 MOD I2 (나머지 연산) |
|
X1 |
N |
단순 숫자열의 수치 |
|
X1 |
N |
단순 숫자열 및 통화 문자열의 수치 |
|
A1 or X1 |
I |
collating sequence에 있어서의 인수의 순서 위치 |
|
A1 ..., N1..., or X1 ... |
I |
최대 인수의 순서 위치 |
|
A1...., N1..., or X1 .... |
I |
최소 인수의 순서 위치 |
|
N1, N2 ... |
N |
할인율이 N1이고 장래 만기완료 시점 총액이 N2인 경우 일련 숫자의 현재 값 |
|
I1, none |
N |
난수 |
|
I1 ... |
I |
최대 인수의 값에서 최소 인수의 값을 뺀 것 (함수 타입은 인수에 의해 결정) |
|
N1 ... |
N |
최대 인수의 값에서 최소 인수의 값을 뺀 것 (함수 타입은 인수에 의해 결정) |
|
N1, N2 |
N |
N1 / N2 나눈 것 |
|
A1 or X1 |
X |
인수 문자열의 역배열 |
|
N1 |
N |
N1의 사인(SIN)값 |
|
N1 |
N |
N1의 제곱근 |
|
N1 ... |
N |
인수들의 표준 편차 |
|
I1 ... |
I |
인수들의 합 (함수 타입은 인수에 의해 결정) |
|
N1 ... |
N |
인수들의 합 (함수 타입은 인수에 의해 결정) |
|
N1 |
N |
N1의 탄젠트(TAN) 값 |
|
X1 |
N |
NUMVAL의 유효한 인자 여부 확인 |
|
X1 |
N |
NUMVAL-C의 유효한 인자 여부 확인 |
|
I1, I2 |
X |
I1에 해당하는 문자에 좌측, 우측 또는 좌우측 space padding을 제거 |
|
A1 or X1 |
X |
인수 안의 모든 문자를 대문자로 변환 |
|
N1 ... |
N |
인수들의 분산 |
|
None |
X |
프로그램이 컴파일된 시간 |
|
I1, I2 |
I |
I1 (windowed 서양력 YY)에 해당하는 연도를 실행시점의 연도와 I2를 더한 값에 가까운 연도로 확장한 연도 (YYYY) |
각 함수에 대한 상세한 설명은 각 함수 절을 참고한다. |
ACOS
ACOS은 숫자 타입 함수로 지정된 인자의 역코사인(COS) 값을 반환한다.
-
인수
인수 설명 argument-1
-1 이상 +1 이하의 숫자이어야 한다.
-
반환값
인자로 받은 수의 역코사인(COS) 값의 근사치로 0 이상 Pi 이하이다.
ANNUITY
ANNUITY는 숫자 타입 함수로 특정 기간동안 특정 금리로 각 분기별로 지급되는 연금의 초기값에 대한 비율을 근사치로 표현한 값을 반환한다.
-
인수
인수 설명 argument-1
숫자를 지정한다. 값은 0보다 크거나 같아야 한다.
금리에 해당하는 값이 지정된다.
argument-2
반드시 정수이어야 한다.
기간에 해당하는 값이 지정된다.
-
반환값
argument-1이 0이 아닌 경우 함수에 의해 반환되는 값은 다음 근사값이 된다.
예를 들어 argument-1의 값이 0, argument-2의 값이 4일 경우 1/4에 근사값이 반환된다.
1/ argument-2
argument-1의 값이 0이 아닌 경우 함수의 값은 다음 식에 결과값의 근사값이 된다.
argument-1 / (1 - (1 + argument-1) ** (- argument -2))
ASIN
ASIN은 숫자 타입 함수로 지정된 인자의 역사인(SIN) 값을 반환한다.
-
인수
인수 설명 argument-1
숫자를 지정한다.
값은 -1 이상 +1 이하이어야 한다.
-
반환값
argument-1의 역사인(SIN)의 근사값으로 -P1/2 이상 +Pi/2 이하이다.
ATAN
ATAN은 숫자 타입 함수로 지정된 인자의 역탄젠트(TAN) 값을 반환한다.
-
인수
인수 설명 argument-1
숫자를 지정한다.
-
반환값
argument-1의 역탄젠트(TAN)의 근사값으로 -Pi/2 이상 +Pi/2 이하이다.
CHAR
CHAR는 영숫자 타입 함수로 지정된 인자의 값에 해당하는 collating sequence 위치에 있는 영숫자 문자를 반환한다.
-
인수
인수 설명 argument-1
정수를 지정한다.
0 이상의 영숫자 데이터 항목 (최대 256)에 관련한 collating sequence 내에 위치한 숫자이어야 한다.
-
반환값
여러 개의 문자가 프로그램의 collating sequence 내에 같은 위치에 있는 경우 함수의 값으로 반환되는 문자는 ALPHABET clause에 그 문자 위치에 대해 지정된 최초의 리터럴 문자이다.
현재 프로그램은 collating sequence가 ALPHABET clause에 의해 지정되어 있지 않을 경우에는 1byte EBCDIC sequence가 사용된다. |
COS
COS는 숫자 타입 함수로 인수에 의해 지정된 COS 값을 반환한다.
-
인수
인수 설명 argument-1
숫자를 지정한다.
-
반환값
인수의 COS의 근사치로 -1 이상 +1 이하의 값이다.
CURRENT-DATE
CURRENT-DATE는 영숫자 타입 함수이다. 캘린더 상의 날짜, 시간 및 이 함수가 실행되는 시스템에서 제공되는 그리니치 표준시와의 시간차를 나타내는 21자리의 영숫자를 반환한다.
-
반환값
반환되는 21자리의 문자는 왼쪽부터 오른쪽의 순서로 다음 내용을 나타낸다.
문자위치 내용 1-4
그레고리 오력에 있어서 연도를 나타내는 4자리 숫자이다.
5-6
달을 나타내는 2자리 숫자로 01~12 범위 안에 값이다.
7-8
날짜를 나타내는 2자리 숫자로 01~31 범위 안에 값이다.
9-10
심야 오전 0시부터의 시간을 나타내는 2자리 숫자로 00~23 범위 안에 있는 값이다.
11-12
분을 나타내는 2자리 숫자로 00~59 범위 안에 있는 값이다.
13-14
초를 나타내는 2자리 숫자로 00~59 범위 안에 있는 값이다.
15-16
100분에 1초를 나타내는 2자리 숫자로 00~99 범위 안에 있는 값이다.
함수를 실행하는 시스템이 초보다 더 세밀한 단위의 시간을 제공하는 기능이 없을 경우엔 00을 반환한다.
17
다음의 문자로 표시된다.
-
"-" : 반환될 시간이 그리니치 표준시보다 느릴 경우 반환값
-
"+" : 그리니치 표준시보다 빠르거나 같을 경우 반환값
-
"0" : 함수를 실행하는 시스템이 로케일에 의한 시차를 계산하지 않을 경우 반환값
18-19
-
17번째에 해당하는 문자가 "-"일 경우 시간을 표시하는 00부터 12까지의 수가 반환된다. 여기에 표시되는 것은 그리니치 표준시보다 느린 시간이다.
-
17번째에 해당하는 문자가 "+"인 경우에는 그리니치 표준시보다 빨라진 시간을 00부터 13 내의 2자릿수의 숫자가 반환된다.
-
17번째 문자가 "0"일 경우에는 00이 반환된다.
20-21
앞에 기술한 시간차에서 분에 해당하는 00부터 59 사이의 2자리 숫자가 반환된다.
17번째의 문자가 "+" 또는 "-"에 따라서 이 필드에 해당하는 분만큼의 시차가 있다는 의미이다. 17번째 문자가 "0"일 경우엔 00이 반환된다.
-
DATE-OF-INTEGER
DATE-OF-INTEGER는 정수 타입 함수로 그레고리력 날짜를 정수로 표현한 형식에서 표준형식의 날짜(YYYYMMDD)로 변환한다.
-
인수
인수 설명 argument-1
양의 정수로 그레고리력 1601년 1월 1일 이후의 날짜를 지정한다.
유효 범위는 1에서 3,067,671로 이는 1601년 1월 1일에서 9999년 12월 31일 범위에 해당한다.
argument-1에 지정된 정수에 해당하는 국제표준기구(ISO)의 표준 포맷에 해당하는 날짜를 반환한다.
-
반환값
YYYYMMDD 형식의 8자리 정수로 YYYY는 그레고리력의 년, MM은 달, DD는 날짜를 나타낸다.
DATE-TO-YYYYMMDD
DATE-TO-YYYYMMDD는 정수 타입 함수이다. argument-1의 값을 연도수를 2자리로 표현한 날짜 형식(YYMMDD)에서 4자릿수로 표현한 날짜 형식 (YYYYMMDD)로 변환한다. argument-2는 실행할 때 시작 연도에 더해져서 추가되는 앞에 두 자리를 지정하기 위한 인자로 사용된다.
-
인수
인수 설명 argument-1
0 또는 991,232 미만의 양의 정수이어야 한다.
COBOL 실행할 때 값이 유효 여부는 체크하지 않는다.
argument-2
정수이어야 하며 생략하는 경우 50이 지정된 것으로 간주한다.
실행할 때 연도와 argument-2 값의 합은 10,000보다 작고 1,699보다 커야 한다.
-
반환값
다음은 함수의 반환값에 대한 예이다.
현재 연도 argument-1 값 argument-2 값 반환값 2002
851003
120
20851003
2002
851003
-20
18851003
2002
851003
10
19851003
1994
981002
-10
19891002
DAY-OF-INTEGER
DAY-OF-INTEGER는 정수 타입 함수로 그레고리력의 날짜를 정수로 표현한 날짜에서 연간 통산일 형식(YYYYDDD)으로 변환한다.
-
인수
인수 설명 argument-1
양의 정수로 그레고리력의 1601년 1월 1일 이후의 날짜를 지정한다.
유효한 범위는 1에서 3,067,671로 이는 1601년 1월 1일부터 9999년 12월 31일 범위에 해당한다.
-
반환값
argument-1에 지정된 7자리 정수에 해당하는 년간 통산일을 반환한다. 반환되는 데이터 형식은 YYYYDDD로 YYYY는 그레고리력의 연도를 DDD는 날짜를 의미한다.
DAY-TO-YYYYDDD
DAY-TO-YYYYDDD는 정수 타입 함수이다.
-
인수
인수 설명 argument-1
argument-1의 값을 연도를 2자리로 표현하는 형식 (YYDDD)에서 4자리로 연도를 표현한 형식 (YYYYDDD)로 변환한다.
0 또는 99,367 미만의 양의 정수를 지정한다.
argument-2
argument-2는 실행할 때 시작의 연도에 더해져서 추가되는 앞에 두자리를 지정하기 위한 인자로 사용된다. 정수이어야 하며 생략하는 경우 50이 지정된 것으로 간주한다.
실행할 때 연도와 argument-2 값의 합은 10,000보다 작고 1,699보다 커야 한다.
-
반환값
다음은 함수 반환값에 대한 예이다.
현재 연도 argument-1 값 argument-2 값 반환값 2002
10004
-20
1910004
2002
10004
-120
1810004
2002
10004
20
2010004
2013
95005
-10
1995005
FACTORIAL
FACTORIAL는 정수 타입 함수로 주어진 인수의 팩토리얼값을 반환한다.
-
인수
인수 설명 argument-1
컴파일할 때 ARITH(COMPAT) 옵션이 있을 경우에는 argument-1은 0 이상 28 미만의 정수이다.
ARITH(EXTEND)일 경우에는 argument-1은 0 이상 29 이하의 정수이다.
-
반환값
argument-1이 0인 경우엔 1, 0 이외의 경우에는 argument-1의 팩토리얼 값을 반환한다.
INTEGER
INTEGER는 정수 타입 함수로 지정된 인수보다 작거나 같은 최대의 정수를 반환한다.
-
인수
인수 설명 argument-1
숫자를 지정한다.
-
반환값
argument-1 미만의 최대 정수를 반환한다.
예를 들어 FUNCTION INTEGER(2.5)의 경우에는 2를 반환하고, FUNCTION INTEGER (-2.5) 일 경우에는 -3을 반환한다.
INTEGER-OF-DATE
INTEGER-OF-DATE는 정수 타입 함수로 그레고리력의 날짜를 표준형식의 날짜(YYYYMMDD)에서 정수로 표현한 날짜 형식으로 변환한다.
-
인수
인수 설명 argument-1
YYYYMMDD 형식의 정수를 지정한다.
해당 값은 (YYYY * 10,000) + (MM * 100) + DD 식을 통해서 얻는다.
-
YYYY : 그레고리력의 연도를 나타낸다. 이 값은 1,600보다 크고 9,999보다 작은 정수를 지정한다.
-
MM : 달을 나타내며 13보다 작은 정수이다.
-
DD : 날짜를 나타내며 32보다 작은 정수이다. 단, 지정한 달에 유효한 날짜를 지정해야 한다.
-
-
반환값
반환값은 1에서 3,067,671 범위에 속한 7자리 정수이다. argument-1에 의해 표현된 날짜를 그레고리력으로 1601년 1월 1일 이후의 날짜를 환산한 값이다.
INTEGER-OF-DAY
INTEGER-OF-DAY는 정수 타입 함수로 그레고리력의 날짜를 연간 통산일 형식(YYYYDDD)으로 변환한 정수를 반환한다.
-
인수
인수 설명 argument-1
YYYYDDD 형식의 정수를 지정한다.
해당 값은 (YYYY * 10,000) + DDD 식을 통해서 얻는다.
-
YYYY : 그레고리력의 연도를 값으로 1,600보다 크고 9,999보다 작은 정수를 지정한다.
-
DDD : 연간 통산일을 나타내는 값으로 지정 연도에 대해서 유효한 367보다 작은 정수를 지정한다.
-
-
반환값
7자리의 정수값이 반환되며 argument-1에 의해 표현된 날짜를 그레고리력으로 1601년 1월 1일 이후의 날짜를 환산한 값이다.
INTEGER-PART
INTEGER-PART는 정수 타입 함수로 지정된 인수의 정수 부분을 반환한다.
-
인수
인수 설명 argument-1
숫자를 지정한다.
-
반환값
argument-1의 값이 0일 경우 0을 반환한다. 0이 아닌 경우는 다음과 같다.
-
argument-1의 값이 양수일 경우에는 argument-1 이하의 최대 정수를 반환한다.
-
argument-1의 값이 음수일 경우에는 음수-1의 값의 최소 정수를 반환한다.
-
LENGTH
LENGTH은 정수 타입 함수로 인수의 길이에 해당하는 정수를 반환한다.
-
인수
인수 설명 argument-1
인수에 설정 가능한 값은 다음과 같다.
-
영숫자 리터럴
-
2byte 문자 이외의 임의의 데이터 항목
-
POINTER, PROCEDURE-POINTER 또는 FUNTION-POINTER로 기술되는 데이터 항목
-
ADDRESS OF 특수 레지스터
-
LENGTH OF 특수 레지스터
-
-
반환값
반환값은 다음과 같은 규칙으로 정해진 9자리의 정수이다.
-
argument-1이 영숫자 리터럴, 영문자 혹은 영숫자의 기본 데이터 항목인 경우 argument-1에 지정된 영숫자 문자열의 길이를 반환한다.
-
argument-1이 NULL로 종료된 문자열인 경우 반환값은 마지막 NULL을 제외한 길이를 반환한다.
-
argument-1이 영숫자 데이터 항목의 길이 또는 1byte 문자와 2byte 문자가 섞여있는 리터럴의 길이는 1byte 문자가 있는 것으로 간주한다.
-
argument-1이 영숫자 그룹 항목일 경우 그룹 내용에 관계없이 argument-1의 영숫자 길이를 반환한다.
-
argument-1에 종속된 어떤 데이터 항목이 OCCURS clause에서 DEPENDING phrase를 기술했을 경우 argument-1의 길이는 DEPENDING에 지정한 데이터 항목의 내용에 의해 결정된다. FILLER가 있을 경우에 암묵적으로 같이 계산된다.
-
그 외의 경우에는 argument-1이 점유하고 있는 스토리지의 byte수를 반환한다.
-
LOG
LOG는 숫자 타입 함수로 지정된 인수를 e(자연 로그)를 밑수으로 하는 로그값의 근사치를 반환한다.
-
인수
인수 설명 argument-1
0보다 큰 숫자를 지정한다.
-
반환값
반환값은 e를 밑수으로 하는 argument-1의 로그값의 근사치이다.
LOG10
LOG10는 숫자 타입 함수로 지정된 인수를 10을 밑수으로 하는 로그값의 근사치를 반환한다.
-
인수
인수 설명 argument-1
0보다 큰 숫자를 지정한다.
-
반환값
반환값은 10을 밑수으로 하는 argument-1의 로그값의 근사치이다.
LOWER-CASE
LOWER-CASE는 인수에 포함된 대문자를 소문자로 변환하는 함수이다. 함수 타입은 다음과 같이 인수의 타입에 따라 달라진다.
인수 타입 | 함수 타입 |
---|---|
영문자 |
영숫자 |
영숫자 |
영숫자 |
-
인수
인수 설명 argument-1
영문자, 또는 영숫자이며 적어도 한 개 이상의 문자를 지정한다.
-
반환값
인수로 입력한 대문자에 대응하는 소문자로 변환된다.
argument-1과 같은 문자열이 반환된다. argument-1이 영문자 또는 영숫자일 경우에 'A' 부터 'Z’까지의 대문자는 대응되는 'a' 부터 'z’의 소문자로 변환된다. 반환되는 문자열의 길이는 argument-1에서 지정한 문자열의 길이와 같다.
MAX
MAX는 인수의 최댓값을 반환하는 함수이다. 함수 타입은 다음과 같이 인수의 타입에 따라 달라진다.
인수 타입 | 함수 타입 |
---|---|
영문자 |
영숫자 |
영숫자 |
영숫자 |
모든 인수가 정수 |
정수 |
숫자 (일부 인수가 정수) |
숫자 |
-
인수
인수 설명 argument-1
영문자, 영숫자, 또는 숫자를 지정한다. 모든 인수가 같은 타입이어야 한다. 단 예외적으로 영문자와 영숫자의 조합은 허용된다.
-
반환값
최댓값을 갖는 argument-1에 지정된 인수를 반환한다. 최댓값을 결정하는 데 사용되는 비교연산은 단순 조건에 관한 규칙에 따라 이루어진다. 여러 개의 argument-1이 동일한 최댓값을 갖을 경우에는 그 값을 갖는 인수중에 가장 왼쪽에 지정된 인수를 반환한다.
MEAN
MEAN는 숫자 타입 함수로 인수의 산술평균의 근사치에 해당하는 숫자를 반환한다.
-
인수
인수 설명 argument-1
숫자를 지정한다.
-
반환값
반환되는 값은 인수들의 산술 평균값이다. argument-1의 인수들의 합을 argument-1의 개수로 나눈 값의 근사치이다.
MEDIAN
MEDIAN는 숫자 타입 함수로 여러 개의 인수들을 정렬한 후 작성된 리스트 중 가운데 값을 갖는 인수를 반환한다.
-
인수
인수 설명 argument-1
숫자를 지정한다.
-
반환값
반환되는 값은 argument-1에 주어진 인수들을 정렬하여 작성된 리스트 중에서 가운데 값을 갖는 인수이다.
MIDRANGE
MIDRANGE는 숫자 타입 함수로 가장 작은 값과 가장 큰 값의 산술평균의 근사치를 반환한다.
-
인수
인수 설명 argument-1
숫자를 지정한다.
-
반환값
반환되는 값은 최대 인수값과 최소 인수값의 산술평균이다. 최댓값과 최솟값은 단순비교 규칙에 의해 정해진다.
MIN
MIN는 인수의 최솟값을 반환하는 함수이다.
함수 타입은 다음과 같이 인수의 타입에 따라 달라진다.
인수 타입 | 함수 타입 |
---|---|
영문자 |
영숫자 |
영숫자 |
영숫자 |
모든 인수가 정수 |
정수 |
숫자 (일부 인수가 정수) |
숫자 |
-
인수
인수 설명 argument-1
영문자, 영숫자, 또는 숫자를 지정한다.
-
반환값
반환값은 최솟값을 갖는 argument-1에 지정된 인수이다.
최솟값을 결정하는 데 사용되는 비교연산은 단순조건에 관한 규칙에 따라 이루어진다. 여러 개의 argument-1이 동일한 최솟값을 갖을 경우에는 그 값을 갖는 인수 중에 가장 왼쪽에 지정된 인수가 반환된다.
MOD
MOD는 정수 타입 함수이다. argument-1을 argument-2로 나눈 나머지 정수값을 반환한다. 반환값은 argument-1 및 argument-2 중 자릿수가 작은 쪽과 같은 자릿수의 정수이다.
-
인수
인수 설명 argument-1
정수를 지정한다.
argument-2
정수를 지정하며 0이 올 수 없다.
-
반환값
argument-1을 argument-2로 나눈 나머지를 반환하며 다음 식을 통해 정의된다.
argument-1 - (argument-2 * FUNCTION INTEGER (argument-1/argument-2))
다음은 함수 반환값에 대한 예이다.
argument-1 값 argument-2 값 반환값 11
5
1
-11
5
4
11
-5
-4
-11
-5
-1
NUMVAL
NUMVAL는 숫자 타입 함수로 인수로 지정된 영숫자 문자열에 의해 표현되는 수치를 반환한다. 문자열 안에 공백 또는 연속표시 문자가 있을 경우에는 해당 문자를 삭제하고 수치를 계산한다.
-
인수
인수 설명 argument-1
영숫자 리터럴 또는 아래 포맷의 문자열을 포함한 영숫자 데이터 항목을 지정한다.
-
space : 하나 이상의 공백문자
-
숫자 : 하나 이상의 숫자
SPECIAL-NAMES paragraph에 DECIMAL-POINT IS COMMA 지정되어 있을 경우엔 argument-1 안에 소수점 대신에 콤마(,)를 사용해야 한다.
다음은 argument-1의 포맷이다.
-
-
반환값
반환값은 argument-1에 의해 표현되는 수치의 부동소수점 근사값이다.
NUMVAL-C
NUMVAL-C는 숫자 타입(curreny type) 함수로 인수로 지정된 영숫자 문자열에 의해 표현되는 수치를 반환한다. 문자열 안에 공백 또는 연속표시 문자가 있을 경우에는 해당 문자를 삭제하고 수치를 계산한다.
-
인수
인수 설명 argument-1
영숫자 리터럴 또는 아래 포맷의 문자열을 포함한 영숫자 데이터 항목을 지정한다.
argument-2
currency 문자 값을 지정한다.
다음은 argument-1의 포맷이다.
-
반환값
반환값은 argument-1에 의해 표현되는 수치의 부동소수점 근사값이다.
ORD
ORD는 정수 타입 함수로 프로그램 collating sequence 중에서 해당 인수가 갖는 순서에 해당하는 정수를 반환한다. 가장 작은 값은 1이다.
-
인수
인수 설명 argument-1
영문자 또는 영숫자 하나를 지정한다.
-
반환값
반환값은 3자리 정수로 argument-1의 프로그램 collating sequence 내의 위치를 반환한다. sequence에 따라 1부터 256까지 값 중 하나를 반환한다.
ORD-MAX
ORD-MAX는 정수 타입 함수로 주어진 인수 중에 최댓값의 프로그램 collating sequence 상의 순서를 반환한다.
-
인수
인수 설명 argument-1
영문자, 영숫자 또는 숫자를 지정한다.
여러 개의 인수를 지정할 경우에는 모두 같은 타입이어야 한다. 단, 예외적으로 영문자와 영숫자의 조합은 허용된다.
-
반환값
반환값은 지정된 인수들 중에서 가장 큰 값을 갖는 인수의 collating sequence 순서이다.
최댓값을 갖는 인수는 단순 조건에 관한 규칙에 따라 선택된다. 여러 개의 인수가 동일한 최댓값을 갖을 경우 그 값을 갖는 인수 중에 가장 왼쪽에 위치한 인수의 순서가 반환된다.
ORD-MIN
ORD-MIN는 정수 타입 함수로 주어진 인수 중에 최솟값의 프로그램 collating sequence 상의 순서를 반환한다.
-
인수
인수 설명 argument-1
영문자, 영숫자 또는 숫자를 지정한다.
여러 개의 인수를 지정할 경우에는 모두 같은 타입이어야 한다. 단, 예외적으로 영문자와 영숫자의 조합은 허용된다.
-
반환값
반환값은 지정된 인수들 중에서 제일 작은 값을 갖는 인수의 collating sequence 순서이다.
최솟값을 갖는 인수는 단순조건에 관한 규칙에 따라 선택된다. 여러 개의 인수가 동일한 최솟값을 갖을 경우 그 값을 갖는 인수 중에 가장 왼쪽에 위치한 인수의 순서가 반환된다.
PRESENT-VALUE
PRESENT-VALUE는 숫자 타입 함수로 argument-2에 지정된 장래 기간만료 시점인 경우 일정액을 argument-1에 지정된 할인율을 적용하여 현재의 값의 근사치를 반환한다.
-
인수
인수 설명 argument-1
-1보다 큰 숫자를 지정한다.
argument-2
숫자를 지정한다.
-
반환값
다음 식을 통해 계산된 값의 근사치를 반환한다.(지수 n은 argument-2의 개수이다)
argument-2 / (1+argument-1) ** n
RANDOM
RANDOM는 숫자 타입 함수로 평등분포(rectangular distribution) 상에서 무작위로 추출한 숫자를 반환한다.
-
인수
인수 설명 argument-1
0 또는 양의 정수를 지정한다. 단, 0부터 2,147,483,645에 있는 값만이 명확한 난수를 발생시킨다.
2번째 이후의 참조될 경우 argument-1 지정이 있다면 새로운 난수가 발생한다. 어떤 지정된 시드값에 대해서 난수값은 항상 동일하다. 실행 단위에 있어서 함수를 최초로 참조하는 경우 argument-1이 지정되지 않았다면 초기값은 0이다.
-
반환값
0과 1사이의 숫자가 반환된다.
RANGE
RANGE는 최대 인수의 값과 최소 인수의 값을 뺀 값을 반환하는 함수이다.
함수 타입은 인수의 타입에 따라 달라진다.
인수 타입 | 함수 타입 |
---|---|
모든 인수가 정수 |
정수 |
숫자 (일부 인수는 정수) |
숫자 |
-
인수
인수 설명 argument-1
숫자를 지정한다.
-
반환값
최댓값을 갖는 argument-1에서 최솟값을 갖는 argument-1을 뺀 값을 반환한다. 최댓값과 최솟값을 결정하기 위해서 단순 조건에 관한 규칙을 따른다.
REM
REM은 숫자 타입 함수로 argument-1을 argument-2로 나눈 나머지 값을 반환한다.
-
인수
인수 설명 argument-1
숫자를 지정한다.
argument-2
0이 아닌 숫자를 지정한다.
-
반환값
argument-1을 argument-2로 나눈 나머지를 반환한다. 반환값은 다음 식으로 정의할 수 있다.
argument-1 - (argument-2 * FUNCTION INTEGER-PART(argument-1/argument-2))
REVERSE
REVERSE는 지정된 인수의 문자열과 동일한 문자들을 사용하여 순서만 역정렬시킨 값을 반환하는 함수이다. 인수와 반환값 문자열의 길이는 같다.
함수의 타입은 인수의 타입에 따라 달라진다.
인수 타입 | 함수 타입 |
---|---|
영문자 |
영숫자 |
영숫자 |
영숫자 |
-
인수
인수 설명 argument-1
길이가 1 이상인 영문자 또는 영숫자이어야 한다.
-
반환값
argument-1과 같은 길이의 문자열이며 argument-1의 문자열을 역정렬한다.
예를 들어 argument-1에 "ABC"를 지정할 경우 "CBA"가 반환된다.
SIN
SIN은 숫자 타입 함수로 지정된 인수의 SIN 값을 반환한다.
-
인수
인수 설명 argument-1
숫자를 지정한다.
-
반환값
argument -1의 SIN 값의 근사치를 반환하며 -1 이상 +1 이하의 값이다.
SQRT
SQRT는 숫자 타입 함수로 지정된 인수의 평방근에 근사한 수치를 반환한다.
-
인수
인수 설명 argument-1
0 또는 양의 정수를 지정한다.
-
반환값
argument-1의 평방근의 근사치의 절댓값을 반환한다.
STANDARD-DEVIATION
STANDARD-DEVIATION은 숫자 타입 함수로 인수의 표준 편차에 근사한 수치를 반환한다.
-
인수
인수 설명 argument-1
숫자를 지정한다.
-
반환값
argument-1의 표준편차의 근사치이다.
SUM
SUM은 주어진 인수들을 합을 반환하는 함수이다.
함수 타입은 다음과 같이 인수의 타입에 따라 달라진다.
인수 타입 | 함수 타입 |
---|---|
모든 인수가 정수 |
정수 |
숫자(일부 인수는 정수) |
숫자 |
-
인수
인수 설명 argument-1
숫자를 지정한다.
-
반환값
모든 인수들의 합이다.
TAN
TAN은 숫자 타입 함수로 지정된 인수의 탄젠트(TAN) 값을 반환한다.
-
인수
인수 설명 argument-1
숫자를 지정한다.
-
반환값
argument-1의 탄제트(TAN) 값의 근사치를 반환한다.
TEST-NUMVAL
TEST-NUMVAL는 argument-1의 내용이 NUMVAL 함수의 argument에 대한 사양을 준수하는지 확인한다.
-
인수
인수 설명 argument-1
영숫자 리터럴 또는 영숫자 데이터 항목을 지정한다.
-
반환값
argument-1의 내용이 NUMVAL 함수의 argument에 대한 사양을 준수하는 경우 0을 반환한다.
하나 이상의 문자에 오류가 있는 경우 반환되는 값은 오류가 있는 첫 번째 문자의 위치다.
TEST-NUMVAL-C
TEST-NUMVAL-C는 argument-1의 내용이 NUMVAL-C 함수의 argument에 대한 사양을 준수하는지 확인한다.
-
인수
인수 설명 argument-1
영숫자 리터럴 또는 아래 포맷의 문자열을 포함한 영숫자 데이터 항목을 지정한다.
argument-2
currency 문자 값을 지정한다.
다음은 argument-1의 포맷이다.
-
반환값
argument-1의 내용이 NUMVAL 함수의 argument에 대한 사양을 준수하는 경우 0을 반환한다.
하나 이상의 문자에 오류가 있는 경우 반환되는 값은 오류가 있는 첫 번째 문자의 위치다.
TRIM
TRIM는 argument-1인 문자항목에 대해서 LEADING, TRAILING 또는 양쪽에 대해서 space padding을 제거한다.
-
인수
인수 설명 argument-1
Alphabetic, Alphanumeric, National Type을 지정한다.
argument-2
LEADING 혹은 TRAILING을 지정하거나 생략한다.
-
반환값
다음은 함수 반환값에 대한 예이다.
argument-1 값
argument-2 값
반환값
" Hello, world! "
LEADING
"Hello, world! "
" Hello, world! "
TRAILING
" Hello, world!"
" Hello, world! "
"Hello, world!"
" "
""
""
""
UPPER-CASE
UPPER-CASE는 지정된 인수에 있는 소문자를 각각에 대응하는 대문자로 변환하는 함수이다.
함수 타입은 다음과 같이 인수의 타입에 따라 달라진다.
인수 타입 | 함수 타입 |
---|---|
영문자 |
영숫자 |
영숫자 |
영숫자 |
-
인수
인수 설명 argument-1
최소 한 문자 이상의 영문자 또는 영숫자를 지정한다.
-
반환값
소문자에 대응되는 대문자로 변환되며 argument-1과 같은 길이의 문자열이 반환된다.
argument-1이 영문자 또는 영숫자일 경우에 'A’부터 'Z’까지의 대문자는 대응되는 'a’부터 'z’의 소문자로 변환된다.
VARIANCE
VARIANCE는 숫자 타입 함수로 인수의 분산에 근사한 수치를 반환한다.
-
인수
인수 설명 argument-1
숫자를 지정한다.
-
반환값
argument-1의 분산의 근사치이다.
WHEN-COMPILED
WHEN-COMPILED는 영숫자 타입 함수로 프로그램에 컴파일된 시스템으로부터 제공된 프로그램 컴파일 시간을 반환한다.
-
반환값
반환되는 21자리의 문자열은 각 다음과 같은 내용을 담고 있다.
문자위치 내용 1-4
그레고리력에 있어서 연도를 나타내는 4자리 숫자이다.
5-6
달을 나타내는 2자리 숫자로 01~12 범위 안에 값이다.
7-8
날짜를 나타내는 2자리 숫자로 01~31 범위 안에 값이다.
9-10
심야 오전 0시부터의 시간을 나타내는 2자리 숫자로 00~23 범위 안에 있는 값이다.
11-12
분을 나타내는 2자리 숫자로 00~59 범위 안에 있는 값이다.
13-14
초를 나타내는 2자리 숫자로 00~59 범위 안에 있는 값이다.
15-16
100분에 1초를 나타내는 2자리 숫자로 00~99 범위 안에 있는 값이다.
함수를 실행하는 시스템이 초보다 더 세밀한 단위의 시간을 제공하는 기능이 없을 경우엔 00을 반환한다.
17
다음의 문자값이 반환된다.
-
"-" : 반환될 시간이 그리니치 표준시보다 느릴 경우 반환값
-
"+" : 그리니치 표준시보다 빠르거나 같을 경우 반환값
-
"0" : 함수를 실행하는 시스템이 로케일에 의한 시차를 계산하지 않을 경우 반환값
18-19
-
17번째에 해당하는 문자가 "-"일 경우 시간을 표시하는 00부터 12까지의 수가 반환된다. 여기에 표시되는 것은 그리니치 표준시보다 느린 시간이다.
-
17번째에 해당하는 문자가 "+"인 경우에는 그리니치 표준시보다 빨라진 시간을 00부터 13 내의 2자릿수의 숫자가 반환된다.
-
17번째 문자가 "0"일 경우에는 00이 반환된다.
20-21
앞에 기술한 시간차에서 분에 해당하는 00부터 59 사이의 2자리 숫자가 반환된다.
17번째의 문자가 "+" 또는 "-"에 따라서 이 필드에 해당하는 분만큼의 시차가 있음을 의미한다. 17번째 문자가 "0"일 경우엔 00이 반환된다.
해당 함수를 포함한 프로그램의 컴파일 시각을 반환한다. 다른 프로그램에 속하는 서브 프로그램과 같은 경우에는 해당 서브 프로그램이 컴파일된 시각을 반환한다.
-
YEAR-TO-YYYY
YEAR-TO-YYYY는 정수 타입 함수로 argument-1인 2자릿수의 연도를 4자릿수의 연도로 변환한다. argument-2에 지정한 값과 실행되는 시점의 연도를 더한 값에 가까운 연도로 확장된다.
-
인수
인수 설명 argument-1
100 미만의 양의 정수를 지정한다.
argument-2
정수를 지정한다. 생략하는 경우 기본값은 50이다.
-
반환값
다음은 함수 반환값에 대한 예이다.
현재 연도 argument-1 값 argument-2 값 반환값 1995
4
23
2004
1995
4
-15
1904
2008
98
23
1998
2008
98
-15
1898