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 사용하여 각 소스 코드 페이지 문자의 변환 테이블에 고유한 값을 저장합니다.
SV_SUBSTITUTE 사용하여 변환 테이블에 대체 문자( substitute_char 지정)를 저장합니다.
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 값과 연결된 문자입니다.
예를 들어 EBCDIC 변환 테이블에 ASCII를 만드는 동안 밑줄() 문자(ASCII 값 F6)를 제공하는 경우 변환된 문자열에 나타나는 문자는 EBCDIC의 F6 값과 연결된 문자인 6이 됩니다. ASCII 에서 EBCDIC로 변환 테이블의 대체 문자로 \ 문자를 사용하려면 실제 문자가 아닌 E1 값(EBCDIC의 _ 문자와 연결된 값)을 제공해야 합니다.
코드 페이지는 특정 ASCII 또는 EBCDIC 값을 특정 문자와 연결하는 테이블입니다. 소스 코드 페이지의 문자가 대상 코드 페이지에 없는 경우 번역된(대상) 문자열은 원래(원본) 문자열과 다릅니다.