COBOL显示文件中的所有重复项

时间:2018-03-08 10:27:42

标签: cobol gnucobol

我有一个包含不同名称列表的文件。有些人出现两次或更多。

我想要显示两次或更多次出现在此列表中的所有艺术家。

我该如何处理?

提前致谢,

斯隆

3 个答案:

答案 0 :(得分:0)

在JCL SORT中执行此操作更容易:

//SORT30 EXEC PGM=SYNCSORT,COND=(8,LT),            
//             PARM=('INCORE=OFF,DYNALLOC=SYSDA',EQ
//*                                                
//STEPLIB INCLUDE MEMBER=SYSTEP00                  
//        INCLUDE MEMBER=SYSORT00                  
//*                                                
//SORTIN   DD DISP=SHR,DSN=AA.YOUR.INPUT.FILE  
//SORTOUT  DD DISP=SHR,DSN=AA.YOUR.OUTPUT.FILE   
//SORTXSUM DD  SYSOUT=*  
//SYSOUT   DD  SYSOUT=*                            
//SYSPRINT DD  SYSOUT=*                            
//SORTMSG  DD  SYSOUT=*  
//SYSIN   DD   *          
  SORT  FIELDS=(1,26,CH,A)
  SUM FIELDS=NONE,XSUM    
/*                        
//*

SORTXSUM SYSOUT将在那里有重复项。只需将FIELD=修改为艺术家数据的位置

即可

答案 1 :(得分:0)

  

我该如何处理?

步骤1:收集有关输入文件的信息,例如文件名和记录布局。还有关于输出的信息,例如它是数据文件还是报告。

第2步:使用此信息编写file controlfile description entries的代码。

步骤3:确定要在procedure division中使用的算法,包括执行该算法所需的任何数据项。

对于算法,会有一个循环,但请记住,在进入循环之前需要读取两个记录,并且在循环结束后可能有一个未写入的名称。您还需要一个计数器来确定名称是“两次或更多次”。

步骤4:编写算法代码。

第5步:编译和测试。

步骤6:如果有错误,您需要帮助纠正这些错误,请发布代码和问题描述。

答案 2 :(得分:0)

如果文件很小,则可以将数据存储在WS中,然后编写简单的排序,例如在具有重复数据的字段上进行buble排序。如果文件很大(可能不是您的情况),则应使用“外部排序”或“内部排序”,然后选择重复项。如果您不关心资源,请创建一个KSDS并从文件中加载它。