Fixed-Length 메시지
Fixed-Length(고정 길이) 메시지는 각 필드가 미리 정해진 바이트 길이를 가지는 메시지 형식입니다. 구분자를 사용하지 않고, 각 필드의 시작 위치와 길이를 기준으로 데이터를 식별합니다.
Fixed-Length 메시지는 주로 다음과 같은 환경에서 사용됩니다.
-
금융권 전문 통신
-
레거시 메인프레임 연동
-
대용량 전문 처리
다음은 Fixed-Length 메시지의 설정 정보입니다.
| 항목 | 설명 |
|---|---|
공백 설정 (Trim) |
메시지 값의 앞뒤 공백을 처리하는 방식입니다.
|
총 길이 * |
메시지의 전체 바이트 길이입니다. 메시지 구성에서 Length를 설정하면 총 길이가 자동으로 계산되어 표시됩니다. |
다음은 Fixed-Length 메시지에서 사용할 수 있는 필드 속성입니다. 메시지 타입과 관계없이 공통으로 사용하는 필드 속성은 메시지 필드 정의를 참고합니다.
| 항목 | 설명 |
|---|---|
Length * |
필드의 바이트 길이입니다. |
Offset |
필드의 시작 위치입니다. 필드 길이를 기준으로 자동 계산되며, 읽기 전용으로 표시됩니다. |
Align |
필드 값의 정렬 방식입니다.
|
Fill |
정렬 시 남는 공간을 채우는 패딩 문자입니다. 기본값은 공백입니다. |
다음은 Fixed-Length 메시지의 필드 레이아웃 예시입니다.
각 필드는 시작 위치(Offset)와 길이(Length)에 따라 고정된 위치에 배치됩니다.
Position Length Field Id Field Name Type Align Fill
-------- ------ -------------- -------------- ------- ------ -----
0 4 txCode 전문구분코드 STRING LEFT ' '
4 10 txNo 전문번호 STRING LEFT ' '
14 8 txDate 거래일자 STRING LEFT ' '
22 6 txTime 거래시간 STRING LEFT ' '
28 15 amount 금액 LONG RIGHT '0'
|
Fixed-Length 메시지는 바이트 길이를 기준으로 필드를 계산합니다. 한글과 같은 멀티바이트 문자는 인코딩 방식에 따라 바이트 수가 달라지므로, 필드 길이를 설정할 때 주의해야 합니다.
예를 들어, 문자열
|
다음은 아래 설정값을 적용하여 구성한 Fixed-Length 메시지 예제입니다.
-
공백 설정: RIGHT
-
총 길이: 50 bytes
-
인코딩: EUC-KR
Position Length Field Id Field Name Type Align Fill 예시 값
-------- ------ -------------- -------------- ------- ------ ----- ---------------
0 4 txCode 전문구분코드 STRING LEFT ' ' "0100"
4 10 txNo 전문번호 STRING LEFT ' ' "1234567890"
14 8 txDate 거래일자 STRING LEFT ' ' "20250205"
22 6 txTime 거래시간 STRING LEFT ' ' "143052"
28 15 amount 금액 LONG RIGHT '0' "000000000010000"
43 7 reserved 예약영역 STRING LEFT ' ' " "
각 필드는 정의된 길이만큼 고정 폭을 차지하며, 정렬 방식과 Fill 값에 따라 실제 메시지 값이 구성됩니다.
다음 메시지는 위 필드 값을 순서대로 결합한 결과이며, 전체 길이는 50바이트입니다.
0100123456789020250205143052000000000010000
다음은 예제에 사용된 필드 정의입니다.
| Field Id | Field Type | Length | Offset | Align | 설명 |
|---|---|---|---|---|---|
txCode |
STRING |
4 |
0 |
LEFT |
전문 구분 코드 |
txNo |
STRING |
10 |
4 |
LEFT |
전문 번호 |
txDate |
STRING |
8 |
14 |
LEFT |
거래 일자 (YYYYMMDD) |
txTime |
STRING |
6 |
22 |
LEFT |
거래 시간 (HHmmss) |
amount |
LONG |
15 |
28 |
RIGHT |
금액 (왼쪽을 0으로 채움) |
reserved |
STRING |
7 |
43 |
LEFT |
예비 필드 |