GET_CP_CONVERT_TABLE

El verbo GET_CP_CONVERT_TABLE crea y devuelve una tabla de conversión de 256 bytes para traducir cadenas de caracteres de una página de códigos de origen a una página de códigos de destino.

La siguiente estructura describe el bloque de control de verbo (VCB) que el verbo GET_CP_CONVERT_TABLE utiliza.

Sintaxis

  
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;  
};  

Miembros

opcode
Parámetro proporcionado. Verbo que identifica el código de operación, SV_GET_CP_CONVERT_TABLE.

opext
Campo reservado.

reserv2
Campo reservado.

primary_rc
Parámetro devuelto. Especifica el código de retorno principal que establece APPC al finalizar el verbo. Los códigos de retorno válidos varían en función del verbo APPC que se emita. Consulte la sección de códigos de retorno para obtener los códigos de error válidos para este verbo.

secondary_rc
Parámetro devuelto. Especifica el código de retorno secundario que establece APPC al finalizar el verbo. Los códigos de retorno válidos varían en función del verbo APPC que se emita. Consulte la sección de códigos de retorno para obtener los códigos de error válidos para este verbo.

reserv3
Campo reservado.

source_cp
Parámetro proporcionado. Especifica la página de códigos de origen desde la que se convierten los caracteres. Las páginas de códigos permitidas (valores decimales) son las siguientes:

  • ASCII 437, 850, 860, 863, 865

  • EBCDIC 037, 273, 277, 278, 280, 284, 285, 297, 500

También se permiten páginas de códigos definidas por el usuario en el intervalo de 65280 a 65535.

A veces, las páginas de códigos ASCII se conocen como páginas de códigos de PC, y las páginas de códigos EBCDIC, como páginas de códigos host.

target_cp
Parámetro proporcionado. Especifica la página de códigos de destino a la que se convierten los caracteres. Para saber cuáles son las páginas de códigos permitidas, vea la definición anterior de source_cp.

conv_tbl_addr
Parámetro proporcionado. Especifica la dirección del búfer que contiene la tabla de conversión de 256 bytes. El búfer debe estar en un segmento grabable y tener la longitud suficiente para contener la tabla.

char_not_fnd
Parámetro proporcionado. Especifica la acción que debe realizarse si un carácter de la página de códigos de origen no existe en la página de códigos de destino:

  • Use SV_ROUND_TRIP para almacenar un valor único en la tabla de conversión para cada carácter de la página de códigos de origen.

  • Use SV_SUBSTITUTE para almacenar un carácter de sustitución (especificado por substitute_char) en la tabla de conversión.

substitute_char
Parámetro proporcionado. Especifica el carácter que debe almacenarse en la tabla de conversión cuando un carácter de la página de códigos de origen no tenga ningún equivalente en la página de códigos de destino.

Códigos de retorno

SV_OK
Código de retorno principal; el verbo se ha ejecutado correctamente.

SV_PARAMETER_CHECK
Código de retorno principal; el verbo no se ha ejecutado debido a un error en un parámetro.

SV_INVALID_CHAR_NOT_FOUND
Código de retorno secundario; el parámetro char_not_fnd contenía un valor no válido.

SV_INVALID_DATA_SEGMENT
Código de retorno secundario; el área de 256 bytes especificada para la tabla de conversión se extendía más allá del límite del segmento, o bien el segmento no es grabable.

SV_INVALID_SOURCE_CODE_PAGE
Código de retorno secundario; no se admite la página de códigos especificada por source_cp.

SV_INVALID_TARGET_CODE_PAGE
Código de retorno secundario; no se admite la página de códigos especificada por target_cp.

SV_COMM_SUBSYSTEM_NOT_LOADED
Código de retorno principal; no se pudo cargar o finalizar un componente necesario durante el procesamiento del verbo. Por tanto, no se pudo establecer la comunicación. Consulte al administrador del sistema para aplicar una acción correctiva.

SV_INVALID_VERB
Código de retorno principal; el parámetro opcode no coincide con el código de operación de ningún verbo. No se ha ejecutado ningún verbo.

