SEND_DATA

Il verbo SEND_DATA inserisce i dati nel buffer di invio dell'unità logica locale per la trasmissione al programma di transazione partner (TP).

La struttura seguente descrive il blocco di controllo verbo (VCB) usato dal verbo SEND_DATA .

Sintassi

  
struct send_data {  
    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       rts_rcvd;  
       unsigned char       data_type;  
    unsigned short int  dlen;  
    unsigned char FAR * dptr ;  
    unsigned char       type;  
    unsigned char       reserv4;  
};   

Members

Opcode
Parametro fornito. Specifica il codice dell'operazione verbo, AP_B_SEND_DATA.

opext
Parametro fornito. Specifica l'estensione dell'operazione verba, AP_BASIC_CONVERSATION.

reserv2
Campo riservato.

Primary_rc
Parametro restituito. Specifica il codice restituito primario impostato da APPC al completamento del verbo. I codici restituiti validi variano a seconda del verbo APPC rilasciato. Per questo verbo, vedere Codici restituiti per i codici di errore validi.

Secondary_rc
Parametro restituito. Specifica il codice restituito secondario impostato da APPC al completamento del verbo. I codici restituiti validi variano a seconda del verbo APPC rilasciato. Per questo verbo, vedere Codici restituiti per i codici di errore validi.

Tp_id
Parametro fornito. Identifica il TP locale.

Il valore di questo parametro viene restituito da TP_STARTED nella chiamata TP o da RECEIVE_ALLOCATE nel TP richiamato.

Conv_id
Parametro fornito. Fornisce l'identificatore della conversazione.

Il valore di questo parametro viene restituito da ALLOCATE nella chiamata TP o da RECEIVE_ALLOCATE nel TP richiamato.

rts_rcvd
Parametro restituito. Fornisce l'indicatore request-to-send-received.

  • AP_YES indica che il TP partner ha rilasciato REQUEST_TO_SEND, che richiede che il TP locale cambi la conversazione in stato DI RICEZIONE. Per modificare lo stato RECEIVE, il TP locale può usare PREPARE_TO_RECEIVE, RECEIVE_AND_WAIT o RECEIVE_AND_POST.

  • AP_NO indica che il TP partner non ha rilasciato REQUEST_TO_SEND.

    data_type
    Parametro fornito. Specifica il tipo di dati da inviare se è supportato il punto di sincronizzazione. I parametri validi sono:

    AP_APPLICATION

    AP_USER_CONTROL_DATA

    AP_PS_HEADER

    dlen
    Parametro fornito. Specifica il numero di byte di dati da inserire nel buffer di invio dell'lu locale. L'intervallo è compreso tra 0 e 65535.

    dptr
    Parametro fornito. Specifica l'indirizzo del buffer contenente i dati da inserire nel buffer di invio dell'ISTANZA locale.

    Per il sistema operativo Microsoft Windows, il buffer dei dati può risiedere in un'area dati statica o in un'area allocata a livello globale. Il buffer dei dati deve adattarsi interamente all'interno di questa area.

    type
    Parametro fornito. Consente a un TP di inviare dati ed eseguire altre funzioni all'interno di una chiamata API. Ad esempio, è possibile combinare SEND_DATA con il tipo impostato su CONFIRM per raggiungere lo stesso obiettivo dell'emissione di SEND_DATA seguito da CONFIRM.

  • AP_SEND_DATA_CONFIRM corrisponde a SEND_DATA seguito da CONFIRM.

  • AP_SEND_DATA_FLUSH corrisponde a SEND_DATA seguito da FLUSH.

  • AP_SEND_DATA_DEALLOC_ABEND corrisponde a SEND_DATA seguito da DEALLOCATE con un dealloc_type di AP_ABEND_PROG .

  • AP_SEND_DATA_DEALLOC_FLUSH corrisponde a SEND_DATA seguito da DEALLOCATE con un dealloc_type di AP_FLUSH .

  • AP_SEND_DATA_DEALLOC_SYNC_LEVEL corrisponde a SEND_DATA seguito da DEALLOCATE con un dealloc_type di AP_SYNC_LEVEL .

  • AP_SEND_DATA_P_TO_R_FLUSH corrisponde a SEND_DATA seguito da PREPARE_TO_RECEIVEcon unptr_type di AP_FLUSH .

  • AP_SEND_DATA_P_TO_R_SYNC_LEVEL corrisponde a SEND_DATA seguito da PREPARE_TO_RECEIVEcon unptr_type di AP_SYNC_LEVEL e blocchi impostati su AP_SHORT.

    reserv4
    Campo riservato.

