我的 SORT 函数有啥问题?

Posted

技术标签:

【中文标题】我的 SORT 函数有啥问题?【英文标题】:What's wrong with my SORT function here?我的 SORT 函数有什么问题? 【发布时间】:2015-03-03 01:00:21 【问题描述】:

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

我在工作中有一项培训任务,即使用 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】:

这是可以满足的要求:

取两个未排序的数据集;在 22 字节的密钥上匹配它们;将所有数据输出到两个文件之一。如果键重复,则选择匹配组的记录,以您方便且不能保证在后续运行中重新创建哪个选择,并将其写入输出文件;将所有未写入第一个文件的记录写入第二个文件。

如果这是要求,那么您就是赢家,因为它的性能将优于同等的JOINKEYS

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

为了更灵活地保留哪些内容,可以使用DUPKEYS 代替 SUM。

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

如果数据已经是有序的,但其他方面要求是一样的,那么就不是一个好办法了。您可以尝试使用 MERGE 代替 SORT,并使用 SORTIN01 代替您的 SORTIN。

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

如果您做的事情超出了 SUM 和 DUPKEYS 的能力,您将需要 JOINKEYS。

例如,如果数据已经按顺序排列,您可以在该输入的 JOINKEYS 上指定 SORTED。

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

在不知道您的确切要求的情况下,无法判断您的解决方案是否是最好的 :-)

【讨论】:

以上是关于我的 SORT 函数有啥问题?的主要内容,如果未能解决你的问题,请参考以下文章

我的基数排序有啥问题?

`sorted(list)` 与 `list.sort()` 有啥区别?

我的 doGet 函数有啥问题?

我的 AWS Lambda 函数有啥问题?

R Shiny - 我的观察函数(UpdateSelectInput)有啥问题?

我的交叉熵函数的实现有啥问题?