PDA

View Full Version : %NULLIND in RPGLE



csteffen
08-02-08, 11:36
Hallo,

muss man %NULLIND für eine Variable explizit setzen, nachdem man sie verändert? Ich habe eine (Datei)Variable, die zunächst NULL ist, wenn der Satz gelesen wurde und der ich dann einen Wert zuweise. %NULLIND ist aber danach immer noch *ON. Ich hätte erwartet, das das automatisch auf *OFF gesetzt wird.

Hier ist der Code:

C EVAL AKKALK = 'N'

C IF %NULLIND(AKKALK) = *OFF

--> wird nicht ausgeführt.


ALWNULL(*USRCTL) habe ich angegeben.

Erst wenn explizit

EVAL %NULLIND(AKKALK) = *OFF

ausgeführt wird, klappt alles. Ist das "works as designed"?

Vielen Dank für Antworten!

Pikachu
08-02-08, 12:08
Das ist wohl richtig so, da %NULLIND (http://publib.boulder.ibm.com/iseries/v5r1/ic2924/books/c0925083577.htm#HDRBBNULL) wohl anscheinend nichts mit dem eigentlichen Inhalt des Datenfeldes zu tun hat.

Fuerchau
08-02-08, 12:12
Das ist korrekt.
Da die Variable im Programm selber immer einen korrekten Wert haben muss, muss man beim Schreiben natürlich angeben, ob dieser Wert auch gültig ist.

%NULLIND ist eine interne Variable, die der Variablen zugeordnet ist.

Bei SQL muss ich den NULLIND auch in einer separaten Binär-Variablen mitgeben:

update myfile set VAR = : MyVar : MyInd
...

fetch ... into : MyVar : MyInd, ...

csteffen
08-02-08, 12:20
Hallo Pikachu, hallo Fuerchau,

danke für die schnellen Antworten!!