【发布时间】:2021-05-19 13:18:48
【问题描述】:
我正在尝试执行某个命令(“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,...'),它会启动并正常完成。另外,如果我创建作业而不是 proc,我可以提交它并成功完成。
我的全部目的是在每次 IPL 后让该设备离线,无需操作员干预。有没有人有在 JCL 中嵌入命令的经验,或者有其他方法来实现这一点?
在 cshneid 的回答之后,我将我的 proc 编辑如下:
//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,这似乎都是模式。
【问题讨论】:
-
这里解释为什么它不起作用。 /*$VS 是一个 JES2 命令(技术上称为 JECL,Job Entry Control Lanuage)。它仅由 JES2 拥有的内部读取器处理。启动任务阅读器 (STCINRDR) 不是 JES2 阅读器,因此它不知道 JECL。这就是命令失败的原因。