如何知道SYSTSIN中的变量包含什么?

时间:2017-01-13 09:08:24

标签: mainframe jcl

在完成JCL工作时,我找到了以下代码片段。这是什么意思?我们怎么知道%var2fix包含什么?

//JS0005 EXEC PGM=IKJEFT01  
//SYSEXEC DD DSN=ISPFGRP.ICEC.ISPFEXEC,DISP=SHR  
//INPUT DD DSN=PSMC.CMDS.N001(0),DISP=SHR  
//SYSPRINT DD SYSOUT=*  
//SYSUDUMP DD SYSOUT=*  
//SYSTSPRT DD SYSOUT=*  
//SYSTSIN DD *  
%VAR2FIX  
/*

1 个答案:

答案 0 :(得分:4)

第一件重要的事情是由JCL调用的程序, IKJEFT01 ,它基本上是 TSO (时间共享选项)。 如果为了论证的话,程序是 IEFBR14 (根据BR 14,它是分支到寄存器14,寄存器14保存返回地址,什么都不做)。 SYSTSIN甚至没有打开,因此甚至不会查看%VAR2FIX

返回 IKJEFT01 ddname SYSTSIN 读为终端输入,即它基本上是本机TSO的命令行。因此%VAR2FIX 是一个命令,您可以通过键入TSO %VAR2FIX来复制命令(可以输入命令)(请注意,绝大多数人现在不直接使用本机TSO,而是他们使用“友好的环境”,如ISPF / PDF或Roscoe)。

现在如果不是%VAR2FIX 而是 IEFBR14 那么我可以说这是什么意思 IEFBR14 是一个众所周知的常见程序,可以作为命令调用。例如你可以做 TSO IEFBR14 (记住它什么都不做)。现在%VAR2FIX 不是常用命令,事实上它实际上绝对是一个内部命令。

回到JCL,有一个dd名称为 SYSEXEC 的DD语句,如果我没记错的话,它允许相应数据集中的Rexx程序作为命令运行。我想如果你看一下分配给 SYSEXEC 的数据集,你会发现一个名为 VAR2FIX 的成员,这个程序/命令将被调用。如果我没记错,关于命令名称会忽略