SEND_ERROR

Il verbo SEND_ERROR notifica al programma di transazione partner (TP) che il TP locale ha rilevato un errore a livello di applicazione.

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

Sintassi

  
struct send_error {  
    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       err_type;  
    unsigned char       err_dir;  
    unsigned char       reserv3;  
    unsigned short      log_dlen;  
    unsigned char FAR * log_dptr;  
};   

Members

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

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 ALLOCATEin la chiamata TP o da RECEIVE_ALLOCATE nel TP richiamato.

rts_rcvd
Parametro restituito. Indica se il partner TP ha rilasciato REQUEST_TO_SEND. I valori possibili includono:

  • 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.

    err_type
    Parametro fornito. Indica il tipo di errore segnalato, programma applicazione o programma di servizio.

    AP_PROG indica che l'errore deve essere segnalato a un programma dell'applicazione end-user. Questo valore causa l'invio di uno dei codici restituiti seguenti al partner TP:

    AP_PROG_ERROR_NO_TRUNC

    AP_PROG_ERROR_PURGING

    AP_PROG_ERROR_TRUNC

    AP_SVC indica che l'errore deve essere segnalato a un programma di servizio. Questo valore causa l'invio di uno dei codici restituiti seguenti al partner TP:

    AP_SVC_ERROR_NO_TRUNC

    AP_SVC_ERROR_PURGING

    AP_SVC_ERROR_TRUNC

    err_dir
    Parametro fornito. Indica se l'errore è con i dati appena ricevuti o con i dati che si sta per inviare. Usare questo parametro solo quando la conversazione è in SEND_PENDING stato. Il parametro viene ignorato in caso contrario. I valori seguenti sono consentiti:

  • AP_RCV_DIR_ERROR indica che il TP ha rilasciato SEND_ERROR dopo aver rilevato un errore associato ai dati appena ricevuti.

  • AP_SEND_DIR_ERROR indica che il TP ha rilasciato SEND_ERROR dopo aver rilevato un errore associato ai dati da inviare. Ad esempio, il TP ha rilevato un errore durante la lettura dei dati dall'unità disco.

    reserv3
    Campo riservato.

    log_dlen
    Parametro fornito per conversazioni di base; specifica il numero di byte di dati da inviare al file di log degli errori. L'intervallo è compreso tra 0 e 32767.

    Una lunghezza pari a zero indica che non sono presenti dati del log degli errori.

    log_dptr
    Parametro fornito per conversazioni di base; specifica l'indirizzo del buffer di dati contenente informazioni sugli errori. I dati vengono inviati al log degli errori locale e all'unità logica partner (LU).

    Questo parametro viene usato da SEND_ERROR se log_dlen è maggiore di zero.

    Per 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.

    Il TP deve formattare i dati di errore come variabile del log degli errori GDS. Per altre informazioni, vedere i manuali IBM SNA.

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_TP_ID

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

AP_BAD_ERROR_DIRECTION

Codice restituito secondario; il err_dir specificato non è stato riconosciuto dall'APPC.

AP_INVALID_DATA_SEGMENT

Codice restituito secondario; i dati di errore per il file di log erano più lunghi del segmento allocato per contenere i dati di errore o l'indirizzo del buffer dei dati di errore non è corretto.

AP_SEND_ERROR_BAD_TYPE

Codice restituito secondario; il valore di err_type non è valido.

AP_SEND_ERROR_LOG_LL_WRONG

Codice restituito secondario; il campo LL della variabile GDS del log degli errori non corrisponde alla lunghezza effettiva dei dati.

