C에 EGL 데이터 유형 맵핑
다음 테이블은 call 명령문으로 C 함수 호출에서 설명된 대로 call 명령문으로 C 함수를 호출하는 데 사용할 C 기본 유형에 EGL 기본 유형을 맞춥니다.
| EGL 기본요소 | C 유형 |
|---|---|
| INT | int(부호 있는 4바이트 정수) |
| SMALLINT | short(부호 있는 2바이트 정수) |
| BIGINT | long long(부호 있는 8바이트 정수) |
| NUM | COBOL 구역 지정 형식입니다. ASCII의 경우, 부호 비트가 양수의 경우 x30이고 음수의 경우 x70입니다. EBCDIC의 경우, 부호 비트가 양수의 경우 xF0이고 음수의 경우 xD0입니다. |
| NUMC | COBOL 구역 지정 형식입니다. ASCII의 경우, 부호 비트가 양수의 경우 x30이고 음수의 경우 x70입니다. EBCDIC의 경우, 부호 비트가 양수의 경우 xC0이고 음수의 경우 xD0입니다. |
| DECIMAL, MONEY | COBOL 팩형 형식입니다. 부호 비트가 양수의 경우 xC이고 음수의 경우 xD입니다. |
| PACF | COBOL 팩형 형식입니다. 부호 비트가 양수의 경우 xF이고 음수의 경우 xD입니다. |
| FLOAT | double |
| SMALLFLOAT | float |
| BOOLEAN | char이며, 1은 true를 나타내고 0은 false를 나타냄 |
| HEX | 부호 없는 char |
| CHAR | char |
| MBCHAR, DBCHAR | char이며, stdlib.h에서 mbstowcs를 사용하여 wchar_t로 변환 |
| UNICODE, STRING | char이며, UTF-16 인코딩의 데이터(문자당 2바이트)입니다. stdlib.h에서 mbstowcs를 사용하여 wchar_t로 변환하십시오. Windows 및 Linux에서 데이터의 순서가 리틀 엔디안(little-endian)입니다. 기타 시스템에서는 데이터의 순서가 빅 엔디안(big-endian)입니다. |
| DATE | char이며, 형식이 yyyMMdd이고 "0"부터 "9"까지 저장된 숫자 포함 |
| TIME | char이며, 형식이 HHmmss이고 "0"부터 "9"까지 저장된 숫자 포함 |
| TIMESTAMP | char이며, "0"부터 "9"까지 저장된 숫자 포함 |
| INTERVAL | char이며, "+" 또는 "-"으로 시작되어 "0"부터 "9"까지로 값의 숫자가 뒤따름 |
텍스트 유형(CHAR, MBCHAR, DBCHAR, UNICODE, STRING), 날짜 및 시간 유형(DATE, TIME, TIMESTAMP 및 INTERVAL)과 16진의 값이 널 바이트로 끝나지 않습니다. StrLib.setNullTerminator를 사용하여 후미 공백을 널로 변환하거나 StrLib.setBlankTerminator를 사용하여 후미 널을 공백으로 변환할 수 있습니다.
어레이의 경우, C 함수에 전달된 데이터는 이 순서에서
다음과 같습니다.
- 어레이의 현재 길이를 나타내는 INT 값
- 어레이의 최대 크기를 나타내는 INT 값
- 어레이에 있는 각 요소의 다음과 같은 데이터:
- 요소가 STRING 또는 레코드인 경우 요소의 데이터 길이를 나타내는 INT 값
- 요소의 데이터
- 요소가 널 입력 가능인 경우 요소의 널 입력 가능을 나타내는 SHORT입니다. 요소가 널 입력 가능이고 널 값을 포함하는 경우 SHORT의 값은 -1입니다.
- 요소가 널 입력 가능인 경우 필러 값으로 SHORT를 사용합니다. EGL은 이 값을 무시합니다.
구조화되지 않은 레코드의 경우 C 함수에 전달된 데이터는 이 순서에서
다음과 같습니다.
- INT 값이며, 필드의 수를 나타냄
- 레코드에 있는 각 필드의 다음과 같은 데이터:
- 필드의 데이터 길이를 나타내는 INT 값
- 필드의 데이터
- 필드가 널 입력 가능인 경우 필드의 널 입력 가능을 나타내는 SHORT입니다. 필드가 널 입력 가능이고 널 값을 포함하는 경우 SHORT의 값은 -1입니다.
- 요소가 널 입력 가능인 경우 필러 값으로 SHORT를 사용합니다. EGL은 이 값을 무시합니다.
구조화된 레코드의 경우 EGL은 최하 레벨 필드의 데이터를 전달합니다. 레코드와 동일한 구조의 C struct를 정의할 수 있습니다.