[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Dec 2009
    Beiträge
    314

    COBOL und komplexe XML erstellen

    Guten Morgen,

    ich stehe vor folgendem Problem, dass ich aus unserem Kernsystem mittels COBOL(oder ev. auch SQL) ziemlich komplexe XML erzeugen soil, welchen dann von unserem neuen Druckoutputmanagement abgeholt und verarbeitet werden.

    Mal ein paar Eckdaten:
    AS/400 Power 7 R7.1 mit wahrscheinlich aktuellstem PTF-Stand
    COBOL-Applikation aus den frühen 1990ern, mit DDS, Green Screen und PRTF's aber auch noch schon abgelösten AS400 DOC's.
    Ca. 100 unterschiedliche Ausgabeformate mit den verschiedensten Ausprägungen.

    Derzeit wird für die Printfiles eine Datei erzeugt, welche ungefähr folgendes aussehen hat:
    n-dmsvlue mit folgendem aufbau:
    dmsvlue dmsFeldname länge d. feldes Inhalt

    n-kopf-zeilen mit folgendem aufbau:
    kopf kopffeldnmae länge d. feldes inhalt
    wobei die erste kopfzeile den Fldswt ohne längenangeben enthält, wo je nach befüllung verschiedene varianten des dokuments erzeugt werden.

    n-positionszeilen mit folgendem aufbau:
    Position positionfeldnmae länge d. feldes inhalt
    wobei für die erste zeile das selbe wie für die kopfzeilen gilt.


    n-xxx-zeilen mit folgendem aufbau:
    xxx xxx feldnmae länge d. feldes inhalt
    wobei für die erste zeile das selbe wie für die kopfzeilen gilt.

    n-xxx-zeilen mit folgendem aufbau:
    xxx xxx feldnmae länge d. feldes inhalt
    wobei für die erste zeile das selbe wie für die kopfzeilen gilt.

    usw. bis zu den Fusszeilen des Dokuments.

    Diese wird dann an unser derzeitiges Druckoutputmanagement gesendet, wo der Druck und die Archivierung im DMS passiert. Und dieser Teil soll abgelöst werden durch Erzeugung eines XML-Files, welches dann an das neuen System gesendet wird.

    Zu mir:
    Programmierer seit 1990 auf der AS/400, vor allem in COBOL, wobei ich in den letzten Jahren auch schon des öfteren mit embedded SQL gearbeitet habe, wo ich sicher bin das noch genug Potential zu entdecken wäre.
    Eigentlich auch recht gute SQL-Kenntnisse was schnelle Auswertungen auf dem Green Screen betrifft.
    Aber mit UDF's und Stored Procedures habe ich schon noch meine Problem, wobei hier mein Unternehmen bereit wäre, Geld für Schulungen in die Hand zu nehmen.

    Da bei uns die personelle Situation nicht sehr rosig ist, hoffe ich auf eure Hilfe bzw. Unterstützung und wäre über Vorschläge oder eventuell auch Lösungsansätze dankbar.

    Schöne Grüße aus Wien
    Andreas
    Andreas
    Ein AS/400 Dinosaurier since 1989

  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    Hallo Niko1964 ( sehr sympatisches Baujahr )

    bis jetzt kann ich noch keine konkrete Aufgabe/Problem lesen
    Ok, recht komplexe XML ...
    OK, Eure Printerfile sind etwas 'seltsam' und erinnern mich an ein SW Haus in Northeim!
    OK, Du kannst Cobol und ein wenig SQL

    aber was mußt du den nun genau machen?

    Robi

  3. #3
    Registriert seit
    Dec 2009
    Beiträge
    314
    Hallo Robi,
    aus dem Output, der eh nicht mehr als Spool sonder als Datei gespeichert ist, muss ich nun ein XML generieren, dass obige Strucktur puls ein paar globaler variablen am Anfang hat.
    Andreas
    ach ja und mit ein wenig SQL habe ich vielleicht ein wenig untertrieben
    Andreas
    Ein AS/400 Dinosaurier since 1989

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Nun, eine XML-Struktur kann ich da nun auch nicht erkennen.

    Wenn du nun einen Output in eine Datei machst, kannst du mit COBOL-Mitteln die Daten zusammenstricken:

    string
    "" delimited by size
    Variable delimited by space <== Size geht hier ja auch
    "
    " delimited by size
    into Ziel
    write myfile from ziel

    Und schreibst das Ganze in eine PF.
    Anschließend gibst du das mit CPYTOSTMF ins IFS als XML aus.
    Wo ist das Problem?
    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

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Ich sag ja, der Editor ist sch....

    Zwischen die Anführungsstriche gehört:

    " < Knoten >"
    " < / Knoten >"
    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

  6. #6
    Registriert seit
    May 2002
    Beiträge
    1.121
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Ich sag ja, der Editor ist sch....
    Deshalb nutze ich meistens für Code, SQL, ...
    PHP-Code einfügen

  7. #7
    Registriert seit
    Dec 2009
    Beiträge
    314
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Nun, eine XML-Struktur kann ich da nun auch nicht erkennen.
    Aus obiger Struktur soll ich ja das XML erzeugen das ungefähr so aussieht(xml-Strucktur entspricht den oben angegebnen Feldern, stammt aus einer unserer anderen Anwendungen(mircosoft)):

    PHP-Code:
            <?xml version="1.0" encoding="ISO-8859-1" ?>
            <job>
            <header>
            <owner>infovision</owner>
            <formname>DasFormat</formname>
            <print>
            <queue>DieOutqueue</queue>
            <lade>262</lade>
            </print>
            <displayname>DaswahreFormat</displayname>
           <umgebung>test</umgebung> 
           <reporttag>xxxxxxx</reporttag>
            </header>
            <content>
      <genCI>
            <logopos>l</logopos>
            <fusszeile/>
      </genCI>
         <global>
               <mandant>MandNr</mandant>
                <v_typ>Art</v_typ>
                <v_firmenname>Firmenname</v_firmenname>
                <v_lg>Leasinggeber</v_lg>
                <v_ln>Leasingnehmer</v_ln>
                <v_lgk>LG</v_lgk>
                <v_lnk>LN</v_lnk>
                <v_lok>LO</v_lok>
                <v_rw>0</v_rw>
                <v_zi>Monat</v_zi>
                <v_zik>Monatlich</v_zik>
                <v_oplease>0</v_oplease>
       <waehrung>EUR</waehrung>
       <!--<konkludent>!-->
        <!--<einschreiben/>!-->
     </global>
    <rechnungskopf>
     <nr>4444444444</nr>
     <uid>ATU55555</uid>
     </rechnungskopf>
    <absender>1043 Wien, Postfach 100</absender>
            <empfaenger>
            <zeile>Firma</zeile>
            <zeile>EmpfName</zeile>
            <zeile>Strasse</zeile>
            <zeile>Ort</zeile>
            <zeile>Land</zeile>
            </empfaenger>
            <kontakt>
                <text>Text1</text>
                <adresse>Strasse</adresse>
       <fn>FN:1234567890</fn>
       <uid>ATU12345678</uid>
       <dvr>DVR: 1234567</dvr>
                <plz>postleitzahl</plz>
                <ort>Ort</ort>
                <lkz>Land</lkz>            
                <name>Fr. Musterfrau Klara</name>
                <tel>08 123 456</tel>
                <fax>08 123 465 78</fax>
                <email>klara.musterman@firma.at</email>
       <www>www.wasauchimmer.com</www>
            </kontakt>
            <datum>tt.mm.jjjj</datum>
          <vorfin_guthzins>
      <belegnr>1234567890</belegnr>
      <objekt>Das Ding lt Beschreibung</objekt>
      <bisdat1>31.01.15</bisdat1>
      <vorfinzinssatz>33,44</vorfinzinssatz>
      <lieferant>
      <name1>Name1 von Lieferanten</name1>
      <name2>Name2 vom Lieferanten</name2>
      </lieferant>
      <vorfin_vormonat><!--var2!-->
      <zeile>
      <buchdatum>21.21.15</buchdatum>
      <extbelegnr>777888999</extbelegnr>
      <beschr>Beschreibung</beschr>
      <geb>99,99</geb>
      <von>1.12.14</von>
      <bis>31.12.14</bis>
      <tage>31</tage>
      <zinsen>44,44</zinsen>
      </zeile><zeile>
      <buchdatum>21.21.15</buchdatum>
      <extbelegnr>777888999</extbelegnr>
      <beschr>Beschreibung</beschr>
      <geb>99,99</geb>
      <von>1.12.14</von>
      <bis>31.12.14</bis>
      <tage>31</tage>
      <zinsen>44,44</zinsen>
      </zeile>
      <zeile>
      <buchdatum>21.21.15</buchdatum>
      <extbelegnr>777888999</extbelegnr>
      <beschr>Beschreibung</beschr>
      <geb>99,99</geb>
      <von>1.12.14</von>
      <bis>31.12.14</bis>
      <tage>31</tage>
      <zinsen>44,44</zinsen>
      </zeile>
      <enddatum_vormonat>31.12.14</enddatum_vormonat>
      </vorfin_vormonat>
      <anzl_teilrechnung><!--var3!-->
      <zeile>
      <buchdatum>21.21.15</buchdatum>
      <extbelegnr>777888999</extbelegnr>
      <beschr>Beschreibung</beschr>
      <geb>99,99</geb>
      <von>1.12.14</von>
      <bis>31.12.14</bis>
      <tage>31</tage>
      <zinsen>44,44</zinsen>
      </zeile>
      <teil_restbetrag>55,11</teil_restbetrag>
      <enddatum_vormonat>31.12.14</enddatum_vormonat><!--var4!-->
      </anzl_teilrechnung>
      <keine_vorfizi><!--var5!!-->
      <zeile>
      <buchdatum>21.21.15</buchdatum>
      <extbelegnr>777888999</extbelegnr>
      <beschr>Beschreibung</beschr>
      <geb>99,99</geb>
      <von>1.12.14</von>
      <bis>31.12.14</bis>
      <tage>31</tage>
      <zinsen>44,44</zinsen>
      </zeile>
      </keine_vorfizi>
      <guth_zins><!--var6!-->
      <abrechdatum>01.01.15</abrechdatum>
      <zinsguth>0,0123</zinsguth>
      <zeile>
      <buchdatum>21.21.15</buchdatum>
      <extbelegnr>777888999</extbelegnr>
      <beschr>Beschreibung</beschr>
      <geb>99,99</geb>
      <von>1.12.14</von>
      <bis>31.12.14</bis>
      <tage>31</tage>
      <zinsen>44,44</zinsen>
      </zeile>
      <gesamt_guthzins>0,99</gesamt_guthzins>
      </guth_zins>
      <gesamt_vorfizi>9999,99</gesamt_vorfizi>
      <ustsatz>20</ustsatz>
      <ustbetrag>222,22</ustbetrag>
      <gesamtsum>13333,33</gesamtsum><!--var8!-->
      <prenote><!--Knoten nicht schicken wenn Zahlschein!-->
    <var>var1</var>
    <betrag1>93,76</betrag1>
    <amdatum>01.01.2014</amdatum>
    <mandatsreferenz>abcdefghirk</mandatsreferenz>
    <cid>xxxxxxxxxxxxxxxx</cid>
    <iban> xxxx xxxx xxxx xxxx</iban>
    <bic>xxxxxxxxxx</bic>
    <betrag2>93,76</betrag2>
    <abdatum>02.01.2013</abdatum>
    <modeofpayment>monatlich</modeofpayment>
    </prenote>
       </vorfin_guthzins>
            </content>
            </job>






    Last edited by nico1964; 28-01-15 at 12:31. Grund: verlor die Formatierung
    Andreas
    Ein AS/400 Dinosaurier since 1989

  8. #8
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    Ich für meinen Teil kann meine Antwort von
    HIER
    nur bestätigen.
    Das ist ein beigehen. Es ist einfacher als du denkst!
    So wie ich das z.Zt. beurteile würd ich sagen, schreib die Daten weiter in 'Printerfile' Form in eine PF.
    Dann brauchst du einen Batchjob, der entweder alle paar Sekunden nachsieht ob's was neues gibt, das auch fertig ist, oder via DATAQ den 'mach was' Befehl bekommt (letzteres würde ich bevorzugen)
    Der Batch-Job liest die 'Datei' (etwas abgewandelte, ehemalige Prtf-Datei) und baut das XML

    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Wie immer führen viele Wege zur Lösung.
    Wie ich oben schon sagte (bevor man ein 2. Pgm bemüht):
    Die ganze XML lässt sich mit simplen String-Befehlen direkt in eine PF ausgeben, die dann per CPYxxxSTMF ins IFS kopiert werden kann.
    Die Anzahl der Leerzeichen vor und nach den "<" und ">" spielt keine Rolle.
    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
    Jun 2001
    Beiträge
    1.975
    @Baldur
    Das muß dann aber in jedem Pgm gemacht werden,
    meine verion erfordert (fast) keine anpassung in den BasisPgmem und den codeaufwand einmal für alle!
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  11. #11
    Registriert seit
    Oct 2013
    Beiträge
    171
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Die Anzahl der Leerzeichen vor und nach den "<" und ">" spielt keine Rolle.
    Das stimmt nur dann, wenn ein evtl. vorhandenes Schema sogenannten "whitespace" erlaubt.
    Das ist sehr oft der Fall, aber eben nicht immer.

  12. #12
    Registriert seit
    Apr 2005
    Beiträge
    104
    Zitat Zitat von Robi Beitrag anzeigen
    Ich für meinen Teil kann meine Antwort von
    HIER
    nur bestätigen.
    Das ist ein beigehen. Es ist einfacher als du denkst!
    So wie ich das z.Zt. beurteile würd ich sagen, schreib die Daten weiter in 'Printerfile' Form in eine PF.
    Dann brauchst du einen Batchjob, der entweder alle paar Sekunden nachsieht ob's was neues gibt, das auch fertig ist, oder via DATAQ den 'mach was' Befehl bekommt (letzteres würde ich bevorzugen)
    Der Batch-Job liest die 'Datei' (etwas abgewandelte, ehemalige Prtf-Datei) und baut das XML
    Robi
    Dann verzichtet doch lieber gleich auf die Printfile bzw. PF, und schreibt gleich alles in die DataQueue,
    sowohl die Befehle, als auch die Daten. So habe ich es mal vor vielen Jahren gemacht.

    Im Prinzip habe ich die DataQ mit REXX ausgelesen, und die REXX-Routine das ganze XML wrappen lassen.
    In REXX habe ich noch einiges mehr dazu getan, also nicht nur die Datenfelder in XML-Tags gepackt, sondern das ganze XML-Dokument gebildet, dieses dann (mit MQ-Series) an den weiterverarbeitenden Service geleitet, und anschließend Log-Dateien und Statistiken geschrieben. MQ-Series und REXX habe ich da aber auch für die Interpretation der eingehenden Requests (XML-Input) verwendet, nicht nur für die Response (XML-Output). Ich habe das System damals auf Performance optimiert, alles im RAM gemacht und über Messages kommuniziert, um die Durchlaufzeiten (Request/Response) möglichst unter einer Sekunde zu halten.

    Heute würde ich aber eher auf ILE-RPG setzen, wo es aktuelle und umfangreiche Lösungsansätze gibt.

    Ein Bekannter von mir hat sich darauf spezialisiert, also auf WebServices, XML usw. mit ILE-RPG.

Similar Threads

  1. Erstellen eines XML-Dokumentes aus COBOL
    By nico1964 in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 07-01-15, 15:57
  2. COBOL embedded SQL
    By nico1964 in forum IBM i Hauptforum
    Antworten: 21
    Letzter Beitrag: 27-12-14, 11:58
  3. BS-Masken mit COBOL
    By Andreas Herzfeldt in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 18-02-05, 12:11
  4. COBOL
    By Claudia Lange in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 23-07-02, 11:32
  5. SQL-Cobol und OVRDBF
    By kaym in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 07-07-02, 13:49

Berechtigungen

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