Cobol Copybook から XSD に変換するツールを知っている人はいますか? またはXML。
5 に答える
COBOL コピーブック用の本格的なパーサーを構築するには、いくつかの課題があります。
コピーブックは、コンパイルのテキスト操作段階で COBOL プログラムに組み込まれます。コピーブックのソース自体が不完全な場合があります。解析用の完全なソースを取得する唯一の方法は、ソースを COBOL ソース プログラムに取り込んだかのように前処理することです。通常、コピーブックは COPY ディレクティブを介して COBOL プログラムに取り込まれます。これを持ち出すのは少し無意味に思えるかもしれませんが、次のことを考慮してください。
1) COPY ディレクティブには REPLACING オプションが付属しています。表面的には、これは対処するのに十分簡単に思えるかもしれませんが、詳細に入ると、非常に「興味深い」ものになります。参照:コピー指令
2) REPLACE ディレクティブ。このディレクティブは、COPY ディレクティブがそのビットを実行した後にソース テキストを操作することもできます。参照: REPLACE DIRECTIVE
3) ネストされたコピーブック。これは前の 2 つほど厄介ではないかもしれませんが、入れ子にも注意してください。
4) COBOL ピクチャ文字列の構文は、いずれも笑いものです。見てください:ピクチャ文字列記号
5) パーサーは、COBOL 継続規則も処理する必要があります。参照: Continuation Lines、特に PSEUDO TEXT の継続。
落胆させたくはありませんが、COBOL の解析は簡単な作業ではありません。
明るい面としては、コピーブックの構造が非常にシンプルな場合 (多くの場合と同様)、正規表現のカスケードを使用してこれを実行できる可能性があります。このアプローチは、ソフトウェア更新プロジェクトで COBOL プログラム (およびコピーブック) を解析する必要がある人の間でかなり一般的です。たぶん見てください:RegReg
乾杯...
ずっと前に、COBOLコピーブックを解析してXSDファイルを生成するためのコードを作成しました。
COBOL言語構造はかなり規則的であるため、変数名を取得し、フィールド長を識別するための正規表現を作成しました。その解析された構造を使用して、XMLテストデータ、その構造を操作するためのMSXML DOMコード、およびそれらのIMSトランザクションをテストするためのHTMLフォームを作成することもできます。
結論:正規表現はそれを行うのに本当に役立つ可能性があります。
私のKoopaCobolパーサープロジェクトを試すことができます。前処理は行いませんが、ほとんどのコピーブックではこれは実際には必要ないことがわかりました。標準のコピーブックに期待することのほとんどをカバーする必要があります。そうでない場合は、いつでもパーサーを拡張できます。解析ツリーをXMLにエクスポートし、XMLを任意の方法で処理できます。
Rational Developer for Z、XML Thunder、Syncsort ETL...これを行う製品はたくさんあります。
しかし実際には、スキーマ データ型の規則を理解すれば、非常に簡単に手動で行うことができます。ほとんどの場合、Cobol コピーブックに合わせて xsd:string、xsd:decimal、xsd:integer、および xsd:date のいくつかのフレーバーを処理します。
次にREDEFINES
、特定の一連の連続したバイトをさまざまな方法で再定義するために使用される句があります。次に、OCCURS
固定長配列の実装であるOCCURS DEPENDING ON
句と可変長配列の句です。
したがって、NealB は正しいです。これは簡単な作業ではありません。