z/OS JCL 命令 /*VS 命令在进程中发出时失败
z/OS JCL command /*VS command fails when issued in a proc
我试图在系统启动期间自动执行某个命令(“VARY devaddr,OFFLINE”)到 运行。我找不到应该放置命令的位置。我尝试在proc中设置命令,如下:
//MYPROG PROC MODULE='IEFBR14'
/*$VS,'V 0A92,OFFLINE'
//DOIT EXEC PGM=&MODULE
//*
如果我发出 START MYPROG,我总是会收到错误消息:
IEFC452I MYPROG - 作业不运行 - JCL 错误 181
$HASP396 MYPROG 终止
IEE122I 启动命令 JCL 错误
然而,如果我从 proc 中删除命令 ('/*$VS,...'),它可以正常启动和完成。另外,如果我创建了一个作业而不是一个过程,我可以提交它并成功完成。
我的全部目的是让这个单元在每次 IPL 后脱机,而无需操作员干预。有没有人有在 JCL 中嵌入命令的经验,或者有其他方法可以完成此操作?
在 cshneid 的回答后,我将我的程序编辑如下:
//MYPROG PROC
//TEST COMMAND 'VARY 0A92,OFFLINE'
我的控制台输出现在看起来像:
S MYPROG
IRR812I PROFILE * (G) IN THE STARTED CLASS WAS USED 121
TO START MYPROG WITH JOBNAME MYPROG.
$HASP100 MYPROG ON STCINRDR
VARY 0A92,OFFLINE
IEFC452I MYPROG - JOB NOT RUN - JCL ERROR 124
IEF281I 0A92 NOW OFFLINE
$HASP396 MYPROG TERMINATED
IEE122I START COMMAND JCL ERROR
IEA989I SLIP TRAP ID=X33E MATCHED. JOBNAME=*UNAVAIL, ASID=0059.
不管我怎么安排proc好像都是这个样子
令人困惑的是,有两种方法可以做到这一点,而且它们的名称几乎相同。 不推荐的方法是JCL command statement. The recommended way to do this is with the COMMAND statement。
请注意,该命令将在转换时发出,在 作业运行之前。
编辑 (1) 添加...
这次终于有了。我只是在 COMMAND 语句之后添加了一条 EXEC 语句。它看起来像这样:
//MYPROG PROC
//TEST COMMAND 'VARY 0A92,OFFLINE'
//STEP1 EXEC PGM=IEFBR14
启动此过程时,控制台上现在没有显示任何错误:
S MYPROG
IRR812I PROFILE * (G) IN THE STARTED CLASS WAS USED 229
TO START MYPROG WITH JOBNAME MYPROG.
$HASP100 MYPROG ON STCINRDR
VARY 0A92,OFFLINE
IEE303I 0A92 OFFLINE
IEF695I START MYPROG WITH JOBNAME MYPROG IS ASSIGNED TO USER START1
, GROUP SYS1
$HASP373 MYPROG STARTED
IEF403I MYPROG - STARTED - TIME=13.44.01
IEF404I MYPROG - ENDED - TIME=13.44.01
$HASP395 MYPROG ENDED - RC=0000
$HASP250 MYPROG PURGED -- (JOB KEY WAS D9BC2A80)
谢谢!
有一种更好的方法可以让系统在初始化 (IPL) 时自动执行 运行 命令:使用 COMMNDxx
Parmlib 成员。有关详细信息,请参阅 z/OS MVS Initialization and Tuning Reference。
在 SYS1.PARMLIB
(或串联中的任何 PARMLIB)中创建一个 COMMNDxx
成员并在其中添加命令:
COM='V 0A92,OFFLINE'
您可以将命令放在默认成员 COMMND00
或任何 COMMNDxx
成员中,并将 xx
后缀添加到要执行的命令成员列表中,即添加到 CMD=...
IEASYSxx
成员中的参数。
我试图在系统启动期间自动执行某个命令(“VARY devaddr,OFFLINE”)到 运行。我找不到应该放置命令的位置。我尝试在proc中设置命令,如下:
//MYPROG PROC MODULE='IEFBR14'
/*$VS,'V 0A92,OFFLINE'
//DOIT EXEC PGM=&MODULE
//*
如果我发出 START MYPROG,我总是会收到错误消息:
IEFC452I MYPROG - 作业不运行 - JCL 错误 181
$HASP396 MYPROG 终止
IEE122I 启动命令 JCL 错误
然而,如果我从 proc 中删除命令 ('/*$VS,...'),它可以正常启动和完成。另外,如果我创建了一个作业而不是一个过程,我可以提交它并成功完成。
我的全部目的是让这个单元在每次 IPL 后脱机,而无需操作员干预。有没有人有在 JCL 中嵌入命令的经验,或者有其他方法可以完成此操作?
在 cshneid 的回答后,我将我的程序编辑如下:
//MYPROG PROC
//TEST COMMAND 'VARY 0A92,OFFLINE'
我的控制台输出现在看起来像:
S MYPROG
IRR812I PROFILE * (G) IN THE STARTED CLASS WAS USED 121
TO START MYPROG WITH JOBNAME MYPROG.
$HASP100 MYPROG ON STCINRDR
VARY 0A92,OFFLINE
IEFC452I MYPROG - JOB NOT RUN - JCL ERROR 124
IEF281I 0A92 NOW OFFLINE
$HASP396 MYPROG TERMINATED
IEE122I START COMMAND JCL ERROR
IEA989I SLIP TRAP ID=X33E MATCHED. JOBNAME=*UNAVAIL, ASID=0059.
不管我怎么安排proc好像都是这个样子
令人困惑的是,有两种方法可以做到这一点,而且它们的名称几乎相同。 不推荐的方法是JCL command statement. The recommended way to do this is with the COMMAND statement。
请注意,该命令将在转换时发出,在 作业运行之前。
编辑 (1) 添加...
这次终于有了。我只是在 COMMAND 语句之后添加了一条 EXEC 语句。它看起来像这样:
//MYPROG PROC
//TEST COMMAND 'VARY 0A92,OFFLINE'
//STEP1 EXEC PGM=IEFBR14
启动此过程时,控制台上现在没有显示任何错误:
S MYPROG
IRR812I PROFILE * (G) IN THE STARTED CLASS WAS USED 229
TO START MYPROG WITH JOBNAME MYPROG.
$HASP100 MYPROG ON STCINRDR
VARY 0A92,OFFLINE
IEE303I 0A92 OFFLINE
IEF695I START MYPROG WITH JOBNAME MYPROG IS ASSIGNED TO USER START1
, GROUP SYS1
$HASP373 MYPROG STARTED
IEF403I MYPROG - STARTED - TIME=13.44.01
IEF404I MYPROG - ENDED - TIME=13.44.01
$HASP395 MYPROG ENDED - RC=0000
$HASP250 MYPROG PURGED -- (JOB KEY WAS D9BC2A80)
谢谢!
有一种更好的方法可以让系统在初始化 (IPL) 时自动执行 运行 命令:使用 COMMNDxx
Parmlib 成员。有关详细信息,请参阅 z/OS MVS Initialization and Tuning Reference。
在 SYS1.PARMLIB
(或串联中的任何 PARMLIB)中创建一个 COMMNDxx
成员并在其中添加命令:
COM='V 0A92,OFFLINE'
您可以将命令放在默认成员 COMMND00
或任何 COMMNDxx
成员中,并将 xx
后缀添加到要执行的命令成员列表中,即添加到 CMD=...
IEASYSxx
成员中的参数。