Condividi tramite


RUI_READ

Il verbo RUI_READ riceve risposte, comandi SNA e dati in un buffer di applicazioni luA (Logical Unit Application) di Microsoft® Windows®.

Nella struttura seguente viene descritto il membro LUA_COMMON del blocco di controllo verbo (VCB) utilizzato da RUI_READ.

Sintassi

  
struct LUA_COMMON {  
    unsigned short lua_verb;  
    unsigned short lua_verb_length;  
    unsigned short lua_prim_rc;  
    unsigned long  lua_sec_rc;  
    unsigned short lua_opcode;  
    unsigned long  lua_correlator;  
    unsigned char  lua_luname[8];  
    unsigned short lua_extension_list_offset;  
    unsigned short lua_cobol_offset;  
    unsigned long  lua_sid;  
    unsigned short lua_max_length;  
    unsigned short lua_data_length;  
    char FAR *     lua_data_ptr;  
    unsigned long  lua_post_handle;  
    struct LUA_TH  lua_th;  
    struct LUA_RH  lua_rh;  
    struct LUA_FLAG1 lua_flag1;  
    unsigned char  lua_message_type;  
    struct LUA_FLAG2 lua_flag2;   
    unsigned char  lua_resv56[7];  
    unsigned char  lua_encr_decr_option;  
};  

Members

lua_verb
Parametro fornito. Contiene il codice verbo LUA_VERB_RUI per i verbi URI (Request Unit Interface).

lua_verb_length
Parametro fornito. Specifica la lunghezza in byte del VCB LUA. Deve contenere la lunghezza del record verbo da emettere.

lua_prim_rc
Codice restituito primario impostato da LUA al completamento del verbo. I codici restituiti validi variano a seconda del verbo LUA emesso.

lua_sec_rc
Codice restituito secondario impostato da LUA al completamento del verbo. I codici restituiti validi variano a seconda del verbo LUA emesso.

