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

Trasferimento dei parametri

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

Direttamente
I parametri vengono trasferiti direttamente ad un programma REXX esterno tramite l'istruzione %EXEC. Ad esempio:
%function(DTW_REXX) rexx1() {                               
  %EXEC{                                   
    /QSYS.LIB/NETDATA.LIB/QREXXSRC.FILE/CALL1.MBR $(INPARM1)
  %}                            
%}

Vengono annullati i riferimenti alla variabile di Net.Data INPARM1 e la variabile viene trasferita al programma REXX esterno. Il programma REXX fa riferimento alla variabile utilizzando l'istruzione REXX PARSE ARG. 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, tramite il pool di variabili del programma REXX. Quando un programma REXX viene avviato, viene creato uno spazio contenente informazioni su tutte le variabili gestito dall'interprete REXX. Questo spazio è chiamato pool di variabili.

Quando viene chiamata una funzione di ambiente di linguaggio REXX (DTW_REXX), tutti i parametri input (IN) o input/output (INOUT) vengono memorizzati nel pool di variabili dall'ambiente di linguaggio REXX prima di eseguire il programma REXX. Quando un programma REXX viene richiamato, esso può accedere direttamente a queste variabili. Una volta completato senza errori il programma REXX, l'ambiente di linguaggio DTW_REXX 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 dal pool di variabili ed aggiorna il valore del parametro di funzione con il nuovo valore. Quando Net.Data riceve il controllo, aggiorna tutti i parametri OUT o INOUT con i nuovi valori ottenuti dall'ambiente di linguaggio REXX. Ad esempio:

%define a = "3"
%define b = "0"
%function(DTW_REXX) double_func(IN inp1, OUT outp1){
   outp1 = 2*inp1
%}
 
%HTML(REPORT) { 
Value of b is $(b), @double_func(a, b) Value of b is $(b)
%}

Nell'esempio precedente, la chiamata @double_func trasferisce due parametri, a e b. La funzione REXX double_func raddoppia il primo parametro e memorizza il risultato nel secondo parametro. Quando Net.Data richiama la macro, il valore di b è 6.

E' possibile trasferire ad un programma REXX le tabelle di Net.Data. Un programma REXX accede ai valori di un parametro di tabella macro di Net.Data come variabili stem REXX. Per un programma REXX, le intestazioni della colonna e i valori del campo 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_N.i.j, in cui i è il numero di riga e j è il numero di colonna. Il numero di righe della tabella è myTable_ROWS e il numero di colonne nella tabella è myTable_COLS.


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