GET_CP_CONVERT_TABLE
GET_CP_CONVERT_TABLE 동사는 256 바이트 변환 테이블을 만들어 반환하여 소스 코드 페이지에서 대상 코드 페이지로 문자열을 변환합니다.
다음 구조체는 GET_CP_CONVERT_TABLE 동사에서 사용하는 VCB(동사 제어 블록)를 설명합니다.
구문
struct get_cp_convert_table {
unsigned short opcode;
unsigned char opext;
unsigned char reserv2;
unsigned short primary_rc;
unsigned long secondary_rc;
unsigned char reserv3[8];
unsigned short source_cp;
unsigned short target_cp;
unsigned char FAR * conv_tbl_addr;
unsigned char char_not_fnd;
unsigned char substitute_char;
};
구성원
opcode
제공된 매개 변수입니다. 작업 코드를 식별하는 동사 SV_GET_CP_CONVERT_TABLE입니다.
opext
예약된 필드입니다.
reserv2
예약된 필드입니다.
primary_rc
반환된 매개 변수입니다. 동사를 완료할 때 APPC에서 설정하는 기본 반환 코드를 지정합니다. 유효한 반환 코드는 발행된 APPC 동사에 따라 다릅니다. 이 동사의 유효한 오류 코드는 반환 코드를 참조하세요.
secondary_rc
반환된 매개 변수입니다. 동사를 완료할 때 APPC에서 설정하는 보조 반환 코드를 지정합니다. 유효한 반환 코드는 발행된 APPC 동사에 따라 다릅니다. 이 동사의 유효한 오류 코드는 반환 코드를 참조하세요.
reserv3
예약된 필드입니다.
source_cp
제공된 매개 변수입니다. 문자를 변환할 소스 코드 페이지를 지정합니다. 허용되는 코드 페이지(10진수 값)는 다음과 같습니다.
ASCII 437, 850, 860, 863, 865
EBCDIC 037, 273, 277, 278, 280, 284, 285, 297, 500
65280~65535 범위의 사용자 정의 코드 페이지도 허용됩니다.
ASCII 코드 페이지는 PC 코드 페이지라고도 하고, EBCDIC 코드 페이지는 호스트 코드 페이지라고도 합니다.
target_cp
제공된 매개 변수입니다. 문자를 변환할 대상 코드 페이지를 지정합니다. 허용되는 코드 페이지는 위의 source_cp에 대한 정의를 참조하세요.
conv_tbl_addr
제공된 매개 변수입니다. 256바이트 변환 테이블을 포함하는 버퍼의 주소를 지정합니다. 버퍼는 쓰기 가능한 세그먼트에 있어야 하며 테이블을 포함하기에 충분히 길어야 합니다.
char_not_fnd
제공된 매개 변수입니다. 소스 코드 페이지의 문자가 대상 코드 페이지에 없는 경우 수행할 동작을 지정합니다.
변환 테이블에서 각 소스 코드 페이지 문자에 고유한 값을 저장하려면 SV_ROUND_TRIP을 사용합니다.
변환 테이블에서 대체 문자(substitute_char로 지정됨)를 저장하려면 SV_SUBSTITUTE를 사용합니다.
substitute_char
제공된 매개 변수입니다. 소스 코드 페이지의 문자가 대상 코드 페이지에 없는 경우 변환 테이블에 저장할 문자를 지정합니다.
반환 코드
SV_OK
기본 반환 코드입니다. 동사가 성공적으로 실행되었습니다.
SV_PARAMETER_CHECK
기본 반환 코드입니다. 매개 변수 오류로 인해 동사가 실행되지 않았습니다.
SV_INVALID_CHAR_NOT_FOUND
보조 반환 코드입니다. char_not_fnd 매개 변수에 잘못된 값이 포함되어 있습니다.
SV_INVALID_DATA_SEGMENT
보조 반환 코드입니다. 변환 테이블에 지정된 256바이트 영역이 세그먼트 경계를 벗어나 확장되었거나 세그먼트를 쓸 수 없습니다.
SV_INVALID_SOURCE_CODE_PAGE
보조 반환 코드입니다. source_cp에서 지정한 코드 페이지가 지원되지 않습니다.
SV_INVALID_TARGET_CODE_PAGE
보조 반환 코드입니다. target_cp에서 지정한 코드 페이지가 지원되지 않습니다.
SV_COMM_SUBSYSTEM_NOT_LOADED
기본 반환 코드입니다. 동사를 처리하는 동안 필수 구성 요소를 로드하거나 종료할 수 없습니다. 따라서 통신을 수행할 수 없습니다. 정정 작업은 시스템 관리자에게 문의하세요
SV_INVALID_VERB
기본 반환 코드입니다. opcode 매개 변수가 모든 동사의 작업 코드와 일치하지 않습니다. 동사가 실행되지 않았습니다.
SV_INVALID_VERB_SEGMENT
기본 반환 코드입니다. VCB가 데이터 세그먼트의 끝을 넘어 확장되었습니다.
SV_UNEXPECTED_DOS_ERROR
기본 반환 코드입니다. 다음 조건 중 하나가 발생했습니다.
Microsoft® Windows® 시스템에서 동사를 처리하는 동안 오류가 발생했습니다. 운영 체제 반환 코드가 보조 반환 코드를 통해 반환되었습니다. 문제가 지속되면 시스템 관리자에게 정정 작업을 문의하세요.
CSV가 보다 일반적인 Windows PostMessage 함수 호출이 아닌 Windows SendMessage 함수 호출을 발행하는 다른 애플리케이션이 호출한 메시지 루프로부터 발행되었습니다. 동사 처리를 수행할 수 없습니다.
SendMessage가 애플리케이션을 호출할 때 CSV가 발행되었습니다. InSendMessage Windows API 함수 호출을 사용하면, 애플리케이션이 SendMessage를 사용하여 호출되었는지 여부를 확인할 수 있습니다.
설명
형식 A 문자 집합은 다음으로 구성됩니다.
- 대문자
- 숫자 0~9
- 특수 문자 $, #, @ 및 공백
이 문자 집합은 시스템이 제공하는 형식 A 변환 테이블에서 지원됩니다.
원본 문자열의 첫 번째 문자는 대문자 또는 특수 문자 $, #또는 @여야 합니다. 공백은 후행 위치에서만 허용됩니다. 방향이 ASCII에서 EBCDIC로 향하는 경우 소문자 ASCII 문자는 대문자 EBCDIC 문자로 변환됩니다.
형식 AE 문자 집합은 다음으로 구성됩니다.
- 대문자
- 소문자
- 숫자 0~9
- 특수 문자 $, #, @, 마침표 및 공백
이 문자 집합은 시스템 제공 형식 AE 변환 테이블에서 지원됩니다.
소스 문자열의 첫 문자는 문자 집합에서 공백을 제외한 모든 문자일 수 있습니다.
변환하는 동안 포함된 공백(첫 번째 위치 공백 포함)이 0x00로 변환됩니다. 이러한 변환은 완료되지만 CONVERSION_ERROR가 보조 반환 코드로 반환되어 CSV 라이브러리가 제공된 데이터에 대해 되돌릴 수 없는 변환을 완료했음을 나타냅니다.
Windows의 경우 COMTBLG의 설명은 \SnaBase\Parameters\Client 아래의 Windows 레지스트리를 가리켜야 합니다. OS/2 운영 체제의 경우 테이블을 포함하는 디렉터리 및 파일은 환경 변수 COMTBLG로 지정해야 합니다. 파일을 찾을 수 없는 경우 시스템은 SV_TABLE_ERROR 매개 변수 검사를 반환합니다.
char_not_fnd에 대한 SV_ROUND_TRIP 값은 두 번째 변환 테이블을 작성하여 동일한 두 코드 페이지 간에 반대 방향으로 변환하는 경우에만 유용합니다. 두 변환 테이블을 작성할 때 모두 SV_ROUND_TRIP 값을 지정하는 경우 한 코드 페이지에서 다른 코드로 변환되었다가 다시 반대로 변환된 모든 문자는 변경되지 않습니다.
char_not_fnd에 대해 SV_SUBSTITUTE 값을 사용하는 경우 변환된 문자열을 다시 원래 코드 페이지로 변환해도 반드시 원래 문자열이 다시 생성되는 것은 아닙니다.
char_not_fnd가 SV_SUBSTITUTE로 설정된 경우에만 substitute_char를 사용합니다.
변환 테이블에 저장된 값은 문자와 연결된 ASCII 값입니다. 테이블을 ASCII에서 EBCDIC로 변환하는 데 사용하는 경우 변환된 문자열에 표시되는 문자는 ASCII가 아닌 숫자 EBCDIC 값과 연결된 문자입니다.
예를 들어 ASCII에서 EBCDIC로 변환 테이블을 만드는 동안 밑줄() 문자(ASCII 값 F6)를 제공하는 경우 변환된 문자열에 표시되는 문자는 6이 되며 EBCDIC의 F6 값과 연결된 문자입니다. ASCII 에서 EBCDIC로 변환 테이블의 대체 문자로 \ 문자를 사용하려면 실제 문자가 아닌 E1 값(EBCDIC의 _ 문자와 연결된 값)을 제공해야 합니다.
코드 페이지는 특정 ASCII 또는 EBCDIC 값을 특정 문자와 연결하는 테이블입니다. 소스 코드 페이지의 문자가 대상 코드 페이지에 없는 경우 변환된(대상) 문자열은 원본(소스) 문자열과 다릅니다.