- 
	
	
		
		
		
		
			Triggerbuffer und NullBytes
		
		
				
					
					
				
				
		
			
				
					Hallo zusammen, 
  
ich habe eine Frage zum Trigger-Buffer der unter QSYSINC/QRPGLESRC/TRGBUF definiert ist. Wir verwenden Datumsfelder, die nullfähig sind. Bisher mußte ich das Nullbyte eines Datumsfeldes im Neusatz auf '0' setzen, wenn ein Wert zugewiesen wurde(Die Nullbyte-Felder waren im Triggerbuffer einzeln definiert).  Wie wird nun in der o.a. Datenstruktur das Nullbyte eines Feldes auf '0'  gesetzt? Ist das überhaupt möglich? 
  
Viele Grüße 
Norbi
				 
			 
			
		 
			
				
			
				
			
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					Probier mal mit EVAL %NULLIND(Feld) = *ON, siehe hier.
				 
			 
			
		 
			
				
			
			
				
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					Im Trigger-Buffer ist sowohl das Offset als auch die Länge für die NULL Byte Map hinterlegt. 
In dieser NULL Byte Map ist für jedes Feld 1 Byte vorgesehen, das entweder auf '0' = Kein NULL-Wert oder '1' = NULL-Wert steht. 
 
Um einen NULL-Wert im Trigger zu setzten, muss das entsprechende Byte von '0' auf '1' gesetzt werden. (bzw. sofern Du einen Wert in ein Feld eintragen willst und das NULL Byte Flag auf '1' steht, muss es zunächst auf '0' gesetzt werden. 
 
Beachte, dass wenn Du den gleichen Datensatz ändern willst, beim Registrieren des Triggers (ADDPFTRG) die Option ALWREPCHG auf *YES gesetzt werden muss. 
 
Birgitta
				 
			 
			
		 
			
				
			
			
				
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					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
				 
			 
			
		 
			
				
			
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
					
				
		
			
				
					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
				 
			 
			
		 
			
				
			
			
				
			
			
		 
	 
	
	 
 
		 
		
		
	
 
	
	
 
	
	
	
	
	
	
	
	
	
	
		
		
		
		
			
				 
				Berechtigungen
			
			
				
	
		- Neue Themen erstellen: Nein
 
		- Themen beantworten: Nein
 
		- You may not post attachments
 
		- You may not edit your posts
 
		-  
 
	 
	
	Foren-Regeln 
 
			 
		 
	 
 
  
  
 
  
 
 
  | 
Erweiterte Foren Suche
Google Foren Suche
  
Forum & Artikel   Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
 
 
 
 | 
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
 
- Cloud, Social Media, Devices
 
- DMS, Archivierung, Druck
 
- ERP + Add-ons, Business Software
 
- Hochverfügbarkeit
 
- Human Resources, Personal
 
- IBM Announcements
 
- IT-Karikaturen
 
- Leitartikel
 
- Load`n`go
 
- Messen, Veranstaltungen
 
- NEWSolutions Dossiers
 
- Programmierung
 
- Security
 
- Software Development + Change Mgmt.
 
- Solutions & Provider
 
- Speicher – Storage
 
- Strategische Berichte
 
- Systemmanagement
 
- Tools, Hot-Tips
 
 
Auf dem Laufenden bleiben
 
 | 
Bookmarks