내장함수(Built-in Function)

본 장에서는 OpenFrame PL/I의 내장함수(built-in functions), 의사 변수(pseudo variables), 서브 루틴(subroutines)을 선언하고 호출하는 방법과 각 분류별 세부 함수의 사용법에 대해서 설명한다.

1. 함수 선언과 호출

본 절에서는 함수를 선언하고 호출하는 방법에 대해서 설명한다.

1.1. 선언

내장함수, 의사 변수, 서브 루틴은 문맥적으로 또는 명시적으로 선언될 수 있다. 내장함수에 대한 약어는 별도의 선언으로 취급하지 않는다.

예를 들어 다음과 같은 경우는 다중 선언이 아니다.

DCL (DIM, DIMENSION) BUILTIN;

다음과 같은 경우는 BIN이 BINARY의 약어이기 때문에 가능하다.

DCL BINARY FILE;
X = BIN(Y,3,4);

1.1.1. BUILTIN attribute

BUILTIN 속성은 이름이 내장함수, 서브 루틴, 의사 변수로 지정한다.

figure builtin1
BUILTIN attribute

built-in 이름은 프로그래머가 정의한 변수 이름으로 사용할 수 있다.

다음은 BUILTIN attribute를 사용한 예이다.

 A : PROCEDURE;
    DECLARE FLOOR FLOAT BINARY; /*선언된 FLOOR는 프로그래머가 지정한 이름*/
    X = FLOOR;                  /*변수 X에 사용자가 지정한 이름의 FLOOR를 대입*/
    B : BEGIN;
        DECLARE FLOOR BUILTIN; /*선언된 FLOOR는 BUILTIN 속성*/
        Y = SQRT(Z);          /*2번째 줄에 선언된 사용자가 지정한 FLOOR가
                               아닌 built-in function으로 참조*/
    END B;
 END A;

1.2. 호출

1.2.1. 내장함수와 의사 변수

다음 구문은 내장함수와 의사 변수를 호출하는데 사용된다.

figure builtin2
Invoking Built-in functions and Pseudo variables

1.2.2. 내장 서브루틴

다음 구문은 내장 서브 루틴(built-in subroutines)을 호출하는데 사용된다.

figure builtin3
Invoking Built-in subroutines

2. 서브 루틴(subroutines)

내장 서브 루틴은 내장함수들처럼 반드시 결과를 반환하지 않아도 되는 기타 작업을 수행한다.

다음은 서브 루틴에 대한 설명이다. 자세한 설명은 해당 절을 참고한다.

함수 설명

PLICANC

자동 재실행 기능을 취소한다. (미지원)

PLICKPT

자동 재실행을 위한 체크 포인트를 지정한다. (미지원)

PLIDUMP

현재 열려있는 파일, 현재 위치의 호출 경로 등 과 같은 정보를 dump한다.

PLIFILL

메모리의 내용을 지정된 값으로 채운다.

PLIFREE

할당된 heap 영역을 해제한다.

PLIMOVE

메모리의 내용을 다른 메모리 영역으로 복사한다.

PLIREST

프로그램을 재실행한다. (미지원)

PLIRETC

PL/I 반환 코드 값을 설정한다.

PLISRTA

ProSort를 사용하여 입력 파일을 정렬하여 출력 파일을 생성한다.

PLISRTD

ProSort를 사용하여 E15 PL/I 종료 프러시저가 제공하는 입력 레코드를 정렬하고 E35 PL/I 종료 프러시저에 의해 정렬된 레코드를 처리한다.

  • E15 PL/I : sort input procedure

  • E35 PL/I : sort output procedure

PLISTCK

시스템 시간을 가져온다.

PLISTCKF

시스템 시간을 가져온다.

2.1. PLICANC

자동 재실행 기능을 취소한다.

OpenFrame PL/I에서는 PLICANC 서브 루틴를 지원하지 않으며, 에러 메시지 출력 후 무시된다.

figure builtin plicanc
PLICANC format

2.2. PLICKPT

자동 재실행을 위한 체크 포인트를 지정한다.

OpenFrame PL/I에서는 PLICKPT 서브 루틴를 지원하지 않으며, 에러 메시지 출력 후 무시된다.

figure builtin plickpt
PLICKPT format
  • 인자

    항목 설명

    argument-1

    ddname, check-id 등 체크 포인트와 관련된 표현식

2.3. PLIDUMP

현재 열려있는 파일, 현재 위치의 호출 경로 등과 같은 정보를 dump한다. 프로그램에서 사용하는 선택된 부분의 저장공간을 포맷된 dump를 얻도록 한다.

OpenFrame PL/I에서는 PLIDUMP 서브 루틴를 지원하지 않으며, 에러 메시지 출력 후 무시된다.

figure builtin4
PLIDUMP format
  • 인자

    항목 설명

    argument-1

    문자열의 표현식

    argument-2

    문자열의 표현식

2.4. PLIFILL

메모리의 내용을 지정된 값으로 채운다.

figure builtin plifill
PLIFILL format
  • 인자

    항목 설명

    argument-1

    메모리 위치 정보를 가진 POINTER 타입

    argument-2

    메모리에 채울 문자값을 가진 CHAR(1) NONVARYING 타입

    argument-3

    채울 크기를 가진 표현식

2.5. PLIFREE

할당된 heap 영역을 해제한다.

figure builtin plifree
PLIFREE format
  • 인자

    항목 설명

    argument-1

    해제할 heap 영역을 가리키는 locator 표현식

2.6. PLIMOVE

메모리의 내용을 다른 메모리 영역으로 복사한다. 만일 복사할 메모리와 복사될 메모리 영역이 겹칠 경우 결과는 보장할 수 없다.

figure builtin plimove
PLIMOVE format
  • 인자

    항목 설명

    argument-1

    복사될 메모리 영역을 가리키는 POINTER 타입

    argument-2

    복사할 메모리 영역을 가리키는 POINTER 타입

    argument-3

    복사할 크기를 지정한 표현식

2.7. PLIREST

프로그램을 재실행한다.

OpenFrame PL/I에서는 PLIREST 서브 루틴를 지원하지 않으며, 에러 메시지 출력 후 무시된다.

figure builtin plirest
PLIREST format

2.8. PLIRETC

PL/I 프로그램을 호출하는 프로그램이나 다른 PL/I 프러시저에서 확인할 수 있는 반환 코드를 설정한다.

figure builtin5
PLIRETC format
  • 인자

    항목 설명

    argument-1

    반환 코드 값을 가진 FIXED BINARY(31,0) 속성의 표현식

2.9. PLISRTA

ProSort를 사용하여 입력 파일을 정렬하여 출력 파일을 생성한다.

figure builtin6
PLISRTA format
  • 인자

    항목 설명

    argument-1

    SORT, READ statement 등 sort와 관련된 표현식

2.10. PLISRTD

ProSort를 사용하여 E15 PL/I 종료 프러시저가 제공하는 입력 레코드를 정렬하고 E35 PL/I 종료 프러시저에 의해 정렬된 레코드를 처리한다.

figure builtin7
PLISRTD format
  • 인자

    항목 설명

    argument-1

    SORT, READ statement 등 sort와 관련된 표현식

2.11. PLISTCK

시스템 시간을 가져온다.

figure builtin plistck
PLISTCK format
  • 인자

    항목 설명

    argument-1

    시간을 저장할 UNSIGNED FIXED BINARY(64) 타입

2.12. PLISTCKF

시스템 시간을 가져온다.

figure builtin plistckf
PLISTCKF format
  • 인자

    항목 설명

    argument-1

    시간을 저장할 UNSIGNED FIXED BINARY(64) 타입

3. 의사 변수(Pseudo variables)

받는 영역을 나타낸다. Pseudo variable은 서로 중첩될 수 없다.

Pseudo variable은 아래와 같은 경우에만 나타날 수 있다.

  • 대입문의 왼쪽에 오는 경우

  • DO 문 안에 있는 대상으로 오는 경우 (SUBSTR, UNSPEC만 가능)

  • GET 문의 데이터 목록 또는 PUT 문의 STRING 옵션일 경우

  • KEYTO 또는 REPLY 옵션의 문자열 이름일 경우

다음은 pseudo variable에 대한 설명이다. 자세한 설명은 해당 절을 참고한다.

함수 설명

ONCHAR

CONVERSION 조건이 발생한 문자의 값을 설정한다.

ONSOURCE

CONVERSION 조건이 발생한 문자열의 값을 설정한다.

STRING

문자열 집합의 모든 요소를 병합한 문자열을 할당한다.

SUBSTR

문자열의 부분 문자열을 할당한다.

UNSPEC

값의 내부 표현인 비트 문자열을 할당한다.

3.1. ONCHAR

CONVERSION 조건을 발생시키는 문자의 값을 설정한다.

figure builtin8
ONCHAR pseudo variable format
  • 반환값

    • ONCHAR 의사 변수는 현재 ONCHAR 내장함수의 값을 설정한다. 할당되는 요소의 값은 길이 1의 문자 값으로 변환된다. 새로운 문자는 'Data conversion’이 다시 시도될 때 사용된다.

    • 의사 변수는 문맥 밖에서 사용될 수 없다.

3.2. ONSOURCE

CONVERSION 조건을 발생시키는 문자열의 값을 설정한다.

figure builtin9
ONSOURCE pseudo variable format
  • 반환값

    • ONSOURCE 의사 변수는 현재 ONSOURCE 내장함수의 값을 설정한다. 할당되는 요소의 값은 문자열로 변환되고, 필요하다면 오른쪽에 공백으로 채워지거나 CONVERSION 조건이 발생된 영역의 길이와 같이 잘라진다. 문자열은 'Data conversion’이 다시 시도될 때 사용된다.

    • 의사 변수는 문맥 밖에서 사용될 수 없다.

    • 변환할 때 할당되는 문자열은 단일 데이터 항목으로 처리된다.

      변환이 GET LIST나 GET DATA 문의 실행 동안 발생하는 경우 하나 이상의 데이터 항목을 포함하는 문자열을 할당하지 않아야 한다. 문자열에 공백이나 쉼표가 들어있을 경우 CONVERSION을 다시 발생시킬 수 있다.

3.3. STRING

문자열 집합의 모든 요소를 병합한 문자열을 할당한다.

figure builtin10
STRING pseudo variable format
  • 인자

    항목 설명

    argument-1

    집계 또는 요소 참조 표현식

    • 각 argument-1의 기본 요소는 모두 비트 문자열이거나 모두 Character 문자열이어야 한다.

  • 반환값

    • STRING 의사 변수는 argument-1이 문자열 스칼라이면, argument-1을 문자열로 할당한다. argument-1의 남아있는 문자열은 공백이나 0 비트로 채워지거나, 가변 길이인 경우 길이가 0으로 된다.

    • 의사 변수는 문맥 밖에서 사용될 수 없다.

3.4. SUBSTR

문자열의 부분 문자열을 할당한다.

figure builtin11
SUBSTR pseudo variable format
  • 인자

    항목 설명

    argument-1

    문자열 참조 표현식

    • argument-1은 숫자 문자가 될 수 없다.

    argument-2

    표현식

    • FIXED BINARY 값으로 변환될 수 있는 argument-2는 argument-1의 부분 문자열의 시작 위치를 지정한다.

    argument-3

    표현식

    • argument-3은 argument-1의 부분 문자열의 길이를 지정한다. 실제 고정 소수점 이진 값으로 변환될 수 있다.

    • argument-3의 값이 0으로 주어지면, null 문자열이 반환된다. argument-3이 생략되면, argument-1 문자열에서 argument-2의 위치부터 argument-1 문자열 마지막에 해당하는 부분의 문자열이 반환된다.

    argument-1이 배열일 경우에만 argument-2와 argument-3이 배열이 될 수 있다.

  • 반환값

    • SUBSTR 의사 변수는 argument-1에서 argument-2와 argument-3으로 지정된 부분 문자열 값을 할당한다.

    • argument-1의 나머지는 바뀌지 않는다. 변하는 문자열에 대한 할당은 문자열의 길이를 바꾸지 않는다.

3.5. UNSPEC

값의 내부 표현인 비트 문자열을 할당한다.

figure builtin12
UNSPEC pseudo variable format
  • 인자

    항목 설명

    argument-1

    참조 표현식

  • 반환값

    • UNSPEC 의사 변수는 argument-1에 변환없이 직접적으로 비트 값을 할당한다. 필요하다면 비트 값이 argument-1의 길이에 맞춰 '0’B가 오른쪽에 채워진다.

    • argument-1이 가변 길이 문자열일 경우 앞의 2byte 길이 필드에도 비트 값이 할당된다. argument-1이 AREA인 경우에 제어 정보에도 비트 값이 할당된다.

UNSPEC의 사용은 개발한 프로그램의 이식성에 영향을 줄 수 있다.

4. 내장함수 종류