Codici restituiti

AP_OK
Codice restituito primario; il verbo eseguito correttamente.

AP_PARAMETER_CHECK
Codice restituito primario; il verbo non è stato eseguito a causa di un errore di parametro.

AP_BAD_CONV_ID

Codice restituito secondario; il valore di conv_id non corrisponde a un identificatore di conversazione assegnato da APPC.

AP_BAD_LL

Codice restituito secondario; il campo della lunghezza del record logico di un record logico contiene un valore non valido: 0x0000, 0x0001, 0x8000 o 0x8001. Per informazioni sui record logici, vedere Informazioni sui programmi di transazione .

AP_BAD_TP_ID

Codice restituito secondario; il valore di tp_id non corrisponde a un identificatore TP assegnato da APPC.

AP_INVALID_DATA_SEGMENT

Codice restituito secondario; la lunghezza specificata per il buffer di dati è maggiore del segmento allocato per contenere il buffer.

AP_SEND_DATA_INVALID_TYPE

Codice restituito secondario; il tipo specificato non è stato riconosciuto da APPC.

AP_SEND_DATA_CONFIRM_SYNC_NONE

Codice restituito secondario; il tipo CONFIRM non è consentito per una conversazione allocata con un sync_level di NONE.

AP_STATE_CHECK
Codice restituito primario; il verbo non è stato eseguito perché è stato rilasciato in uno stato non valido.

AP_SEND_DATA_NOT_SEND_STATE

Codice restituito secondario; il TP locale ha rilasciato SEND_DATA, ma la conversazione non era in stato SEND.

AP_SEND_DATA_NOT_LL_BDY

Codice restituito secondario; tp avviato ma non ha completato l'invio di un record logico. Ciò si verifica solo quando il parametro di tipo è uno dei seguenti:

AP_SEND_DATA_CONFIRM

AP_SEND_DATA_DEALLOC_FLUSH

AP_SEND_DATA_DEALLOC_SYNC_LEVEL

AP_SEND_DATA_P_TO_R_FLUSH

AP_SEND_DATA_P_TO_R_SYNC_LEVEL

AP_ALLOCATION_ERROR
Codice restituito primario; APPC non è riuscito a allocare una conversazione. Lo stato della conversazione è impostato su RESET.

Questo codice può essere restituito tramite un verbo emesso dopo ALLOCATE.

AP_ALLOCATION_FAILURE_NO_RETRY

Codice restituito secondario; La conversazione non può essere allocata a causa di una condizione permanente, ad esempio un errore di configurazione o un errore del protocollo di sessione. Per determinare l'errore, l'amministratore di sistema deve esaminare il file di log degli errori. Non ripetere l'allocazione fino a quando l'errore non è stato corretto.

AP_ALLOCATION_FAILURE_RETRY

Codice restituito secondario; Impossibile allocare la conversazione a causa di una condizione temporanea, ad esempio un errore di collegamento. Il motivo dell'errore viene registrato nel log degli errori di sistema. Ripetere l'allocazione.

AP_CONVERSATION_TYPE_MISMATCH

Codice restituito secondario; l'lu partner o tp non supporta il tipo di conversazione (di base o mappato) specificato nella richiesta di allocazione.

AP_PIP_NOT_ALLOWED

Codice restituito secondario; la richiesta di allocazione specificata dai dati PIP, ma il tp del partner non richiede questi dati o l'lu del partner non la supporta.

AP_PIP_NOT_SPECIFIED_CORRECTLY

Codice restituito secondario; il tp del partner richiede dati PIP, ma la richiesta di allocazione non ha specificato dati PIP o un numero errato di parametri.

