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

How to know what does the variable in SYSTSIN contains?

在完成 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  
/*

首先重要的是JCL调用的程序,即IKJEFT01,基本上就是TSO(TIME共享选项)通过批处理。 如果为了争论的缘故,程序是 IEFBR14(基于 BR 14 什么都不做,它是寄存器 14 的分支,寄存器 14 持有 return 地址)。 SYSTSIN 甚至没有打开,因此甚至不会查看 %VAR2FIX

回到 IKJEFT01 ddname SYSTSIN 被读作 Terminal Input 即它基本上是本机 TSO 的命令行。因此 %VAR2FIX 是一个命令,您可以通过在可以键入命令的地方键入 TSO %VAR2FIX 来复制它(请注意,如今绝大多数人不直接使用本机 TSO ,而是他们使用 "friendlier environment",例如 ISPF/PDF 或 Roscoe)。

现在如果不是 %VAR2FIX 而是 IEFBR14 那么我可以说那是什么意思 IEFBR14 是一个众所周知的通用程序,可以作为命令调用。例如你可以做 TSO IEFBR14(记住它什么都不做)。现在 %VAR2FIX 不是一个普通命令,事实上它几乎肯定是一个 in-house 命令。

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