- 
	
	
		
		
		
		
			Danke für die Tips
		
		
				
					
					
				
				
		
			
				
					Jetzt gehts!! 
Danke für die Tips!!! 
 
Eine Frage habe ich aber noch: 
 
Ich rufe die Prozedur in der sich der SQL-Aufruf befindet aus einer anderen Prozedur im selben Programm auf. Wenn ich beim Debugen(STRDBG) in eine Prozedur wechseln will mache ich das über die F22-Taste(Step into) oder ich setze gleich einen Breakpoint (mit F6) in der Prozedure. Will ich aber die Prozedur mit dem SQL-Statment debugen so komme ich nicht in die Prozedur und ich kann diese auch nicht im Debugmodus anzeigen. Es ist wie wenn diese nicht vorhanden ist. 
 
Das Programm habe ich mit CRTSQLRPGI  gewandelt. 
 
CRTSQLRPGI OBJ(Lib/Programm) SRCFILE(Lib/QRPGLESRC) OBJTYPE(*MODULE)                                                                         
Muss ich beim Aufruf der Debugfunktion etwas beachten oder habe ich etwas bei der Umwandlung falsch gemacht?
				 
			 
			
		 
			
				
			
				
			
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					Beim Befehl CRTSQLRPGI den Parameter DBGVIEW auf den Wert *SOURCE setzen.
				 
			 
			
		 
			
				
			
			
				Frank Hildebrandt  
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
		
			Keine Änderung
		
		
				
				
		
			
				
					Die Änderung der Generierung hat nichts bewirkt. Zusätzlich habe ich in die Prozedur einen Rückgabewert eingefügt den ich innerhalb der Prozedur stumpf mit einem Wert gefüllt habe. Der Wert ist als VALUE deklariert und wird aber nicht verändert durch den Aufruf der Prozedure. 
 
P GetBLFOLGE2     B 
     D GetBLFOLGE2     PI 
     D   pMdt                              like(FRD1.MDT)     CONST 
     D   pBlFolge                          like(FRD1.BLFOLGE) 
      //-------------------- 
      // Lokale Variablen 
      //-------------------- 
     D vBlFolge        S                   like(FRD1.BLFOLGE)   inz 
    ‚C/EXEC SQL 
    ‚C+ DECLARE C1 CURSOR FOR 
     C+  SELECT * FROM SCHUELLER/ARBP2P 
     C+  WHERE FERT1B BETWEEN 680 AND 699 AND BLOCKN <> 0 
     C+  ORDER BY MDT, BLOCKN, FERT1B, LFDNREH, STKZ2B, 
     C+  CASE RLB WHEN 'R' THEN '1' WHEN ' ' THEN '2' WHEN 'L' THEN '3' END 
     C+  FOR UPDATE OF BLFOLGE 
    ‚C/END-EXEC 
 
    šC/EXEC SQL 
     C+ OPEN C1 
    ‚C/END-EXEC 
 
    ‚C/EXEC SQL WHENEVER NOT FOUND GO TO DONE1 
    ‚C/END-EXEC 
     C*----------------------------- 
    ‚C*    SQLCOD        DOUNE     0 
     C*----------------------------- 
    ‚C/EXEC SQL 
    ˆC+ FETCH C1 INTO :BLFOLGE 
    šC/END-EXEC 
     C*----------------------------- 
     C*                  ENDDO 
     C*----------------------------- 
     C/EXEC SQL CLOSE C1 
     C/END-EXEC 
     C*----------------------------- 
 
     C     DONE1         TAG 
      /FREE 
 
       pBlFolge = 99; 
       return; 
 
      /END-FREE
				 
			 
			
		 
			
				
			
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					Definiere einen Rückgabewert auf dem Interface 
 
d*Prototyp 
D GetBLFOLGE2 PR 5S 0 
: 
 
d*Interface 
D GetBLFOLGE2 PI 5S 0 
: 
:  
return BlFolge; 
 