AP_SECURITY_NOT_VALID

Codice restituito secondario; l'identificatore utente o la password specificati nella richiesta di allocazione non sono stati accettati dal lu partner.

AP_SYNC_LEVEL_NOT_SUPPORTED

Codice restituito secondario; il tp del partner non supporta il sync_level (AP_NONE o AP_CONFIRM_SYNC_LEVEL) specificato nella richiesta di allocazione oppure il sync_level non è stato riconosciuto.

AP_TP_NAME_NOT_RECOGNIZED

Codice restituito secondario; l'lu partner non riconosce il nome TP specificato nella richiesta di allocazione.

AP_TRANS_PGM_NOT_AVAIL_NO_RETRY

Codice restituito secondario; l'lu remoto ha rifiutato la richiesta di allocazione perché non è stato in grado di avviare il tp del partner richiesto. La condizione è permanente. Il motivo dell'errore può essere connesso al nodo remoto. Non ripetere l'allocazione fino a quando l'errore non è stato corretto.

AP_TRANS_PGM_NOT_AVAIL_RETRY

Codice restituito secondario; l'lu remoto ha rifiutato la richiesta di allocazione perché non è stato in grado di avviare il tp del partner richiesto. La condizione può essere temporanea, ad esempio un timeout. Il motivo dell'errore può essere connesso al nodo remoto. Ripetere l'allocazione.

