@Dieter
Wenn mit der Funktion %NullInd() gearbeitet werden soll, muss in den H-Bestimmungen ALWNULL(*USRCTL) angegeben werden. Nur dann kann auch mit NULL-Feldern bzw. NULL-Werten gearbeitet werden.

In DDS-beschriebenen Dateien kann das Schlüsselwort ALWNULL angegeben werden, um ein NULL-fähiges Feld zu definieren. (In SQL sind NULL-Werte sowieso Standard)
Wird eine Datei, die Felder mit ALWNULL zulässt, in die F-Bestimmungen eingebunden, kann bei diesen Feldern mit NULL gearbeitet werden.

Die Funktion %NullInd(MyNullFld) ist *ON, wenn in dem Feld NULL-Werte stehen, anderenfalls liefert die Funktion *OFF.

Code:
H AlwNull(*UsrCtl)
FMyNullPF  IF   E             DISK     
 /Free
   If %NullInd(MyNullFld);     //Feld hat NULL-Inhalt
      %NullInd(MyNullFld) = *Off;  //Keine NULL-Werte
   EndIf;

      MyNullFld = 'ABC';
 /End-Free
Um ein Feld mit NULL-Inhalt zu füllen, muss die Funktion auf *On gesetzt werden.
Code:
 /Free
     %NullInd(MyNullFld) = *On  // Setzen Feld auf NULL
 /End-Free
Die Anzahl der übergebenen Parameter kann mit der Funktion %Parms() abgefragt werden. In einer Main-Procedure entspricht %Parms() *PARMS aus der Programm-Status-Datenstruktur.

Parameter, die im Prototyp mit *OMIT definiert wurden, können auf NULL abgefragt werden. Bei Angabe von *OMIT im Aufruf wird ein NULL-Wert übergeben. %Parms() zählt in diesem Fall jedoch die ommitteten Parameter mit.

Code:
 /Free
     If %Addr(MyParm3) = *NULL   //Parameter übergeben
        MyPtrParm3 = %Addr(MyField);
     Endif;
 /End-Free
@Fuerchau
Für Dateien, die in den F-Bestimmungen definiert wurden, sind im Gegensatz zu RPGIII keine Dummy-Aktionen erforderlich.
Die Felder können direkt angesprochen werden.

Birgitta