SV_INVALID_VERB_SEGMENT
Código de retorno principal; el bloque de control de verbo (VCB) se extendía más allá del final del segmento de datos.

SV_UNEXPECTED_DOS_ERROR
Código de retorno principal; se ha producido alguna de las siguientes condiciones:

  • El sistema Microsoft® Windows® encontró un error al procesar el verbo. El código de retorno del sistema operativo se devolvió mediante el código de retorno secundario. Si el problema persiste, póngase en contacto con el administrador del sistema para aplicar una acción correctiva.

  • Se emitió un CSV desde un bucle de mensajes invocado por otra aplicación que emite una llamada a la función SendMessage de Windows, en lugar de la llamada a la función PostMessage de Windows, más común. No se pueden procesar verbos.

  • Se emitió un CSV cuando SendMessage invocó la aplicación. Para averiguar si la aplicación se invocó con SendMessage, use la llamada a la función de la API de Windows InSendMessage.

Comentarios

El juego de caracteres de tipo A consta de:

  • Letras mayúsculas.
  • Números del 0 al 9.
  • Caracteres especiales $, #, @ y espacio.

Este juego de caracteres es compatible con una tabla de conversión de tipo A proporcionada por el sistema.

El primer carácter de la cadena de origen debe ser una letra mayúscula o el carácter especial $, #o @. Los espacios solo se permiten al final. Las letras ASCII minúsculas se traducen a letras EBCDIC mayúsculas cuando la dirección es de ASCII a EBCDIC.

El juego de caracteres de tipo AE consta de:

  • Letras mayúsculas.
  • Letras minúsculas.
  • Números del 0 al 9.
  • Caracteres especiales $, #, @, punto y espacio.

Este juego de caracteres es compatible con una tabla de conversión de tipo AE proporcionada por el sistema.

El primer carácter de la cadena de origen puede ser cualquier carácter del juego de caracteres, excepto el espacio.

Durante la conversión, los espacios insertados (incluidos los que están en la primera posición) se convierten en 0x00. Aunque la conversión se completa, se devuelve CONVERSION_ERROR como código de retorno secundario para indicar que la biblioteca CSV ha completado una conversión irreversible en los datos proporcionados.

Para Windows, una descripción de COMTBLG debe apuntar a \SnaBase\Parameters\Client en el Registro de Windows. Para el sistema operativo OS/2, el directorio y el archivo que contienen la tabla deben especificarse con la variable de entorno COMTBLG. Si no se encuentra el archivo, el sistema devuelve la comprobación de parámetro SV_TABLE_ERROR.

El valor SV_ROUND_TRIP para char_not_fnd es útil únicamente si crea una segunda tabla de conversión para las mismas páginas de códigos en la dirección inversa. Si especifica el valor SV_ROUND_TRIP al crear las dos tablas de conversión, los caracteres traducidos de una página de códigos a la otra y viceversa se quedan sin modificar.

Cuando se usa el valor SV_SUBSTITUTE para char_not_fnd, al convertir la cadena de caracteres traducida de nuevo a la página de códigos original no vuelve a crear, necesariamente, la cadena de caracteres original.

Utilice substitute_char solamente si char_not_fnd está establecido en SV_SUBSTITUTE.

El valor almacenado en la tabla de conversión es el valor ASCII asociado al carácter. Si la tabla se usa para la conversión de ASCII a EBCDIC, el carácter que aparece en la cadena convertida es el carácter asociado al valor numérico EBCDIC en lugar de ASCII.

Por ejemplo, si proporciona el carácter de subrayado () (valor ASCII F6) al crear una tabla de conversión ASCII a EBCDIC, el carácter que aparece en las cadenas convertidas será 6, el carácter asociado al valor F6 en EBCDIC. Para usar el carácter \ como carácter sustituto en una tabla de conversión ASCII a EBCDIC, debe proporcionar el valor E1 (el valor asociado al carácter _ en EBCDIC) en lugar del carácter real.

Una página de códigos es una tabla que asocia valores ASCII o EBCDIC con caracteres específicos. Si un carácter de la página de códigos de origen no existe en la página de códigos de destino, la cadena traducida (de destino) difiere de la cadena original (de origen).