我在一个文件中有一些内容,我必须生成统计数据,比如有多少记录是类型- 1、类型-2等。类型的数量可以更改,并且在文件到达之前代码是未知的。在SQL系统中,我可以使用COUNT和GROUP BY子句来完成这个任务。但是我不确定我是否可以使用SYNCSORT或COBOL程序来完成这个任务。这里有人想知道我如何使用SYNCSORT在文件上实现'GROUP‘类型查询。
样本数据:
TYPE001 SUBTYPE001 TYPE01-DESC
TYPE001 SUBTYPE002 TYPE01-DESC
TYPE001 SUBTYPE003 TYPE01-DESC
TYPE002 SUBTYPE001 TYPE02-DESC
TYPE002 SUBTYPE004 TYPE02-DESC
TYPE002 SUBTYPE008 TYPE02-DESC我想要得到信息,如TYPE001 ==> 3记录,TYPE002 ==> 3记录。代码直到运行时才知道的是TYPENNN值
发布于 2014-12-30 08:00:37
您已经按顺序显示数据,因此不需要对数据本身进行排序,这使得使用SUM FIELDS=与SORT的解决方案很糟糕,如果有人建议它(加上格式化代码)。
使用单个输入文件和SUM FIELDS=的MERGE会更好,但仍然需要格式化的代码。
生成适合您的输出的最简单方法是使用OUTFIL报告函数:
OPTION COPY
OUTFIL NODETAIL,
REMOVECC,
SECTIONS=(1,7,
TRAILER3=(1,7,
' ==> ',
COUNT=(M10,LENGTH=3),
' Records'))NODETAIL说“删除所有数据线”。REMOVECC说“虽然这是一个报告,但不要在其中一个输出记录上使用打印机控制字符”。SECTIONS说“我们将使用控制中断,在这里他们(在本例中)是”。在本例中,您的控件字段为1,7。TRAILER3定义了在每个控件中断处将产生的输出:COUNT这里是该特定中断中的记录数。M10是一个编辑掩码,它将前导零变为空白。LENGTH给出计数输出的长度,从样本数据中选择三个,子类型是唯一的,并且有三个数字作为数据的唯一部分。更改为任何适合您的实际数据。
您还不清楚,您可能希望输出“浮动”(3bb而不是bb3,其中b表示空白)?需要更多的代码..。
https://stackoverflow.com/questions/27694459
复制相似问题