- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 SORT(snycsort 或 DFSORT)将记录转置到列中。它应该可以扩展到任意数量的记录。这可能吗?
DE001XYX A
CD100000 B
CD200000 C
DE001KKK A
CD100000 B
DE003ZZZ A
DE001XYX A
CD100000 B
CD200000 C
DE001KKK A
CD100000 B
........
转置
DE001XYX CD100000 CD200000 DE001KKK CD100000 DE003ZZZ DE001XYX CD100000 CD200000 DE001KKK CD100000 .....
最佳答案
这是我很喜欢的一个问题,并且很长一段时间以来我一直渴望自己解决它。经过一些研究和尝试,我刚刚想出了一个解决方案。
<小时/>更新:下面给出了临时方法。它通过 1 遍就解决了问题,而最初的方法需要 3 遍。
临时方法:不需要3次通过。
***************************** Top of Data ******************************
//JOBNAME JOB ('ACCOUNT INFORMATION'),'TRANSPOSE',
// CLASS=2,MSGCLASS=H,NOTIFY=&SYSUID
//STEP1 EXEC PGM=SORT
//SORTIN DD *
DE001XYX A
CD100000 B
CD200000 C
DE001KKK A
CD100000 B
DE003ZZZ A
DE001XYX A
CD100000 B
CD200000 C
DE001KKK A
CD100000 B
//SORTOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=(30,1,CH,A)
INREC IFTHEN=(WHEN=GROUP,BEGIN=(12,1,CH,EQ,C'A'),
END=(12,1,CH,EQ,C'C'),PUSH=(14:ID=1)),
IFTHEN=(WHEN=(12,1,CH,EQ,C'A'),BUILD=(1:1,8,19Z,28:12,1,
30:14,1)),
IFTHEN=(WHEN=(12,1,CH,EQ,C'B'),
BUILD=(1:9Z,10:1,8,18:10Z,28:12,1,30:14,1)),
IFTHEN=(WHEN=(12,1,CH,EQ,C'C'),
BUILD=(1:18Z,19:1,8,28:12,1,30:14,1))
SUM FIELDS=(1,8,10,8,19,8),FORMAT=BI
OUTREC FIELDS=(1:1,8,9:X,10:10,8,18:X,19:19,8)
**************************** Bottom of Data ****************************
结果与OP在他/她的问题中显示的输出相同。
<小时/>初始方法:
第 1 步:我用过WHEN=GROUP
与 BEGIN
, END
和PUSH
参数。
//JOBNAME JOB ('ACCOUNT NAME'),'TRANSPOSE',
// CLASS=2,MSGCLASS=H,NOTIFY=&SYSUID
//STEP1 EXEC PGM=SORT
//SORTIN DD *
DE001XYX A
CD100000 B
CD200000 C
DE001KKK A
CD100000 B
DE003ZZZ A
DE001XYX A
CD100000 B
CD200000 C
DE001KKK A
CD100000 B
//SORTOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
OUTREC IFTHEN=(WHEN=GROUP,BEGIN=(12,1,CH,EQ,C'A'),
END=(12,1,CH,EQ,C'C'),PUSH=(14:ID=1))
PUSH=(14:ID=1)
表示 1 的位置 14 是针对每个组递增的标识符。每个A都指示一个新组,无论前一个组是否以C终止。当新组开始时,标识符+1。
注意:由于我们只允许 ID 为一个字符,因此当 ID 计数器达到 10 时,位置 14 会出现一个“0”。您也可以为 ID 分配超过 1 个字节身份证件。
第 1 步的输出:
********************************* TOP OF DATA **********************************
DE001XYX A 1
CD100000 B 1
CD200000 C 1
DE001KKK A 2
CD100000 B 2
DE003ZZZ A 3
DE001XYX A 4
CD100000 B 4
CD200000 C 4
DE001KKK A 5
CD100000 B 5
******************************** BOTTOM OF DATA ********************************
步骤2:获取步骤1的输出。分别根据A、B、C这三个键修改DE、CD1和CD2记录的位置。
//JOBNAME JOB ('ACCOUNT NAME'),'TRANSPOSE',
// CLASS=2,MSGCLASS=H,NOTIFY=&SYSUID
//STEP1 EXEC PGM=SORT
//SORTIN DD *
DE001XYX A 1
CD100000 B 1
CD200000 C 1
DE001KKK A 2
CD100000 B 2
DE003ZZZ A 3
DE001XYX A 4
CD100000 B 4
CD200000 C 4
DE001KKK A 5
CD100000 B 5
//SORTOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
OUTREC IFTHEN=(WHEN=(12,1,CH,EQ,C'A'),BUILD=(1:1,8,19Z,28:12,1,
30:14,1)),
IFTHEN=(WHEN=(12,1,CH,EQ,C'B'),
BUILD=(1:9Z,10:1,8,18:10Z,28:12,1,30:14,1)),
IFTHEN=(WHEN=(12,1,CH,EQ,C'C'),
BUILD=(1:18Z,19:1,8,28:12,1,30:14,1))
/*
注意:在步骤 3 中,二进制零作为占位符插入其间,以便可以用数据填充。
第 2 步的输出:
********************************* TOP OF DATA **********************************
DE001XYX A 1
CD100000 B 1
CD200000 C 1
DE001KKK A 2
CD100000 B 2
DE003ZZZ A 3
DE001XYX A 4
CD100000 B 4
CD200000 C 4
DE001KKK A 5
CD100000 B 5
******************************** BOTTOM OF DATA ********************************
打开十六进制模式后,您将能够看到二进制零 (X'00)。
***************************** Top of Data ******************************
DE001XYX A 1
CCFFFEEE0000000000000000000C4F444444444444444444444444444444444444444444
450017870000000000000000000101000000000000000000000000000000000000000000
-----------------------------------------------------------------------
CD100000 B 1
000000000CCFFFFFF0000000000C4F444444444444444444444444444444444444444444
000000000341000000000000000201000000000000000000000000000000000000000000
-----------------------------------------------------------------------
CD200000 C 1
000000000000000000CCFFFFFF4C4F444444444444444444444444444444444444444444
000000000000000000342000000301000000000000000000000000000000000000000000
-----------------------------------------------------------------------
DE001KKK A 2
CCFFFDDD0000000000000000000C4F444444444444444444444444444444444444444444
450012220000000000000000000102000000000000000000000000000000000000000000
-----------------------------------------------------------------------
CD100000 B 2
000000000CCFFFFFF0000000000C4F444444444444444444444444444444444444444444
000000000341000000000000000202000000000000000000000000000000000000000000
-----------------------------------------------------------------------
DE003ZZZ A 3
CCFFFEEE0000000000000000000C4F444444444444444444444444444444444444444444
450039990000000000000000000103000000000000000000000000000000000000000000
-----------------------------------------------------------------------
DE001XYX A 4
CCFFFEEE0000000000000000000C4F444444444444444444444444444444444444444444
450017870000000000000000000104000000000000000000000000000000000000000000
-----------------------------------------------------------------------
CD100000 B 4
000000000CCFFFFFF0000000000C4F444444444444444444444444444444444444444444
000000000341000000000000000204000000000000000000000000000000000000000000
-----------------------------------------------------------------------
CD200000 C 4
000000000000000000CCFFFFFF4C4F444444444444444444444444444444444444444444
000000000000000000342000000304000000000000000000000000000000000000000000
DE001KKK A 5
CCFFFDDD0000000000000000000C4F444444444444444444444444444444444444444444
450012220000000000000000000105000000000000000000000000000000000000000000
-----------------------------------------------------------------------
CD100000 B 5
000000000CCFFFFFF0000000000C4F444444444444444444444444444444444444444444
000000000341000000000000000205000000000000000000000000000000000000000000
-----------------------------------------------------------------------
**************************** Bottom of Data ****************************
第 3 步:将第 2 步的输出作为输入,使用 SUM FIELDS
将组的 DE、CD1 和 CD2 记录与 SORT FIELDS
组合起来关于ID
场上排名第 30 位。
//JOBNAME JOB ('ACCOUNT NAME'),'TRANSPOSE',
// CLASS=2,MSGCLASS=H,NOTIFY=&SYSUID
//STEP1 EXEC PGM=SORT
//SORTIN DD *
DE001XYX A 1
CD100000 B 1
CD200000 C 1
DE001KKK A 2
CD100000 B 2
DE003ZZZ A 3
DE001XYX A 4
CD100000 B 4
CD200000 C 4
DE001KKK A 5
CD100000 B 5
//SORTOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=(30,1,CH,A)
SUM FIELDS=(1,8,10,8,19,8),FORMAT=BI
OUTREC FIELDS=(1:1,8,9:X,10:10,8,18:X,19:19,8)
/*
与 OUTREC FIELDS=(1:1,8,9:X,10:10,8,18:X,19:19,8)
,用空格替换 DE、CD1 和 CD2 字段之间的二进制零。
第 3 步的输出:开始!
***************************** Top of Data ******************************
DE001XYX CD100000 CD200000
DE001KKK CD100000
DE003ZZZ
DE001XYX CD100000 CD200000
DE001KKK CD100000
**************************** Bottom of Data ****************************
<小时/>
有关 SUM FIELDS
的更多详细信息带二进制零:
二进制加法对两个位模式进行运算。让我们考虑以下记录(十六进制模式处于打开状态,因为我想展示如何对十六进制值执行二进制加法)。
****** ********
000001 DE001XYX
CCFFFEEE
45001787
---------------
000002
00000000
00000000
第一个字节的十六进制值 X'C4' 与第二条记录的第一个字节中的二进制零相加。
C4
+00
--
C4
X'C4' 表示 EBCDIC 中的字母“D”
如果我们将第一个字节中的二进制零更改为二进制一 (X'01'),结果将会有所不同。
C4
+01
--
C5
X'C5' 表示 EBCDIC 中的字母“E”。
使用二进制零,我们可以执行 SUM FIELDS
字母数字数据项(EBCDIC 字符 a-z、A-Z、0-9)将它们分组到一个记录中。
关于大型机 JCL 使用 SORT 进行记录转置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31703056/
我记得在使用 ftp get 将文件从大型机复制到 Windows 时,文件名上总会有一些数字后缀,每天都会改变。即 abc.4328 然后它会变成 abc.23595..etc 大型机世界中不断变化
我想知道 KEEP 和 UNCATLG 之间的区别。 据我所知,两者都将删除数据集的目录条目。 感谢和问候,玛纳西 最佳答案 我不相信。 KEEP如果该条目已经存在,则不会从目录中删除该条目。 UNC
我想使用 SORT(snycsort 或 DFSORT)将记录转置到列中。它应该可以扩展到任意数量的记录。这可能吗? DE001XYX A CD100000 B CD200000 C DE
如何从大型机批处理 COBOL 中编写 html 标签/脚本格式?并通过大型机 JCL 在电子邮件附件中发送格式化的标签? 最佳答案 既然你没有说,我假设你正在使用 IEBGENER 从大型机发送电子
是否有任何linux命令或java代码可以查找Mainfrane机器的MAC地址? 。我尝试从 OMVS 区域执行“ifconfig”命令,但它不起作用。任何帮助将非常感激。提前致谢。 最佳答案 不能
我正在尝试从 Java 应用程序浏览来自大型机 IBM MQ 队列的消息(EBCDIC 消息)。我需要浏览消息,而不是消费它们。这是代码: JmsFactoryFactory ff = JmsFact
我的新工作有一台 S/390 大型机,自 90 年代末以来一直在运行 COBOL 应用程序。大型机太旧了,我们需要迁移到更新的系统。我们是一家足够小的企业,我们不能保证花钱升级到新的大型机硬件,而且程
有谁知道可用于在 CppUnit 上编写测试的 C++ 单元测试框架(例如 Google Test、z/OS 等) ? 我在 Windows 上使用 Dignus C++ compiler 进行大部分
我需要能够识别 IBM 大型机 DB2 v10 zos 数据库上的类型 4 jdbc 工作负载。 我们的大型机 db2 监视器可以过滤以下字段 SYSTEM ID DB2 SUBSYSTEM ID D
我是一名优秀的程序员,十分优秀!