[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Sep 2006
    Beiträge
    11
    Hallo Brigitta,

    das habe ich ja verstanden, aber wie spreche ich das NullbyteFeld eines Feldes an? Eval %Nullind(Neu_Datum) = *on kann doch nicht richtig sein.

    Norbi

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    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!)
    Code:
     *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
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •