[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Nun ja, das mit dem 0,0 muss man nicht so stehen lassen.
    Natürlich ist das in diesem Fall nicht so einfach, ins besonders da die Daten ja anschließend auch noch irgendwie bearbeitet werden sollen.
    Per "describe table" kann man sich eine SQLDA generieren lassen, allerdings muss man für einen Fetch dann ja auch Felder den Variablen zuweisen.
    Dies geht z.B. per %alloc(), der Speicher muss dann in der SQLDA als Pointer eingetragen werden.
    Alles in allem ein nicht gerade einfacher Weg.

    Daher die Frage:
    Was willst du damit erreichen?
    Ist Java (auch auf der AS/400) da nicht vielleicht der effektivere Weg?
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... das eigentliche Problem ist doch die fixe Cursor Anzahl und der Share der Dateien.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Nunja, ich habe vor ca. 18 Jahren auf V3R2 einen SQLCPY als Kommando in COBOL genau nach diesem Prinzip gebaut. Dieser läuft heute auf V7R2 noch immer problemlos und erlaubt eben einen Insert/Update/Delete auf Basis eines Selects mit Join und Where.
    Benutzt werden da eben dynamische SQLDA's.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... auch da würde man heute zu anderen Programmiersprachen greifen. Das ergibt doch ganz andere Aufwand/Effekt Relationen.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Dec 2016
    Beiträge
    8
    Hallo BenderD,
    Hallo Fuerchau,

    vielen Dank für eure Antworten. Der Hintergrund ist folgender:
    Wir haben im Unternehmen gerade damit angefangen uns mit Webservices zu beschäftigen. Die Daten liegen bei uns auf der DB2. Nun würden wir für jede Datei oder für jeden Select eigene Webservices brauchen. Das sind zwar kleine Programme, aber letztendlich würden es viele werden.
    Nun versuche ich (Und ich bin mir sicher, dass es auf irgendeinem Wege möglich ist) einen universalen Webservice jeweils für SELECT, INSERT, UPDATE und DELETE zu schreiben. Das ich mir da eine Mega-Aufgabe gestellt habe, habe ich mir zwar schon gedacht aber wenn das Ding halt einmal fertig ist, brauche ich mir nie wieder oder zumindest nur sehr selten Gedanken darüber zu machen, wie ich den Webservice bei zukünftigen Programmentwicklungen anpacke(Unser Dateibestand an physischen Dateien wächst in etwa um zwei PF Pro Monat).
    Für diese Mammut Aufgabe brauche ich doch ein bisschen Hilfe von Experten
    Vielleicht hat jemand sowas schonmal entwickelt oder vielleicht können später mehr Entwickler von dem know how profitieren

    Nun für heute mache ich erstmal Feierabend. Ich warte morgen gespannt auf eure Antworten. Hoffentlich kann ich schlafen :-D

    Beste Grüße

    Matthias

    EDIT(Mir fällt hinterher auch immer noch was ein -.-*): Der obige Code stammt natürlich aus einem Test und nicht aus meiner UNIWEBSRVS-Datei. 'VARIABLE' soll dann natürlich eine variable sein in der der Dateiname (PF) steht und die Fragezeichen sollen durch eine variable ersetzt werden.

  6. #6
    Registriert seit
    Dec 2016
    Beiträge
    8
    ... auch da würde man heute zu anderen Programmiersprachen greifen. Das ergibt doch ganz andere Aufwand/Effekt Relationen.
    Ich hätte es lieber über RPG gelöst aber andere Programmiersprachen wie Java, C#, C++, C,... beherrsche ich auch.

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    RPG ist keine dynamische Sprache und für solche komplexen Aufgaben einfach ungeignet.
    Java ist insofern gut, als dass du mit Eclipse (o.ä.) entwickeln und testen kannst und es dann auf der AS/400 ausführen lassen kannst (wenn erforderlich).
    Es hängt ganz einfach von deiner Anforderung ab.

    Deshalb noch mal: was willst du damit erreichen? Was ist deine Aufgabe?
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #8
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    HTTP WebServices & Dynamische Verarbeitung ... für mich wäre hier zunächst mal PHP das besser geeignete Werkzeug dafür.

    In RPG habe ich mal ein Beispiel-Code zusammengestellt um genau das was du möchtest zu realisieren.
    Ist aber sicher kein Code den man für performancekritische Anwendungen verwenden sollte:
    Code:
    D vsql s 512 
    D vtype s 10 
    D vlength s 10 0 
    D vresult_ind s 10 0 
    D vCount S 10 0 
    D i S 10 0 
    
    /Free 
    	// SQL Cursor erstellen 
    	vSql = 'Select * From tab1';
    	Exec Sql Prepare S1 from :vsql;
    	Exec Sql Declare c1 Cursor For s1;
    
    	// Descriptor mit der max. Anzahl der Spalten initialisieren 
    	Exec Sql allocate descriptor 'mydesc' with max 2;
    	EXEC SQL DESCRIBE S1 Using descriptor 'mydesc';
    
    	// Ersten Satz einlesen Exec Sql open c1;
    	Exec Sql Fetch c1 into sql descriptor 'mydesc';
    
    	// Anzahl der Spalten abrufen 
    	EXEC SQL GET DESCRIPTOR 'mydesc' :vCount = COUNT;
    
    	// Alle Spalten mit deren Werte einlesen 
    	For i=0 to vCount;
    		// Attribute der Spalte einlesen 
                    Exec Sql GET DESCRIPTOR 'mydesc' VALUE :i :vtype = TYPE, :vlength = LENGTH, :vresult_ind = INDICATOR;
    		if vresult_ind >= 0;
    			Select;
    			When vtype = '1';
    			// Character exec Sql GET DESCRIPTOR 'mydesc' VALUE :i :sp2 = DATA;
    			When vtype = '4';
    			// Integer exec Sql GET DESCRIPTOR 'mydesc' VALUE :i :sp1 = DATA;
    			endsl;
    		endif;
    	endfor;
    	Exec Sql close c1;
    
    /End-Free
    lg Andreas

  9. #9
    Registriert seit
    Dec 2016
    Beiträge
    8
    Hallo zusammen,

    zunächst einmal recht herzlichen Dank für eure Antworten und eure Mühe.

    Zitat Zitat von Fuerchau Beitrag anzeigen
    Deshalb noch mal: was willst du damit erreichen? Was ist deine Aufgabe?
    Ich weiß nicht ob ich besser erklären kann :-) so wie es aussieht scheint andreaspr@aon.at den Punkt aber ganz gut zu treffen. Jedenfalls wenn ich den Code korrekt interpretiere.

    Allerdings kommt bei mir bei vCount immer 0 heraus, hier mein Debug:

    EDIT: Okay ein eingebettetes Bild war nicht so gut ihr findet es im Anhang^^

    Hmm. Vielleicht sollte ich es doch in php machen...
    Click image for larger version. 

