PDA

View Full Version : XML Generierung in Cobol für Z-OS



p67
05-02-19, 11:09
Hallo Leute,

bin ich hier richtig wenn ich Fragen habe zur XML-Generierung in Cobol unter Z-OS?

Grundsätzlich hab ich es schon mal geschafft einen kleinen XML-Datenstrom zu erzeugen, aber ein paar Sachen sind mir noch nicht klar:

Man muss ja dazu zuvor die Struktur definieren, wobei die Variablen genauso heißen wie die Elementenamen in der XML-Struktur...
Aber was ist wenn in der Struktur zwei unterschiedliche Stellen den selben Namen haben sollen. zb hier das Feld POS (kommt im "Header" vor und im "Archiv")
Cobol meckert natürlich das Feld als "duplicated " an...
01 AUFTRAG.
05 HEADER.
10 FAHRZEUG PIC X(8) VALUE 'XXXXXXXX'.
10 POS PICX(4) VALUE '1000'.
05 ARCHIV.
10 ARCHKZ PIC X(1).
10 POS PIC X(4).
05 BODY.
10 ZEILE OCCURS 9999.
15 DETAIL1 PIC X(4).
15 DETAIL2 PIC X(100).
15 DETAIL2 PIC X(200).



Generiert wird das Ganze dann mit...

XML GENERATEZW-XMLFROMAUFTRAG
WITHXML-DECLARATION.


Da kommt dann einfach eine riesen Datenwurst raus.
1) das Feld ZW-XML muss riesengroß sein und
2) es ist alles in einer Wurst
Frage:
Ist es möglich die Elemente Satz für Satz auszugegeben?
Also zb eine Datei mit fixer Satzlänge 100 und dann je Satz ein eingerücktes Element.
Ist das nicht üblich? oder wenn doch, wie würde das gehen? Ich find leider nichts dazu


<header>
<montageauftrag>
<fzgheader></fzgheader></montageauftrag></header>

Fuerchau
05-02-19, 16:17
Für Z-OS bist du hier im falschen Forum.
Ich habe folgenden Link gefunden:
http://mainframewiki.com/cobol/generating-xml-using-cobol.html

Ansonsten hast du natürlich Recht:
XML ist ein endloser Datenstrom, er strukturiert sich selber durch XML.

Um die Daten "schön" anzusehen, benötigt es einen XML-Viewer.
Hier kann man Notepad++ oder das "XML Notepad 2007" (es gibt nichts neueres) verwenden.

Dein Problem des sehr großen Outputs kann dein OCCURS sein.
Hier hilft ggf. ein "occurs depending on":
http://www.3480-3590-data-conversion.com/article-cobol-occurs.html

p67
11-02-19, 09:03
Danke für deine Antwort.

Das "depending on" war mal ein guter Tipp und funktioiert.

Die Frage ist nur wie ich im Cobol einen so großen Datenstrom in 1 (einen?) Datensatz bekomme?!?
Normal arbeite ich mit Satzstrukturen mit fixer Satzlänge und vielen Sätzen.

Gibt's da irgendeine spezielle Dateiform?

Fuerchau
11-02-19, 13:36
Da ich das Z-OS nicht kenne, kann ich da nicht so weiterhelfen.
Aber vielleicht hilft dir dies weiter:

https://www.ibm.com/support/knowledgecenter/en/SSUFAU_1.0.0/com.ibm.ent.cbl.zos.doc/PGandLR/tasks/tpqsm15.html

Da XML unterstützt wird, sollte es ebenso eine Streamfile-Unterstützung (wie bei uns auf der AS/400) geben können.