2.12 系统显示和查询功能(SDSF)
你可以通过在命令行输入TSO SDSF命令进入SDSF功能界面,如图2.5所示。
按下Enter键后,就会出现如图2.6所示的SDSF界面。它是JOB队列维护例程,具有浏览作业输出(OUTPUT),作业运行状态、作业队列状态、作业运行日志(JOB LOG LIST)查询功能,执行等待中、执行中、执行后的作业删除等功能。
在该界面上的一些常用选项有:
● DA——显示所有活动的作业清单及运行状况。
● I——显示输入队列中等待运行的作业清单。
● O——显示系统的输出队列清单。
● H——显示挂起(HOLD)队列中的作业清单。
● ST——显示系统中所有作业清单及状态。
● INIT——显示和设置JES2使用的初始器(INIT)的状态。
● LOG——显示系统日志(LOG)并像在主控台一样使用主控台命令。
● ULOG——用户日志(LOG),类似于LOG,但看到的只是用户自己发出的命令和结果。
图2.5 系统显示和查询功能(SDSF)使用示意图
图2.6 系统显示和查询功能(SDSF)主菜单
2.12.1 输出队列的显示及操作
在SDSF主菜单(SDSF Primary Option Menu)界面上,选择选项O——从SDSF主菜单中显示JES2输出队列里的作业。这个显示覆盖了JES2原来持有的输出队列。在上面的界面中输入命令O(Output Queue),系统就会将所有已运行完的作业的输出队列,如图2.7所示,按照下面的格式显示出来,供你做进一步的处理。
图2.7 显示输出(OUTPUT)队列信息界面
现在显示的是JES2输出队列中的所有作业,通过输入执行代码对选择的作业输出进行处理。执行代码如下。
● A:释放作业输出。
● C:取消作业输出。
● H:保留作业输出。
● L:在日志中罗列出作业的输出。
● O:释放输出到打印机。
● ?:按作业步列出作业输出。
● //..//C:批量删除作业的输出。
● P:清除作业输出。
● S:显示作业输出。
● X:打印输出数据集。
● XDC:转存JOB LOG到DATASET。
图2.8显示的是S命令的例子。在显示作业的NP列中输入S执行代码,所有作业的输出列表就显示出来了,如图2.8所示。从下面的输出,我们可以看到,系统给该作业分配的作业ID为JOB00039。在系统中,虽然作业名可以重复,但作业ID是唯一的。该作业的作业名(JOBNAME)为IBMUSERC。
该作业的启动时间(STARTED TIME)为03点24分36秒,日期为2010年8月15日。现在回答我们的作业输出。该作业有两个作业步,分别是COBOL和LKED,它们的运行是成功的,因为它们的返回码(RC)都是0。该作业的结束时间(END TIME)为3点24分38秒,也就是说,该作业一共运行了2秒钟。同时我们还能看到,它是在JES2的初始器1(INIT 1)上运行的,作业的类别(CLASS)为A。
这里提到的都是作业的一些主要信息,你可以通过功能键(PF7/PF8)上翻或下翻,也可以使用功能键PF10/PF11左右移动,这样还可以看到更详细的作业信息。这个就作为练习,留给读者去做了。
图2.9是问号(?)命令的例子。它的功能是将整个作业流按照作业步的顺序列出来,供你查看。比如在下面的例子中,如果你只想查看作业步LKED的内容,你就可以在该作业步所在行的前面使用上面的S命令将其展开,这样,你就可以只看该作业步的内容,而不用看到一大堆与该作业步无关的内容了。
图2.8 使用S命令查看指定作业的输出信息
图2.9 使用问号(?)命令查看指定作业输出
其他的命令都是好理解的,我们就不做进一步的介绍了。现在,如图2.10所示,我们再介绍一个常用的命令——XDC,该命令用来将作业流的输出清单输出到一个数据集中,这样,你就可以慢慢查看它的内容,更重要的是,你可以将其下载到你的PC上,通过邮件(E-mail)方式,发送到其他对该作业感兴趣的同事。这项功能对于那些需要做生产系统支援(SUPPORT)的人来说,是非常有用的。
你可以像上面那样,在要输出的作业流清单前面打上XDC命令,然后按下Enter键,如图2.11所示。系统就会要求你指定所要保存作业流清单的数据集的名字,在像下图所示的那样输入完相关的数据集信息,再次按下Enter键后,系统就会将该作业流的输出存放到你所指定的数据集中了。
图2.10 使用XDC命令输出作业信息到数据集的示意图
图2.11 使用XDC命令子菜单指定作业流输出数据集属性
2.12.2 挂起队列的显示及操作
在SDSF主菜单(SDSF Primary Option Menu)界面上,选择选项H(Held Output Queue),系统就会从SDSF主菜单中显示JES2挂起输出队列里的作业。在下面的例子中,如图2.12所示,我们看到了一个挂起队列。
在该挂起队列上,你可以在NP列输入下面的命令对其进行操作。
● A:将其释放,即将其输出到相关的设备上。
● C:取消(Cancel)该作业的输出信息。
图2.12 挂起作业清单
2.12.3 显示活动的作业清单及操作
在SDSF主菜单(SDSF Primary Option Menu)界面上,选择选项DA(Active Users),系统就会从SDSF主菜单中显示所有活动的作业的清单及其状态。在下面的例子中,如图2.13所示,我们看到有很多作业都在运行(活动)。从下面的界面中,我们可以看到每个作业的名字(JOBNAME),正在运行的作业步的名字(STEPNAME),如果调用过程,还可以看到正在运行的过程步的名字(PROCSTEP)。当然,系统还为每个作业分配了一个作业标识符(JOBID),作业标识符分为3种,第1种是以STC开头的,比如STC00011,表明该作业是一个已启动的任务(STARTED TASK),很多系统进程包括我们后面要介绍的CICS都是以这种面貌出现的;第2种是以TSU开头的,比如TSU00035,表明该作业是一个TSO用户;最后一种就是常见的普通作业,其ID是由JOB开头的,比如JOB00037等。从该界面,我们还可以看到每个作业使用的实存(Real)的大小及它运行的CLASS(C)等。
图2.13 系统中活动的作业清单及其状态
当你按下功能键PF11 后,你就可以看到更多的作业内容,其中一个需要引起我们关注的是处理器使用百分比(CPU%),如图2.14 所示。当一个作业,尤其是用户作业的处理器的使用百分比偏大时,通常就表明了该作业要么正在完成一项伟大的工程,要么就是一个死循环,该是时候将这些作业的信息提交给你的主管了。
图2.14 CPU%是你需要特别关注的栏位
2.12.4 显示所有作业清单及操作
在SDSF主菜单(SDSF Primary Option Menu)界面上,选择选项ST(Status of Jobs),系统就会从SDSF主菜单中显示系统当前的所有作业的情况。所显示的清单,既包括正在运行的作业,也包括已经运行结束的作业。图2.15是该选项输出的例子。在每个作业的NP列,你可以对它们使用前面提到的所有操作字符对其进行操作。
图2.15 系统中所有作业清单及状态
2.12.5 输入队列清单及其操作
在SDSF主菜单(SDSF Primary Option Menu)界面上,选择选项I(Input Queue),系统就会从SDSF主菜单中显示JES2输入队列里的作业。在如图2.16所示的例子中,我们看到有4个输入队列等待运行。同样的,在每个作业的NP列,你可以对它们使用前面提到的所有操作字符对其进行操作。
图2.16 输入队列作业清单
2.12.6 初始器(INIT)的显示及操作
正如我们在前面介绍的,JES2调度作业的假脱机(SPOOLING)机制为:
● 假脱机(SPOOLING):JES2将JCL中提交的数据读到缓冲区中,内容包括JCL语句及SYSIN的内容。
● 交初始器(Initiators)处理:当初始器(INIT)空闲时,JES2会将作业从缓冲区中读出,分配资源并运行。
● 去假脱机(DESPOOLING):把数据从SYSIN DD中抽取出来。
在作业执行前后,JES2负责:
● 接收作业。
● 准备执行。
● 在DASD临时存储直到OS390准备好接收。
● 从队列中选择系统要执行的作业。
在作业执行时,JES负责:
● 处理打印输出。
● 作业执行结束后,清除作业。
在SDSF主菜单(SDSF Primary Option Menu)界面上,选择选项INIT(Initiators),系统就会从SDSF主菜单中显示JES2中定义的所有初始器(Initiators)的名字及其状态。如图2.17所示的例子中,我们看到当前的JES2系统定义了12个初始器,它们的ID从1到12。状态栏(Status)显示了每个初始器的状态,初始器的状态有3种。
● ACTIVE:初始器是活动的,而且有作业正在该初始器上运行。
● INACTIVE:初始器是活动的,但目前没有作业在该初始器上运行。
● DRAINED:初始器是不活动的。
接下来右边的Classes列定义了每个初始器可以运行的作业的类别(Class),比如,只有类别为A的作业才能分配到初始器1上运行,而初始器7则可以运行所有类别为A、B、C和D的作业。如果当前的初始器上有作业正在运行,系统就会将该作业的作业名(Jobname)、作业步的名字(Stepname)等显示在对应的初始器的相关列上。
图2.17 当前JES2系统定义的初始器及其状态
你可以使用P(STOP)命令将某个处于活动状态的初始器停下来,即变成不活动(DARINED)。在如图2.18所示的例子中,我们将初始器1、2和3由活动状态变成不活动的。
图2.18 停止初始器(P)命令使用示意图
在按下Enter键后,如图2.19所示,我们就会看到,原来活动的初始器现在不活动了。
同样的,你也可以使用START(S)命令将某些不活动的初始器变成活动的,图2.20显示了相关的操作。
图2.19 停止初始器(P)命令执行后的结果
图2.20 启动初始器(S)命令的示意图
按下Enter键后,如图2.21所示,我们看到,它们的状态又变回活动的了,即处于等待处理作业的状态。
2.12.7 系统日志(LOG)
在SDSF主菜单(SDSF Primary Option Menu)界面上,选择选项LOG(System Log),系统就会将类似于主控台的日志信息显示出来,如图2.22所示。
在系统LOG界面下,你可以像在主控台那样输入一些系统命令,比如,在图2.23中我们输入的命令是要查看各个系统的前缀,以便我们在输入子系统如JES2、DB2命令时知道要以什么开头。有一点要注意的是,在LOG中输入命令,必须以斜杠(/)开头。我们输入的命令是:/D O,PREFIX。
按下Enter键后,系统就会如图2.24所示,将要求的信息显示出来,比如,JES2的前缀是$。这样,当我们输入JES2的相关命令时,就必须以$开头。关于系统常用的命令,我们会在后面的章节做详细的介绍,以帮助大家在系统维护、系统支持和系统开发中工作。
图2.21 启动初始器(S)命令执行后的结果
图2.22 系统日志(LOG)显示界面
图2.23 在LOG界面使用主控台命令的示意图
图2.24 在LOG界面执行主控台命令后的结果
2.12.8 用户日志(ULOG)
在SDSF主菜单(SDSF Primary Option Menu)界面上,选择选项ULOG(User Session Log),系统就会将相应的界面显示出来。
ULOG的界面与LOG相似,你也可以在这里输入主控台命令,唯一不同的是,你所看到的只是你自己对系统发出的命令的结果,而系统其他方面的信息则不会显示。因此,当你只想查看你自己的信息时,就可以到ULOG界面。在图2.25中,你看到的就是刚才发出的D O,PREFIX命令的结果,是不是清晰很多呢。
图2.25 在ULOG界面执行主控台命令后的结果