의사 변수와 서브 루틴을 제외한 내장함수들을 각각의 특성에 맞게 다음과 같이 분류한다.

본 절에서는 해당 내장함수의 사용법에 대해서 설명한다.

4.1. 산술 내장함수

산술 내장함수(Arithmetic built-in functions)는 연산 값의 속성을 결정하고, 일반적인 산술 연산을 수행하는 함수들이다. 산술 함수들의 일부는 결과의 데이터 타입을 하나 또는 그 이상의 인자에서 파생된 데이터 타입으로 결정한다. 인자의 데이터 타입이 다를 때는 Data conversion 규칙에 따라 변환된다.

다음은 해당 함수에 대한 설명이다. 자세한 설명은 해당 절을 참고한다.

함수 설명

ABS

값의 절댓값을 계산한다.

CEIL

값보다 동일하거나 최소로 큰 정수 값을 반환한다.

FLOOR

값보다 동일하거나 최대로 작은 정수 값을 반환한다.

MAX

2개 이상의 값의 최댓값을 계산한다.

MIN

2개 이상의 값의 최솟값을 계산한다.

MOD

하나의 값을 다른 값으로 나눈 나머지를 반환한다.

ROUND

지정된 자리에서 값을 반올림한다.

SIGN

값이 음수, 제로, 양수인지에 따라서 -1, 0, 1의 값을 반환한다.

TRUNC

반올림되는 값에 대해 0과 가장 가까운 정수를 계산한다.

4.1.1. ABS

ABS는 값의 절댓값을 계산한다.

figure builtin13
ABS function format
  • 인자

    항목 설명

    argument-1

    표현식

  • 반환값

    • 인자(argument-1)의 절댓값(즉, 인자의 양의 값)을 반환한다.

    • 결과는 argument-1의 base, scale, precision을 갖는다.

4.1.2. CEIL

값보다 동일하거나 최소로 큰 정수 값을 반환한다.

figure builtin23
CEIL function format
  • 인자

    항목 설명

    argument-1

    표현식

  • 반환값

    • 결과는 argument-1의 base, scale, precision을 갖는다.

    • 결과의 precision은 다음과 같다.

      (min(N, max(p-q+1)),0)

      N은 허용되는 자릿수의 최댓값이다.

4.1.3. FLOOR

값보다 동일하거나 최대로 작은 정수 값을 반환한다.

figure builtin36
FLOOR function format
  • 인자

    항목 설명

    argument-1

    표현식

  • 반환값

    • 결과는 argument-1의 base, scale, precision을 갖는다.

    • argument-1의 precision이 (p,q)인 경우를 제외하고, 결과의 precision은 다음과 같다.

      (min(n,max(p-q+1,1)),0)

      n은 허용되는 자릿수의 최댓값이다.

4.1.4. MAX

2개 이상의 값의 최댓값을 계산한다.

figure builtin45
MAX function format
  • 인자

    항목 설명

    argument-1

    표현식

    argument-2

    표현식

    결과는 argument 공통의 base, scale을 가진다. 허용되는 argument의 갯수는 64개다.

  • 반환값

    • 2개 이상의 표현식의 집합에서 가장 큰 값을 반환한다.

    • argument-2를 생략하고 argument-1만 기술한 경우 argument-1 값을 반환한다.

    • argument가 (p1,q1),(p2,q2),...,(pn,qn)의 precision을 갖는 fixed-point이면, 결과의 precision은 다음과 같다.

      (min(N,max(p1-q1,p2-q2,...,pn-qn) + max(q1,q2,...,qn)),max(q1,q2,...,qn))

      N은 허용되는 자릿수의 최댓값이다.

    • argument가 p1,p2,..,pn의 precision을 갖는 float-point이면, 결과의 precision은 다음과 같다.

      max(p1,p2,...,pn)

4.1.5. MIN

2개 이상의 값의 최솟값을 계산한다.

figure builtin46
MIN function format
  • 인자

    항목 설명

    argument-1

    표현식

    argument-2

    표현식

    결과는 argument 공통의 base, scale을 가진다. 허용되는 argument의 갯수는 64개다.

  • 반환값

    • 2개 이상의 표현식의 집합에서 가장 작 값을 반환한다.

    • argument-2를 생략하고 argument-1만 기술한 경우 argument-1 값을 반환한다.

    • argument가 (p1,q1),(p2,q2),...,(pn,qn)의 precision을 갖는 fixed-point 이면, 결과의 precision은 다음과 같다.

      (min(N,max(p1-q1,p2-q2,...,pn-qn) + max(q1,q2,...,qn)),max(q1,q2,...,qn))

      N은 허용되는 자릿수의 최댓값이다.

    • argument가 p1,p2,..,pn의 precision을 갖는 float-point 이면, 결과의 precision은 다음과 같다.

      max(p1,p2,...,pn)

4.1.6. MOD

하나의 값을 다른 값으로 나눈 나머지를 반환한다.

figure builtin47
MOD function format
  • 인자

    항목 설명

    argument-1

    표현식

    argument-2

    표현식

    • argument-2=0이면, ZERODIVIDE 조건이 발생한다.

  • 반환값

    • ([argument-1] - R)/[argument-2] = n 에서 가장 작은 음수가 아닌 값 R을 반환한다.

    • 결과 값 R은 argument 공통의 base와 scale을 갖는다.

      결과가 floating-point인 경우 precision은 argument-1과 argument-2보다 크다.

      결과가 fixed-point인 경우 argument-1의 precision이 (p1,q1) 이고 argument-2의 precision이 (p2,q2)일 경우 precision은 다음과 같다.

      (min(n,p2-q2+max(q1,q2)),max(q1,q2))
    • argument-1과 argument-2의 scaling factor가 다른 fixed-point이면, R이 계산되기 전에 더 작은 scaling factor를 갖는 argument가 큰 scaling factor로 변환된다. 변환이 실패하면 결과는 예측할 수 없다.

4.1.7. ROUND

지정된 자리에서 값을 반올림한다.

figure builtin55
ROUND function format
  • 인자

    항목 설명

    argument-1

    표현식

    • argument-1이 음수면, 절댓값으로 반올림되고 부호는 다시 저장된다.

    argument-2

    선택적으로 부호를 갖는 정수 값

    • 반올림이 발생되는 자릿수를 지정한다.

  • 반환값

    • argument-2로 지정된 자리에서 반올림된 argument-1의 값을 반환한다. 결과는 argument-1의 base, scale을 가진다.

    • argument-1의 precision이 (p,q)일 때 FIXED 결과의 precision은 다음과 같다.

      (max(1,min(p-q+1+[argument-2],N)),[argument-2])

      N은 허용되는 자릿수의 최댓값이다. 그러므로 argument-2는 결과의 scaling factor를 지정한다.

    • argument-2는 FIXED 데이터에 대한 scaling factor의 제한을 따라야 한다. 0보다 크면 반올림은 그 위치의 오른쪽 argument-2번째 자릿수에서 발생하고, 0이거나 음수이면, 반올림은 그 위치의 왼쪽 (1 - [argument-2])번째 자릿수에서 발생한다.

4.1.8. SIGN

값이 음수, 제로, 양수인지에 따라서 -1, 0, 1의 값으로 반환한다.

figure builtin56
SIGN function format
  • 인자

    항목 설명

    argument-1

    표현식

  • 반환값

    • argument-1이 양수인지 0인지 음수인지 나타내는 FIXED BINARY 값을 반환한다.

4.1.9. TRUNC

반올림되는 값에 대해 0과 가장 가까운 정수를 계산한다.

figure builtin66
TRUNC function format
  • 인자

    항목 설명

    argument-1

    표현식

  • 반환값

    • argument-1의 절단된 값인 정수 값을 반환한다.

    • argument-1이 양수이나 0이면, argument-1 이하의 가장 큰 정수값이 되고, argument-1이 음수이면, argument-1 이상의 가장 작은 정수 값이 된다.

    • 결과의 base, scale, precision은 argument-1과 같다.

      argument-1이 precision (p,q)인 fixed-point일 때를 제외하고 결과의 precision은 다음과 같다.

      (min(N,max(p-q+1,1)),0)

      N은 허용되는 자릿수의 최댓값이다.

4.2. 배열 처리 내장함수

배열 처리 내장함수(Array-handling built-in functions)는 배열 인자를 조작하고 요소의 값을 반환한다.

다음은 해당 함수에 대한 설명이다. 자세한 설명은 해당 절을 참고한다.

함수 설명

ALL

배열의 모든 요소들의 bitwise AND를 계산한다.

ANY

배열의 모든 요소들의 bitwise OR을 계산한다.

DIMENSION

배열의 특정 차원의 요소의 수를 반환한다.

HBOUND

배열의 차원에 대한 upper bound를 반환한다.

LBOUND

배열의 차원에 대한 lower bound를 반환한다.

POLY

두 1차원 배열에 대한 다항식의 근사치 값을 반환한다.

SUM

배열의 모든 요소들의 합계를 계산한다.

4.2.1. ALL

배열의 모든 요소들의 bitwise AND를 계산한다.

figure builtin17
ALL function format
  • 인자

    항목 설명

    argument-1

    계산 가능한 배열 표현식

    • argument-1이 비트 문자열 배열이 아니면, 비트 문자열로 변환된다.

  • 반환값

    • argument-1의 각 요소에 대응하는 비트가 존재하고 모두 1이면, 각 비트가 1인 위치에 한 비트 문자열을 반환한다.

    • 결과의 길이는 가장 긴 요소와 같다.

4.2.2. ANY

배열의 모든 요소들의 bitwise OR을 계산한다.

figure builtin18
ANY function format
  • 인자

    항목 설명

    argument-1

    계산 가능한 배열 표현식

    • argument-1이 비트 문자열 배열이 아니면, 비트 문자열로 변환된다.

  • 반환값

    • argument-1의 어떤 요소에 대응하는 비트가 존재하고 1이면, 각 비트가 1인 위치에 한 비트 문자열을 반환한다.

    • 결과의 길이는 가장 긴 요소와 같다.

4.2.3. DIMENSION(약어 : DIM)

배열의 특정 차원의 요소의 수를 반환한다.

figure builtin31
DIMENSION function format
  • 인자

    항목 설명

    argument-1

    배열 참조 표현식

    • argument-1은 argument-2 차원보다 적은 차원을 가질 수 없다.

    argument-2

    argument-1의 특정 차원을 지정하는 표현식

    • 필요한 경우 argument-2는 FIXED BINARY(31,0)으로 변환된다. argument-2는 1 이상의 값이어야 한다.

    • argument-2는 배열이 1차원일 경우에만 생략 가능하다. argument-2가 생략되면 기본값은 1이다.

  • 반환값

    • argument-1에서 argument-2의 차원의 현재 범위를 지정하는 FIXED BINARY(31,0)의 값을 반환한다.

    • argument-2가 argument-1의 차원의 수를 초과하면, DIMENSIOM 함수는 정의되지 않은 값을 반환한다. DIMENSION 대신에 LBOUND와 HBOUND를 사용하는 것을 추천한다.

현재 OpenFrame PL/I은 DIMENSION 내장함수의 argument-2가 변수일 경우 지원하지 않는다.

4.2.4. HBOUND

배열의 차원에 대한 upper bound를 반환한다.

figure builtin37
HBOUND function format
  • 인자

    항목 설명

    argument-1

    배열 참조 표현식

    • argument-1의 차원은 argument-2의 차원보다 작아서는 안된다.

    argument-2

    argument-1의 특정 차원을 지정하는 표현식

    • 필요한 경우 argument-2는 FIXED BINARY(31,0)으로 변환된다. argument-2는 1 이상의 값이어야 한다.

    • argument-2는 배열이 1차원일 경우에만 생략 가능하다. argument-2가 생략되면, 기본값은 1이다.

  • 반환값

    • argument-1에서 argument-2 차원의 현재 upper bound를 지정하는 FIXED BINARY 값을 반환한다.

현재 OpenFrame PL/I은 HBOUND 내장함수의 argument-2가 변수일 경우 지원하지 않는다.

4.2.5. LBOUND

배열의 차원에 대한 lower bound를 반환한다.

figure builtin40
LBOUND function format
  • 인자

    항목 설명

    argument-1

    배열 참조 표현식

    • argument-1의 차원은 argument-2의 차원보다 작아서는 안된다.

    argument-2

    argument-1의 특정 차원을 지정하는 표현식

    • 필요한 경우 argument-2는 FIXED BINARY(31,0)으로 변환된다. argument-2는 1 이상의 값이어야 한다.

    • argument-2는 배열이 1차원일 경우에만 생략 가능하다. argument-2가 생략되면, 기본값은 1이다.

  • 반환값

    • argument-1에서 argument-2 차원의 현재 lower bound를 지정하는 FIXED BINARY 값을 반환한다.

