是否有一个明确的算法来排序/排序X12文件中的循环?

时间:2014-12-15 19:36:21

标签: edi x12

尽管循环在X12中是一种逻辑概念(在文本中没有直接物理表示),但每个事务集都定义了一组它可以包含的循环,包括循环的标识符和它们的排序。我的问题是,一般来说,排序循环的规则是什么?是否有一些简洁的规则可以在一些代码中表达,这些代码应该能够采用循环集合(具有已知的标识符,如1000A,2300BB等)并对它们进行适当的排序?

我的问题的上下文是我正在开发一个通用库,应用程序将使用它来构建X12文档/事务集的模型(并写出模型所代表的文本)。它具有表示元素,段和循环的对象。在特定循环中对段的排序很容易,它们由实施指南决定。但是我试图让循环排序(在一个事务集中)一般地工作;这就是我要问的问题

似乎一般规则是循环基于其标识符使用数字部分作为主要排序键进行排序,其中alpha部分作为辅助排序键。当然,其他包含的分层循环将放置在该排序顺序中的父级之前和循环之后(例如:1000A,2000A,2010A,2010B,2100,2300 - 其中2010A和2010B是2000A的子级)。

我了解规范和实施指南包含所有这些信息;我正在寻找关于循环排序的无所不包的规则(分段排序)。有没有简洁的方法来算法表达规则?甚至还有一条严厉的规则吗?

1 个答案:

答案 0 :(得分:0)

正如我在评论中提到的,标准有一个循环值。看一下Liaison Dictionary Viewer的截图。 CLM段的LOOP值为100.下面的段是CLM段的子节点(扩展标签)。任何"命令"可由伙伴任意定义,或者可以在任何(未定义)顺序中提供,只要数据合格。但是该循环最多可以发生100次,并且可以在循环值内部具有重复的段。

实施指南将为您提供合作伙伴想要的正确订单。您似乎正在编写自己的语法验证引擎。

enter image description here