以COBOL格式输出带有子标题的报告
输入文件的格式如下:以COBOL格式输出带有子标题的报告,cobol,gnucobol,Cobol,Gnucobol,输入文件的格式如下: Region ******* Company Name A B C A C Company in Region A: name name name... Company in Region B: name name name.. Company in Region C: name name
Region ******* Company Name
A
B
C
A
C
Company in Region A:
name
name
name...
Company in Region B:
name
name
name..
Company in Region C:
name
name
name..
有很多行。我需要获得一个输出文件,以使用如下标题重新排列文件:
Region ******* Company Name
A
B
C
A
C
Company in Region A:
name
name
name...
Company in Region B:
name
name
name..
Company in Region C:
name
name
name..
我的问题是因为输入文件中的区域没有排序。如何将第二个区域A公司添加回标题“区域A中的公司”?我只能读取该文件一次(我无法先读取区域A的所有do行,然后重新打开该文件以再次读取)。我只能有一个输出文件。您应该在文件的一次传递中完成此操作。不要一次只检查一个项目,而是在一个过程中检查所有项目…您应该在文件的一个过程中执行此操作。不要一次只检查一个项目,而是一次检查所有项目…您可以使用带有输入/输出过程的排序动词将文件按区域顺序排序 您可以在中找到许多示例。有一个简短的排序示例, 还有更多信息 您可能需要和输出过程 排序示例:
PROCEDURE DIVISION.
000-SORT SECTION.
010-DO-THE-SORT.
SORT SORT-FILE ON ASCENDING KEY SORT-KEY-1
ON DESCENDING KEY SORT-KEY-2
USING INPUT-FILE
OUTPUT PROCEDURE IS 200-WRITE-OUTPUT
THRU 230-DONE-OUTPUT.
DISPLAY "END OF SORT".
STOP RUN.
200-WRITE-OUTPUT SECTION.
210-OPEN-OUTPUT.
OPEN OUTPUT OUTPUT-FILE.
220-GET-SORTED-RECORDS.
RETURN SORT-FILE AT END
CLOSE OUTPUT-FILE
GO TO 230-DONE-OUTPUT.
MOVE SORT-RECORD TO OUTPUT-RECORD.
WRITE OUTPUT-RECORD.
GO TO 220-GET-SORTED-RECORDS.
230-DONE-OUTPUT SECTION.
240-EXIT-OUTPUT.
EXIT.
您可以将Sort动词与输入/输出过程一起使用,将文件按区域顺序排序 您可以在中找到许多示例。有一个简短的排序示例, 还有更多信息 您可能需要和输出过程 排序示例:
PROCEDURE DIVISION.
000-SORT SECTION.
010-DO-THE-SORT.
SORT SORT-FILE ON ASCENDING KEY SORT-KEY-1
ON DESCENDING KEY SORT-KEY-2
USING INPUT-FILE
OUTPUT PROCEDURE IS 200-WRITE-OUTPUT
THRU 230-DONE-OUTPUT.
DISPLAY "END OF SORT".
STOP RUN.
200-WRITE-OUTPUT SECTION.
210-OPEN-OUTPUT.
OPEN OUTPUT OUTPUT-FILE.
220-GET-SORTED-RECORDS.
RETURN SORT-FILE AT END
CLOSE OUTPUT-FILE
GO TO 230-DONE-OUTPUT.
MOVE SORT-RECORD TO OUTPUT-RECORD.
WRITE OUTPUT-RECORD.
GO TO 220-GET-SORTED-RECORDS.
230-DONE-OUTPUT SECTION.
240-EXIT-OUTPUT.
EXIT.
如果你在做作业,记住作业的目的不是解决问题,而是证明你已经学会了课堂材料。所以,如果这是家庭作业,根据你所学的内容,创建你自己的解决方案。如果你想解决现实生活中的问题,下面的例子可能会帮助你找到正确的方向。如果您没有被教导使用输出过程进行排序,则不希望使用下面的示例来做家庭作业。也就是说,下面的程序使用GNUCobol显示的示例数据工作。请特别注意排序如何使用段落OUTPUT-CO-BY-REGION-REPORT ---样本数据文件COMPANY.DAT的内容---
如果你在做作业,记住作业的目的不是解决问题,而是证明你已经学会了课堂材料。所以,如果这是家庭作业,根据你所学的内容,创建你自己的解决方案。如果你想解决现实生活中的问题,下面的例子可能会帮助你找到正确的方向。如果您没有被教导使用输出过程进行排序,则不希望使用下面的示例来做家庭作业。也就是说,下面的程序使用GNUCobol显示的示例数据工作。请特别注意排序如何使用段落OUTPUT-CO-BY-REGION-REPORT ---样本数据文件COMPANY.DAT的内容---
这是家庭作业吗?如果没有,您指定限制的原因是什么?即使在“允许”的情况下,您也应该强烈地不考虑多次打开和关闭文件。对于家庭作业,Bruce给出了答案(排序),不过他举了一个来自HP/Compaq的悲惨例子:-),所以你可以做一个好的。如果不是家庭作业,请更全面地描述你的局限性。此评论仅供参考,仅与问题无关。当您将其标记为opencobol时,请查看SourceForge上的reportwriter分支。报表编写器模块是一个功能强大的模块。这是家庭作业吗?如果没有,您指定限制的原因是什么?即使在“允许”的情况下,您也应该强烈地不考虑多次打开和关闭文件。对于家庭作业,Bruce给出了答案(排序),不过他举了一个来自HP/Compaq的悲惨例子:-),所以你可以做一个好的。如果不是家庭作业,请更全面地描述你的局限性。此评论仅供参考,仅与问题无关。当您将其标记为opencobol时,请查看SourceForge上的reportwriter分支。报表编写器模块是一个功能强大的模块,是一个更好的例子。我知道你知道文件状态。您是否对
返回
尝试过相同的技巧,以避免在结尾/不在结尾时出现丑陋的?您缺少结束返回
,可能是结束返回终止了它?我得考虑一下:-)一个更好的例子。我知道你知道文件状态。您是否对返回
尝试过相同的技巧,以避免在结尾/不在结尾时出现丑陋的?您缺少结束返回
,可能是结束返回终止了它?我得考虑一下:——)