从排序中排除记录

时间:2013-01-18 15:32:01

标签: sorting cobol jcl

排序程序是否有一个参数可以排除(忽略)jcl中排序的文件的第一行。

谢谢,

3 个答案:

答案 0 :(得分:3)

如果您的排序级别是最新的,您可以使用DATASORT。从Frank Yaeger的回答中借用谷歌。

//S1   EXEC  PGM=ICETOOL                           
//TOOLMSG   DD  SYSOUT=*                           
//DFSMSG    DD  SYSOUT=*                           
//IN DD *                                           
FIRST                                               
AAAA                                               
CCCC                                               
DDDD                                               
FFFF                                               
GGGG                                               
//OUT DD SYSOUT=*                                   
//TOOLIN DD *                                       
DATASORT FROM(IN) TO(OUT) FIRST USING(CTL1)         
/*                                                 
//CTL1CNTL DD *                                     
  SORT FIELDS=(1,4,CH,A)                           
/*

答案 1 :(得分:2)

您可以尝试以下操作:

//SYSIN    DD *   
SORT FIELDS=...
SKIPREC=1
/*

您可能需要进行排序复制,并在随后的JCL步骤中进行排序。

答案 2 :(得分:1)

尝试使用ICETOOL SUBSET运算符。这是一个非常简单的例子:

//STEP01   EXEC PGM=ICETOOL
//TOOLMSG  DD SYSOUT=*
//DFSMSG   DD SYSOUT=*
//IN1      DD *        -- Unsorted input data...
FIRST LINE
5
6
7
1
4
/*
//TOOLIN   DD *         -- ICETOOL commands
 SUBSET FROM(IN1) TO(OUT1) REMOVE INPUT HEADER
/*
//OUT1 DD SYSOUT=*      -- Sorted output goes here

完成后OUT1包含:

1
4
5
6
7

来自IN1的数据,已排序,缺少第一个输入行。

可以找到DFSORT / ICETOOL手册here和 ICETOOL SUBSET运营商是 记录here

修改

根据你对吉尔伯特的评论,我建议使用第二步 IDCAMS REPRO(复制)原始输入文件中的第一条记录,然后将其连接到ICETOOL输出。 JCL相对简单。