[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.752
    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

  2. #2
    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

  3. #3
    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

  4. #4
    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

  5. #5
    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:	19 
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

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    5.379
    ... 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/

  7. #7
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Da ist mir doch eine Zeile ins Kommentar gerutscht, habs im Beispiel-Post korrigiert.
    War die Zeile:
    Code:
    Exec Sql GET DESCRIPTOR 'mydesc' VALUE :i :vtype = TYPE, :vlength = LENGTH, :vresult_ind = INDICATOR;
    @Dieter: Sicher kann man Satz für Satz einlesen:
    Code:
    Exec Sql Fetch c1 into sql descriptor 'mydesc';
    Oder meinst du was anderes?

    lg Andreas

  8. #8
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Ich würde aber wirklich lieber mit PHP das ganze Lösen.
    Das würde dir das Leben einfacher machen. :-)

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.752
    Und wenn du firm mit Java bist, dann wäre hier Java die bessere Wahl, da du für PHP zusätzliche Laufzeitumgebungen benötigst.
    Da inzwischen auch Node.JS für AS/400 native verfügbar ist, kann man hierüber sogar ohne Einsatz von Zendserver o.ä. direkte Web-Services zur Verfügung stellen.
    Hoch flexibel, einfach und von (fast) allen Javaprogrammierern realisierbar.
    Zusätzlich kann man bei Bedarf ebenso Programmaufrufe bestehender Anwendungsteile über SQL-Wrapper (Prozeduren und Funktionen) in Node.JS/Java-SQL einbinden.

    Für das, was du da vorhast, kann man RPG nicht so einfach verwenden.

    Und was Dieter meint ist:
    Ein RPGLE kann auf diesem Wege nur einen Cursor aufmachen!
    Oder du musst in dem RPGLE je Cursor einen eigenen Satz von Routinen schreiben und dich entscheiden, wieviele parallelel Zugriffe und verschiedene Tabellen du zulässt.

    Mit einer OOP-Sprache hast du das Problem erst gar nicht.
    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

  10. #10
    Registriert seit
    Dec 2016
    Beiträge
    8
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Da inzwischen auch Node.JS für AS/400 native verfügbar ist, kann man hierüber sogar ohne Einsatz von Zendserver o.ä. direkte Web-Services zur Verfügung stellen.
    Oh das wusste ich noch gar nicht. Ja bei php bräuchte man dann wieder einen Webserver. In der AS400 ist ja aber schon einer drin deswegen würde ich den lieber nutzen deshalb auch rpgle. Wenn aber Node.JS inzwischen auch darauf läuft dann sieht die Sache ja wieder gaaaanz anders aus :-)
    Ich denke da werde ich mich mal in der Richtung etwas schlauer machen. Vielen Dank euch allen für eure Ideen, Tipps und Mühe die ihr euch gemacht habt.

    Besten Gruß

    Matthias Neubert

    PS: Muss ich den Beitrag irgendwie schließen?

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.752
    So sind wir hier halt;-).
    Geschlossen wird hier nichts, es kann ja sein, dass in Jahren hier weiter diskutiert wird.
    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

  12. #12
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von idhaun212 Beitrag anzeigen
    Oh das wusste ich noch gar nicht. Ja bei php bräuchte man dann wieder einen Webserver. In der AS400 ist ja aber schon einer drin deswegen würde ich den lieber nutzen deshalb auch rpgle.
    Bei PHP wird auch ein Apache Webserver verwendet. Den Unterschied erkennt man nur beim genaueren Hinschauen.
    NodeJS läuft zwar Native auf der IBM i, dieser ist jedoch nicht out-of-the-box im Apache Webserver integriert.
    In meinen Schulungen zeige ich beide Welten und auch wie der NodeJS im Apache integriert wird.
    Am Ende muss man entscheiden für welche Welt die meisten Skills vorhanden sind.

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, 12:06
  2. Antworten: 1
    Letzter Beitrag: 19-07-17, 12:38
  3. MinusField falsche Darstellung "ü" statt "-"
    By Edi in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 07-11-14, 08:52
  4. Cobol/400 - "Fett", "Unterstreichen" als HEX-Wert
    By RLurati in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 05-08-14, 10:10
  5. "zu wenig Speicher" Rational Developer for Power-Systems
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 13-02-14, 21:58

Berechtigungen

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