AP_COMM_SUBSYSTEM_ABENDED
Codice restituito primario; indica una delle condizioni seguenti:

  • Il nodo usato da questa conversazione ha rilevato un ABEND.

  • La connessione tra il tp e il nodo pu 2.1 è stata interrotta (errore LAN).

  • SnaBase nel computer tp ha rilevato un ABEND.

    L'amministratore di sistema deve esaminare il log degli errori per determinare il motivo di ABEND.

    AP_COMM_SUBSYSTEM_NOT_LOADED
    Codice restituito primario; Impossibile caricare o terminare un componente richiesto durante l'elaborazione del verbo. Pertanto, la comunicazione non poteva avvenire. Contattare l'amministratore di sistema per un'azione correttiva.

    Quando questo codice restituito viene usato con ALLOCATE, può indicare che non è stato possibile trovare alcun sistema di comunicazione per supportare l'lu locale. Ad esempio, l'alias LU locale specificato con TP_STARTED non è corretto o non è stato configurato. Si noti che se lu_alias o mode_name è inferiore a otto caratteri, è necessario assicurarsi che questi campi siano riempiti con spazi a destra. Questo errore viene restituito se questi parametri non vengono riempiti con spazi, poiché non è disponibile alcun nodo in grado di soddisfare la richiesta ALLOCATE .

    Quando ALLOCATE produce questo codice restituito per un sistema client host Integration Server configurato con più nodi, esistono due codici restituiti secondari come indicato di seguito:

    0xF0000001

    Codice restituito secondario; nessun nodo è stato avviato.

    0xF0000002

    Codice restituito secondario; almeno un nodo è stato avviato, ma l'lu locale (quando viene emesso TP_STARTED ) non è configurato in alcun nodo attivo. Il problema potrebbe essere uno dei seguenti:

  • Il nodo con l'lu locale non viene avviato.

  • L'lu locale non è configurato.

    AP_CONV_FAILURE_NO_RETRY
    Codice restituito primario; la conversazione è stata terminata a causa di una condizione permanente, ad esempio un errore del protocollo di sessione. L'amministratore di sistema deve esaminare il log degli errori di sistema per determinare la causa dell'errore. Non ritentare la conversazione fino a quando l'errore non è stato corretto.

    AP_CONV_FAILURE_RETRY
    Codice restituito primario; la conversazione è stata terminata a causa di un errore temporaneo. Riavviare il tp per verificare se il problema si verifica di nuovo. In caso affermativo, l'amministratore di sistema deve esaminare il log degli errori per determinare la causa dell'errore.

    AP_CONVERSATION_TYPE_MIXED
    Codice restituito primario; il tp ha emesso verbi di conversazione di base e mappati. È possibile emettere un solo tipo in una singola conversazione.

    AP_INVALID_VERB_SEGMENT
    Codice restituito primario; VCB si estende oltre la fine del segmento di dati.

    AP_PROG_ERROR_PURGING
    Codice restituito primario; durante lo stato RECEIVE, PENDING, PENDING_POST, CONFIRM, CONFIRM_SEND o CONFIRM_DEALLOCATE, il partner TP ha emesso SEND_ERROR con err_type impostato su AP_PROG . I dati inviati ma non ancora ricevuti vengono eliminati.

    AP_STACK_TOO_SMALL
    Codice restituito primario; le dimensioni dello stack dell'applicazione sono troppo piccole per eseguire il verbo. Aumentare le dimensioni dello stack dell'applicazione.

    AP_CONV_BUSY
    Codice restituito primario; può essere presente un solo verbo di conversazione in sospeso alla volta in qualsiasi conversazione. Ciò può verificarsi se il tp locale ha più thread e più thread eseguono chiamate APPC usando lo stesso conv_id.

    AP_THREAD_BLOCKING
    Codice restituito primario; il thread chiamante è già in una chiamata di blocco.

    AP_UNEXPECTED_DOS_ERROR
    Codice restituito primario; il sistema operativo ha restituito un errore ad APPC durante l'elaborazione di una chiamata APPC dal tp locale. Il codice restituito dal sistema operativo viene restituito tramite il secondary_rc. Viene visualizzato nell'ordine di scambio dei byte Intel. Se il problema persiste, consultare l'amministratore di sistema.

    AP_DEALLOC_ABEND_PROG
    Codice restituito primario; la conversazione è stata deallocata per uno dei motivi seguenti:

  • Il tp del partner ha emesso DEALLOCATE con dealloc_type impostato su AP_ABEND_PROG.

  • Il partner TP ha rilevato un ABEND, causando l'invio di una richiesta DEALLOCATE da parte del partner LU.

    AP_DEALLOC_ABEND_SVC
    Codice restituito primario; la conversazione è stata deallocata perché il partner TP ha emesso DEALLOCATE con dealloc_type impostato su AP_ABEND_SVC.

    AP_DEALLOC_ABEND_TIMER
    Codice restituito primario; la conversazione è stata deallocata perché il partner TP ha emesso DEALLOCATE con dealloc_type impostato su AP_ABEND_TIMER.

    AP_SVC_ERROR_PURGING
    Codice restituito primario; il partner TP (o lu partner) ha emesso un verbo SEND_ERROR con err_type impostato su AP_SVC mentre è in RECEIVE, PENDING_POST, CONFIRM, CONFIRM_SEND o CONFIRM_DEALLOCATE stato. È possibile che i dati inviati al tp del partner siano stati eliminati.

Commenti

La conversazione deve essere in stato SEND quando il tp rilascia questo verbo. Le modifiche dello stato, in base alle primary_rc, sono riepilogate nella tabella seguente.

Primary_rc Nuovo stato
AP_OK Nessuna modifica
AP_ALLOCATION_ERROR RESET
AP_CONV_FAILURE_RETRY RESET
AP_CONV_FAILURE_NO_RETRY RESET
AP_DEALLOC_ABEND RESET
AP_DEALLOC_ABEND_PROG RESET
AP_DEALLOC_ABEND_SVC RESET
AP_DEALLOC_ABEND_TIMER RESET
AP_PROG_ERROR_PURGING RECEIVE
AP_SVC_ERROR_PURGING RECEIVE

SEND_DATA può attendere per un periodo illimitato perché il tp del partner non ha emesso un verbo di ricezione. In questo caso, il buffer di invio può riempirsi.

I dati raccolti nel buffer di invio dell'lu locale vengono trasmessi all'lu partner (e al partner TP) quando si verifica una delle condizioni seguenti:

  • Il buffer di invio viene riempito.

  • Il tp locale rilascia FLUSH, CONFIRM o DEALLOCATE (o un altro verbo che scarica il buffer di invio dell'lu).