我正在尝试执行某个命令("VARY devaddr,OFFLINE"(,以便在系统启动期间自动运行。我找不到命令应该放在哪里。我尝试在进程中设置命令,如下所示:
//MYPROG PROC MODULE='IEFBR14'
/*$VS,'V 0A92,OFFLINE'
//DOIT EXEC PGM=&MODULE
//*
如果我发布START MYPROG,我总是会收到一个错误:
IEFC452I MYPROG-作业未运行-JCL错误181$HASP396 MYPROG终止
IEE122I启动命令JCL错误
然而,如果我从proc中删除命令('/*$VS,…'(,它的启动和完成都很好。此外,如果我创建了一个作业而不是proc,我可以提交它,它就会成功完成。
我的全部目的是让这个单元在每次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.
无论我如何安排进程,这似乎都是一种模式。
有一种更好的方法可以让系统在初始化(IPL(时自动运行命令:使用COMMNDxx
Parmlib成员。有关详细信息,请参阅《z/OS MVS初始化和调整参考》。
在SYS1.PARMLIB
(或串联中的任何PARMLIB(中创建一个COMMNDxx
成员,并在其中添加命令:
COM='V 0A92,OFFLINE'
您可以将命令放置在默认成员COMMND00
或任何COMMNDxx
成员中,并将xx
后缀添加到要执行的命令成员列表中,即添加到IEASYSxx
成员中的CMD=...
参数中。
令人困惑的是,有两种方法可以做到这一点,而且它们的名称几乎相同。不建议使用JCL命令语句。推荐的方法是使用COMMAND语句。
请注意,该命令将在转换时发出,在作业运行之前发出。
编辑(1(以添加。。。
IEFC452I和IEE122I的文档都表明您在的某个地方出现了JCL错误。胡乱猜测:工作没有台阶?
这次我终于有了它。我只是在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)
谢谢!