I codici restituiti seguenti possono essere generati quando SEND_ERROR viene rilasciato in qualsiasi stato consentito:

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_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.

    I codici restituiti seguenti possono essere generati solo se SEND_ERROR viene emesso nello stato SEND:

    AP_ALLOCATION_ERROR
    Codice restituito primario; APPC non è riuscito ad 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_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.

    I codici restituiti seguenti possono essere generati solo se SEND_ERROR viene emesso nello stato SEND:

    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 SEND_ERROR con err_type impostato su AP_SVC durante lo stato RECEIVE, PENDING_POST, CONFIRM, CONFIRM_SEND o CONFIRM_DEALLOCATE. È possibile che i dati inviati al tp del partner siano stati eliminati.

    Il codice restituito seguente può essere generato solo se SEND_ERROR viene emesso nello stato RECEIVE:

    AP_DEALLOC_NORMAL
    Codice restituito primario; questo codice restituito non indica un errore.

    Il partner TP ha emesso DEALLOCATE con dealloc_type impostato su uno dei seguenti:

  • AP_FLUSH

  • AP_SYNC_LEVEL con il livello di sincronizzazione della conversazione specificata come AP_NONE

Commenti

La conversazione può trovarsi in qualsiasi stato, ad eccezione di RESET quando il tp rilascia questo verbo. Lo stato della conversazione deve essere SEND_PENDING se viene usato err_dir .

Il tp locale invia immediatamente la notifica di errore al tp del partner; non contiene le informazioni nel buffer di invio del lu locale.

Al termine dell'esecuzione di questo verbo, la conversazione è in stato SEND per il tp locale e nello stato RECEIVE per il partner TP.

Il nuovo stato è determinato da primary_rc. Nella tabella seguente sono riepilogate le possibili modifiche dello stato.

Primary_rc Nuovo stato
AP_OK SEND
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_DEALLOC_NORMAL RESET
AP_PROG_ERROR_PURGING RECEIVE
AP_SVC_ERROR_PURGING RECEIVE

Se la conversazione è in stato RECEIVE quando il tp genera SEND_ERROR, i dati in ingresso vengono eliminati dall'APPC. Questi dati includono:

  • Dati inviati da SEND_DATA.

  • Indicatori di codice restituiti.

  • Richieste di conferma.

  • Richieste di deallocazione.

    APPC non elimina un indicatore da richiesta a invio in ingresso. APPC sostituisce gli indicatori di codice restituito in ingresso eliminati con altri codici restituiti. Il codice restituito primario AP_OK sostituisce gli indicatori di codice restituiti eliminati seguenti:

    AP_PROG_ERROR_NO_TRUNC

    AP_PROG_ERROR_PURGING

    AP_PROG_ERROR_TRUNC

    AP_SVC_ERROR_NO_TRUNC

    AP_SVC_ERROR_PURGING

    AP_SVC_ERROR_TRUNC

    Il codice restituito primario AP_DEALLOC_NORMAL sostituisce gli indicatori di codice restituiti eliminati seguenti:

    AP_ALLOCATION_ERROR

    AP_ALLOCATION_FAILURE_NO_RETRY

    AP_ALLOCATION_FAILURE_RETRY

    AP_CONVERSATION_TYPE_MISMATCH

    AP_DEALLOC_ABEND

    AP_DEALLOC_ABEND_PROG

    AP_DEALLOC_ABEND_SVC

    AP_DEALLOC_ABEND_TIMER

    AP_PIP_NOT_ALLOWED

    AP_PIP_NOT_SPECIFIED_CORRECTLY

    AP_SECURITY_NOT_VALID

    AP_SYNC_LEVEL_NOT_SUPPORTED

    AP_TP_NAME_NOT_RECOGNIZED

    AP_TRANS_PGM_NOT_AVAIL_NO_RETRY

    AP_TRANS_PGM_NOT_AVAIL_RETRY

    Quando la conversazione è in SEND_PENDING stato, APPC segnala i codici restituiti seguenti al tp del partner in base al valore in err_dir:

    AP_PROG_ERROR_PURGING
    Il tp locale ha emesso SEND_ERROR con RECEIVE come err_dir.

    AP_PROG_ERROR_NO_TRUNC
    Il tp locale ha emesso SEND_ERROR con SEND come err_dir.

    AP_SVC_ERROR_PURGING
    Il tp locale ha emesso SEND_ERROR con RECEIVE come err_dir.

    AP_SVC_ERROR_NO_TRUNC
    Il tp locale ha emesso SEND_ERROR con SEND come err_dir.