Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Java-Klassen mit Ant generieren

Java-Klassen werden mit Hilfe eines Ant-Skripts generiert. Die Parameter sind in der Datei cobol2java.properties wie folgt enthalten:

xml.file=<xml_file>
cobol.struct=<list_of_structure_names>
package.name=<package_name>
doc.dir=<doc_directory>
jar.dest=<jarfile_name>
code.convention={java|cobol}
undef.pic9=<undef_value>

Erläuterung der Parameter:

xml.file=<xml_file>

Der Parameter xml.file gibt den Namen der Datei an, die die XML-Beschreibung der zu verarbeitenden Cobol-Struktur enthält.

!

Stellen Sie sicher, dass die DTD newformat.dtd im selben Verzeichnis liegt wie die XML-Datei. Eine Kopie der newformat.dtd finden Sie in den Verzeichnissen lib und sample.


cobol.struct=<list_of_structure_names>

Geben Sie im Parameter cobol.struct eine Liste von COBOL-Strukturen an, die durch Leerzeichen voneinander getrennt werden. Cobol2Java durchsucht alle Elemente (Datensätze wie Felder) in der Input-Datei nach den in <list_of_structure_names> enthaltenen Namen. Für jedes gefundene Element wird eine Java-Klasse generiert. Geben Sie mindestens einen Strukturnamen an.
Für den Parameter cobol.struct sind nicht alle Angaben sinnvoll. Daher sollten Sie folgende Einschränkungen beachten:

  • Geben Sie in einem Aufruf keine zwei ineinander geschachtelte Strukturen an. Grund: Die Klasse der tieferliegenden Struktur wird zweimal erzeugt (als root level und als sub level class). Die später erzeugte Klasse überschreibt die erste und es gibt Fehler bei der Übersetzung bzw. bei der Verwendung der Klassen.

  • Geben Sie keine Struktur- oder Feldnamen an, die mehrfach vorhanden sind (occurs, Array). Grund: Über die erzeugte Klasse kann nur auf das erste Element des Arrays zugegriffen werden. Statt dessen sollten übergeordnete Strukturen angegeben werden.

  • Die Angabe von Struktur- oder Feldnamen, die mehrfach vorhanden sind, ist nicht gestattet. Es wird eine Meldung ausgegeben und keine Java-Klassen erzeugt.

package.name=<package_name>

Der Parameter package.name enthält den Namen des Pakets, unter denen die generierten Java-Klassen zusammengefasst werden sollen.

doc.dir=<doc_directory>

doc.dir enthält den Verzeichnisnamen für JavaDoc.

jar.dest=<jarfile_name>

jar.dest enthält den Namen der JAR-Datei, die generiert werden soll.

code.convention={java|cobol}

code.convention gibt die für Java-Klassen verwendete Namenskonvention an. Bei Angabe der Bezeichnung cobol werden, wann immer möglich, alle Namen aus dem COBOL-Programm übernommen. Andernfalls werden alle Namen den Konventionen angepasst, die in Java für die Benennung von Klassen, Variablen, Methoden und Objekten festgelegt sind (siehe auch Namenskonventionen ).

undef.pic9=<undef-value>

undef.pic9 gibt an, welcher ausgezeichnete Wert für Pic9-Felder "undefiniert" bedeuten soll. Dabei kann <undef-value> folgende Form haben:

0x<nn>


wobei <nn> der hexadezimale Bytewert ist, oder


"'<char>'"

wobei <char> ein abdruckbares Zeichen mit einer 1-Byte-Darstellung ist. Um in der Java-Klasse den Wert '<char>' zu erhalten, muss der Parameter zusätzlich in Hochkommata (") angegeben werden, z.B. undef.pic9="''"

Wird undef.pic9 nicht angegeben, ist '0' der vordefinierte Wert für undefinierte Pic9-Felder.
Achtung! Bei Angabe des Bytewertes und aktiviertem Encoding ist ggf. die Codeumsetzung zu beachten. Siehe dazu auch Datenfeld lesen .

i

Wenn Sie generierte Java-Klassen kompilieren, ist es wichtig, dass die Klassen- und Dateinamen einander hinsichtlich der Groß- und Kleinschreibung entsprechen. Da das Windows-Dateisystem nicht zwischen Groß- und Kleinschreibung unterscheidet, meldet der Java-Compiler während der Kompilierung eventuell folgenden Fehler, wenn er z.B. eine Klasse Benid in einer Datei BENID.java findet:
"[javac] BENID.java:19:class Benid is public, should be declared in a file named Benid.java"

Dieser Fehler tritt auf, wenn Sie dieselbe COBOL-Struktur zunächst mit code.convention=cobol und dann noch einmal mit code.convention=java erstellen. Wenn Sie code.convention ändern möchten, müssen Sie zuerst die Sourcen löschen, die zuvor im Verzeichnis src erstellt wurden.

Starten Sie das Programm mit dem Skript runAnt.sh (Unix-/Linux-System) oder runAnt.bat (Windows-System). Dies startet die Generierung unter Verwendung des AntProgramms, das mit Cobol2Java ausgeliefert wird. Als Ergebnis dieses Generierungsprozesses werden die Java-Sourcen im Verzeichnis src angelegt, kompiliert und in der in jar.dest angegebenen JAR-Datei gespeichert. Wenn Sie das mitgelieferte Ant-Skript nicht verwenden möchten, rufen Sie Ant aus dem Verzeichnis auf, das die Datei build.xml enthält.

i

Einige der hier verwendeten Tools benötigen sehr viel Arbeitsspeicher. Nehmen Sie daher mit Hilfe der Optionen -Xss (stack size) und -Xmx (heap size) die für große Datenstrukturen erforderlichen Anpassungen vor. Auf Unix-/Linux-Systemen muss ggf. auch das stack size limit mit dem Kommando ulimit angepasst werden.

!

Damit runAnt korrekt ausgeführt wird, müssen Sie die Java-Programme javac und javadoc aufrufen können, d.h. das Java SDK-Programmverzeichnis muss in der Umgebungsvariablen PATH vorhanden sein.

Sie müssen bei der Angabe der Pfadnamen für die Dateien xml.file, doc.dir und jar.dest die Trennzeichen „/“ oder „\\“ verwenden, da das Ant -Skript „\“ und das nachfolgende Zeichen als Steuerzeichen interpretiert.

Beispiel 27 Beispiel für eine cobol2java.properties-Datei

# Properties to set for Cobol2Java Program
# used by Ant
# Name of Source XML generated by the BS2000 COBOL Compiler
# Make sure the DTD File is available!!
xml.file=cobkb.xml
# Name of the COBOL Records 
# Space separated list: 
# cobol.struct=RECORD1 RECORD3 will create Java classes for 
# RECORD1 and RECORD3
cobol.struct=MPUT-MSG
# Name of the package to be generated
package.name=de.siemens.cob2java.cobkb
#
# Directory for JavaDoc
doc.dir=doc/cobkb
# Jar file name
jar.dest=cobkb.jar
# Determines what code convention the generated code will use
#
# code.convention=java
# code.convention=cobol
code.convention=java
# defines a non numeric value which marks a PIC9 field as undefined
# 
undef.pic9=0x20