Name:	Debug.jpg 
Views:	49 
Size:	330,9 KB 
ID:	407
    Andreas kannst du mir noch sagen warum da bei mir eine 0 herauskommt? Die Tabelle ist in der Bibliothek definitiv vorhanden (Arbeite ich oft mit).

    Vielen Dank euch

    Besten Gruß

    Matthias Neubert

  10. #10
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Bei "With max 2" musst du sicher einen höheren Wert angeben.
    Starte einfach mal den DEBUG und schau ins Joblog oder mit Monitoring.
    In einem der beiden wirst du sicher den genauen Fehler finden können.

    lg Andreas

  11. #11
    Registriert seit
    Dec 2016
    Beiträge
    8
    Jo das sieht schon etwas besser aus.
    Jetzt hat er nur noch ein Problem mit den Variablen.
    Das ist das was mir der JOBLOG ausgibt aber ich weiß nicht so genau was der mir sagen möchte .
    Click image for larger version. 

Name:	Debug.jpg 
Views:	17 
Size:	282,7 KB 
ID:	408

    Meine Variablen habe ich wie folgt definiert:
    Code:
           dcl-s vsql varchar(512);
           dcl-s vtype varchar(10);
           dcl-s vlength int(10);
           dcl-s vresult_ind int(10);
           dcl-s vCount int(10);
           dcl-s i int(10);
           dcl-s sp1 varchar(500);
           dcl-s sp2 packed(20:10);
    EDIT: Ich habe gerade gesehen, dass der Cursor weder geöffnet noch geschlossen wird. Das habe ich jetzt eingebaut aber die Variablen bleiben trotzdem leer. Eingefügt habe ich den Open nach der Deklaration des Cursors und geschlossen habe ich ihn nach dem endfor

  12. #12
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... ihr seid euch schon darüber im klaren, dass man auf diese Weise nicht Satz für Satz lesen kann und zwischendurch andere Lese/Schreib Operationen durchführen kann?
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Kann keine Beiträge erstellen in zB. "System i Hauptforum"
    By lch in forum Intern - Hilfe - Feedback - Tests-Forum
    Antworten: 10
    Letzter Beitrag: 15-02-21, 11:06
  2. Antworten: 1
    Letzter Beitrag: 19-07-17, 11:38
  3. MinusField falsche Darstellung "ü" statt "-"
    By Edi in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 07-11-14, 07:52
  4. Cobol/400 - "Fett", "Unterstreichen" als HEX-Wert
    By RLurati in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 05-08-14, 09:10
  5. "zu wenig Speicher" Rational Developer for Power-Systems
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 13-02-14, 20:58

Berechtigungen

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