Die RPG Built-In-Function %NULLIND kann nur verwendet werden um einen NULL-Wert in einem Datensatz einer Datei, die in den F-Bestimmungen definiert wurde zu setzen.
Zum Setzen eines NULL-Wertes in einem Datensatz in einem Trigger-Programm kann dieser Wert nicht verwendet werden.
Im Trigger-Programm muss die NULL-Byte-Map direkt geändert werden.
Durch den Offset weißt Du ja wo die NULL-Byte-Map steht und wie lange sie ist.
Über diese NULL-Byte-Map legst Du eine Feldgruppe mit 1-stelligen alphanumerischen Elementen. Jetzt musst Du nur noch die Position / Nr. des Feldes im Datensatz wissen und das entsprechende Feldgruppen-Element zu ändern (wenn also Dein Datums-Feld das 3. Feld ist, musst Du das 3. Element ändern).
So in etwa kann das Ganze aussehen (nicht getestet!)
BirgittaCode:*Prototypen und Copy Strecken /COPY QPROLESRC,MyTrgPgm /COPY QSYSINC/QRPGLESRC,TrgBuf D DSTrgBuff DS Qualified based(DummyPtr) D Fix likeDS(QDBTB) D Vary 65000A * Procedure Interface D MyTrgPgm PI D ParTrgBuf LikeDS(DSTrgBuff) D ParTrgLen 10I 0 Const *********************************************** D NeuerSatz E DS ExtName(MyFile) Qualified D based(PtrNeuerSatz) D NullByteNeu DS Qualified based(PtrNullByteNeu) D ArrInd 1A Dim(32767) *********************************************** /Free PtrNeuerSatz = %Addr(ParTrgBuf) + ParTrgBuf.Fix.QDBNRO; PtrNullByteNeu = %Addr(ParTrgBuf) + ParTrgBuf.Fix.QDBNRNBM; NeuerSatz.MyField = 'Was auch immer'; NullByteNeu.ArrInd(3) = '1'; Return; /End-Free
![[NEWSboard IBMi Forum]](images/duke/nblogo.gif)



Mit Zitat antworten
Bookmarks