Net.Data: Guida alla gestione e alla programmazione per OS/400

Trasferimento dei parametri

Esistono due modi per trasferire informazioni ad un programma richiamato dall'ambiente di linguaggio System (DTW_SYSTEM), direttamente e indirettamente.

Direttamente
I parametri vengono trasferiti al programma direttamente sulla chiamata. Ad esempio:
%DEFINE INPARM1 = "SWITCH1"
                           
%function(DTW_SYSTEM) sys1() {
  %EXEC{
  /QSYS.LIB/NETDATA.LIB/RPGCALL1.PGM 
    ('$(INPARM1)'  'LITERALSTRING') 
 %}
%}

Vengono annullati i riferimenti alla variabile di Net.Data INPARM1 e la variabile viene trasferita al programma. I parametri vengono trasferiti al programma nello stesso modo in cui il trasferimento avviene quando il programma viene chiamato dal pannello di immissione comandi. I parametri trasferiti al programma con questo metodo vengono considerati parametri di tipo di immissione (i parametri trasferiti al programma possono essere utilizzati e gestiti dal programma, ma le modifiche ai parametri non si riflettono su Net.Data).

Indirettamente

I parametri vengono trasferiti indirettamente utilizzando le variabili di ambiente. Le variabili di ambiente sono stringhe di caratteri in formato "nome=valore" memorizzate in uno spazio di ambiente esterno al programma. Le stringhe vengono memorizzate in uno spazio temporaneo associato al processo.

Quando Net.Data chiama una funzione di ambiente di linguaggio DTW (DTW_REXX), tutti i parametri input (IN) o input/output (INOUT) vengono memorizzati nello spazio di ambiente prima di eseguire l'istruzione all'interno del blocco %EXEC. Una volta completata senza errori l'istruzione, l'ambiente di linguaggio DTW_SYSTEM determina se esistono parametri di funzione output (OUT o INOUT). In questo caso, l'ambiente di linguaggio riprende il valore corrispondente al parametro di funzione dallo spazio di ambiente ed aggiorna il valore del parametro di funzione con il nuovo valore. Quando Net.Data riceve il controllo, aggiorna a turno tutti i parametri OUT o INOUT con i nuovi valori ottenuti dall'ambiente di linguaggio DTW_SYSTEM.

Impostare e richiamare le variabili di ambiente utilizzando le API descritte in Tabella 3:

Tabella 3. API di variabile di ambiente
Linguaggio di programmazione ILE Per richiamare, utilizzare... Per impostare, utilizzare...
C, C++ getenv() putenv()
CL(1), RPG, COBOL QtmhGetEnv()(2) QtmhPutEnv()(3)

  1. Per OS/400 V3R7 e successive, è anche possibile utilizzare i comandi CHGENVVAR e ADDENVVAR CL per impostare una variabile di ambiente.

  2. QtmhGetEnv() viene fornito come parte di IBM TCP/IP Connectivity Utilities/400.

  3. QtmhPutEnv() in origine non veniva fornita come parte di IBM TCP/IP ConnectivityUtilities/400 per V3R2 e V3R7. E' stata aggiunta successivamente nel ciclo e può essere ottenuta tramite le PTF V3R2 5763TC1-SF40953 o V3R7 5716TC1-SF40954.

E' possibile trasferire le tabelle di Net.Data ad un programma richiamato dall'ambiente di linguaggio System. Il programma accede ai valori di un parametro di tabella macro di Net.Data con il loro nome Net.Data. Le intestazioni della colonna e i valori dei campi sono contenuti nelle variabili identificate dal nome tabella e dal numero colonna. Ad esempio, nella tabella myTable, le intestazioni della colonna sono myTable_N_j e i valori dei campi sono myTable_V_i_j, in cui i è il numero di riga e j è il numero di colonna. Il numero di righe e delle colonne per la tabella sono rappresentate da myTable_ROWS e myTable_COLS.

Si consiglia di non trasferire tabelle con molte righe poichè il numero delle variabili di ambiente per il processo è limitato.


[ Inizio pagina | Pagina precedente | Pagina successiva | Indice | Indice analitico ]