-
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?
-
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
-
Hallo zusammen,
zunächst einmal recht herzlichen Dank für eure Antworten und eure Mühe.
 Zitat von Fuerchau
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...

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

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
-
... 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?
-
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
-
Ich würde aber wirklich lieber mit PHP das ganze Lösen.
Das würde dir das Leben einfacher machen. :-)
-
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.
-
 Zitat von Fuerchau
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?
-
So sind wir hier halt;-).
Geschlossen wird hier nichts, es kann ja sein, dass in Jahren hier weiter diskutiert wird.
-
 Zitat von idhaun212
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
-
By lch in forum Intern - Hilfe - Feedback - Tests-Forum
Antworten: 10
Letzter Beitrag: 15-02-21, 12:06
-
By wilfried in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 19-07-17, 12:38
-
By Edi in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 07-11-14, 08:52
-
By RLurati in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 05-08-14, 10:10
-
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
-
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