我需要帮助来创建一个JCL,以在PDS文件中搜索当前年份的成员(即RPxxxx,其中xxxx表示2018年)。每年由使用PDS文件的年度工作创建的新成员。因此,成员名称在PDS文件中不是固定的,即后缀每年更改一次。
我们需要创建一个JCL,以检查PDS文件中当前年份的成员是否存在。因此,后续作业将成功运行。
如果当前年份成员存在于PDS文件中,则新作业将以RC 0000运行,这表示将自动触发后继作业。
如果curr year成员不存在于PDS文件中,则该作业将失败并显示RC 0001,这表示直到该作业成功恢复后,才会触发下一个后续作业。
请帮助我创建这样的JCL。
非常感谢您的帮助。
先谢谢了。
答案 0 :(得分:5)
LISTDS,一个TSO功能,显示数据集属性。您可以使用IKJEFT01实用程序(允许您批量运行TSO功能)并运行此TSO功能。但是,LISTDS发出的返回码不是您想要的。
因此,我建议使用IKJEFT01实用程序运行如下所示的REXX脚本,以评估PDS中成员的存在。
/* REXX */
arg dsname
address tso
"listds ("dsname")"
if (rc \= 0) then
exit 1
运行的JCL如下所示。
//JOBNAME JOB ('ACCOUNTING INFORMATION'),
// CLASS=2,MSGCLASS=H,NOTIFY=&SYSUID
//P1 EXEC PGM=IKJEFT01
//SYSPROC DD DSN=YOUR.REXX.LIB,DISP=SHR
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
%EMPTY7 'YOUR.PDS(RPXXXX)'
/*
SYSTSIN DD中的EMPTY7 是REXX脚本的名称。 SYSPROC DD中提供的库将存储您的REXX脚本。
让我知道是否需要更多详细信息。
答案 1 :(得分:2)
不需要REXX脚本。只需通过IKJEFT1A运行LISTDS,该步骤将以LISTDS命令的返回代码结束。
注意,语法描述未明确提及成员规范,但确实有效。使用它需要您自担风险。
//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
LISTDS ('your.data.set.name(yourmember)')
/*
如果成员存在,则该步骤将以RC = 0结束,否则RC将为非零。
答案 2 :(得分:1)
以下Rexx代码将根据当年动态建立成员名称,并且不需要对数据集/成员名称进行硬编码。这样,您可以安排工作来建立新成员,而无需编辑工作。
def Calculator(root):
global Number1, Number2, Operator
calculator = Toplevel()
Number1 = DoubleVar()
Number2 = DoubleVar()
Operator = IntVar()
Operator.set(1)
Entry(calculator,textvariable=Number1,justify="c").grid()
Entry(calculator,textvariable=Number2,justify="c").grid()
Radiobutton(calculator,text="Add",variable=Operator,value=1).grid()
Radiobutton(calculator,text="Subtract",variable=Operator,value=2).grid()
Radiobutton(calculator,text="Multiply",variable=Operator,value=3).grid()
Radiobutton(calculator,text="Divide",variable=Operator,value=4).grid()
Radiobutton(calculator,text="Square",variable=Operator,value=5).grid()
Radiobutton(calculator,text="Square root",variable=Operator,value=6).grid()
Button(calculator,text="results", command=lambda event: calculate(calculator), width=16).grid()
def calculate(calculator):
n1=Number1.get()
n2=Number2.get()
op=Operator.get()
if op==1:Results=n1+n2
if op==2:Results=n1-n2
if op==3:Results=n1*n2
if op==4:Results=n1/n2
if op==5:Results=math.pow(n1,n2)
if op==6:Results=n1*(1/n2)
Results = "The answer is "+str(Results)
calculator.destroy()
Answer = Toplevel()
Answer.geometry("150x150")
Label(Answer, text=Results).place(relx=.5,rely=.5,anchor="center")
root = Tk()
# Presumably your real code has some top-level stuff, where the
# user can ask you to open a calculator, like a button whose
# command calls the Calculator function? But here, we'll just:
Calculator(root)
root.mainloop()