Compartir a través de


MC_SEND_CONVERSATION

El verbo MC_SEND_CONVERSATION asigna una sesión entre la unidad lógica local (LU) y la LU del asociado, envía datos en la sesión y, a continuación, desasigna la sesión.

En la estructura siguiente se describe el bloque de control de verbos (VCB) usado por el verbo MC_SEND_CONVERSATION .

Sintaxis

  
struct mc_send_conversation {  
    unsigned short      opcode;  
    unsigned char       opext;  
    unsigned char       reserv2;  
    unsigned short      primary_rc;  
    unsigned long       secondary_rc;  
    unsigned char       tp_id[8];  
    unsigned long       conv_id;  
    unsigned char       reserv3[8];  
    unsigned char       rtn_ctl;  
    unsigned char       reserv4;  
    unsigned long       conv_group_id;  
    unsigned long       sense_data;  
    unsigned char       plu_alias[8];  
    unsigned char       mode_name[8];  
    unsigned char       tp_name[64];  
    unsigned char       security;  
    unsigned char       reserv6[11];  
    unsigned char       pwd[10];  
    unsigned char       user_id[10];  
    unsigned short      pip_dlen;  
    unsigned char FAR * pip_dptr;  
    unsigned char       reserv6;  
    unsigned char       fqplu_name[17];  
    unsigned char       reserv7[8];  
    unsigned short      dlen;  
    unsigned char FAR * dptr;  
};   

Miembros

opcode
Parámetro proporcionado. Especifica el código de operación de verbo, AP_M_SEND_CONVERSATION.

opext
Parámetro proporcionado. Especifica la extensión de la operación de verbo, AP_MAPPED_CONVERSATION.

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.

tp_id
Parámetro proporcionado. Identifica el programa de transacciones local (TP). El valor de este parámetro lo devolvió TP_STARTED.

conv_id
Parámetro proporcionado. Proporciona el identificador de conversación.

El valor de este parámetro lo devuelve MC_ALLOCATE en el TP invocado o por RECEIVE_ALLOCATE en el TP invocado.