현재 OpenFrame PL/I은 LBOUND 내장함수의 argument-2가 변수일 경우 지원하지 않는다.

4.2.6. POLY

두 1차원 배열에 대한 다항식의 근사치 값을 반환한다.

figure builtin poly
POLY function format
  • 인자

    항목 설명

    argument-1

    배열 참조 표현식

    • 반드시 FLOAT이어야 한다.

    argument-2

    요소 표현식

  • 반환값

    • argument-1과 argument-2가 x, y이고, argument-1의 lower bound와 upper bound가 m, n일 경우 반환값은 다음 공식의 결과와 같다.

      x(m) + x(m+1)*y + x(m+2)*y**2 + ... + x(n)*y**(n-m)

4.2.7. SUM

배열의 모든 요소들의 합계를 계산한다.

figure builtin61
SUM function format
  • 인자

    항목 설명

    argument-1

    배열 표현식

    • argument-1의 요소가 문자열이면, fixed-point 정수 값으로 변환된다.

    • argument-1의 요소들이 fixed-point이면, 결과의 precision은 (N,q)가 된다. N은 허용되는 자릿수의 최댓값이고, q는 argument-1의 scaling factor이다.

    • argument-1의 요소들이 floating-point이면, 결과의 precision은 argument-1과 같다.

  • 반환값

    • argument-1의 모든 요소들의 합을 반환한다. 결과의 base, scale은 argument-1과 같다.

4.3. 버퍼 관리 내장함수

버퍼 관리 내장함수(Buffer-management built-in functions)는 byte 수와 주소를 사용하여 명시하는 저장공간의 영역인 버퍼에서 동작한다.

다음은 해당 함수에 대한 설명이다. 자세한 설명은 해당 절을 참고한다.

함수 설명

HEXIMAGE

버퍼의 값을 16진수로 나타낸 문자열을 반환한다.

MEMINDEX

버퍼에서 문자열이나 버퍼의 위치를 찾는다.

MEMVERIFY

어느 하나의 문자열 요소가 버퍼 내에 존재하지 않는 위치를 왼쪽부터 찾는다.

MEMVERIFYR

어느 하나의 문자열 요소가 버퍼 내에 존재하지 않는 위치를 오른쪽부터 찾는다.

4.3.1. HEXIMAGE

사용자가 지정한 위치에 존재하는 저장공간의 내용을 16진수 값으로 나타낸 문자열을 반환한다.

figure builtin heximage
HEXIMAGE function format
  • 인자

    항목 설명

    argument-1

    POINTER 타입이나 OFFSET 타입과 같이 위치 정보를 가지고 있는 제한된 표현식(Restricted expression)

    • 현재 OFFSET 타입은 지원하지 않는다.

    argument-2

    표현식

    • 계산 가능한 타입이여야 하며 FIXED BINARY(31,0) 타입으로 변환된다.

    argument-3

    argument-3이 명시된 경우, 반드시 CHARACTER(1) NONVARYING 타입이여야 한다.

  • 반환값

    • argument-3을 명시하지 않는 경우

      argument-1 위치에 저장된 변수값에서 [argument-2] byte 길이만큼 16진수 값으로 변환하여 문자열로 반환한다. 이 경우 반환되는 문자열의 길이는 2 * [argument-2]이다.

    • argument-3을 명시하고 있는 경우

      argument-3을 명시하지 않는 경우와 마찬가지로 16진수 문자열을 반환하는데, 16진수 8글자마다 뒤에 argument-3의 문자를 추가한 형태를 문자열로 반환한다. 이 경우 반환되는 문자열의 길이는 (2 * [argument-2]) + ([argument-2] - 1) / 4이다.

4.3.2. MEMINDEX

버퍼에서 부분 문자열이나 버퍼의 시작 위치를 찾아 반환한다.

figure builtin memindex
MEMINDEX function format
  • 인자가 3개일 경우

    항목 설명

    argument-1

    버퍼의 주소

    argument-2

    버퍼의 길이

    • 계산 가능한 타입이여야 한다.

    argument-3

    버퍼에서 찾을 문자열

  • 인자가 4개일 경우

    항목 설명

    argument-1

    버퍼의 주소

    argument-2

    버퍼의 길이

    • 계산 가능한 타입이여야 한다.

    argument-3

    argument-1 버퍼에서 찾을 버퍼의 주소

    argument-4

    argument-3 버퍼의 길이

    • 계산 가능한 타입이여야 한다.

  • 반환값

    • argument-1 버퍼에서 argument-3 문자열이나 argument-3 버퍼와 일치하는 부분을 찾아 시작 위치를 반환한다.

4.3.3. MEMVERIFY

어느 하나의 문자열 요소가 버퍼 내에 존재하지 않는 경우를 왼쪽부터 찾는다.

figure builtin memverify
MEMVERIFY function format
  • 인자

    항목 설명

    argument-1

    버퍼의 주소

    argument-2

    버퍼의 길이

    • 계산 가능한 타입이여야 한다.

    argument-3

    버퍼에서 찾을 문자열

  • 반환값

    • argument-1 버퍼의 왼쪽부터 argument-3 문자열이 존재하지 않는 위치를 찾아 리턴한다.

4.3.4. MEMVERIFYR

어느 하나의 문자열 요소가 버퍼 내에 존재하지 않는 경우를 오른쪽부터 찾는다.

figure builtin memverifyr
MEMVERIFYR function format
  • 인자

    항목 설명

    argument-1

    버퍼의 주소

    argument-2

    버퍼의 길이

    • 계산 가능한 타입이여야 한다.

    argument-3

    버퍼에서 찾을 문자열

  • 반환값

    • argument-1 버퍼의 오른쪽부터 argument-3 문자열이 존재하지 않는 위치를 찾아 리턴한다.

4.4. 조건 처리 내장함수

조건 처리 내장함수(Condition-handling built-in functions)는 조건이 발생한 원인을 확인할 수 있도록 해준다. 이 함수들의 사용은 ON-unit이나 다음과 같이 동적으로 유래된 범위 내에서 유효하다. 모든 다른 사용은 문맥에 무시된다.

  • 내장함수에 고유한 조건

  • 암시적인 행동으로 발생하는 ERROR 또는 FINISH 조건

다음은 해당 함수에 대한 설명이다. 자세한 설명은 해당 절을 참고한다.

함수 설명

DATAFIELD

NAME 조건을 발생시킨 문자열 값을 반환한다.

ONCHAR

CONVERSION 조건이 발생된 문자의 값을 반환한다.

ONCODE

조건 코드 값을 반환한다.

ONCONDID

조건에 대한 ID 값을 반환한다.

ONFILE

조건이 발생된 파일의 이름을 반환한다.

ONLINE

조건이 발생된 소스의 라인 위치를 반환한다. (미지원)

ONLOC

조건이 발생된 프러시저의 이름을 반환한다.

ONOFFSET

조건이 발생된 소스의 라인 오프셋을 반환한다. (미지원)

ONSOURCE

CONVERSION 조건이 발생된 문자열의 값을 반환한다.

4.4.1. DATAFIELD

NAME 조건이 발생한 필드의 값을 문자열 형태로 반환한다.

figure builtin datafield
DATAFIELD function format
  • 반환값

    • 조건이 발생한 필드 내용을 문자열 형태로 반환한다.

    • DATAFIELD 내장함수가 문맥 밖에서 사용되는 경우 빈 문자열이 반환된다.

4.4.2. ONCHAR

CONVERSION 조건이 발생된 문자의 값을 반환한다.

figure builtin8
ONCHAR function format
  • 반환값

    • CONVERSION 조건을 발생시킨 문자를 CHARACTER(1) 타입으로 반환한다. 그 값은 CONVERSION 조건에 대한 암시적인 작동으로 발생하는 ERROR나 FINISH 조건 또는 CONVERSION 조건에 대한 ON-unit 안의 문맥에 있다.

    • ONCHAR 내장함수가 문맥 밖에서 사용되는 경우 공백이 반환된다.

4.4.3. ONCODE

조건 코드 값을 반환한다.

figure builtin50
ONCODE function format
  • 반환값

    • 조건 코드값을 고정 소수점 이진 타입으로 반환한다. 어떤 ON-unit 또는 동적 하위의 문맥 안에 있다.

    • ONCODE 내장함수가 문맥 밖에서 사용되는 경우 0이 반환된다. 감지된 에러와 조건에 상응하는 코드의 경우는 사용자 안내서를 참고한다.

4.4.4. ONCONDID

조건에 대한 ID 값을 반환한다.

figure builtin oncondid
ONCONDID function format
  • 반환값

    • 조건에 대한 ID 값을 FIXED BINARY(31,0) 타입으로 반환한다.

    • ONCONDID 내장함수가 문맥 밖에서 사용되는 경우 0이 반환된다.

    • ONCONDID가 반환하는 값은 다음과 같다.

      조건 반환값 조건 반환값

      AREA

      1

      ATTENTION

      2

      CONDITION

      3

      CONVERSION

      4

      ENDFILE

      5

      ENDPAGE

      6

      ERROR

      7

      FINISH

      8

      FIXEDOVERFLOW

      9

      INVALIDOP

      10

      KEY

      11

      NAME

      12

      OVERFLOW

      13

      RECORD

      14

      SIZE

      15

      STORAGE

      16

      STRINGRANGE

      17

      STRINGSIZE

      18

      SUBSCRIPTRANGE

      19

      TRANSMIT

      20

      UNDEFINEDFILE

      21

      UNDERFLOW

      22

      ZERODIVIDE

      23

4.4.5. ONFILE

조건이 발생된 파일의 이름을 반환한다.

figure builtin onfile
ONFILE function format
  • 반환값

    • 입/출력 조건이 발생된 파일 이름 문자열을 반환한다.

    • ONFILE 내장함수가 문맥 밖에서 사용되는 경우 빈 문자열이 반환된다. ON-unit 또는 어떤 동적하위의 문맥 안에 있다.

4.4.6. ONLINE

조건이 발생된 소스의 라인 위치를 반환한다.

OpenFrame PL/I에서는 ONLINE 내장함수를 지원하지 않으며, 에러 메시지 출력 후 무시된다.

figure builtin online
ONLINE function format

4.4.7. ONLOC

조건이 발생된 프러시저의 이름을 반환한다.

figure builtin51
ONLOC function format
  • 반환값

    • 조건이 발생된 프러시저 이름을 반환한다.

    • ONLOC 내장함수가 문맥 밖에서 사용되는 경우 빈 문자열이 반환된다. ONLOC은 항상 CALL 또는 GOTO statement에 나타나는 이름에 관계없이 여러 label 중에서 가장 왼쪽에 있는 이름으로 반환한다. ON-unit 또는 어떤 동적하위의 문맥 안에 있다.

4.4.8. ONOFFSET

조건이 발생된 소스의 라인 오프셋을 반환한다.

OpenFrame PL/I에서는 ONOFFSET 내장함수를 지원하지 않으며, 에러 메시지 출력 후 무시된다.

figure builtin onoffset
ONOFFSET function format

4.4.9. ONSOURCE

CONVERSION 조건이 발생된 문자열의 값을 반환한다.

figure builtin9
ONSOURCE function format
  • 반환값

    • CONVERSION 조건이 발생될 때 처리되고 있던 부분의 문맥에 있는 문자열 값을 반환한다. 그 값은 CONVERSION 조건에 대한 암시적인 작동으로 발생하는 ERROR나 FINISH 조건 또는 CONVERSION 조건에 대한 ON-unit 안에 문맥에 있다.

    • ONSOURCE 내장함수가 문맥 밖에서 사용되는 경우 빈 문자열이 반환된다.

4.5. 날짜/시간 내장함수

날짜/시간 내장함수(Date/time built-in functions)는 날짜와 시간 정보를 조작하거나 반환한다. 일부 함수에서는 사용할 날짜/시간 패턴을 지정할 수 있다. 이러한 기능에 대한 시간 영역과 정확도는 시스템에 따라 달라질 수 있다.

날짜와 시간을 나타내는 형식은 다음과 같다.

구분 설명

YYYY

4자리 연도

YY

2자리 연도

ZY

2자리 연도 (앞자리 값이 0인 경우 앞자리 문자를 제거한다.)

MM

2자리 달

ZM

2자리 달 (앞자리 값이 0인 경우 앞자리 문자를 제거한다.)

MMM

3자리 달 (예: MON)

Mmm

3자리 달 (예: Dec)

DD

해당 월 내에서 2자리 일

ZD

2자리 일 (앞자리 값이 0인 경우 앞자리 문자를 제거한다.)

DDD

해당 연도 내에서 일의 수

HH

해당 일 내에서 시간

MI

해당 시간 내에서 분

SS

해당 분 내에서 초

999

해당 초 내에서 밀리 초

999999

해당 초 내에서 마이크로 초

