Zuerst mal: Lassen Sie sich nicht von diesen "ordentliche Programmiersprache" und dämlichen Vergleichen verwirren. Die Umstellung von den DTAUS/MTxxx-Dateien auf SEPA-,CAMT-XML-Dateien machen derzeit alle, und wer weder zu viel Zeit noch Spieltrieb hat, macht es in seiner Programmierwelt. Es mag Gründe geben, diese irgendwann zu wechseln / zu erweitern, aber diese Kleinigkeit ist keiner. Sie programmieren mit RPG wie ein sehr großer Teil IBMi-Anwender, damit kann man das problemlos machen, und es werden keine Ihrer komplexen Programme werden, sondern einfache.
Unser Zeitaufwand war 1 Woche für alles: Überweisungsdateien, Abbuchungsdateien erstellen, Kontoauszüge importieren.

Wie importiert man Kontoauszüge?
XML ist nichts weiter als eine Datei mit 1 Zeile, die riesig breit ist. Damit ist klar: die Datei kommt ins IFS und wird zeichenweise gelesen. Bordmittel, isi RPG-Programming.
Drin ist, was immer drin war (evtl. sind mehrere dieser Kapitel erlaubt):
- Kopfsatz
- 1...x Transaktionen
- Endesatz

Weil wir auf der IBMi so eine nützliche Datenbank haben, machen wir uns eine Datei mit einer String-Spalte in Breite eines XML-Transaktionsteiles und ein paar Key- und Statusfelder, z.B. Timestamp oder lfd. Vorgangsnummer. Da hinein zerhacken wir den XML-String aus der IFS-Datei: 1 Satz für den Kopfsatz, je einer pro Transaktion und einer für den Endesatz. Das Zerhacken geschieht durch Finden der entsprechenden XML-Tags, isi RPG-Programming.

Der eigentliche Import ins Zielsystem geschieht in einem getrenntem Programm. Gründe:
1) Getrennte Entwicklung und Tests möglich.
2) Die Datei aus Schritt 1 kommt ins an die IBMi angeschlossene revisionssichere Archivsystem, damit ist die gesetzliche Archivierungspflicht für Geschäfts-/Zahlungsverkehrsdaten erfüllt.

Der Import ist einfach: Schleife in der Datei über einen Vorgang, benötigte Felder aus dem Kopfsatz merken, jeder Transaktionssatz löst einen Schreibvorgang im internen System aus, wenn Endesatz, dann Log schreiben und tschüss.
Das XML-Parsing (toller Name, banaler Vorgang), erledigt eine Tabellenvariable mit 2 Spalten: XMLTAG, XMLWERT, die für jeden Dateisatz neu gefüllt wird. Der Parser ist nur ein Zeichenleser und Stringbastler: von < bis > ist der XMLTAG, danach XMLWERT bis < / gefunden wird.
Pfeifen Sie auf XSDs und XML-interne Metadaten. Sie wissen, welche XMLTAGs sie erwarten, und was als Wert dahinter stehen muss, woraus sich der Vailidierer ergibt. Wenn XMLWERT nicht valide: Ab ins Fehlerlog.

Alles in allem ein denkbar einfacher Vorgang für jeden gestandenen RPG-Programmierer. Consultants und Tool-Hausierer blasen nur viel Dampf rein.