我有以下控制卡,我无法理解如何阅读。有人能帮我解释一下这部分工作的表现吗?
OUTFIL FNAMES=(XSCB),BLKCCT1,INCLUDE=(67,7,CH,EQ,
C'XSCB ',OR,69,7,CH,EQ,
C'XSCB '),
HEADER2=(22:C'XSCB MVS USERID SYSTEM USAGE REPORT',/,
01:C'GENERATED ON ',&DATE=(MD4/),70:C'PAGE',&PAGE,/,
01:C' AT ',&TIME,/,X,/,
01:C'JULIAN',/,
01:C'DATE TIME SYSTEM JOB MESSAGE',/,
01:C'-------- -------- ------ -------- ---------------->'),
TRAILER1=(X,/,01:C'RECORDS FOUND =',COUNT,/,34:C'END OF REPORT'),
OUTREC=(20,07,ZD,EDIT=(TTTT.TTT),X, * JULIAN DATE
28,08,X, * TIME
11,06,X, * SYSTEM
40,08,X, * JOB OR REF
59,07,CHANGE=(50,C'IEF125I',C'LOGGED ON ', * MESSAGE
C'IEF126I',C'LOGGED OFF'),
NOMATCH=(79,50),
132:X) 我知道它搜索ID 'XSCB‘在位置67或69。但是一旦它找到了它,我就不能解释它下一步做什么了。
发布于 2017-03-10 02:27:43
这些是分类控制卡。如果您查看该步骤的SYSOUT,并注意消息,您将能够辨别它是DFSORT (消息前缀为ICE)还是SyncSORT (消息前缀为WER)。
您的步骤可能是EXEC PGM=SORT或冰人或其他什么,取决于您的网站。
控制卡正在生成报告。您的控制卡中至少缺少一行(选项COPY、SORT FIELDS=COPY或其他SORT或MERGE语句)。可能会有任意数量的缺失卡,并且您可能会从该步骤中获得另一个输出。否则,输出的INCLUDE=可能是一个普通的包含COND=。
您所展示的实际功能是什么?
OUTFIL定义特定输出数据集的最终处理。如果没有名称,它将用于JCL中的SORTOUT DD。
对于FNAMES=( XSCB ),它用于您的JCL中名为XSCB的DD。对于在FNAMES中指定的单个名称,括号是多余的。
BLKCTT1说“在第一列中留一个空格,这样就不会从TRAILER1输出中得到页面弹出”。
INCLUDE=正如您所怀疑的那样。为相同的值测试两个不同的起始位置。如果任何一项测试为真,则当前记录将包含在输出组中。
HEADER2定义了显示在每个页面顶部的内容。
01:是一个列号,并且是冗余的,因为缺省情况下,每一行的开头都是第一列。
HEADER2可以创建多行(就像任何HEADERn或TRAILERn一样,并在OUTFIL上构建(或OUTREC,但不要将其用于new) ),每一行都用"/“分隔。&DATE、&TIME和&PAGE是特殊的,包含明显的。&DATE可以用多种方式格式化,MD4/是用斜杠分隔的MM、DD、YYYY。
X是一个空白,在它自己的一行上。你同样可以看到.../,/...或n/创建n个多个空行。
常量应该是显而易见的。
TRAILER1定义在报告末尾打印的内容。
COUNT是输出组中的记录数,此处使用时未设置格式,但可以设置格式。
34: column-number表示后面的项目将从第34列开始。
OUTREC最好拼写为BUILD。OUTREC存在于其他地方。BUILD已经存在超过10年了,所以不需要在输出新代码时使用OUTREC (也许这是旧的)。
构建所要做的是将当前输入记录格式化为报告上的输出行所需的内容。
成对的数字是字段的起始位置和长度。在未定义字段类型的情况下,它们是(被视为)字符字段。
您有一个字段类型ZD,它被分区为decimal。它的长度是7,使用了编辑掩码,4位数字,句号(小数点),然后是3位数字。
和以前一样,X是空格,用作报告上的分隔符。注释中描述了每个字段的内容。注释是控制卡末尾的任何文本。在语句完成后,或者在可能的延续(逗号或冒号是可能的延续)后存在空白的情况下,控制卡将在空白处结束。
132:X在132列中放置一个空格,并用空格填充从最后一个字段或常量开始的任何中间列。
剩下的就是CHANGE=了。
CHANGE=是一个非常有用的测试和替换工具。
79,50,CHANGE=(50,C'IEF125I',C'LOGGED ON ', * MESSAGE
C'IEF126I',C'LOGGED OFF'),
NOMATCH=(79,50)这表示“在正在创建的记录的当前列,考虑长度为50的位置79的输入内容。输出长度将为50。如果为IEF125I,则使用常量LOGGED,如果IEF126I使用LOGGED OFF,否则(NOMATCH)使用位置79处的任何内容,长度为输入的50。
基本上,该报告使用系统日志或其中的摘录来报告与Userid/Logon XSCB相关的活动。
https://stackoverflow.com/questions/42701678
复制相似问题