'MMM’과 'Mmm’의 경우에는 소문자와 대문자가 정확히 일치해야 한다. 'HH', 'MM', 'SS', '999’를 사용할 수 있는 패턴은 오로지 'YYYYMMDDHHMISS999' 패턴이다.

다음은 날짜/시간을 표현하는 패턴이다.

구분 4자리 연도 2자리 연도

연도 먼저

YYYYMMDD

YYYYMMMDD

YYYYMmmDD

YYYYDDD

YYYYMM

YYYYMMM

YYYYMmm

YYYY

YYYYMMDDHHMISS999

YYYY-MM-DD-HH.MI.SS.999999

YYYY-MM-DD HH.MI.SS.999999

YYMMDD

YYMMMDD

YYMmmDD

YYDDD

YYMM

YYMMM

YYMmm

YY

달 먼저

MMDDYYYY

MMMDDYYYY

MmmDDYYYY

MMYYYY

MMMYYYY

MmmYYYY

MMDDYY

MMMDDYY

MmmDDYY

MMYY

MMMYY

MmmYY

일 먼저

DDMMYYYY

DDMMMYYYY

DDMmmYYYY

DDDYYYY

DDMMYY

DDMMMYY

DDMmmYY

DDDYY

DB2 형식

YYYY-MM-DD

MM/DD/YYYY

DD.MM.YYYY

YY-MM-DD

MM/DD/YY

DD.MM.YY

제로 없음

ZY-ZM-ZD

YY-ZM-ZD

ZM/ZD/ZY

ZM/ZD/YY

ZD.ZM.ZY

ZD.ZM.YY

패턴에서 일이 생략될 때 1의 값을 갖는 것으로 가정한다. 달과 일이 생략되면, 그들 또한 1의 값을 갖는 것으로 가정한다. 입력 값이 "제로 없음" 패턴을 가지는 경우 날짜 값이 8자보다 적을 수 있다. 예를 들어 날짜 2009년 1월 20일은 패턴 "ZY-ZM-ZD"에 일치하여 "9-1-20"으로 나타날 수 있다. 출력할 때 "제로 없음" 패턴을 가지는 문자열은 항상 8자이며, 제로 대신 공백을 가진다.

다음은 날짜/시간에 관련된 함수에 대한 설명이다. 자세한 설명은 해당 절을 참고한다.

함수 설명

DATE

현재 날짜를 YYMMDD 패턴으로 반환한다.

DATETIME

현재 날짜와 시간을 사용자가 지정한 패턴이나 기본 패턴인 YYYYMMDDHHMISS999으로 반환한다.

DAYS

오늘 날짜를 기준으로 하거나 날짜/시간 패턴 문자 형태를 가진 날짜를 기준으로 한 총 일 수를 반환한다.

DAYSTODATE

일 수를 날짜/시간 패턴 문자열로 반환한다.

REPATTERN

한 패턴의 날짜 값을 다른 패턴의 날짜 값으로 변환한다.

SECS

오늘 날짜를 기준으로 하거나, 날짜/시간 패턴 문자 형태를 가진 날짜를 기준으로 한 총 초 수를 반환한다.

TIME

현재 시간을 HHMISS999 패턴으로 반환한다.

TIMESTAMP

현재 시간을 YYYY-MM-DD-HH.MI.SS.999999 패턴으로 반환한다.

VALIDDATE

문자열이 유효한 날짜 값인지 검사한다.

WEEKDAY

현재 날짜값 혹은 특정 DAYS 값에 해당하는, 주 중의 일의 값을 반환한다.

4.5.1. DATE

현재 날짜를 YYMMDD 패턴으로 반환한다.

figure builtin28
DATE function format
  • 반환값

    • 날짜를 포함하는 6자리 문자열을 YYMMDD 패턴으로 반환한다.

4.5.2. DATETIME

현재 날짜와 시간을 사용자가 지정한 패턴이나 기본 패턴인 YYYYMMDDHHMISS999으로 반환한다.

figure builtin29
DATETIME function format
  • 인자

    항목 설명

    argument-1

    표현식

    • argument-1이 존재하면 날짜가 반환되는 날짜/시간 패턴을 지정한다.

    • argument-1이 없는 경우 날짜/시간 패턴은 YYYYMMDDHHMISS999로 간주된다.

    • argument-1은 계산가능한 형태여야 하며 문자 형태를 가져야 한다. 그렇지 않으면 문자로 변환된다.

  • 반환값

    • 기본 패턴 또는 사용자가 지정한 패턴으로 오늘 날짜의 문자열 타임 스탬프를 반환한다.

    • 허용되는 패턴에 대해서는 "날짜/시간 패턴"을 참고한다.

4.5.3. DAYS

날짜값에 대해 Lilian format 형태로 이루어진 일 수를 반환한다.

  • Lilian date

    1582년 10월 14일로부터 며칠이 지났는지 나타내는 일수이다. 즉, 1582년 10월 15일을 Lilian date 1일로 간주한다.

figure builtin days
DAYS function format
  • 인자

    항목 설명

    argument-1

    날짜를 나타내는 문자열 표현식

    argument-2

    날짜/시간 패턴

    • 허용되는 패턴에 대해서는 "날짜/시간 패턴"을 참고한다.

    • 계산 가능한 타입이여야 한다.

    • 문자열 타입 값이 아니라면 문자열로 변환된다.

    • 생략 시 YYYYMMDDHHMISS9999 값이 사용된다.

    argument-3

    argument-2의 연도 형식이 'YY’인 경우 실제 연도의 범위를 정하기 위해 사용하는 century window 값

    • argument-3 값이 양수인 경우

      argument-3의 값을 century window 값으로 사용한다. 즉, argument-3의 값을 기준으로 실제 연도의 범위를 정한다. 예를 들어 argument-3의 값이 1950인 경우 'YY' 연도 형식의 실제 연도 값의 범위는 1950년부터 2049년 사이이다.

    • argument-3 값이 0이거나 음수인 경우

      시스템에서 제공하는 연도값에서 argument-3을 더한 값을 century window 값으로 사용해서 'YY' 연도값의 실제 범위를 정한다. 예를 들어 현재 시스템에서 제공되는 년도값이 2017이고 argument-3의 값이 -3인 경우 century window 값은 '2017 - 3 = 2014’이며, 'YY' 연도 형식의 실제 연도 범위는 2014년부터 2113년 사이이다.

    • argument-3을 생략하는 경우

      기본 century window 값으로 1950을 사용한다.

  • 반환값

    • Lilian date 1일을 기준으로 해서 argument-1의 날짜까지 며칠이 경과했는지 나타내는 수를 FIXED BINARY(31,0) 타입 값으로 반환한다.

4.5.4. DAYSTODATE

Lilian date 값을 날짜/시간 패턴 형태의 문자열로 반환한다.

figure builtin daystodate
DAYSTODATE function format
  • 인자

    항목 설명

    argument-1

    Lilian format 으로 이루어진 일 수

    argument-2

    날짜/시간 패턴

    • 허용되는 패턴에 대해서는 "날짜/시간 패턴"을 참고한다.

    • 계산 가능한 타입이여야 한다.

    • 문자열 타입 값이 아니라면 문자열로 변환된다.

    • 생략 시 YYYYMMDDHHMISS9999 값이 사용된다.

    argument-3

    argument-2의 연도 형식이 'YY’인 경우 실제 연도의 범위를 정하기 위해 사용하는 century window 값

  • 반환값

    • Lilian date 값 argument-1을 argument-2로 지정한 날짜/시간 패턴으로 변환한 문자열을 반환한다.

4.5.5. REPATTERN

한 패턴의 날짜 값을 입력받아 지정한 다른 패턴으로 반환한다.

figure builtin repattern
REPATTERN function format
  • 인자

    항목 설명

    argument-1

    Lilian format 으로 이루어진 일 수

    argument-2

    변환할 날짜/시간 패턴

    argument-3

    argument-1의 날짜/시간 패턴

    argument-4

    argument-2, argument-3의 연도 형식이 'YY’인 경우 실제 연도의 범위를 정하기 위해 사용하는 century window 값

  • 반환값

    • argument-3 날짜/시간 패턴으로 이루어진 argument-1 값을 argument-2 날짜/시간 패턴으로 반환한다.

4.5.6. SECS

날짜값에 대해 Lilian format 형태로 이루어진 초 수를 반환한다.

figure builtin secs
SECS function format
  • 인자

    항목 설명

    argument-1

    날짜를 나타내는 문자열 표현식

    argument-2

    날짜/시간 패턴

    • 허용되는 패턴에 대해서는 "날짜/시간 패턴"을 참고한다.

    • 계산 가능한 타입이여야 한다.

    • 문자열 타입 값이 아니라면 문자열로 변환된다.

    • 생략 시 YYYYMMDDHHMISS9999 값이 사용된다.

    argument-3

    argument-2의 연도 형식이 'YY’인 경우 실제 연도의 범위를 정하기 위해 사용하는 century window 값

  • 반환값

    • Lilian date를 기준으로 해서 argument-1의 날짜까지 몇 초가 경과했는지 나타내는 수를 FLOAT BINARY(53) 타입 값으로 반환한다.

4.5.7. TIME

현재 시간을 HHMISS999 패턴으로 반환한다.

figure builtin64
TIME function format
  • 반환값

    • 시간 스탬프 문자열을 HHMISS999 패턴으로 반환한다.

4.5.8. TIMESTAMP

현재 시간을 YYYY-MM-DD-HH.MI.SS.999999 패턴으로 반환한다.

figure builtin timestamp
TIMESTAMP function format
  • 반환값

    • 시간 스탬프 문자열을 YYYY-MM-DD-HH.MI.SS.999999 패턴으로 반환한다.

4.5.9. VALIDDATE

입력받은 문자열이 지정한 날짜/시간 패턴과 일치하는지 검사한 결과를 반환한다.

figure builtin validdate
VALIDDATE function format
  • 인자

    항목 설명

    argument-1

    날짜를 나타내는 문자열 표현식

    argument-2

    날짜/시간 패턴

    • 허용되는 패턴에 대해서는 "날짜/시간 패턴"을 참고한다.

    • 계산 가능한 타입이여야 한다.

    • 문자열 타입 값이 아니라면 문자열로 변환된다.

    • 생략 시 YYYYMMDDHHMISS9999 값이 사용된다.

    argument-3

    argument-2의 연도 형식이 'YY’인 경우 실제 연도의 범위를 정하기 위해 사용하는 century window 값

  • 반환값

    • argument-1의 값이 argument-2의 날짜/시간 패턴에 맞는지 검사하여 맞으면 '1’B 비트 문자열을 반환한다.

4.5.10. WEEKDAY

특정 주의 특정 일이 무슨 요일인지 나타내는 값을 반환한다.

figure builtin weekday
WEEKDAY function format
  • 인자

    항목 설명

    argument-1

    표현식

    • 계산 가능한 타입이여야 하며, 필요한 경우 FIXED BINARY(31,0) 타입으로 변환된다.

    • 생략하는 경우 DAYS() 내장함수를 실행했을 때 반환되는 값이 사용된다.

    • argument-1 값을 생략했는데, 현재 날짜가 시스템에서 사용 불가능한 값인 경우 0 값이 반환된다.

  • 반환값

    • 기본값 혹은 argument-1 값이 무슨 요일인지 나타내는 FIXED BINARY(31,0) 타입의 값을 반환한다.

      1 = 일요일
      2 = 월요일
       ...
      7 = 토요일

4.6. 입/출력 내장함수

입/출력 내장함수(Input/output built-in functions)는 현재 파일에 대한 상태를 확인할 수 있는 함수들이다.

다음은 해당 함수에 대한 설명이다. 자세한 설명은 해당 절을 참고한다.

함수 설명

LINENO

지정한 파일의 현재 라인을 반환한다.

4.6.1. LINENO

지정한 파일의 현재 라인 값을 반환한다.

figure builtin lineno
LINENO function format
  • 인자

    항목 설명

    argument-1

    파일 참조 표현식

  • 반환값

    • argument-1의 현재 라인 값을 FIXED BINARY 타입으로 반환한다.

    • 파일은 열려 있어야 하고, PRINT 속성을 가져야 한다. 파일이 닫혀 있거나 PRINT 속성을 가지고 있지 않다면 0을 반환한다.

4.7. 정수 조작 내장함수

정수 조작 내장함수(Integer manipulation built-in functions)는 정수 변수들에 대한 연산을 수행하고 연산 결과를 반환하는 함수들이다.

다음은 해당 함수에 대한 설명이다. 자세한 설명은 해당 절을 참고한다.

함수 설명

IAND

둘 이상의 고정 이진 값에 대해 AND 비트 연산을 수행한다.

IOR

둘 이상의 고정 이진 값에 대해 OR 비트 연산을 수행한다.

ISLL

고정 이진 값에 대해 왼쪽 논리 시프트 연산을 수행한다.

