了解以下控制卡
Understand the following control cards
我有以下控制卡,我看不懂怎么读。有人可以帮我解释一下 JOB 的这一部分在做什么吗?
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)
我知道它在位置 67 或 69 中搜索 ID 'XSCB'。但是一旦找到它,我无法解释它接下来要做什么。
那些是排序控制卡。如果您查看该步骤的 SYSOUT,并注意消息,您将能够判断它是 DFSORT(以 ICE 为前缀的消息)还是 SyncSORT(以 WER 为前缀的消息)。
您的步骤可能是 EXEC PGM=SORT 或 ICEMAN 或其他内容,具体取决于您的站点。
控制卡正在生成报告。您的控制卡中至少缺少一行(OPTION COPY、或 SORT FIELDS=COPY 或不同的 SORT 或 MERGE 语句)。可能有任意数量的缺失卡片,并且您可能从该步骤获得另一个输出。否则 OUTFIL INCLUDE= 可能是一个普通的 INCLUDE COND=.
您所展示的内容实际上是做什么的?
OUTFIL 定义特定输出数据集的最终处理。如果没有名称,它将用于 JCL 中的 SORTOUT DD。
FNAMES=(XSCB) 用于 JCL 中名为 XSCB 的 DD。对于 FNAMES 中指定的单个名称,括号是多余的。
BLKCTT1 说 "put a blank in column one to not get a page-eject from TRAILER1 output"。
INCLUDE= 如您所料。测试相同值的两个不同起始位置。如果任一测试为真,则当前记录将包含在 OUTFIL 组中。
HEADER2 定义出现在每个页面顶部的内容。
01: 是列号,是多余的,因为默认情况下每行从第一列开始。
HEADER2 可以创建多行(任何 HEADERn 或 TRAILERn 和 BUILD(或 OUTREC,但不要将其用于新的)在 OUTFIL 上也可以),每行由“/”分隔。 &DATE、&TIME 和&PAGE 比较特殊,包含显而易见的内容。 &DATE可以有多种格式,MD4/是MM、DD、YYYY,中间用斜杠隔开。
X 是一个空白,单独占一行。您同样可以看到 .../,/... 或 n/ 来创建 n 个空行。
常数应该很明显。
TRAILER1 定义报告末尾打印的内容。
COUNT是OUTFIL组的记录数,这里使用不带格式,但可以带格式。
34:column-number表示后面的项目将从第34列开始。
OUTREC 最好拼写为 BUILD。 OUTREC 存在于其他地方。 BUILD 已经存在了 10 多年,因此无需在新代码中对 OUTFIL 使用 OUTREC(也许这无论如何都是旧的)。
BUILD 所做的是将当前输入记录格式化为报表输出行所需的格式。
成对的数字是字段的起始位置和长度。在没有定义字段类型的地方,它们被(视为)字符字段。
您有一种字段类型 ZD,它是分区十进制的。它的长度是七,并且使用了一个 EDIT 掩码,四位数字,句号(小数点),然后是三位数字。
之前的 X 是空白,在报告中用作分隔符。每个字段的内容都在注释中描述。注释是控制卡末尾之后的任何文本。控制卡在语句完成后以空白结束,或者在可能的延续(逗号或冒号是可能的延续)之后有空白的地方结束。
132:X 在第 132 列中放置一个空白,并用空白填充最后一个字段或常量之间的任何列。
剩下 CHANGE=.
CHANGE= 是一个非常有用的测试和替换。
79,50,CHANGE=(50,C'IEF125I',C'LOGGED ON ', * MESSAGE
C'IEF126I',C'LOGGED OFF'),
NOMATCH=(79,50)
这表示“在正在创建的记录的当前列,考虑从位置 79 输入的内容,长度为 50。输出长度将为 50。如果 IEF125I,则使用常量 LOGGED ON,如果 IEF126I 使用 LOGGED OFF,否则 (NOMATCH) 使用位置 79 的任何内容,从输入开始长度为 50。
基本上,该报告使用系统日志或其中的摘录来报告与 Userid/Logon XSCB 相关的 activity。
我有以下控制卡,我看不懂怎么读。有人可以帮我解释一下 JOB 的这一部分在做什么吗?
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)
我知道它在位置 67 或 69 中搜索 ID 'XSCB'。但是一旦找到它,我无法解释它接下来要做什么。
那些是排序控制卡。如果您查看该步骤的 SYSOUT,并注意消息,您将能够判断它是 DFSORT(以 ICE 为前缀的消息)还是 SyncSORT(以 WER 为前缀的消息)。
您的步骤可能是 EXEC PGM=SORT 或 ICEMAN 或其他内容,具体取决于您的站点。
控制卡正在生成报告。您的控制卡中至少缺少一行(OPTION COPY、或 SORT FIELDS=COPY 或不同的 SORT 或 MERGE 语句)。可能有任意数量的缺失卡片,并且您可能从该步骤获得另一个输出。否则 OUTFIL INCLUDE= 可能是一个普通的 INCLUDE COND=.
您所展示的内容实际上是做什么的?
OUTFIL 定义特定输出数据集的最终处理。如果没有名称,它将用于 JCL 中的 SORTOUT DD。
FNAMES=(XSCB) 用于 JCL 中名为 XSCB 的 DD。对于 FNAMES 中指定的单个名称,括号是多余的。
BLKCTT1 说 "put a blank in column one to not get a page-eject from TRAILER1 output"。
INCLUDE= 如您所料。测试相同值的两个不同起始位置。如果任一测试为真,则当前记录将包含在 OUTFIL 组中。
HEADER2 定义出现在每个页面顶部的内容。
01: 是列号,是多余的,因为默认情况下每行从第一列开始。
HEADER2 可以创建多行(任何 HEADERn 或 TRAILERn 和 BUILD(或 OUTREC,但不要将其用于新的)在 OUTFIL 上也可以),每行由“/”分隔。 &DATE、&TIME 和&PAGE 比较特殊,包含显而易见的内容。 &DATE可以有多种格式,MD4/是MM、DD、YYYY,中间用斜杠隔开。
X 是一个空白,单独占一行。您同样可以看到 .../,/... 或 n/ 来创建 n 个空行。
常数应该很明显。
TRAILER1 定义报告末尾打印的内容。
COUNT是OUTFIL组的记录数,这里使用不带格式,但可以带格式。
34:column-number表示后面的项目将从第34列开始。
OUTREC 最好拼写为 BUILD。 OUTREC 存在于其他地方。 BUILD 已经存在了 10 多年,因此无需在新代码中对 OUTFIL 使用 OUTREC(也许这无论如何都是旧的)。
BUILD 所做的是将当前输入记录格式化为报表输出行所需的格式。
成对的数字是字段的起始位置和长度。在没有定义字段类型的地方,它们被(视为)字符字段。
您有一种字段类型 ZD,它是分区十进制的。它的长度是七,并且使用了一个 EDIT 掩码,四位数字,句号(小数点),然后是三位数字。
之前的 X 是空白,在报告中用作分隔符。每个字段的内容都在注释中描述。注释是控制卡末尾之后的任何文本。控制卡在语句完成后以空白结束,或者在可能的延续(逗号或冒号是可能的延续)之后有空白的地方结束。
132:X 在第 132 列中放置一个空白,并用空白填充最后一个字段或常量之间的任何列。
剩下 CHANGE=.
CHANGE= 是一个非常有用的测试和替换。
79,50,CHANGE=(50,C'IEF125I',C'LOGGED ON ', * MESSAGE
C'IEF126I',C'LOGGED OFF'),
NOMATCH=(79,50)
这表示“在正在创建的记录的当前列,考虑从位置 79 输入的内容,长度为 50。输出长度将为 50。如果 IEF125I,则使用常量 LOGGED ON,如果 IEF126I 使用 LOGGED OFF,否则 (NOMATCH) 使用位置 79 的任何内容,从输入开始长度为 50。
基本上,该报告使用系统日志或其中的摘录来报告与 Userid/Logon XSCB 相关的 activity。