【发布时间】:2009-11-04 16:04:46
【问题描述】:
有人知道从 Cobol Copybook 转换为 XSD 的工具吗?或 XML。
【问题讨论】:
有人知道从 Cobol Copybook 转换为 XSD 的工具吗?或 XML。
【问题讨论】:
为 COBOL 字帖构建一个成熟的解析器有一些挑战:
在编译的文本操作阶段,Copybooks 被合并到 COBOL 程序中。字帖源本身可能不完整。获得完整解析源的唯一方法是对其进行预处理,就好像它已被引入 COBOL 源程序一样。通常通过 COPY 指令将字帖引入 COBOL 程序。提出这个问题似乎有点毫无意义,但请考虑以下几点:
1) COPY 指令带有一个 REPLACING 选项。从表面上看,这似乎很简单,但一旦深入细节,它就会变得非常“有趣”。见:COPY DIRECTIVE
2) REPLACE 指令。该指令还可以在 COPY 指令完成其位后操纵源文本。见:REPLACE DIRECTIVE
3) 嵌套的字帖。这个可能不像前两个那么讨厌,但也要记住嵌套。
4) COBOL 图片字符串的语法也值得一笑。看看:Picture String Symbols
5) 您的解析器还需要处理 COBOL 延续规则。请参阅:Continuation Lines,尤其是 PSEUDO TEXT 的延续。
我不想让您气馁,但解析 COBOL 并非易事。
从好的方面来说,如果您的字帖有一个非常简单的结构,就像许多人一样,那么使用级联的正则表达式可能会完成这项工作。这种方法在那些需要在软件改造项目中解析 COBOL 程序(和字帖)的人中相当普遍。不妨看看:RegReg
干杯...
【讨论】:
很久以前,我构建了一些代码来解析COBOL copybook并生成XSD文件。
由于 COBOL 语言结构非常规则,我制作了一个正则表达式来获取变量名和识别字段长度。使用该解析结构,我还可以创建 XML 测试数据、MSXML DOM 代码来操作该结构和 HTML 表单来测试这些 IMS 事务。
底线:正则表达式可能非常有用。
【讨论】:
你可以试试我的Koopa Cobol parser 项目。虽然它不做预处理,但我发现对于大多数字帖来说,这并不是必需的。它应该涵盖您对标准字帖的大部分期望,如果没有,您可以随时扩展解析器。它可以将解析树导出为 XML,然后您可以以任何您想要的方式对其进行处理。
【讨论】:
Rational Developer for Z、XML Thunder、Syncsort ETL...有很多产品可以做到这一点。
确实,如果您学习了模式数据类型的规则,您可以非常轻松地手动完成。大多数情况下,您将处理 xsd:string、xsd:decimal、xsd:integer 和一些风格的 xsd:date 以匹配您的 Cobol 字帖。
【讨论】:
然后是REDEFINES 子句,用于以不同方式重新定义给定的一组连续字节。然后是OCCURS 子句,它是固定长度数组的实现,OCCURS DEPENDING ON 子句用于可变长度数组。
所以,NealB 是对的;这不是微不足道的任务。
【讨论】: