我有以下控制卡,我无法理解如何阅读。有人可以帮我描述一下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)
我知道它会搜索ID' XSCB'在67或69位置。但一旦找到它,我就无法解释它接下来会做什么。
答案 0 :(得分:4)
这些是SORT控制卡。如果您查看步骤的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说"在第一列中留空,以便不从TRAILER1输出中获取页面弹出"。
INCLUDE =正如您所怀疑的那样。测试两个不同的起始位置以获得相同的值。如果任一测试为真,则当前记录将包含在OUTFIL组中。
HEADER2定义每页顶部显示的内容。
01:是一个列号,并且是多余的,因为默认情况下每行都是第一列。
HEADER2可以创建多行(在OUTFIL上可以创建任何HEADERn或TRAILERn和BUILD(或OUTREC,但不要将它用于新)),每个行用" /"分隔。 & DATE,& TIME和& PAGE是特别的,含有明显的。 & DATE可以用各种方式格式化,MD4 /是MM,DD,YYYY用斜杠分隔。
X是一个空白,在它自己的一行上。您同样可以看到... /,/ ...或n /创建多个空白行。
常数应该是显而易见的。
TRAILER1定义报告末尾的内容。
COUNT是OUTFIL组中的记录数,此处没有格式化,但可以格式化。
34:列号表示后面的项目将从第34列开始。
OUTREC更好地拼写为BUILD。 OUTREC存在于其他地方。 BUILD已存在超过10年,因此无需在新代码中使用OUTTRIL上的OUTREC(也许这是旧的)。
BUILD将做的是将当前输入记录格式化为报告中输出行所需的内容。
成对的数字是起始位置和字段长度。在没有定义字段类型的情况下,它们被(视为)字符字段。
您有一个字段类型ZD,它是分区十进制的。它的长度为7,使用EDIT掩码,四位数,全停(小数点),然后是三位数。
以前的Xs是空白,在报告中用作分隔符。每个字段的内容在评论中描述。注释是控制卡结束后的任何文本。声明完成后,控制卡在空白处结束,或者在可能的继续之后有空格(逗号或冒号可能继续)。
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相关的活动。