COBOL 코볼 COMP-3 길이 계산


코볼에서는 Decimal 값을 관리하기 위해
PIC 9(n) COMP-3 타입을 사용한다.

PIC 9(n) COMP-3 타입으로 정의한 변수의 길이는 어떻게 될까?

n 값에 1을 더하고, 나누기 2를 하고, 올림 하면 된다.

Length(bytes) = CEILING((n+1)/2)

1바이트에 숫자값 2개씩 저장되는 구조이고, 앞(혹은 뒤)에 부호 값 1자리가 존재하기 때문이다.
※ 부호 : 양수는 C, 음수는 D

예를 들어, PIC 9(3) COMP-3 인 경우, 
(3+1) / 2 = 2 bytes 가 된다.

PIC 9(4) COMP-3 인 경우,
(4+1) / 2 = 2.5 를 올림하여, 3 bytes가 된다.

소수점은 어떻게 될까?

예를 들어, 아래의 변수인 경우
S9(7)V99 COMP-3
길이는 (9+1) / 2 = 5 bytes 가 된다.



참고
https://www.ibm.com/support/knowledgecenter/ko/SSMKHH_10.0.0/com.ibm.etools.mft.doc/ad06900_.htm

http://www.3480-3590-data-conversion.com/article-packed-fields.html



Written by dukgun.com

Post a Comment

أحدث أقدم