ISRL

고정 이진 값에 대해 오른쪽 논리 시프트 연산을 수행한다.

4.7.1. IAND

입력받은 인자들에 대해 AND 비트 연산을 수행한 결과를 반환한다.

figure builtin iand
IAND function format
  • 인자

    항목 설명

    argument-1, argument-2

    계산 가능한 표현식

  • 반환값

    • 인자 중에 SIGNED 속성을 가진 값이 하나라도 있는 경우 UNSIGNED 속성을 가진 값은 SIGNED 속성으로 변환된다.

    • 결과는 FIXED BIN( max(p1, p2, ...), 0) 타입으로 반환된다.

4.7.2. IOR

입력받은 인자들에 대해 OR 비트 연산을 수행한 결과를 반환한다.

figure builtin ior
IOR function format
  • 인자

    항목 설명

    argument-1, argument-2

    계산 가능한 표현식

  • 반환값

    • 인자 중에 SIGNED 속성을 가진 값이 하나라도 있는 경우 UNSIGNED 속성을 가진 값은 SIGNED 속성으로 변환된다.

    • 결과는 FIXED BIN( max(p1, p2, ...), 0) 타입으로 반환된다.

4.7.3. ISLL

왼쪽으로 논리 시프트 연산을 수행하고 오른쪽에 0을 채워 반환한다.

figure builtin isll
ISLL function format
  • 인자

    항목 설명

    argument-1, argument-2

    계산 가능한 표현식

  • 반환값

    • argument-1 값을 argument-2만큼 왼쪽으로 논리 시프트 연산을 수행하여 반환한다.

    • argument-2는 양수이어야 한다.

    • argument-1이 FIXED BIN(p,0)이면 FIXED BIN(p,0) 타입으로 반환된다. 아닐 경우 SIGNED FIXED BIN(p,0)타입으로 변환되어 반환된다.

4.7.4. ISRL

오른쪽으로 논리 시프트 연산을 수행하고 왼쪽에 0을 채워 반환한다.

figure builtin isrl
ISRL function format
  • 인자

    항목 설명

    argument-1, argument-2

    계산 가능한 표현식

  • 반환값

    • argument-1 값을 argument-2만큼 오른쪽으로 논리 시프트 연산을 수행하여 반환한다.

    • argument-2는 양수이어야 한다.

    • argument-1이 FIXED BIN(p,0)이면 FIXED BIN(p,0) 타입으로 반환된다. 아닐 경우 SIGNED FIXED BIN(p,0)타입으로 변환되어 반환된다.

4.8. 수학 내장함수

수학 내장함수(Mathematical built-in functions)는 모두 부동 소수점 결과를 생성하기 위하여 부동 소수점 값에 대해 동작한다. 부동 소수점이 아닌 인자는 변환된다.

다음은 해당 함수에 대한 설명이다. 자세한 설명은 해당 절을 참고한다.

함수 설명

ACOS

역코사인(ARCCOS) 값을 계산한다.

ASIN

역사인(ARCSIN) 값을 계산한다.

ATAN

역탄젠트(ARCTAN) 값을 계산한다.

ATAND

도 단위를 사용하여 역탄젠트(ARCTAN) 값을 계산한다.

COS

코사인(COS) 값을 계산한다.

COSD

도 단위를 사용하여 코사인(COS) 값을 계산한다.

EXP

e의 거듭제곱을 계산한다.

LOG

자연 로그를 계산한다.

LOG10

기수 10의 로그를 계산한다.

SIN

사인(SIN) 값을 계산한다.

SIND

도 단위를 사용하여 사인(SIN) 값을 계산한다.

SQRT

제곱근을 계산한다.

TAN

탄젠트(TAN) 값을 계산한다.

TAND

도 단위를 사용하여 탄젠트(TAN) 값을 계산한다.

4.8.1. ACOS

ACOS은 역코사인(ARCCOS) 값을 계산한다.

figure builtin14
ACOS function format
  • 인자

    항목 설명

    argument-1

    ABS(argument-1) ≤ 1인 Real 표현식

  • 반환값

    • 인자(argument-1)의 라디안에서 역코사인의 근사치인 실제 부동 소수점 값을 반환한다.

    • 결과의 범위는 0 ≤ ACOS(argument-1) ≤ π이며, argument-1의 base와 precision을 가진다.

4.8.2. ASIN

역사인(ARCSIN) 값을 계산한다.

figure builtin19
ASIN function format
  • 인자

    항목 설명

    argument-1

    ABS(argument-1) ≤ 1인 Real 표현식

  • 반환값

    • 인자(argument-1)의 라디안에서 역사인의 근사치인 실제 부동 소수점 값을 반환한다.

    • 결과의 범위는 -π/2 ≤ ASIN(argument-1) ≤ π/2이며, argument-1의 base와 precision을 가진다.

4.8.3. ATAN

역탄젠트(ARCTAN) 값을 계산한다.

figure builtin20
ATAN function format
  • 인자

    항목 설명

    argument-1, argument-2

    표현식

  • 반환값

    • argument-1 또는 argument-1/argument-2의 비를 라디안에서 역탄젠트의 근사치인 부동 소수점 값을 반환한다.

    • argument-1 하나만 명시되어 있다면, 결과는 argument-1의 precision과 base를 갖고, 범위는 -π/2 ≤ ATAN(argument-1) ≤ π/2이다.

    • argument-1 과 argument-2 둘 다 명시되어 있다면, 각각 real이어야 하며 0이면 오류다. 0이 아닌 다른 argument-1, argument-2 값에 대한 결과는 더 긴 argument의 precision을 갖고, 표현식 규칙에 따라 결정되는 base를 가지며, 다음과 같은 범위에 따른 값을 가진다.

      • argument-2>0에 대해서는 ATAN(argument-1/argument-2) 값을 가진다.

      • argument-2=0이고 argument-1>0에 대해서는 π/2 값을 가진다.

      • argument-2=0이고 argument-1<0에 대해서는 -π/2 값을 가진다.

      • argument-2<0이고 argument-1≥0에 대해서는 π + ATAN(argument-1/argument-2) 값을 가진다.

      • argument-2<0이고 argument-1<0에 대해서는 -π + ATAN(argument-1/argument-2) 값을 가진다.

4.8.4. ATAND

도 단위를 사용하여 역탄젠트(ARCTAN) 값을 계산한다.

figure builtin21
ATAND function format
  • 인자

  • 인자

    항목 설명

    argument-1, argument-2

    표현식

  • 반환값

    • argument-1 또는 argument-1/argument-2의 비를 각도에서 역탄젠트의 근사치인 실제 부동 소수점 값을 반환한다.

    • argument-1 하나만 명시되어 있다면, real이어야 한다. 결과는 argument-1의 precision과 base를 갖고, 범위는 -90 ≤ ATAND(argument-1) ≤ 90이다.

    • argument-1 과 argument-2 둘 다 명시되어 있다면, 각각 real이어야 한다. 결과의 범위는 (180/π) * ATAN(argument-1,argument-2) 이다.

    • 인자의 요구 사항 및 속성은 ATAN을 참고한다.

4.8.5. COS

코사인(COS) 값을 계산한다.

figure builtin25
COS function format
  • 인자

    항목 설명

    argument-1

    라디안 단위의 값을 가진 표현식

  • 반환값

    • argument-1의 코사인의 근사치 값이며, mode, base, precision을 가지는 부동 소수점 값을 반환한다.

4.8.6. COSD

도 단위를 사용하여 코사인(COS) 값을 계산한다.

figure builtin26
COSD function format
  • 인자

    항목 설명

    argument-1

    도 단위의 값을 가진 Real 표현식

  • 반환값

    • argument-1의 코사인의 근사치 값이며, mode, base, precision을 가지는 실제 부동 소수점 값을 반환한다.

4.8.7. EXP

e의 거듭제곱을 계산한다.

figure builtin33
EXP function format
  • 인자

    항목 설명

    argument-1

    표현식

  • 반환값

    • e의 거듭 제곱의 근사치인 부동 소수점 값을 반환한다.

    • 결과는 argument-1의 base, mode, precision을 가진다.

4.8.8. LOG

자연 로그를 계산한다.

figure builtin42
LOG function format
  • 인자

    항목 설명

    argument-1

    표현식

    • argument-1은 0보다 커야 한다.

  • 반환값

    • argument-1의 자연 로그(로그의 밑은 e)의 근사치인 부동 소수점 값을 반환한다.

    • 결과는 argument-1의 base,mode,precision을 가진다.

4.8.9. LOG10

기수 10의 로그를 계산한다.

figure builtin43
LOG10 function format
  • 인자

    항목 설명

    argument-1

    Real 표현식

    • argument-1은 0보다 커야 한다.

  • 반환값

    • argument-1의 자연 로그(로그의 밑은 10)의 근사치인 실제 부동 소수점 값을 반환한다.

    • 결과는 argument-1의 base, precision을 가진다.

4.8.10. SIN

사인(SIN) 값을 계산한다.

figure builtin57
SIN function format
  • 인자

    항목 설명

    argument-1

    라디안 단위의 값을 가진 표현식

  • 반환값

    • argument-1의 사인의 근사치 값이며, argumen-t1의 mode, base, precision을 가지는 부동 소수점 값을 반환한다.

4.8.11. SIND

도 단위를 사용하여 사인(SIN) 값을 계산한다.

figure builtin58
SIND function format
  • 인자

    항목 설명

    argument-1

    도 단위의 값을 가진 Real 표현식

  • 반환값

    • argument-1의 사인의 근사치 값이며, argument-1의 mode, base, precision을 가지는 부동 소수점 값을 반환한다.

4.8.12. SQRT

제곱근을 계산한다.

figure builtin60
SQRT function format
  • 인자

    항목 설명

    argument-1

    표현식

    • argumen-t1이 real이면, 0보다 커야 한다.

  • 반환값

    • argument-1의 제곱근 근사치 값이며, argument-1의 mode, base, precision을 가지는 부동 소수점 값을 반환한다.

4.8.13. TAN

탄젠트(TAN) 값을 계산한다.

figure builtin62
TAN function format
  • 인자

    항목 설명

    argument-1

    라디안 단위의 값을 가진 표현식

  • 반환값

    • argument-1의 탄젠트의 근사치 값이며, argumen-t1의 mode, base, precision을 가지는 부동 소수점 값을 반환한다.

4.8.14. TAND

도 단위를 사용하여 탄젠트(TAN) 값을 계산한다.

figure builtin63
TAND function format
  • 인자

    항목 설명

    argument-1

    도 단위의 값을 가진 표현식

  • 반환값

    • argument-1의 탄젠트의 근사치 값이며, argumen-t1의 base, precision을 가지는 실제 부동 소수점 값을 반환한다.

4.9. 기타 내장함수

기타 내장함수(Miscellaneous built-in function)는 이전의 분류에 적합하지 않은 함수들이다.

다음은 해당 함수에 대한 설명이다. 자세한 설명은 해당 절을 참고한다.

함수 설명

CHARVAL

정수값에 해당하는 문자를 반환한다.

PLIRETV

PL/I 반환 코드 값을 반환한다.

PROCEDURENAME

프러시저 이름을 반환한다.

RANK

문자에 해당하는 정수값을 반환한다.

STRING

문자열 집합의 모든 요소들을 병합한 문자열을 반환한다.

UNSPEC

값의 내부 표현인 비트 문자열을 반환한다.

4.9.1. CHARVAL

정수값에 해당하는 문자를 반환한다.

figure builtin charval
CHARVAL function format
  • 인자

    항목 설명

    argument-1

    문자로 변환할 표현식

  • 반환값

    • argument-1의 요소에 해당하는 정수값에 대한 EBCDIC 문자를 반환한다.

    • 반환되는 속성은 CHARACTER(1) 이다.

4.9.2. PLIRETV

PL/I 반환 코드 값을 반환한다.

figure builtin52
PLIRETV function format
  • 반환값

    • PL/I 반환 코드인 FIXED BINARY(31,0) 값을 반환한다.

    • PL/I 반환 코드 값은 CALL PLIRETC 문에 의해 지정된 가장 최근 값이다.

4.9.3. PROCEDURENAME(약어: PROCNAME)

내장함수가 호출된 프러시저의 이름을 문자열로 반환한다.

figure builtin procedurename
PROCEDURENAME function format
  • 반환값

    • 프러시저 이름을 NONVARYING CHARACTER 타입 문자열 형태로 반환한다.

    • 프러시저가 여러 라벨을 사용하는 경우, CALL문이나 GOTO문에 사용되는 여부와는 상관 없이 가장 왼쪽에 위치한 이름을 반환한다.

4.9.4. RANK

문자에 해당하는 정수값을 반환한다.