rtn_ctl
Parámetro proporcionado. Especifica cómo APPC debe seleccionar una sesión para asignar a la conversación y cuándo la LU local debe devolver el control al TP local. Los valores permitidos son:

  • AP_IMMEDIATE especifica que la LU asigna una sesión ganadora de contención, si hay una disponible inmediatamente y devuelve el control al TP.

  • AP_WHEN_SESSION_ALLOCATED especifica que la LU no devuelve el control al TP hasta que asigna una sesión o encuentra uno de los errores descritos en Códigos de retorno de este tema. Si el límite de sesión es cero, la LU devuelve el control inmediatamente. Tenga en cuenta que si una sesión no está disponible, el TP espera uno.

  • AP_WHEN_SESSION_FREE especifica que la LU asigna una sesión de contención-ganador o de pérdida de contención, si hay una disponible o puede activarse, y devuelve el control al TP. Si se produce un error (como se describe en Códigos de retorno de este tema), la llamada se devolverá inmediatamente con el error en los campos primary_rc y secondary_rc .

  • AP_WHEN_CONWINNER_ALLOC especifica que la LU no devuelve el control hasta que asigna una sesión de ganador de contención o encuentra uno de los errores descritos en Códigos de retorno de este tema. Si el límite de sesión es cero, la LU devuelve el control inmediatamente. Tenga en cuenta que si una sesión no está disponible, el TP espera uno.

  • AP_WHEN_CONV_GROUP_ALLOC especifica que la LU no devuelve el control al TP hasta que asigna la sesión especificada por conv_group_id o encuentra uno de los errores descritos en Códigos de retorno de este tema. Si la sesión no está disponible, el TP espera a que se libere.

    conv_group_id
    Parámetro proporcionado o devuelto. Se usa como parámetro proporcionado cuando rtn_ctl se WHEN_CONV_GROUP_ALLOC para especificar la identidad del grupo de conversación desde el que se debe asignar la sesión. Cuando rtn_ctl especifica un valor diferente y el primary_rc se AP_OK , se trata de un valor devuelto. El propósito de este parámetro es proporcionar un TP con la garantía de que se reasignará la misma sesión y, por lo tanto, las conversaciones realizadas a través de la sesión se producirán en la misma secuencia que se iniciaron.

    sense_data
    Parámetro devuelto. Si los códigos de retorno principal y secundario indican un error de asignación (reintento o sin reintento), se devuelve un código de sentido definido por SNA.

    plu_alias
    Parámetro proporcionado. Especifica el alias por el que se conoce la LU del asociado con el TP local. Este parámetro debe coincidir con el nombre de una LU de asociado establecida durante la configuración. El parámetro es un juego de caracteres ASCII de 8 bytes, de tipo G que incluye:

  • Letras mayúsculas

  • Números de 0 a 9

  • Espacios

  • Caracteres especiales $, #, %y @

    Si el valor de este parámetro es de menos de ocho bytes, adjínelo a la derecha con espacios ASCII (0x20).

    mode_name
    Parámetro proporcionado. Especifica el nombre de un conjunto de características de red definidas durante la configuración. Este parámetro debe coincidir con el nombre de un modo asociado a la LU del asociado durante la configuración.

    El parámetro es una cadena de caracteres EBCDIC de 8 bytes. Puede constar de caracteres del tipo A juego de caracteres EBCDIC, incluidos todos los espacios EBCDIC. Estos caracteres son:

  • Letras mayúsculas

  • Números de 0 a 9

  • Caracteres especiales $, #y @

    El primer carácter de la cadena debe ser una letra mayúscula o un carácter especial.

    En una conversación asignada, el nombre no puede ser SNASVCMG (un nombre de modo reservado usado internamente por APPC).

    tp_name
    Parámetro proporcionado. Especifica el nombre del TP invocado. El valor de tp_name especificado por MC_ALLOCATE en el TP invocado debe coincidir con el valor de tp_name especificado por RECEIVE_ALLOCATE en el TP invocado.

    El parámetro es una cadena de caracteres EBCDIC con distinción entre mayúsculas y minúsculas de 64 bytes. Este parámetro puede constar de caracteres del tipo AE EBCDIC juego de caracteres. Estos caracteres son:

  • Letras mayúsculas y minúsculas

  • Números de 0 a 9

  • Caracteres especiales $, #, @, y punto (.)

    Si el nombre del TP es inferior a 64 bytes, use espacios EBCDIC (0x40) para rellenarlo a la derecha.

    La convención de SNA es que un nombre de TP de servicio puede tener hasta cuatro caracteres. El primer carácter es un byte hexadecimal entre 0x00 y 0x3F. Los demás caracteres proceden del juego de caracteres AE de EBCDIC.

    security
    Parámetro proporcionado. Especifica la información que requiere la LU del asociado para validar el acceso al TP invocado.

  • AP_NONE especifica que el TP invocado no usa ninguna seguridad de conversación.

  • AP_PGM especifica que el TP invocado usa la seguridad de la conversación y requiere un identificador de usuario y una contraseña. Use user_id y pwd para proporcionar esta información.

  • AP_SAME especifica que el TP invocado, invocado con un identificador de usuario y una contraseña válidos, a su vez invoca otro TP.

    Por ejemplo, suponga que TP A invoca TP B con un identificador de usuario y una contraseña válidos, y TP B a su vez invoca TP C. Si TP B especifica el valor AP_SAME, APPC enviará al LU para TP C el identificador de usuario de TP A y un indicador ya comprobado. Este indicador indica que TP C no necesita la contraseña (si TP C está configurado para aceptar un indicador ya comprobado).

    pwd
    Parámetro proporcionado. Especifica la contraseña asociada a user_id. Este parámetro solo es necesario si el parámetro de seguridad está establecido en AP_PGM y debe coincidir con la contraseña de user_id que se estableció durante la configuración.

    Este parámetro es una cadena de caracteres EBCDIC con distinción entre mayúsculas y minúsculas de 10 bytes. Puede constar de caracteres del tipo AE EBCDIC juego de caracteres. Estos caracteres son:

  • Letras mayúsculas y minúsculas

  • Números de 0 a 9

  • Caracteres especiales $, #, @, y punto (.)

    Si la contraseña es inferior a 10 bytes, use espacios EBCDIC (0x40) para rellenarla a la derecha.

    user_id
    Parámetro proporcionado. Especifica el identificador de usuario necesario para acceder al TP del asociado. Este parámetro solo es necesario si el parámetro de seguridad se establece en AP_PGM y debe coincidir con uno de los identificadores de usuario configurados para el TP del asociado.

    El parámetro puede constar de caracteres del tipo AE EBCDIC juego de caracteres. Estos caracteres son:

  • Letras mayúsculas y minúsculas

  • Números de 0 a 9

  • Caracteres especiales $, #, @, y punto (.)

    Si el identificador de usuario es inferior a 10 bytes, use espacios EBCDIC (0x40) para rellenarlo a la derecha.

    pip_dlen
    Parámetro proporcionado. Especifica la longitud del PIP que se va a pasar al TP del asociado. El intervalo de este parámetro es de 0 a 32767.

    pip_dptr
    Parámetro proporcionado. Especifica la dirección del búfer que contiene datos pip. Use este parámetro solo si pip_dlen es mayor que cero.

    Los datos de PIP pueden constar de parámetros de inicialización o información de configuración del entorno requerida por un TP asociado o un sistema operativo remoto. Los datos pip deben seguir el formato GDS. Para obtener más información, consulte los manuales de IBM SNA.

    Para el sistema operativo Microsoft Windows, el búfer de datos puede residir en un área de datos estática o en un área asignada globalmente.

    fqplu_name
    Parámetro proporcionado. Especifica el nombre completo de la LU local. Este parámetro debe coincidir con el nombre completo de la LU local definida en el nodo remoto. El parámetro se compone de dos cadenas de caracteres EBCDIC de tipo (cada una de hasta ocho caracteres), que son el nombre de red (NETID) y el nombre de LU del LU asociado. Los nombres están separados por un punto EBCDIC (.). Se puede omitir el NETID y, si este es el caso, también se debe omitir el período.

    Este nombre debe proporcionarse si no se proporciona ningún plu_alias .

    Escriba un carácter EBCDIC que contenga:

  • Letras mayúsculas

  • Números de 0 a 9

  • Caracteres especiales $, #y @

    Si el valor de este parámetro es inferior a 17 bytes, adítelo a la derecha con espacios EBCDIC (0x40).

    dlen
    Parámetro proporcionado. Especifica el número de bytes de datos que se van a colocar en el búfer de envío de la LU local. El intervalo de este parámetro es de 0 a 65535.

    dptr
    Parámetro proporcionado. Especifica la dirección del búfer que contiene los datos que se van a colocar en el búfer de envío de la LU local.

    Para el sistema operativo Windows, el búfer de datos puede residir en un área de datos estática o en un área asignada globalmente. El búfer de datos debe ajustarse completamente dentro de esta área.

