我的SORT功能出了什么问题?

时间:2015-03-03 01:00:22

标签: mainframe jcl syncsort

首先,我是与大型机相关的完全初学者。

我在工作中有一个培训任务,使用SORT在两个文件中查找匹配的密钥。我将此代码提交给我的导师,这里是伪编码的,因为我无法从家中访问系统,并且在离开之前没想到要复制它:

//STEP01 EXEC SORT
//SORTIN DD DSN=file1
//       DD DSN=file2
//SORTXSUM DD DSN=output file
//SORTOUT  don't need this data anywhere specific so just tossing at spool
//SYSIN DD *
  SORT FIELDS=(1,22,CH,A)
  SUM FIELDS=NONE,XSUM
/*

当我粘贴几个随机顺序文件时,输出正是我所期望的。但是,我的导师说这不起作用。他的英语有点糟糕,我很少理解他最初几次重复的说法。

这与他提到JOINKEYS(当然是在迅速离开工作之前)相结合,让我觉得他只是想要(需要?)它以不同的方式完成并且表达得非常糟糕。

无论哪种方式,有人可以告诉我,我写的代码是否很糟糕,并解释为什么它显然没有使用JOINKEYS的方法?

1 个答案:

答案 0 :(得分:1)

以下是满足要求的要求:

取两个未分类的数据集;在22字节的密钥上匹配它们;将所有数据输出到两个文件之一。如果密钥是重复的,请选择匹配组的记录,以您方便的方式为准,并确保在后续运行中重新创建哪些选择,并将其写入输出文件;将未写入第一个文件的所有记录写入第二个文件。

如果这是要求,那么您将获胜,因为它的效果会优于等效的JOINKEYS

解决方案也可以通过几种方式进行修改。在SORT语句中使用OPTION EQUALSEQUALS时,它将始终是将保留的相等键的第一个记录。

为了更好地保留所保留的内容,可以使用DUPKEYS代替SUM。

如果使用SUM或DUPKEYS满足要求,使用它们比使用JOINKEYS更有效。

如果数据已经按顺序排列,但是其他要求是相同的,那么这不是一个好方法。您可以尝试使用MERGE代替SORT,并使用SORTIN01而不是SORTIN。

如果你有DFSORT而不是SyncSORT,你可以使用ICETOOL的SELECT运算符来完成XSUM和DUPKEYS可以做的所有事情(以及更多)。

如果你做的事情超出了SUM和DUPKEYS所能做的事情,你就需要JOINKEYS。

例如,如果数据已按顺序排列,则您在JOINKEYS上为该输入指定SORTED。

在大型机上,资源由客户支付。所以我们的目标是避免肆意挥霍。如果一种方式使用更少的资源,我们就选择了。

如果不了解您的具体要求,无法判断您的解决方案是否最佳: - )