figure builtin rank
RANK function format
  • 인자

    항목 설명

    argument-1

    숫자로 변환할 표현식

    • 반드시 CHARACTER(1) NONVARYING을 가져야 한다.

  • 반환값

    • argument-1의 요소에 해당하는 EBCDIC 문자에 대한 정수값을 반환한다.

4.9.5. STRING

문자열 집합의 모든 요소들을 병합한 문자열을 반환한다.

figure builtin10
STRING function format
  • 인자

    항목 설명

    argument-1

    집계 또는 요소 참조 표현식

  • 반환값

    • 모든 argument-1의 요소들을 병합한 문자열을 반환한다.

    • STRING 내장함수는 다음과 같은 경우를 제한한다.

      • 조합을 포함하는 조합이나 구조에는 적용될 수 없다.

      • 스칼라에 적용되면, 스칼라는 문자열로 되어야 한다.

      • 구조에 적용되면, 구조는 패딩 바이트를 포함하지 않아야 한다. 구조의 요소는 모두 정렬되지 않은 비트 문자열이나, 모두 문자열로 되어 있어야 한다.

      • 배열에 적용되면, 배열에 있는 모든 요소들이 위에 설명한 것처럼 제한될 수 있다.

4.9.6. UNSPEC

값의 내부 표현인 비트 문자열을 반환한다.

figure builtin12
UNSPEC function format
  • 인자

    항목 설명

    argument-1

    스칼라, 배열, 구조 또는 조합 표현식

  • 반환값

    • argument-1의 내부 코드 형태의 비트 문자열을 반환한다.

    • UNSPEC 내장함수는 USAGE( UNSPEC(IBM) ) 컴파일러 옵션에서 구조는 허용되지 않고, 배열은 BIT의 배열을 산출한다.

UNSPEC의 사용은 개발 중인 프로그램의 이식성에 영향을 줄 수 있다.

4.10. 정밀도 처리 내장함수

정밀도 처리 내장함수(Precision-handling built-in functions)는 변수의 정밀도를 지정한 대로 변경하고, 그 결과를 반환한다.

다음은 해당 함수에 대한 설명이다. 자세한 설명은 해당 절을 참고한다.

함수 설명

ADD

지정한 정밀도를 사용하여 두 값을 더한다.

BINARY

값을 binary 값으로 변환한다.

DECIMAL

값을 decimal 값으로 변환한다.

DIVIDE

지정한 정밀도를 사용하여 두 값을 나눈다.

FIXED

값을 FIXED 값으로 변환한다.

FLOAT

값을 FLOAT 값으로 변환한다.

MULTIPLY

지정된 정밀도를 가지면서 두 값을 곱한다.

PRECISION

값을 지정된 정밀도로 변환한다.

4.10.1. ADD

지정한 정밀도를 사용하여 두 값을 더한다.

figure builtin15
ADD function format
  • 인자

    항목 설명

    argument-1

    표현식

    argument-2

    표현식

    argument-3

    제한된 표현식(Restricted Expression)

    • 이 연산을 통해 유지될 자릿수를 지정한다.

    argument-4

    결과의 scaling factor를 지정하는 제한된 표현식(Restricted Expression)

    • fixed-point 결과에 대해서 argument-4가 생략되면 0이 기본값이다.

    • float-point 결과에 대해서 argument-4는 생략되어야 한다.

  • 반환값

    • argument-3과 argument-4로 지정된 precision을 갖는 argument-1과 argument-2의 합을 반환한다.

    • 결과의 base, scale, mode는 PRECTYPE 컴파일러 옵션에 의해 기각되지 않는다면, 표현식 평가 규칙에 따라 결정된다.

    • ADD는 빼야 할 피연산자에 마이너스 부호를 접두어로 빼내기 위해 사용될 수 있다.

4.10.2. BINARY

값을 binary 값으로 변환한다.

figure builtin22
BINARY function format
  • 인자

    항목 설명

    argument-1

    표현식

    argument-2

    제한된 표현식(Restricted Expression)

    • 이 연산을 통해 유지될 자릿수를 지정한다. 구현의 한계를 초과해서는 안된다.

    argument-3

    결과의 scaling factor를 지정하는 제한된 표현식(Restricted Expression)

    • fixed-point 결과에 대해서 argument-2는 주어지고 argument-3은 생략되면 0이 기본값이다.

    • float-point 결과에 대해서 argument-3은 생략되어야 한다.

  • 반환값

    • argument-2와 argument-3으로 지정된 precision을 갖는 argument-1의 바이너리 값을 반환한다.

    • argument-2와 argument-3이 생략되면, 결과의 precision은 기본 변환 규칙에 따라 결정된다.

4.10.3. DECIMAL

값을 decimal 값으로 변환한다.

figure builtin30
DECIMAL function format
  • 인자

    항목 설명

    argument-1

    표현식

    argument-2

    연산을 통해 유지될 자릿수를 지정하는 제한된 표현식(Restricted Expression)

    argument-3

    결과의 scaling factor를 지정하는 제한된 표현식(Restricted Expression)

    • fixed-point 결과에 대해서 argument-2는 주어지고 argument-3은 생략되면 0으로 가정된다.

    • float-point 결과에 대해서 argument-3은 생략되어야 한다.

  • 반환값

    • argument-2와 argument-3으로 지정된 precision을 갖는 argument-1의 진수 값을 반환한다. 결과는 argument-1의 mode와 scale을 갖는다.

    • argument-2와 argument-3이 생략되면, 결과의 precision은 기본 변환 규칙에 따라 결정된다.

4.10.4. DIVIDE

지정한 정밀도를 사용하여 두 값을 나눈다.

figure builtin32
DIVIDE function format
  • 인자

    항목 설명

    argument-1

    표현식

    argument-2

    표현식

    • argument-2=0이면, ZERODIVIDE 조건이 발생한다.

    argument-3

    연산을 통해 유지될 자릿수를 지정하는 제한된 표현식(Restricted Expression)

    argument-4

    결과의 scaling factor를 지정하는 제한된 표현식(Restricted Expression)

    • fixed-point 결과에 대해서 argument-4가 생략되면 0으로 가정된다.

    • float-point 결과에 대해서 argument-4은 생략되어야 한다.

  • 반환값

    • argument-3과 argument-4로 지정된 precision을 갖는 argument-1/argument-2의 몫을 반환한다.

    • 결과의 base, scale, mode는 PRECTYPE 컴파일러 옵션에 의해 기각되지 않는다면, 표현식 평가 규칙에 따라 결정된다.

4.10.5. FIXED

값을 FIXED 값으로 변환한다.

figure builtin34
FIXED function format
  • 인자

    항목 설명

    argument-1

    표현식

    argument-2

    결과의 자릿수를 지정하는 제한된 표현식(Restricted Expression)

    • 구현의 한계를 초과해서는 안된다.

    argument-3

    결과의 scaling factor를 지정하는 제한된 표현식(Restricted Expression)

    • argument-3이 생략되면 0이 기본값이다.

  • 반환값

    • argument-2와 argument-3으로 지정된 precision을 갖는 argument-1의 FIXED 값을 반환한다. 결과는 argument-1의 base, mode를 가진다.

    • argument-2와 argument-3이 생략되면, binary 결과에 대해서는 (15,0), decimal 결과에 대해서는 (5,0)가 기본값이다.

4.10.6. FLOAT

값을 FLOAT 값으로 변환한다.

figure builtin35
FLOAT function format
  • 인자

    항목 설명

    argument-1

    표현식

    argument-2

    결과의 자릿수의 최솟값을 지정하는 제한된 표현식(Restricted Expression)

    • argument-2가 생략되면 결과의 precision은 기본 변환 규칙에 따라 결정된다.

    • argument-2가 생략되면 binary 결과에 대해서는 (15), decimal 결과에 대해서는 (5)가 기본값이다.

  • 반환값

    • argument-2로 지정된 precision을 갖는 argument-1의 FLOAT 값의 근사치를 반환한다. 결과는 argument-1의 base, mode를 가진다.

    • argument-2와 argument-3이 생략되면, binary 결과에 대해서는 (15,0), decimal 결과에 대해서는 (5,0)가 기본값이다.

4.10.7. MULTIPLY

지정된 정밀도를 가지면서 두 값을 곱한다.

figure builtin48
MULTIPLY function format
  • 인자

    항목 설명

    argument-1

    표현식

    argument-2

    표현식들

    argument-3

    연산을 통해 유지될 자릿수를 지정하는 제한된 표현식(Restricted Expression)

    argument-4

    결과의 scaling factor를 지정하는 제한된 표현식(Restricted Expression)

    • fixed-point 결과에 대해서 argument-4가 생략되면 0으로 가정된다.

    • float-point 결과에 대해서 argument-4는 생략되어야 한다.

  • 반환값

    • argument-3과 argument-4로 지정된 precision을 갖는 argument-1과 argument-2의 곱을 반환한다.

    • 결과의 base, scale, mode는 PRECTYPE 컴파일러 옵션에 의해 기각되지 않는다면 표현식 평가 규칙에 따라 결정된다.

4.10.8. PRECISION

값을 지정된 정밀도로 변환한다.

figure builtin53
PRECISION function format
  • 인자

    항목 설명

    argument-1

    표현식

    argument-2

    argument-1의 값이 변환된 후에 갖게될 자릿수를 지정하는 제한된 표현식(Restricted Expression)

    argument-3

    결과의 scaling factor를 지정하는 제한된 표현식(Restricted Expression)

    • fixed point 결과에 대해서, argument-3이 생략되면 0으로 가정된다.

    • float-point 결과에 대해서 argument-3은 생략되어야 한다.

  • 반환값

    • argument-3과 argument-4로 지정된 precision을 갖는 argument-1의 값을 반환한다.

    • 반환되는 값의 base, mode, scale은 argument-1의 것과 동일하다.

4.11. 스토리지 제어 내장함수

스토리지 제어 내장함수(Storage control built-in functions)는 저장 요구 사항과 변수의 위치를 알아낼 수 있도록 하고, 영역 변수와 위치 변수에 특정 값을 할당할 수 있도록 하고, 오프셋과 포인터 값 사이의 변환을 수행할 수 있도록 하고, 제어 변수의 생성 수를 얻을 수 있도록 하고, 객체와 클래스의 데이터와 메소드를 참조할 수 있도록 한다.

다음은 해당 함수에 대한 설명이다. 자세한 설명은 해당 절을 참고한다.

함수 설명

ADDR

변수의 주소를 반환한다.

ALLOCATION

피제어 변수의 세대 값을 반환한다.

BINARYVALUE

포인터와 OFFSET의 값을 정수로 변환한다.

CURRENTSIZE

변수의 현재 크기를 반환한다.

CURRENTSTORAGE

CURRENTSIZE와 동의어다.

NULL

null 포인터 값을 반환한다.

OFFSET

포인터를 OFFSET으로 변환한다.

POINTER

OFFSET을 포인터로 변환한다.

POINTERADD

포인터 값에 정수 값을 더한다.

SIZE

변수의 최대 크기를 반환한다.

STORAGE

SIZE와 동의어다.

4.11.1. ADDR

변수의 주소를 반환한다.

figure builtin16
ADDR function format
  • 인자

    항목 설명

    argument-1

    참조 표현식

    다음의 경우를 제외한 데이터 형식, 데이터 구성, 정렬, 저장 클래스의 변수를 참고한다.

    • 정렬되지 않은 고정 길이 비트 문자열 변수에 대한 첨자 참조 표현식

    • 정렬되지 않은 고정 길이 비트 문자열인 간단한 매개 변수나 DEFINED 또는 BASED 변수에 대한 참조 표현식

    • 정렬되지 않은 고정 길이 비트 문자열인 첫 번째 기본 요소의 작은 구조 또는 조합

    • 매개 변수이거나 DEFINED attribute를 가지고, 첫 번째 요소로 정렬되지 않은 비트 문자열을 가지는 주요 구조 또는 조합

    • 연결되지 않은 저장 공간인 참조 표현식

    만약 argument-1가 다음과 같은 참조 표현식 :

    • 집계 매개 변수이면 CONNECTED 속성을 가져야 한다.

    • 집계이면 반환값은 첫 번째 요소를 식별한다.

    • 집계의 구성 요소 또는 단면이면 반환값은 계정 첨자 및 구조 또는 조합의 자격으로 한다.

    • 바뀌는 문자열이면 반환값은 2바이트 접두사를 식별한다.

    • 영역이면 반환값은 제어 정보를 식별한다.

    • 현재 프로그램에 할당되지 않은 제어 변수이면, 반환값은 NULL 포인터 값이다.

    • 기반 변수이면 결과는 명시적으로 argument-1의 자격의 포인터 값 또는 그 선언에 argument-1과 관련된 값 또는 NULL 포인터 값이다.

    • 매개 변수이면서 임시 인자가 생성되면 반환값은 임시 인자를 식별한다.

  • 반환값

    • 인자(argument-1)의 발생을 식별하는 포인터 값을 반환한다.

