Zitat Zitat von BenderD Beitrag anzeigen
wo hast du das mit den %parms her???
Hallo DBender:
Hier der entsprechende Auszug aus dem RPG-Referenzhandbuch

%PARMS returns the number of parameters that were passed to the procedure in which %PARMS is used. For the main procedure, %PARMS is the same as *PARMS.

The value returned by %PARMS is not available if the program or procedure that calls %PARMS does not pass a minimal operational descriptor. The ILE RPG compiler always passes one, but other languages do not. So if the caller is written in another ILE language, it will need to pass an operational descriptor on the call. If the operational descriptor is not passed, the value returned by %PARMS cannot be trusted.
wie schon geschrieben, wird %parms immer mit dem Wert -1 in das SRVPGM geliefert.

Zitat Zitat von BenderD Beitrag anzeigen
Die Null Byte Array Lösung ist da defensiver, aber deine Abfrage ist Unfug statt %addr(feld) <> *null (denn übergeben wird hier ja ein Pointer, damit RPG das ab kann) musst du den Inhalt des entsrpechenden Null Indicators abfragen (und dann passt das Datum natürlich immer noch nur dann, wenn da kein Senf drinsteht).
Ich habe anstelle des %addr(feld) versucht die Null-Indicators anzusprechen, die sind aber nicht addressierbar (werden vermutlich auch nicht von der UDF gefüllt).

Gruss
Peder