有没有人知道从Cobol Copybook转换为XSD的工具?或XML。
答案 0 :(得分:8)
为COBOL副本构建一个完整的解析器有一些挑战:
在编译的文本操作阶段,Copybooks被合并到COBOL程序中。字帖来源本身可能不完整。获得完整解析源的唯一方法是预处理它,就像它已经被带入COBOL源程序一样。通常,拷贝书通过COPY指令进入COBOL程序。提出这个看起来似乎有点无意义,但请考虑以下几点:
1)COPY指令附带一个REPLACING选项。从表面上看,这似乎很简单,但是一旦你进入细节,它就变得非常“有趣”。请参阅:COPY DIRECTIVE
2)REPLACE指令。该指令也可以在COPY指令完成后操作源文本。请参阅:REPLACE DIRECTIVE
3)嵌套的副本。这个可能不像前两个那样令人讨厌,但也要牢记在内。
4)COBOL Picture字符串的语法也嘲笑它们。看看:Picture String Symbols
5)你的解析器也需要处理COBOL延续规则。请参阅:Continuation Lines,特别是PSEUDO TEXT的继续。
我不想劝阻你,但解析COBOL并不是一件容易的事。
从好的方面来说,如果你的副本具有简单易懂的结构,那么就可以使用一系列正则表达式完成这一过程。这种方法在需要解析软件更新项目的COBOL程序(和副本)的人中相当普遍。也许看看:RegReg
干杯...
答案 1 :(得分:2)
很久以前,我构建了一些代码来解析COBOL副本并生成XSD文件。
由于COBOL语言结构非常规则,我制作了一个正则表达式来获取变量名称并识别字段长度。通过该解析结构,我还可以创建XML测试数据,MSXML DOM代码来操作该结构和HTML表单来测试这些IMS事务。
底线:正则表达式可能非常有用。
答案 2 :(得分:1)
您可以尝试我的Koopa Cobol parser项目。虽然它没有进行预处理,但我发现对于大多数副本而言,这并不是必需的。它应该涵盖您对标准字帖所期望的大部分内容,如果不是,您可以随时扩展解析器。它可以将解析树导出为XML,然后您可以以任何方式处理它。
答案 3 :(得分:0)
Rational Developer for Z,XML Thunder,Syncsort ETL ......有很多产品可以做到这一点。
但实际上,如果您了解架构数据类型的规则,则可以非常轻松地手动完成。大多数情况下,您将处理xsd:string,xsd:decimal,xsd:integer和一些xsd:date的风格以匹配您的Cobol副本。
答案 4 :(得分:0)
然后有REDEFINES
子句用于以不同方式重新定义给定的连续字节集。然后是OCCURS
子句,它是固定长度数组的实现,是OCCURS DEPENDING ON
子句,用于可变长度数组。
所以,NealB是对的;这是不一项微不足道的任务。