4.11.2. ALLOCATION(약어: ALLOCN)

피제어 변수의 세대 값을 반환한다.

figure builtin allocation
ALLOCATION function format
  • 인자

    항목 설명

    argument-1

    Level-1 피제어 변수

  • 반환값

    • 인자(argument-1)의 세대 값을 반환한다.

4.11.3. BINARYVALUE(약어: BINVALUE)

포인터와 OFFSET의 값을 정수로 변환한다.

figure builtin binaryvalue
BINARYVALUE function format
  • 인자

    항목 설명

    argument-1

    표현식

  • 반환값

    • argument-1의 값을 FIXED BINARY(31,0)으로 변환한다. argument-1은 포인터나 OFFSET이 될 수 있다.

4.11.4. CURRENTSIZE

변수의 현재 크기를 반환한다.

figure builtin27
CURRENTSIZE function format
  • 인자

    항목 설명

    argument-1

    데이터 타입, 데이터 구성, 저장 클래스의 변수이다. 단, 다음과 같은 경우는 제외한다.

    • 정렬되지 않은 고정 길이의 비트 문자열인 BASED, DEFINED, 매개 변수, 첨자 변수, 구조, 또는 조합 기반의 요소 변수

    • 정렬되지 않은 고정 길이 비트 문자열인 첫 번째 또는 마지막 기본 요소를 갖는 작은 구조 또는 조합

    • BASED, DEFINED 또는 매개 변수 속성을 갖고 첫 번째 또는 마지막 요소에 정렬되지 않은 고정 길이의 비트 문자열을 가진 주요 구조 또는 조합

    • 연결되지 않은 저장 공간에 있는 변수

  • 반환값

    • 바이트에서 argument-1에 필요한 주어진 구현에 정의된 저장 공간의 값을 FIXED BINARY 값으로 반환한다.

    • CURRENTSIZE는 변수가 할당되지 않은 경우에 조정 범위의 기저부 변수(Based variable)를 사용할 수 없다.

4.11.5. CURRENTSTORAGE(약어: CSTG)

CURRENTSIZE와 동의어다. 자세한 설명은 CURRENTSIZE를 참고한다.

4.11.6. NULL

null 포인터 값을 반환한다.

figure builtin49
NULL function format
  • 반환값

    • null 포인터 값을 반환하며, null 포인터 값은 변수의 생성을 식별하지 않는다. null 포인터 값은 handle과 비교될 수 있고, 할당될 수 있다.

    • offset 변수에 내장함수 값을 할당함으로써 OFFSET으로 변환될 수 있다.

4.11.7. OFFSET

포인터를 OFFSET으로 변환한다.

figure builtin offset
OFFSET function format
  • 인자

    항목 설명

    argument-1

    포인터 참조 표현식

    argument-2

    AREA 참조 표현식

  • 반환값

    • AREA argument-2로부터 포인터 argument-1이 얼마나 상대적으로 위치하는지를 OFFSET 값으로 반환한다.

    • argument-1이 null 포인터일 경우 null OFFSET을 반환한다.

4.11.8. POINTER(약어: PTR)

OFFSET을 포인터로 변환한다.

figure builtin pointer
POINTER function format
  • 인자

    항목 설명

    argument-1

    OFFSET 참조 표현식

    argument-2

    AREA 참조 표현식

  • 반환값

    • AREA argument-2로부터 OFFSET argument-1만큼 떨어진 위치를 포인터 값으로 반환한다.

    • argument-1이 null OFFSET일 경우 null 포인터를 반환한다.

4.11.9. POINTERADD(약어: PTRADD)

포인터 값에 정수 값을 더하여 나온 포인터 값을 반환한다.

figure builtin pointeradd
POINTERADD function format
  • 인자

    항목 설명

    argument-1

    포인터 표현식

    argument-2

    표현식

    • 계산 가능한 타입이여야 하며 FIXED BINARY(31,0)으로 변환된다.

  • 반환값

    • argument-1 포인터 값에 argument-2의 값을 더한 포인터 값을 반환한다.

4.11.10. SIZE

변수의 최대 크기를 반환한다.

figure builtin59
SIZE function format
  • 인자

    항목 설명

    argument-1

    데이터 타입, 데이터 구성, 정렬 및 저장 클래스의 변수이다. 단, 아래의 경우는 제외한다.

    • 기저부 변수, DEFINED 변수, 매개 변수, 첨자 변수 또는 정렬되지 않은 고정 길이 비트 문자열인 구조 또는 조합 기본 요소 변수

    • 정렬되지 않은 고정 길이 비트 문자열인 작은 구조 또는 조합의 첫 번째나 마지막 기본 요소 변수

    • 기저부 변수, DEFINED 변수 또는 매개 속성을 갖고 첫 번째나 마지막에 정렬되지 않은 고정 길이의 비트 문자열을 갖는 주요 구조 또는 조합

    • 연결되지 않은 저장 공간에 있는 변수

  • 반환값

    • 바이트에서 변수 argument-1에 할당된 구현에 정의된 저장공간의 FIXED BINARY 값을 반환한다.

    • 변수가 할당되지 않은 경우 SIZE 내장함수는 조정 범위를 갖는 기저부 변수에 사용될 수 없다.

4.11.11. STORAGE(약어: STG)

SIZE와 동의어다. 자세한 설명은 SIZE를 참고한다.

4.12. 문자열 처리 내장함수

문자열 처리 내장함수(String-handling built-in functions)는 비트, 문자, 그래픽, 확장 문자 문자열의 처리를 단순화한다. 문자열 인자는 함수 설명에서 주어진 규칙이나 데이터 변환 규칙에 따라서 문자열로 변환 되는 산술식에 의해 표현될 수 있다.

함수 설명

CHARACTER

값을 문자열로 변환한다.

EDIT

값을 picture specification 형태로 변환한 문자열을 반환한다.

HIGH

사용자가 지정한 갯수만큼 0xFF 문자를 가지는 문자열을 반환한다.

INDEX

한 문자열의 위치를 다른 문자열에서 찾는다.

LEFT

문자열 값을 왼쪽으로 정렬하여 반환한다.

LENGTH

문자열의 현재 길이를 반환한다.

LOW

사용자가 지정한 갯수만큼 0x00 문자를 가지는 문자열을 반환한다.

LOWERCASE

문자열 내에 포함된 모든 알파벳 문자를 소문자로 변환하여 문자열 형태로 반환한다.

REPEAT

사용자가 지정한 문자열이 지정한 횟수+1번 반복된 형태의 문자열을 반환한다.

RIGHT

문자열 값을 오른쪽으로 정렬하여 반환한다.

SEARCH

한 문자열을 이루는 문자들이 다른 문자열 내에 포함되는지 왼쪽에서 오른쪽 방향으로 검색한 뒤, 가장 첫 번째로 나온 문자의 위치를 반환한다.

SEARCHR

한 문자열을 이루는 문자들이 다른 문자열 내에 포함되는지 오른쪽에서 왼쪽 방향으로 검색한 뒤, 가장 첫 번째로 나온 문자의 위치를 반환한다.

SUBSTR

문자열의 부분 문자열을 할당한다.

TRANSLATE

두 개의 번역 문자열을 기반으로 문자열을 변환한다.

TRIM

문자열의 왼쪽, 오른쪽 끝 부분을 잘라낸 문자열을 반환한다.

UPPERCASE

문자열 내에 포함된 모든 알파벳 문자를 대문자로 변환하여 문자열 형태로 반환한다.

VERIFY

어느 하나의 문자열 요소가 다른 문자열 내에 존재하지 않는 경우를 찾아 가장 왼쪽에 존재하는 문자의 위치를 반환한다.

VERIFYR

어느 하나의 문자열 요소가 다른 문자열 내에 존재하지 않는 경우를 찾아 가장 오른쪽에 존재하는 문자의 위치를 반환한다.

4.12.1. CHARACTER(약어 : CHAR)

값을 문자열로 변환한다.

figure builtin24
CHARACTER function format
  • 인자

    항목 설명

    argument-1

    표현식

    • argument-1은 계산 가능한 형태여야 한다.

    • argument-1이 그래픽이 아니면 CHARACTER는 문자로 변환하여 반환한다. argument-1이 그래픽이면 CHARACTER는 SBCS 문자로 변환하여 반환한다.

    • DBCS 문자가 상응하는 SBCS 문자로 번역할 수 없을 경우에는 CONVERSION 조건이 발생된다.

    • argument-1의 값은 확인하지 않는다.

    argument-2

    표현식

    • 필요한 경우 실제 고정 소수점 바이너리 값으로 변환된다.

    • argument-2가 생략되면 길이는 type conversion 규칙에 따라 결정된다.

    • argument-2는 음수가 될 수 없다. 만약 argument-2=0이면 결과는 null 문자열이다.

  • 반환값

    • argument-2로 지정된 길이를 갖는 argument-1의 문자 값을 반환한다. 또한 CHARACTER는 그래픽을 문자 형태로 변환하는 것을 지원한다.

    • 결과는 argument-1의 precision이 (p,q)인 fixed-point일 경우를 제외하고 argument-1의 mode, base, scale, precision을 갖는다.

    • 결과의 precision은 다음과 같다.

      (min(N, max(p-q+1)), 0)

      N은 허용되는 수의 최댓값이다.

4.12.2. EDIT

Picture specification의 형태로 값을 변환한, picture specification의 길이와 같은 문자열을 반환한다.

figure builtin edit
EDIT function format
  • 인자

    항목 설명

    argument-1

    표현식

    • 계산 가능한 타입이여야 한다.

    argument-2

    문자열 형태의 표현식

    • 반드시 문자 형태를 가져야 하며, 유효한 형태의 picture 문자를 포함하고 있어야 한다.

    • 유효한 picture specification을 포함하고 있지 않은 경우 ERROR 조건이 발생한다.

  • 반환값

    • argument-1을 argument-2의 picture-specification 형태로 변환한 argument-2 길이의 문자열을 반환한다.

4.12.3. HIGH

사용자가 지정한 갯수만큼 0xFF 문자를 가지는 문자열을 반환한다.

figure builtin38
HIGH function format
  • 인자

    항목 설명

    argument-1

    표현식

    • 필요한 경우 argument-1은 양의 실제 고정 소수점 바이너리 값으로 변환된다.

    • argument-1=0 이면, 결과는 null 문자열이다.

  • 반환값

    • 각 문자의 조합 순서에서 가장 높은 문자(16진수의 FF)에서 argument-1 길이의 문자열을 반환한다.

4.12.4. INDEX

한 문자열의 위치를 다른 문자열에서 찾는다.

figure builtin39
INDEX function format
  • 인자

    항목 설명

    argument-1

    검색할 문자열 표현식

    argument-2

    검색 대상의 문자열 표현식

    argument-3

    • argumnet-1 내에서 처리를 시작할 위치를 지정한다.

    • 계산 가능한 형식이어야 하며, 필요하다면 FIXED BINARY(31,0)으로 변환된다.

  • 반환값

    • argument-2와 동일한 문자열의 argument-1 내에서의 시작 위치를 나타내는 REAL FIXED BINARY 값을 반환한다. 또한 argument-1 내에서 처리가 시작되는 위치를 지정할 수 있다.

    • argument-2가 argument-1 안에 없거나 argument-1 또는 argument-2의 길이가 0이면 0의 값이 반환된다.

    • argument-3이 1보다 작거나 argument-3이 1+length(argument-1)보다 크면 STRINGRANGE 조건이 발생되고 결과는 0이 된다.

4.12.5. LEFT

문자열을 지정된 길이의 빈 문자열 왼쪽에 삽입한 후 오른쪽에 남은 공간은 사용자가 지정한 문자로 채워 반환한다.

figure builtin left
LEFT function format
  • 인자

    항목 설명

    argument-1

    표현식

    • 계산 가능한 타입이여야 하며, 문자 형식이 아닌 경우 CHARACTER 타입의 값으로 변환된다.

    argument-2

    표현식

    • 계산 가능한 타입이여야 하며, FIXED BINARY(31,0) 속성을 가지고 있지 않다면 FIXED BINARY(31,0) 타입으로 변환된다.

    argument-3

    표현식

    • argument-2의 길이를 가진 빈 문자열에 argument-1 문자열을 왼쪽에 삽입한 후 남은 공간을 채워넣기 위해 사용된다.

    • 반드시 CHARACTER(1) NONVARYING 속성을 가져야 한다.

    • 생략되는 경우 공백 문자가 사용된다.

  • 반환값

    • 왼쪽에 argument-1 문자열이 삽입되고 남은 공간에는 argument-3 문자가 삽입된 형태의, argument-2 길이를 가진 문자열을 반환한다.

4.12.6. LENGTH

문자열의 현재 길이를 반환한다.

