Ulteriori informazioni sulle variabili d'ambiente dinamiche di AE

La variabile NZAE_DYNAMIC_ENVIRONMENT attiva gli argomenti basati sulle variabili dinamiche dell'ambiente AE. (Può essere impostato anche con l'opzione --dynamic di register_ae) Se impostato a 0, le variabili d'ambiente predefinite e dinamiche di AE non sono supportate. Se impostato su 2, il sistema utilizza l'ultimo argomento dell'AE (stringa) per specificare i valori.
NZAE_DYNAMIC_ENVIRONMENT={0 | 2} (feature disabled, default)
NZAE_DYNAMIC_ENVIRONMENT=2 (environment variables from last argument)

Quando NZAE_DYNAMIC_ENVIRONMENT è impostato su 2, la funzione deve essere definita in modo da accettare un argomento di tipo stringa come parametro finale aggiuntivo, che può essere usato per passare una o più variabili di ambiente aggiuntive. Se il nome di una chiave AE-ENV corrisponde a una variabile già definita tramite registrazione, la variabile dinamica sostituisce quella registrata.

Le variabili d'ambiente sono specificate come name1=value1, name2=value2 e così via. Applicare la seguente sintassi per le variabili d'ambiente:
  • Utilizzare una virgola come separatore di variabili.
  • Utilizzare i doppi apici come carattere di citazione.
  • I valori che includono spazi bianchi e/o virgole devono essere racchiusi da doppi apici; altrimenti, gli spazi bianchi vengono ignorati.
  • Se un valore è quotato, i doppi apici vengono rimossi dopo l'analisi.
  • Se il carattere doppio apice è richiesto come parte di un valore, utilizzare il carattere backslash ("\") per sfuggire.

Esempio

NZAE_EXECUTBLE_PATH=/bin/ae, data1="1,2,3,4,5,6", data2=wx\"b\"yz,data3="I am
an \"IBMer\""
Con NZAE_DYNAMIC_ENV abilitato, questo farebbe parte dell'invocazione SQL come ultimo argomento:
Select func(arg1,'NZAE_EXECUTABLE=/bin/ae...');
Dopo il parsing, questo diventa:
NZAE_EXECUTBLE_PATH=/bin/ae
data1=1,2,3,4,5,6
data2=wx"b"yz
data3=I am an "IBMer"

Dopo il parsing, le variabili d'ambiente dinamiche vengono trattate esattamente come variabili d'ambiente di registrazione. Ciò include l'uso di prefissi come NZAE_APPEND_, NZAE_PREPEND_, NZAE_HOST_ONLY_ e NZAE_SPU_ONLY_.

Di seguito è riportato un esempio di SQL che utilizza le variabili d'ambiente dinamiche dell'AE per chiamare un AE Java con la classe principale DataMatrix::
SELECT * FROM demo, TABLE WITH FINAL(aedemo_varchar_dyn(f1,f2,f3,f4,
'NZAE_EXECUTABLE_PATH=%
{AEDEV_JAVA_JVM},NZAE_NUMBER_PARAMETERS=1,NZAE_PARAMETER1=DataMatrix'));

La stringa {AEDEV_JAVA_JVM} dello snippet di codice precedente è una sostituzione di variabile d'ambiente AE, che viene trattata più dettagliatamente nella sezione Sostituzione di variabili d'ambiente AE.

La sostituzione delle variabili può essere controllata se l'AE vede quest'ultimo argomento come un argomento a stringa singola della funzione, poiché vede sempre il risultato nelle variabili d'ambiente dell'AE (in altre parole, se l'AE vede questa funzione come se avesse 4 o 5 argomenti). Il quinto argomento, che è la stringa contenente le variabili ENV, può essere passato o meno, a seconda dell'impostazione di NZAE_DYNAMIC_ENVIRONMENT_PASS_LAST_ARGUMENT.

Per impostazione predefinita, NZAE_DYNAMIC_ENVIRONMENT_PASS_LAST_ARGUMENT è impostato su 0, specificando che l'ultimo argomento non deve essere passato all'AE, che è l'impostazione consigliata. Nell'esempio precedente, quando è impostato su 0 l'AE vede 4 argomenti, quando è impostato su 1 vede 5 argomenti.
NZAE_DYNAMIC_ENVIRONMENT_PASS_LAST_ARGUMENT={0 | 1}
Quando NZAE_DYNAMIC_ENVIRONMENT non è zero, il sistema di runtime AE si aspetta che venga specificato l'ultimo argomento stringa e restituisce un errore se non viene trovato. Questo include il caso in cui una fetta di dati sia priva di dati. Per eliminare un errore nel caso di una fetta di dati vuota, specificare quanto segue:
NZAE_DYNAMIC_ENVIRONMENT_INGORE_LAST_RUN_ERROR
(value 0 or 1, default is 1)
Se una slice di dati non produce dati per una query, non è possibile per il runtime AE ricevere le variabili d'ambiente dinamiche di AE. Per impostazione predefinita, gli AE non vengono lanciati per le fette di dati vuote. Questo è in genere il comportamento corretto a causa dell'assenza di dati; tuttavia, ci possono essere situazioni in cui dovrebbe essere segnalato come errore. La seguente impostazione genera un errore:
NZAE_DYNAMIC_ENVIRONMENT_INGORE_LAST_RUN_ERROR=0