Oder Übergebe den Paramter nicht als VALUE. 
Dies bedeutet nämlich, dass eine Kopie der Variablen übergeben wird ! 
Definierst du einen Returnwert, kannst du das dann auch netter aufrufen: 
 
NewBlFolge = GetBLFOLGE2(Parameter); 
 
Achtung: 
Dein DONE1-Tag muss VOR dem Close sitzen, da der Fehler nicht beim Open gemeldet wird. Ansonsten ist es besser SQLCOD = 100 (EOF) abzufragen.
				 
			 
			
		 
			
				
			
			
				
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					Das Modul muss in jedem Fall mit dem Parameter DBGVIEW(*SOURCE) über den Befehl CRTSQLRPGI umgewandelt werden. Ohne dem geht es in keinem Fall. Jetzt versuch mal noch den. 1. STRDBG PGM(Programmname) 2. Dann drückst Du F14=Mit Modulliste arbeiten. Dann gibst Du vor dem Modul mit der ominösen Prozedur die Auswahl 5=Modulquelle anzeigen 
ein. Dann gehst Du mit dem Cursor auf das Statement mit der  ersten C-Bestimmung innerhalb der Prozedur und drückst dort F6=Unterbrechungspunkt hinzufügen. Wenn Du dann dein Programm aufrufst, dann sollte der Debugger in der Prozedur stoppen. Nur noch mal der Vollständigkeit halber. Zuerst mit dem Befehl CRTSQLRPGI das Modul erstellen und dann mit CRTPGM das Programm erstellen.
				 
			 
			
		 
			
				
			
			
				Frank Hildebrandt  
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
		
			  Jetzt gehts!!
		
		
				
				
					
				
		
			
				
					Hatte die ganze Zeit das Programm nicht mit CRTPGM umgesetzt. Für die Erstellung eines Moduls oder eines Serviceprogramms haben wir das normalerweise auf ein Kürzel gelegt. Dieses erstellt über einen Programmaufruf die Programme.  
 
Zu Fürchau: 
 
Auf einen Parameter möchte ich das Ergebnis nicht legen, weil ich die Funktion wie folgt benutzen will: 
if not GetBlFolge(pMDT :vBlFolge); 
 
endif; 
Als Rückgabwert erhalte ich einen bolschen Wert der aussagt Fehler oder keine Fehler. Dies ist nicht mehr möglich wenn ich BlFolge als Rückgabewert erstelle. 
 
Zu Frank Hildebrandt: 
 
Danke das war der Tip der mir gefehlt hat. 
Manchmal ist man halt nicht auf das naheliegenste. 
 
Danke nochmal an Euch für die Hilfe bei meinem Problem.
				 
			 
			
		 
			
				
			
			
			
		 
	 
	
	 
 
		 
		
		
	
 
	
	
 
	
	
	
	
	
	
		Similar Threads
		
			
			
- 
  
    
    
       By Franz Karl in forum IBM i Hauptforum
     
   
  
    Antworten: 2
       
        Letzter Beitrag: 20-01-07, 09:04
       
   
 
- 
  
    
    
       By antvik in forum NEWSboard Programmierung
     
   
  
    Antworten: 4
       
        Letzter Beitrag: 02-08-06, 19:04
       
   
 
- 
  
    
    
       By Xanas in forum NEWSboard Programmierung
     
   
  
    Antworten: 1
       
        Letzter Beitrag: 23-02-06, 11:29
       
   
 
- 
  
    
    
       By KM in forum NEWSboard Programmierung
     
   
  
    Antworten: 4
       
        Letzter Beitrag: 12-01-06, 09:52
       
   
 
- 
  
    
    
       By Mädele in forum IBM i Hauptforum
     
   
  
    Antworten: 1
       
        Letzter Beitrag: 24-08-05, 13:26
       
   
 
			 
		 
	 
	
	
	
	
	
		
		
		
		
			
				 
				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