figure builtin41
LENGTH function format
  • 인자

    항목 설명

    argument-1

    문자 표현식

    • argument-1이 바이너리면, 비트 문자열로 변환된다. 그렇지 않으면 필요한 다른 문자열로 변환된다.

  • 반환값

    • 현재 argument-1의 길이를 지정하는 REAL FIXED BINARY 값을 반환한다.

4.12.7. LOW

사용자가 지정한 갯수만큼 0x00 문자를 가지는 문자열을 반환한다.

figure builtin44
LOW function format
  • 인자

    항목 설명

    argument-1

    표현식

    • 필요한 경우 argument-1은 양의 실제 고정 소수점 binary 값으로 변환된다.

    • argument-1=0이면 결과는 null 문자열이다.

  • 반환값

    • 각 문자의 조합 순서에서 가장 낮은 문자(16진수의 00)에서 argument-1 길이의 문자열을 반환한다.

4.12.8. LOWERCASE

문자열 내의 모든 알파벳 문자들을 소문자로 변환하여 반환한다.

figure builtin lowercase
LOWERCASE function format
  • 인자

    항목 설명

    argument-1

    변환할 표현식

    • 필요한 경우 문자열로 변환한다.

  • 반환값

    • 소문자로 변환된 argument-1의 문자열을 반환한다.

4.12.9. REPEAT

사용자가 지정한 문자열이 지정한 횟수+1번 반복된 형태의 문자열을 반환한다.

figure builtin54
REPEAT function format
  • 인자

    항목 설명

    argument-1

    반복될 비트, 문자, 그래픽 또는 확장 문자 표현식

    • argument-1이 연산식인 경우는 변환이 발생한다.

    • 바이너리일 경우에는 비트 문자열로 변환되고, decimal일 경우에는 문자열로 변환된다.

    argument-1

    표현식

    • 필요하면 argument-2는 실제 고정 소수점 이진 값으로 변환된다.

  • 반환값

    • argument-2로 지정된 횟수만큼 연결된 argument-1의 비트, 문자, 그래픽 또는 확장 문자의 문자열로 반환한다. 즉, argument-1이 (argument-2 + 1)번 발생한다.

4.12.10. RIGHT

문자열을 지정된 길이의 빈 문자열 오른쪽에 삽입한 후, 왼쪽에 남은 공간은 사용자가 지정한 문자로 채워 반환한다.

figure builtin right
RIGHT function format
  • 인자

    항목 설명

    argument-1

    표현식

    • 계산 가능한 타입이여야 하며, 문자 형식이 아닌 경우 CHARACTER 타입의 값으로 변환된다.

    argument-2

    표현식

    • 계산 가능한 타입이여야 하며, FIXED BINARY(31,0) 속성을 가지고 있지 않다면 FIXED BINARY(31,0) 타입으로 변환된다.

    argument-3

    표현식

    • argument-2의 길이를 가진 빈 문자열에 argument-1 문자열을 오른쪽에 삽입한 후 남은 공간을 채워넣기 위해 사용된다.

    • 반드시 CHARACTER(1) NONVARYING 속성을 가져야 한다.

    • 생략되는 경우 공백 문자가 사용된다.

  • 반환값

    • 오른쪽에 argument-1 문자열이 삽입되고 남은 공간에는 argument-3 문자가 삽입된 형태의, argument-2 길이를 가진 문자열을 반환한다.

한 문자열을 이루는 문자들이 다른 문자열 내에 포함되는지 왼쪽에서 오른쪽 방향으로 검색한 뒤 가장 첫 번째로 나온 문자의 위치를 반환한다.

  • 인자

    항목 설명

    argument-1

    문자열 표현식

    argument-2

    문자열 표현식

    • CHARACTR, BIT, GRAPHIC, WIDECHAR 타입 문자열인 argument-1 문자열 내에서 문자 포함 여부를 검색할 문자열이다.

    argument-3

    표현식

    • 검색을 시작할 시작 위치이다.

    • 계산 가능한 타입이어야 하고 필요한 경우 FIXED BINARY(31,0)으로 변환된다.

    • 생략하는 경우 0 값을 사용한다.

  • 반환값

    • argument-1 문자열에서 argument-2 문자열을 이루는 문자들의 위치를 argument-1 문자열의 시작 지점부터 오른쪽 방향으로 찾은 후, 가장 처음으로 등장하는 문자의 위치를 소수점이 없는 REAL FIXED BINARY 타입 값으로 반환한다.

    • argument-1이나 argument-2가 빈 문자열이면 0 값을 반환한다.

    • argument-1 문자열 내에 argument-2을 이루는 문자들이 존재하지 않는 경우 0 값을 반환한다.

4.12.12. SEARCHR

한 문자열을 이루는 문자들이 다른 문자열 내에 포함되는지 오른쪽에서 왼쪽 방향으로 검색한 뒤, 가장 첫 번째로 나온 문자의 위치를 반환한다.

figure builtin searchr
SEARCHR function format
  • 인자

    항목 설명

    argument-1

    문자열 표현식

    argument-2

    문자열 표현식

    • CHARACTR, BIT, GRAPHIC, WIDECHAR 타입 문자열인 argument-1 문자열 내에서 문자 포함 여부를 검색할 문자열이다.

    argument-3

    표현식

    • 검색을 시작할 시작 위치이다.

    • 계산 가능한 타입이어야 하고 필요한 경우 FIXED BINARY(31,0)으로 변환된다.

    • 생략하는 경우 LENGTH(argument-1) 값을 사용한다.

  • 반환값

    • argument-1 문자열에서 argument-2 문자열을 이루는 문자들의 위치를 argument-1 문자열의 끝에서부터 왼쪽 방향으로 찾은 후, 가장 처음으로 등장하는 문자의 위치를 소수점이 없는 REAL FIXED BINARY 타입 값으로 반환한다.

    • argument-1이나 argument-2가 빈 문자열이면 0 값을 반환한다.

    • argument-1 문자열 내에 argument-2을 이루는 문자들이 존재하지 않는 경우 0 값을 반환한다.

4.12.13. SUBSTR

문자열의 부분 문자열을 할당한다.

figure builtin11
SUBSTR function format
  • 인자

    항목 설명

    argument-1

    문자열 표현식

    • 부분 문자열을 추출 할 문자열을 지정한다.

    • argument-1이 문자열이 아니면, 문자로 변환된다.

    argument-2

    FIXED BINARY(31,0)으로 변환되는 표현식

    • argument-2는 argument-1의 부분 문자열의 시작 위치를 지정한다.

    argument-3

    FIXED BINARY(31,0)으로 변환되는 표현식

    • argument-3은 argument-1의 부분 문자열의 길이를 지정한다.

    • 0이면 null 문자열이 반환된다. 0이 생략되면 argument-2의 위치에서부터 argument-1의 끝까지의 부분 문자열이 반환된다.

  • 반환값

    • argument-2와 argument-3에 의해 지정된 argument-1의 부분 문자열을 반환한다.

    • argument-3이 음수이거나 argument-2와 argument-3의 값이 현재 argument-1의 길이 내에서 있지 않는 부분 문자열이라면, STRINGRANGE 조건이 발생한다.

    • argument-2가 LEGNTH(argument-1)+1이고 argument-3이 0일 때는 발생하지 않는다.

4.12.14. TRANSLATE

두 개의 번역 문자열을 기반으로 문자열을 변환한다.

figure builtin65
TRANSLATE function format
  • 인자

    항목 설명

    argument-1

    문자의 번역을 검색할 문자 표현식

    argument-2

    문자의 번역 값을 포함하는 문자 표현식

    argument-3

    번역될 문자를 포함하는 문자 표현식

    • argument-3이 생략되면 디폴트는 COLLATE()이다.

  • 반환값

    • argument-1과 같은 길이의 문자열을 반환한다.

    • TRANSLATE 내장함수는 산술 또는 비트 인자는 문자로 변환되고, GRAPHIC이나 WIDECHAR 데이터에서는 지원하지 않는다.

4.12.15. TRIM

문자열의 왼쪽, 오른쪽 끝 부분을 잘라낸 문자열을 반환한다.

figure builtin trim
TRIM function format
  • 인자

    항목 설명

    argument-1

    문자열 표현식

    argument-2

    왼쪽에서 잘라낼 문자열 표현식

    • argument-2가 생략되면 디폴트는 공백값을 가진 CHAR(1) NONVARYING 이다.

    argument-3

    오른쪽에서 잘라낼 문자열 표현식

    • argument-3이 생략되면 디폴트는 공백값을 가진 CHAR(1) NONVARYING 이다.

  • 반환값

    • argument-1에서 argument-2의 문자들이 나오지 않을 때까지 왼쪽에서 문자열을 잘라내고, argument-3의 문자들이 나오지 않을 때까지 오른쪽에서 문자열을 잘라낸 문자열을 반환한다.

    • argument-1은 computational type을 가져야 하고, 문자열이 아니면 문자로 변환된다.

4.12.16. UPPERCASE

문자열 내의 모든 알파벳 문자들을 대문자로 변환하여 반환한다.

figure builtin uppercase
TRIM function format
  • 인자

    항목 설명

    argument-1

    변환할 표현식

    • 필요한 경우 문자열로 변환한다.

  • 반환값

    • 대문자로 변환된 argument-1의 문자열을 반환한다.

4.12.17. VERIFY

어느 하나의 문자열 요소가 다른 문자열 내에 존재하지 않는 경우를 찾는다.

figure builtin67
VERIFY function format
  • 인자

    항목 설명

    argument-1

    문자열 표현식

    argument-2

    문자열 표현식

    argument-3

    처리를 시작하는 argument-1 내에서 위치를 지정하는 표현식

    • 계산 가능한 타입이어야 하고 필요한 경우 FIXED BINARY(31,0)으로 변환된다.

    • 생략 시 argument-3의 값을 1으로 간주한다.

  • 반환값

    • argument-2 문자열 내에 존재하지 않는 argument-1의 문자들 중에 제일 왼쪽에 위치하는 문자, 확장 문자, 그래픽 또는 비트가 argument-1 내에서 어디에 존재하는지 나타내는 REAL FIXED BINARY 값을 반환한다. 또한 argument-1 내의 어떤 위치에서부터 검색을 시작할지 지정 가능하다.

    • argument-1 안에 모든 문자, 확장 문자, 그래픽 또는 비트가 argument-2 문자열에 존재하면 0의 값이 반환된다. 한편, argument-1이 null 문자열이면 0의 값이 반환된다. argument-1이 null 문자열이 아니고 argument-2가 null 문자열이면, argument-3의 값이 반환된다.

    • argument-3의 값이 1과 LENGTH(argument-1)+1 사이에 존재하지 않고, STRINGRANGE 조건이 활성화된 경우 STRINGRANGE 조건이 발생한다. 이 경우 기본적으로는 0의 값을 반환한다.

    • argument-3의 값이 LENGTH(argument-1)+1이면 0 값을 반환한다.

4.12.18. VERIFYR

어느 하나의 문자열 요소가 다른 문자열 내에 존재하지 않는 경우를 찾는다. 탐색을 오른쪽에서부터 왼쪽 방향으로 수행한다는 점과, argument-3의 기본 값이 argument-1의 길이라는 점을 제외하면 기본적으로 VERIFY 내장함수와 같은 방식으로 동작한다.

figure builtin verifyr
VERIFYR function format
  • 인자

    항목 설명

    argument-1

    문자열 표현식

    argument-2

    문자열 표현식

    argument-3

    처리를 시작하는 argument-1 내에서 위치를 지정하는 표현식

    • 계산 가능한 타입이어야 하고 필요한 경우 FIXED BINARY(31,0)으로 변환된다.

    • 생략하는 경우 argument-3의 값을 LENGTH(argument-1) 값으로 간주한다.

  • 반환값

    • argument-2 문자열 내에 존재하지 않는 argument-1의 문자들 중에 제일 오른쪽에 위치하는 문자, 확장 문자, 그래픽 또는 비트가 argument-1 내에서 어디에 존재하는지 나타내는 REAL FIXED BINARY 값을 반환한다. 또한 argument-1 내의 어떤 위치에서부터 검색을 시작할 지 지정 가능하다.

    • argument-1 안에 모든 문자, 확장 문자, 그래픽 또는 비트가 argument-2 문자열에 존재하면 0의 값이 반환된다. 한편, argument-1이 null 문자열이면 0의 값이 반환된다. argument-1이 null 문자열이 아니고 argument-2가 null 문자열이면, argument-3의 값이 반환된다.

    • argument-3의 값이 0과 LENGTH(argument-1) 사이에 존재하지 않고, STRINGRANGE 조건이 활성화된 경우 STRINGRANGE 조건이 발생한다. 이 경우 기본적으로는 0의 값을 반환한다.

    • argument-3의 값이 0이면 0의 값을 반환한다.