Condividi tramite


Allocare (CPI-C)

La chiamata Allocate (nome funzione cmallc) viene emessa dal programma chiamante per allocare una conversazione con il programma partner, usando le caratteristiche di conversazione correnti. CPI-C può anche allocare una sessione tra l'unità logica locale (LU) e l'lu partner, se non ne esiste già uno.

Sintassi

  
CM_ENTRY Allocate(   
  unsigned char FAR *conversation_ID,    
    CM_INT32 FAR *return_code              
);  

Parametri

conversation_ID
Parametro fornito. Specifica l'identificatore della conversazione. Il valore di questo parametro è stato restituito da Initialize_Conversation.

return_code
Codice restituito da questa chiamata. I codici restituiti validi sono elencati più avanti in questo argomento.

Codici di ritorno

CM_OK
Codice restituito primario; la chiamata eseguita correttamente.

CM_OPERATION_NOT_ACCEPTED
Codice restituito primario; questo valore indica che un'operazione precedente in questa conversazione è incompleta.

CM_OPERATION_INCOMPLETE
Codice restituito primario; È stata avviata un'operazione non bloccante nella conversazione, ma non è stata completata. Il programma può emettere Wait_For_Conversation attendere il completamento dell'operazione o Cancel_Conversation annullare l'operazione e la conversazione.

CM_PARAMETER_ERROR
Codice restituito primario; si è verificato uno dei seguenti:

  • Il nome della modalità derivato dalle informazioni sul lato o impostato da Set_Mode_Name non è valido.

  • Il nome della modalità viene usato dai programmi di transazione del servizio SNA (TP); il programma chiamante non dispone dell'autorità per usare questo nome di modalità. Un esempio è SNASVCMG.

  • Il programma partner derivato dalle informazioni sul lato è un servizio SNA TP; il programma locale non dispone del privilegio necessario per allocare una conversazione a un tp di servizio SNA.

  • Il programma partner è un servizio TP, che partecipa a conversazioni di base, ma la conversazione è impostata su CM_MAPPED_CONVERSATION.

  • Il nome lu partner derivato dalle informazioni sul lato o impostato da Set_Partner_LU_Name non è valido.

    CM_PROGRAM_PARAMETER_CHECK
    Codice restituito primario; il valore specificato da conversation_ID non è valido oppure l'indirizzo di una variabile non è valido.

    CM_PROGRAM_STATE_CHECK
    Codice restituito primario; la conversazione non è in stato INITIALIZE.

    CM_PRODUCT_SPECIFIC_ERROR
    Codice restituito primario; si è verificato un errore specifico del prodotto ed è stato registrato nel log degli errori dei prodotti.

    CM_UNSUCCESSFUL
    Codice restituito primario; la caratteristica del controllo restituito delle conversazioni è impostata su CM_IMMEDIATE e l'lu locale non ha una sessione di contesa disponibile.

    I codici restituiti seguenti possono essere generati se il tipo di controllo restituito delle conversazioni è impostato su CM_WHEN_SESSION_ALLOCATED.

    CM_ALLOCATE_FAILURE_NO_RETRY
    Codice restituito primario; 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 ritentare l'allocazione fino a quando l'errore non è stato corretto.

    CM_ALLOCATE_FAILURE_RETRY
    Codice restituito primario; 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.

    Modifiche dello stato

    La conversazione deve essere in stato INITIALIZE quando viene emesso Allocate.

    Le modifiche dello stato, riepilogate nella tabella seguente, si basano sul valore del parametro return_code .

return_code Nuovo stato
CM_OK SEND
CM_ALLOCATE_FAILURE_NO_RETRY RESETTARE
CM_ALLOCATE_FAILURE_RETRY RESETTARE
Tutti gli altri Nessuna modifica

Osservazioni:

Il tipo di conversazione allocata è basato sulla caratteristica del tipo di conversazione: mappata o di base.

Quando la conversazione è stata allocata da questa chiamata, non è possibile modificare le caratteristiche di conversazione seguenti:

  • Tipo di conversazione

  • Nome modalità

  • Nome lu partner

  • Nome del programma partner

  • Controllo Restituito

  • Livello di sincronizzazione

  • Sicurezza delle conversazioni

  • ID utente

  • Parola d’ordine

    Per inviare immediatamente la richiesta di allocazione, il programma chiamante può emettere Flush o Confirm immediatamente dopo Allocate. In caso contrario, la richiesta di allocazione si accumula con altri dati nel buffer di invio delle unità organizzative locali fino a quando il buffer non è pieno.

    Eseguendo Conferma dopo Allocate, il programma chiamante può determinare immediatamente se l'allocazione è riuscita (se il livello di sincronizzazione della conversazione è impostato su CM_CONFIRM).

    Se il lu partner rifiuta la richiesta di allocazione generata da Allocate, l'errore viene restituito al programma richiamante in una chiamata successiva.