lua_opcode
Parametro fornito. Contiene il codice del comando LUA (codice dell'operazione verbo) per il verbo da emettere, LUA_OPCODE_RUI_READ.

lua_correlator
Parametro fornito. Contiene un valore fornito dall'utente che collega il verbo con altre informazioni fornite dall'utente. LUA non usa o modifica queste informazioni. Questo parametro è facoltativo e,

lua_luname
Parametro fornito. Specifica il nome ASCII dell'lu locale utilizzato dalla sessione LUA di Windows.

RUI_READ richiede questo parametro solo se lua_sid è zero.

Questo parametro è lungo otto byte, riempito a destra con spazi (0x20) se il nome è più breve di otto caratteri.

lua_extension_list_offset
Non usato dalla URI in Host Integration Server e deve essere impostato su zero.

lua_cobol_offset
Non usato da LUA in Microsoft® Host Integration Server e deve essere zero.

lua_sid
Parametro fornito e restituito. Specifica l'identificatore di sessione e viene restituito da SLI_OPEN e RUI_INIT. Altri verbi usano questo parametro per identificare la sessione usata per il comando . Se altri verbi usano il parametro lua_luname per identificare le sessioni, impostare il parametro lua_sid su zero.

lua_max_length
Specifica la lunghezza del buffer ricevuto per RUI_READ e SLI_RECEIVE. Non usato da altri verbi URI e SLI e deve essere impostato su zero.

lua_data_length
Parametro restituito. Specifica la lunghezza dei dati restituiti in lua_peek_data per il verbo RUI_BID .

lua_data_ptr
Puntatore al buffer fornito dall'applicazione che deve ricevere i dati da un verbo RUI_READ . Entrambi i comandi e i dati SNA vengono inseriti in questo buffer e possono essere in formato EBCDIC.

Quando viene eseguita RUI_READ , questo parametro punta alla posizione in cui ricevere i dati dall'host.

lua_post_handle
Parametro fornito. Utilizzato in Microsoft Windows Server se la notifica asincrona deve essere eseguita dagli eventi. Questa variabile contiene l'handle dell'evento da segnalare o un handle di finestra.

lua_th
Parametro restituito. Contiene l'intestazione di trasmissione SNA (TH) del messaggio inviato o ricevuto. Vari sottoparametri sono impostati per le funzioni di scrittura e restituite per le funzioni di lettura e offerta. I relativi sottoparametri sono i seguenti:

lua_th.flags_fid

Tipo di identificazione del formato 2, quattro bit.

lua_th.flags_mpf

Campo di mapping segmentazione, due bit. Definisce il tipo di segmento di dati. I valori seguenti sono validi:

0x00 Segmento intermedio0x04 Segmento ultimo0x08 Segmento primo0x0C Solo segmento

lua_th.flags_odai

Indicatore dell'assegnatore OAF-DAF (Address Field-DAF) di origine, un bit.

lua_th.flags_efi

Indicatore di flusso accelerato, un bit.

lua_th.daf

Campo indirizzo di destinazione (DAF), un carattere senza segno.

lua_th.oaf

Campo indirizzo di origine (OAF), un carattere senza segno.

lua_th.snf

Campo numero di sequenza, un carattere senza segno[2].

lua_rh
Parametro restituito. Contiene l'intestazione richiesta/risposta SNA del messaggio inviato o ricevuto. Viene impostata per la funzione di scrittura e restituita dalle funzioni di lettura e offerta. I relativi sottoparametri sono i seguenti:

lua_rh.rri

Indicatore di risposta della richiesta, un bit.

lua_rh.ruc

Categoria UR, due bit. I valori seguenti sono validi:

LUA_RH_FMD (0x00) controllo di reteLUA_RH_NC (0x20) Controllo di reteLUA_RH_DFC (0x40) Controllo flusso di datiLUA_RH_SC (0x60) Controllo sessione

lua_rh.fi

Indicatore di formato, un bit.

lua_rh.sdi

Indicatore di rilevamento dei dati inclusi, un bit.

lua_rh.bci

Indicatore della catena di inizio, un bit.

lua_rh.eci

Indicatore catena finale, un bit.

lua_rh.dr1i

Indicatore di risposta definito 1, un bit.

lua_rh.dr2i

Indicatore di risposta definita 2, un bit.

lua_rh.ri

Indicatore di risposta dell'eccezione (per una richiesta) o indicatore del tipo di risposta (per una risposta), un bit.

lua_rh.qri

Indicatore di risposta in coda, un bit.

lua_rh.pi

Indicatore di velocità, un bit.

lua_rh.bbi

Indicatore parentesi quadre iniziale, un bit.

lua_rh.ebi

Indicatore parentesi quadra finale, un bit.

lua_rh.cdi

Indicatore di direzione di modifica, un bit.

lua_rh.csi

Indicatore di selezione del codice, un bit.

lua_rh.edi

Indicatore di dati crittografati, un bit.

lua_rh.pdi

Indicatore dati riempito, un bit.

lua_flag1
Parametro fornito. Contiene una struttura di dati contenente flag per i messaggi forniti dall'applicazione. I relativi sottoparametri sono i seguenti:

lua_flag1.bid_enable

Indicatore di abilitazione dell'offerta, un bit.

lua_flag1.close_abend

Indicatore immediato di chiusura, un bit.

lua_flag1.nowait

Nessuna attesa per il flag di dati, un bit.

lua_flag1.sscp_exp

Flusso accelerato di SSCP, un bit.

lua_flag1.sscp_norm

Flusso normale SSCP, un bit.

lua_flag1.lu_exp

Flusso accelerato lu, un bit.

lua_flag1.lu_norm

Flusso normale LU, un bit.

Impostare lua_flag1.nowait su 1 per indicare che si desidera che RUI_READ restituire immediatamente se i dati sono disponibili o meno per la lettura o impostarli su zero se si vuole che il verbo attenda i dati prima della restituzione.

Impostare lua_flag1.bid_enable su 1 per riabilitare il RUI_BID più recente (equivalente all'emissione di RUI_BID con esattamente gli stessi parametri di prima) o impostarlo su zero se non si vuole riabilitare RUI_BID.

Riabilitare l'RUI_BID precedente riutilizza il vcb originariamente allocato, quindi il vcb non deve essere stato liberato o modificato.

Impostare uno o più dei flag seguenti su 1 per indicare da quale flusso di messaggi leggere i dati:

lua_flag1.sscp_exp

lua_flag1.lu_exp

lua_flag1.sscp_norm

lua_flag1.lu_norm

Se sono impostati più flag, vengono restituiti i dati con priorità più alta disponibili. L'ordine delle priorità (il primo più alto) è: SSCP accelerato, LU accelerato, normale SSCP, NORMALE LU. Il flag equivalente nel gruppo di lua_flag2 viene impostato per indicare da quale flusso sono stati letti i dati.

lua_message_type
Specifica il tipo di dati e comandi SNA in ingresso o in uscita. Parametro restituito. Specifica il tipo di messaggio SNA indicato per RUI_READ. I valori possibili sono:

LUA_MESSAGE_TYPE_LU_DATA

LUA_MESSAGE_TYPE_SSCP_DATA

LUA_MESSAGE_TYPE_RQR

LUA_MESSAGE_TYPE_BID

LUA_MESSAGE_TYPE_BIND

LUA_MESSAGE_TYPE_BIS

LUA_MESSAGE_TYPE_CANCEL

LUA_MESSAGE_TYPE_CHASE

LUA_MESSAGE_TYPE_CLEAR

LUA_MESSAGE_TYPE_CRV

LUA_MESSAGE_TYPE_LUSTAT_LU

LUA_MESSAGE_TYPE_LUSTAT_SSCP

LUA_MESSAGE_TYPE_QC

LUA_MESSAGE_TYPE_QEC

LUA_MESSAGE_TYPE_RELQ

LUA_MESSAGE_TYPE_RTR

LUA_MESSAGE_TYPE_SBI

LUA_MESSAGE_TYPE_SHUTD

LUA_MESSAGE_TYPE_SIGNAL

LUA_MESSAGE_TYPE_SDT

LUA_MESSAGE_TYPE_STSN

LUA_MESSAGE_TYPE_UNBIND

LU_DATA, LUSTAT_LU, LUSTAT_SSCP e SSCP_DATA non sono comandi SNA.

lua_flag2
Parametro restituito. Contiene i flag per i messaggi restituiti da LUA. I relativi sottoparametri sono i seguenti:

lua_flag2.bid_enable

Indica che RUI_BID è stato riabilitato se impostato su 1.

lua_flag2.async

Indica che il verbo dell'interfaccia LUA è stato completato in modo asincrono se impostato su 1.

lua_flag2.sscp_exp

Indica il flusso accelerato di SSCP se impostato su 1.

lua_flag2.sscp_norm

Indica il flusso normale di SSCP se impostato su 1.

lua_flag2.lu_exp

Indica il flusso accelerato lu se impostato su 1.

lua_flag2.lu_norm

Indica il flusso normale lu se impostato su 1.

lua_resv56
Riservato e deve essere impostato su zero.

lua_encr_decr_option
Riservato e deve essere impostato su zero.

Codici restituiti

LUA_OK
Codice restituito primario; il verbo eseguito correttamente.

LUA_DATA_INCOMPLETE

Codice restituito secondario; RUI_READ non è stato in grado di restituire tutti i dati ricevuti perché il buffer dei dati dell'applicazione (indicato da lua_max_length) non è abbastanza grande. Le richieste di RUI_READ successive possono essere inviate per recuperare i dati rimanenti delle URI.

Questo non è il comportamento predefinito per RUI_READ ed è abilitato solo quando lua_resv56[3] è impostato su un valore diverso da zero nel blocco di controllo verbo quando si chiama RUI_INIT durante la creazione della sessione. Per informazioni dettagliate, vedere Osservazioni.

LUA_CANCELED
Codice restituito primario; il verbo non è stato completato correttamente perché è stato annullato da un altro verbo o da un errore interno.

LUA_PURGED

Codice restituito secondario; RUI_READ è stato annullato da RUI_PURGE.

LUA_TERMINATED

Codice restituito secondario; RUI_TERM è stato emesso mentre RUI_READ era in sospeso.

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

LUA_BAD_DATA_PTR

Codice restituito secondario; il parametro lua_data_ptr contiene un valore non valido.

LUA_BAD_SESSION_ID

Codice restituito secondario; È stato specificato un valore non valido per lua_sid nel vcb.

LUA_BID_ALREADY_ENABLED

Codice restituito secondario; lua_flag1.bid_enable è stato impostato per riabilitare RUI_BID , ma il RUI_BID precedente era ancora in corso.

LUA_DUPLICATE_READ_FLOW

Codice restituito secondario; i flag di flusso nel gruppo di lua_flag1 specificato uno o più flussi di sessione per i quali RUI_READ era già in sospeso. È possibile attendere un solo RUI_READ alla volta in ogni flusso di sessione.

LUA_INVALID_FLOW

Codice restituito secondario; nessuno dei flag di flusso lua_flag1 è stato impostato. Almeno uno di questi flag deve essere impostato su 1 per indicare da quale flusso o flusso leggere.

LUA_INVALID_POST_HANDLE

Codice restituito secondario; per un sistema operativo Windows che usa eventi come metodo di registrazione asincrona, il VCB LUA di Windows non contiene un handle di evento valido.

LUA_NO_PREVIOUS_BID_ENABLED

Codice restituito secondario; lua_flag1.bid_enable è stato impostato per riabilitare RUI_BID, ma non è stato possibile abilitare RUI_BID precedenti. Per altre informazioni, vedere Note.

LUA_RESERVED_FIELD_NOT_ZERO

Codice restituito secondario; un campo riservato nel record verbo o un parametro non utilizzato da questo verbo è stato impostato su un valore diverso da zero.

LUA_VERB_LENGTH_INVALID

Codice restituito secondario; Un verbo LUA è stato emesso con il valore di lua_verb_length imprevisto da LUA.

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

LUA_NO_RUI_SESSION

Codice restituito secondario; RUI_INIT non è ancora stato completato correttamente per il nome lu specificato nel RUI_READ.

LUA_NEGATIVE_RSP
Codice restituito primario; indica uno dei due casi seguenti, che possono essere distinti dal codice restituito secondario:

  • LUA ha rilevato un errore nei dati ricevuti dall'host. Invece di passare il messaggio ricevuto all'applicazione in RUI_READ, LUA rimuove il messaggio (e il resto della catena se si trova in una catena) e invia una risposta negativa all'host. LUA informa l'applicazione su un RUI_READ o RUI_BID successivo che è stata inviata una risposta negativa.

  • L'applicazione LUA ha inviato in precedenza una risposta negativa a un messaggio al centro di una catena. LUA ha eliminato i messaggi successivi in questa catena e ora segnala all'applicazione che tutti i messaggi della catena sono stati ricevuti ed eliminati.

    LUA_SEC_RC

    Codice restituito secondario; questo parametro è un codice restituito secondario diverso da zero contenente il codice sense inviato all'host nella risposta negativa. Ciò indica che LUA ha rilevato un errore nei dati dell'host e ha inviato una risposta negativa all'host. Per informazioni sull'interpretazione dei valori di codice sense che possono essere restituiti, vedere Considerazioni su SNA con LUA.

    Un codice restituito secondario pari a zero indica che, dopo un RUI_WRITE precedente di una risposta negativa a un messaggio al centro di una catena, LUA ha ricevuto ed eliminato tutti i messaggi da questa catena.

    LUA_UNSUCCESSFUL
    Codice restituito primario; il record verbo specificato è valido, ma il verbo non è stato completato correttamente.

    LUA_DATA_TRUNCATED

    Codice restituito secondario; il parametro lua_data_length è minore della lunghezza effettiva dei dati ricevuti nel messaggio. Solo lua_data_length byte di dati sono stati restituiti al verbo; i dati rimanenti sono stati eliminati. Se si ottiene questo codice restituito secondario, vengono restituiti anche parametri aggiuntivi.

    LUA_NO_DATA

    Codice restituito secondario; lua_flag1.nowait è stato impostato per indicare la restituzione immediata senza attendere i dati e nessun dato è attualmente disponibile nel flusso o nei flussi di sessione specificati.

    LUA_INVALID_PROCESS

    Codice restituito secondario; il processo os/2 che ha emesso questo verbo non è lo stesso processo che ha emesso RUI_INIT per questa sessione. Solo il processo che ha avviato una sessione può emettere verbi in tale sessione.

    LUA_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 programma di transazione (TP) e il nodo unità fisica (PU) 2.1 è stato interrotto (errore LAN).

  • SnaBase nel computer TPS ha rilevato un ABEND.

    LUA_SESSION_FAILURE
    Codice restituito primario; è stato terminato un componente Host Integration Server necessario.

    LUA_LU_COMPONENT_DISCONNECTED

    Codice restituito secondario; indica che la sessione LUA non è riuscita a causa di un problema con il servizio di collegamento o con l'lu host.

    LUA_RUI_LOGIC_ERROR

    Codice restituito secondario; è stato rilevato un errore interno all'interno di LUA. Questo errore non deve verificarsi durante il normale funzionamento.

    LUA_INVALID_VERB
    Codice restituito primario; Il codice verbo o il codice dell'operazione o entrambi non sono validi. Il verbo non è stato eseguito.

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

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

    LUA_UNEXPECTED_DOS_ERROR
    Codice restituito primario; dopo aver eseguito una chiamata al sistema operativo, è stato ricevuto un codice restituito imprevisto del sistema operativo e viene specificato nel codice restituito secondario.

Commenti

RUI_INIT deve essere stato completato correttamente prima di RUI_READ viene emesso.

Mentre un RUI_READ esistente è in sospeso, è possibile eseguire un altro RUI_READ solo se specifica un flusso di sessione o un flusso di sessione diverso da verbi RUI_READ in sospeso. Non è possibile avere più di un RUI_READ in sospeso per lo stesso flusso di sessione.

È possibile specificare un flusso di messaggi specifico (LU normal, LU expedited, SSCP normal o SSCP accelerato) da cui leggere i dati oppure è possibile specificare più di un flusso di messaggi. È possibile avere più verbi RUI_READ in sospeso, purché nessuna di esse specifichi lo stesso flusso.

I dati vengono ricevuti dall'applicazione in uno dei quattro flussi di sessione. I quattro flussi di sessione, dalla priorità più alta alla più bassa sono:

  • SSCP accelerato

  • LU accelerato

  • SSCP normale

  • NORMALE LU

    Il tipo di flusso di dati che RUI_READ deve elaborare viene specificato nel parametro lua_flag1 . L'applicazione può anche specificare se vuole esaminare più tipi di flusso di dati. Quando vengono impostati più bit di flusso, la priorità più alta viene ricevuta per prima. Quando RUI_READ completa l'elaborazione, lua_flag2 indica il tipo di flusso specifico per cui i dati sono stati ricevuti dall'applicazione LUA di Windows.

    Se RUI_BID viene completato correttamente prima dell'emissione di un RUI_READ , l'interfaccia LUA di Windows può essere incaricata di riutilizzare gli ultimi verbi RUI_BID VCB. A tale scopo, eseguire il RUI_READ con lua_flag1.bid_enable set.

    Il parametro lua_flag1.bid_enable può essere usato solo se il parametro seguente è true:

  • RUI_BID è già stato rilasciato correttamente e è stato completato.

  • L'archiviazione allocata per RUI_BID non è stata liberata o modificata.

  • Nessun altro RUI_BID in sospeso.

    Quando si usa lua_flag1.bid_enable, l'archiviazione RUI_BID non deve essere liberata perché viene usato l'ultimo verbo VCB RUI_BID. Inoltre, quando si usa lua_flag1.bid_enable, verrà pubblicato il completamento corretto di RUI_BID .

    Se RUI_READ viene rilasciato con lua_flag1.nowait quando non sono disponibili dati per la ricezione, LUA_NO_DATA sarà il codice restituito secondario impostato dall'interfaccia LUA di Windows.

    Se i dati ricevuti sono più lunghi di lua_max_length, viene troncato. Vengono restituiti solo lua_max_length byte di dati. Vengono restituiti anche il codice restituito primario LUA_UNSUCCESSFUL e il codice restituito secondario LUA_DATA_TRUNCATED. La libreria URI restituisce il maggior numero possibile di dati nel buffer dei dati dell'applicazione, ma i dati rimanenti nell'URI vengono eliminati e non possono essere estratti nelle richieste di RUI_READ successive. Ciò impone all'applicazione URI di allocare un buffer di dati RUI_READ abbastanza grande per gestire le dimensioni complete delle UR.

    Questo comportamento predefinito può essere modificato impostando il valore di lua_resv56[3] su un valore diverso da zero nel blocco di controllo verbo quando si chiama RUI_INIT durante l'impostazione della sessione. In questo caso, se i dati ricevuti sono più lunghi di lua_max_length, una richiesta di RUI_READ restituirà un codice restituito primario di LUA_OK e un codice restituito secondario di LUA_DATA_INCOMPLETE. Un'applicazione URI può quindi emettere nuove chiamate RUI_READ e ricevere il resto dei dati.

    Questo miglioramento non è stato adottato come parte dello standard DELL'API LUA di Microsoft Windows Open Services (WOSA) e differisce dall'implementazione di URI da IBM.

    Dopo che un messaggio è stato letto usando RUI_READ, viene rimosso dalla coda dei messaggi in ingresso e non è possibile accedere di nuovo. (RUI_BID può essere usato come lettura non strutturata. L'applicazione può usarla per controllare il tipo di dati disponibili, ma i dati rimangono nella coda in ingresso e non devono essere usati immediatamente.

    Il pacing può essere usato nella metà secondaria primaria (specificata nella configurazione host) per proteggere l'applicazione LUA da inondare con messaggi. Se l'applicazione LUA è lenta a leggere i messaggi, Host Integration Server ritarda l'invio di risposte di pacing all'host per rallentarlo.

Vedere anche

RUI_BID
RUI_INIT
RUI_TERM
RUI_WRITE
SLI_OPEN
SLI_PURGE
SLI_RECEIVE
SLI_SEND