Códigos de retorno

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

AP_UNSUCCESSFUL
Código de retorno principal; el parámetro proporcionado rtn_ctl el retorno inmediato del control al TP (AP_IMMEDIATE) y la LU local no tenía una sesión de contención-ganador disponible.

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

AP_BAD_RETURN_CONTROL

Código de retorno secundario; el valor especificado para rtn_ctl no era válido.

AP_BAD_SECURITY

Código de retorno secundario; el valor especificado para la seguridad no era válido.

AP_BAD_TP_ID

Código de retorno secundario; el valor de tp_id no coincide con un identificador de TP asignado por APPC.

AP_PIP_LEN_INCORRECT

Código de retorno secundario; el valor de pip_dlen era mayor que 32767.

AP_UNKNOWN_PARTNER_MODE

Código de retorno secundario; el valor especificado para mode_name no era válido.

AP_BAD_PARTNER_LU_ALIAS

El código de retorno secundario, APPC no reconoció el partner_lu_alias proporcionado.

AP_NO_USE_OF_SNASVCMG

Código de retorno secundario; SNASVCMG no es un valor válido para mode_name.

AP_INVALID_DATA_SEGMENT

Código de retorno secundario; los datos de PIP o los datos de la aplicación eran más largos que el segmento de datos asignado, o la dirección de un búfer de datos era incorrecta.

AP_ALLOCATION_ERROR
Código de retorno principal; APPC no ha podido asignar una conversación. El estado de la conversación se establece en RESET.

Este código se puede devolver a través de un verbo emitido después de MC_ALLOCATE.

AP_ALLOCATION_FAILURE_NO_RETRY

Código de retorno secundario; la conversación no se puede asignar debido a una condición permanente, como un error de configuración o un error de protocolo de sesión. Para determinar el error, el administrador del sistema debe examinar el archivo de registro de errores. No vuelva a intentar la asignación hasta que se haya corregido el error.

