使用 REXX 执行 DFSORT

Posted

技术标签:

【中文标题】使用 REXX 执行 DFSORT【英文标题】:Executing a DFSORT using REXX 【发布时间】:2018-07-09 07:24:36 【问题描述】:

我想知道,是否可以通过REXX调用DFSORT? 我使用了下面的代码,但结果不符合预期。

/*REXX*/
QUEUE "//ISDNNNN JOB XXX,XX"
QUEUE"//STEP003 EXEC PGM=SORT"
"FREE FI(SYSOUT SORTIN SORTOUT)"
"ALLOC FI(SYSOUT) DA(*)"
"ALLOC FI(SORTIN) DA('XXX.XXX.XXX') REUSE'
"ALLOC FI(SORTOUT) DA('XXX.XXX.XXX.OUT') REUSE'
QUEUE"//SYSIN DD*"
" SORT FIELDS = COPY"
" INCLUDE COND = (1,2,CH,EQ,C'AR')"
QUEUE"/*"
QUEUE"//SYSPRINT DD SYSOUT=*"
QUEUE"$$"
"SUBMIT * END($$)"

【问题讨论】:

您的 sysin 语句错误 - 您需要在 DD 和 *.可能还有其他问题,但由于您没有向我们展示您的错误消息,我无法告知。 请提供一些说明。结果如何?有错误信息吗? 您需要为 SYSOUT、SORTIN、SORTOUT 排队 JCL,因为您似乎想要运行批处理作业。否则,您的作业将包括:作业语句、exec 语句、格式错误的 sysin 语句和 sysprint 语句。您不需要 SYSPRINT 和 SYSOUT。请参阅 DFSort 手册以了解要使用的正确 JCL。 您的问题的简单答案是“是”。但是,在使用 REXX 时,您需要模拟 JCL 所做的事情。在 TSO 环境中,您需要为每个数据集发出 ALLOCATE 语句,类似于 JCL 步骤中出现的内容。 【参考方案1】:

是的这是可能的。 基本上你可以:

如果在 ISPF 下运行,您可以ISPF File Tailoring。这是sample File Tailoring skelton 您可以直接调用 SORT 编写一个文件并提交它,就像您尝试做的那样。发生了什么,你期待什么???。我没有大型机来测试您的代码。

我建议学习 ISPF 服务,即

雷克斯:

ADDRESS TSO "ALLOC DD(OUTSKEL) DS('"OUTSKPDS"') SHR"
'FTOPEN'
'FTINCL SAMPSKEL'
'FTCLOSE LIBRARY(OUTSKEL) NAME('WORKMEM')'

ISPF 骨架示例:

//ASM    EXEC  PGM=IFOX00,REGION=128K
//             PARM=(&ASMPARMS)
//SYSIN    DD  DSN=&ASMIN(&MEMBER),DISP=SHR
//SYSLIB   DD  DSN=SYS1.MACLIB,DISP=SHR
)SEL  &ASMMAC1 ¬= &Z
//         DD  DSN=&ASMMAC1,DISP=SHR
)SEL  &ASMMAC2 ¬= &Z
//         DD  DSN=&ASMMAC2,DISP=SHR
)ENDSEL
)ENDSEL
//SYSUT1   DD  UNIT=SYSDA,SPACE=(CYL,(5,2))
//SYSUT2   DD  UNIT=SYSDA,SPACE=(CYL,(2,1))
//SYSUT3   DD  UNIT=SYSDA,SPACE=(CYL,(2,1))
//SYSPRINT DD  SYSOUT=(&ASMPRT)
)CM   IF USER SPECIFIED "GO," WRITE OUTPUT IN TEMP DATA SET
)CM   THEN IMBED "LINK AND GO" SKELETON
)IF  &GOSTEP = YES THEN )DO
//SYSGO    DD  DSN=&&&&OBJSET,UNIT=SYSDA,SPACE=(CYL,(2,1)),
//             DISP=(MOD,PASS)
)IM   LINKGO
)ENDDO
)CM   ELSE (NOGO), WRITE OUTPUT TO USER DATA SET
)ELSE )DO
//SYSGO    DD  DSN=&ASMOUT(&MEMBER),DISP=OLD
)ENDDO

【讨论】:

【参考方案2】:

您可以在地址 tso 下分配必要的文件 例如“alloc f(sortin) da(....) shr” 地址 ispling 下的调用排序: 地址 “ 种类 ” 注意将控制cfards放在sysin文件中

【讨论】:

以上是关于使用 REXX 执行 DFSORT的主要内容,如果未能解决你的问题,请参考以下文章

尝试在批处理环境中执行 REXX 或 TSO 命令时尝试绕过错误

使用 DFSORT 删除列

使用大型机中的 DFSORT 实用程序进行乘法除法

当我在 REXX 执行程序中从 LINKPGM 获得 RC (-2) 时,这意味着啥?

如何在 Rexx 接口中获取用户库到 SDSF

使用 DFSORT 进行大型机编程