首先,我是与大型机相关的完全初学者。
我在工作中有一个培训任务,使用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的方法?
答案 0 :(得分:1)
以下是满足要求的要求:
取两个未分类的数据集;在22字节的密钥上匹配它们;将所有数据输出到两个文件之一。如果密钥是重复的,请选择匹配组的记录,以您方便的方式为准,并确保在后续运行中重新创建哪些选择,并将其写入输出文件;将未写入第一个文件的所有记录写入第二个文件。
如果这是要求,那么您将获胜,因为它的效果会优于等效的JOINKEYS
。
解决方案也可以通过几种方式进行修改。在SORT语句中使用OPTION EQUALS
或EQUALS
时,它将始终是将保留的相等键的第一个记录。
为了更好地保留所保留的内容,可以使用DUPKEYS
代替SUM。
如果使用SUM或DUPKEYS满足要求,使用它们比使用JOINKEYS更有效。
如果数据已经按顺序排列,但是其他要求是相同的,那么这不是一个好方法。您可以尝试使用MERGE代替SORT,并使用SORTIN01而不是SORTIN。
如果你有DFSORT而不是SyncSORT,你可以使用ICETOOL的SELECT
运算符来完成XSUM和DUPKEYS可以做的所有事情(以及更多)。
如果你做的事情超出了SUM和DUPKEYS所能做的事情,你就需要JOINKEYS。
例如,如果数据已按顺序排列,则您在JOINKEYS上为该输入指定SORTED。
在大型机上,资源由客户支付。所以我们的目标是避免肆意挥霍。如果一种方式使用更少的资源,我们就选择了。
如果不了解您的具体要求,无法判断您的解决方案是否最佳: - )