AP_ALLOCATION_FAILURE_RETRY

Código de retorno secundario; No se pudo asignar la conversación debido a una condición temporal, como un error de vínculo. El motivo del error se registra en el registro de errores del sistema. Vuelva a intentar la asignación.

AP_COMM_SUBSYSTEM_ABENDED
Código de retorno principal; indica una de las condiciones siguientes:

  • El nodo utilizado por esta conversación encontró una anulación.

  • La conexión entre el TP y el nodo PU 2.1 se interrumpió (un error de LAN).

  • El proceso SnaBase que se ejecuta en el equipo del TP encontró una anulación.

    El administrador del sistema debe examinar el registro de errores a fin de determinar el motivo de la anulación.

    AP_COMM_SUBSYSTEM_NOT_LOADED
    Código de retorno principal; no se pudo cargar un componente necesario o se ha terminado mientras se procesa el verbo. Por tanto, no se pudo establecer la comunicación. Consulte al administrador del sistema para aplicar una acción correctiva.

    Cuando este código de retorno se usa con MC_ALLOCATE, puede indicar que no se encontró ningún sistema de comunicaciones para admitir la LU local. (Por ejemplo, el alias de LU local especificado con TP_STARTED es incorrecto o no se ha configurado). Tenga en cuenta que si lu_alias o mode_name tiene menos de ocho caracteres, debe asegurarse de que estos campos se rellenan con espacios a la derecha. Este error se devuelve si estos parámetros no se rellenan con espacios, ya que no hay ningún nodo disponible que pueda satisfacer la solicitud de MC_ALLOCATE .

    Cuando MC_ALLOCATE genera este código de retorno para un sistema cliente de Host Integration Server configurado con varios nodos, hay dos códigos de retorno secundarios de la siguiente manera:

    0xF0000001

    Código de retorno secundario; no se ha iniciado ningún nodo.

    0xF0000002

    Código de retorno secundario; se ha iniciado al menos un nodo, pero la LU local (cuando se emite TP_STARTED ) no está configurada en ningún nodo activo. El problema podría ser cualquiera de los siguientes:

  • No se inicia el nodo con la LU local.

  • La LU local no está configurada.

    AP_INVALID_VERB_SEGMENT
    Código de retorno principal; el bloque de control de verbo (VCB) se ha extendido más allá del final del segmento de datos.

    AP_STACK_TOO_SMALL
    Código de retorno principal; el tamaño de la pila de la aplicación es demasiado pequeño para ejecutar el verbo. Aumente el tamaño de pila de la aplicación.

    AP_CONV_BUSY
    Código de retorno principal; solo puede haber un verbo de conversación pendiente a la vez en cualquier conversación. Esto puede ocurrir si el TP local tiene varios subprocesos y más de un subproceso emite llamadas APPC con el mismo conv_id.

    AP_THREAD_BLOCKING
    Código de retorno principal; el subproceso que llama ya está en una llamada de bloqueo.

    AP_UNEXPECTED_DOS_ERROR
    Código de retorno principal; el sistema operativo devolvió un error a APPC al procesar una llamada de APPC desde el TP local. El código de retorno del sistema operativo se devuelve a través de secondary_rc. Aparece en el orden de intercambio de bytes de Intel. Si el problema persiste, consulte con el administrador del sistema.

Comentarios

Este verbo lo emite la invocación del TP para realizar una conversación completa con el TP remoto. Si el TP remoto rechaza el inicio de la conversación o los datos, el TP invocado no recibirá la notificación del rechazo.

El estado de la conversación es RESET cuando el TP emite este verbo. No hay ningún cambio de estado.

Varios parámetros de MC_SEND_CONVERSATION son cadenas EBCDIC o ASCII. Un TP puede usar el verbo de servicio común (CSV) CONVERT para traducir una cadena de un juego de caracteres al otro.

Normalmente, el valor de mode_name debe coincidir con el nombre de un modo configurado para el nodo del TP invocado y asociado durante la configuración con la LU del asociado. Si uno de los modos asociados a la LU del asociado en el nodo del TP invocado es un modo implícito, la sesión establecida entre las dos LU será del modo implícito cuando ningún nombre de modo asociado a la LU del asociado coincida con el valor de mode_name.