免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 5611 | 回复: 25
打印 上一主题 下一主题

CLP中sbmjob后立即更改LIBL和ENVVAR等等对其有何影响? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-31 11:47 |只看该作者 |倒序浏览
  1.              PGM
  2.              DCL        VAR(&PATH) TYPE(*CHAR) LEN(256) /* Set a +
  3.                           variable for PATH */
  4.              DCL        VAR(&LIBL) TYPE(*CHAR) LEN(2750) VALUE('QGPL +
  5.                           QTEMP *CRTDFT') /* 'Backup current LIBL' */
  6.              DCL        VAR(&CURDIR) TYPE(*CHAR) LEN(60) VALUE('/') +
  7.                           /* Save current dir */
  8.              DCL        VAR(&CURDIRLEN) TYPE(*DEC) LEN(7 0) VALUE(1) +
  9.                           /* the length of directory */
  10.              DCL        VAR(&CMD) TYPE(*CHAR) LEN(2760) /* Combine a +
  11.                           CMD for QSYS/QCMDEXC */

  12.              MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))

  13.              RTVJOBA    USRLIBL(&LIBL)
  14.              RTVCURDIR  RTNDIR(&CURDIR) DIRNAMLEN(&CURDIRLEN) /* +
  15.                           Backup current dir */
  16.              CHGVAR     VAR(&PATH) +
  17.                           VALUE('/QIBM/ProdData/LOTUS/DOMINO***:/QIBM+
  18.                           /ProdData/LOTUS/DOMINO***/DATA:/QIBM/UserDa+
  19.                           ta/LOTUS/DOMINO***')
  20.              ADDENVVAR  ENVVAR(PATH) VALUE(&PATH) REPLACE(*YES)
  21.              CHGENVVAR  ENVVAR(PATH) VALUE(&PATH)

  22.              CHGCURDIR  DIR('/QIBM/PRODDATA/LOTUS/DOMINO***/DATA/')
  23.              ADDLIBLE   LIB(QNOTES) POSITION(*FIRST)
  24.              SBMJOB     CMD(CALL PGM(QNOTES/TEST) PARM(T '-f' +
  25.                           '/test/test.out')) USER(QNOTES) +
  26.                           PRTTXT(*CURRENT) CURLIB(QDOMINO***) +
  27.                           INLLIBL(*NONE) LOG(4 00 *SECLVL) +
  28.                           CPYENVVAR(*YES) /* run TEST */
  29.              GOTO       CMDLBL(END) /* Restore the environment */

  30. ERROR:      SNDPGMMSG  MSG('A FAILED for TEST') TOMSGQ(*SYSOPR) +
  31.                           MSGTYPE(*INQ)
  32. END:        CHGVAR     VAR(&CMD) VALUE('CHGLIBL (' *CAT &LIBL *TCAT +
  33.                           ')')
  34.              CALL       PGM(QSYS/QCMDEXC) PARM(&CMD 2760)
  35.              MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(LAST))

  36.              CHGVAR     VAR(&CMD) VALUE('CHGCURDIR DIR(' *CAT '"' +
  37.                           *CAT %SST(&CURDIR 1 &CURDIRLEN) *TCAT '"' +
  38.                           *CAT ')')
  39.              CALL       PGM(QSYS/QCMDEXC) PARM(&CMD 2760)
  40.              MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(LAST))

  41. /*           SNDPGMMSG  MSG(%SST(&CURDIR 1 &CURDIRLEN))              */
  42. /*           SNDPGMMSG  MSG(&CMD)                                    */
  43. LAST:        ENDPGM
复制代码


上述过程主要是为提交一个JOB来准备相关的LIBL、ENVVAR等等……本意是想在提交JOB后恢复系统中原来的一些环境变量,但是现在的疑问是:如果恢复这些值的时候该JOB还在JOBQ或者是正在RUNNING,对其有何影响?

论坛徽章:
0
2 [报告]
发表于 2005-08-31 12:10 |只看该作者

CLP中sbmjob后立即更改LIBL和ENVVAR等等对其有何影响?

粗粗看了一下代码,楼主本地有跑DOMINO FOR OS/400的应用。

SBMJOB是提交JOB在QSYS/QBATCH下运行,关联QBATCH的SBSD的一些参数也改变了么?没有的话是SUBMIT在QBATCH下的JOB是不受干扰的。

BTW,不理解的是,恢复系统中原来的一些环境变量CL:

  1. SBMJOB     CMD(CALL PGM(QNOTES/TEST) PARM(T '-f' +
  2.               '/test/test.out')) USER(QNOTES) +   
  3.               PRTTXT(*CURRENT) CURLIB(QDOMINO***) +
  4.               INLLIBL(*NONE) LOG(4 00 *SECLVL) +   
  5.               CPYENVVAR(*YES)                                                           /* run TEST */      
复制代码


不能直接在交互式下运行吗?

论坛徽章:
0
3 [报告]
发表于 2005-08-31 12:45 |只看该作者

CLP中sbmjob后立即更改LIBL和ENVVAR等等对其有何影响?

不是很听得懂,我就用WRKSBSD SBSD(QBATCH)以及 WRKJOBQ看了看,没看出什么道道来……不知道该怎么分析阿?楼上的“关联QBATCH的SBSD的一些参数也改变了么?”具体是指什么参数?

论坛徽章:
0
4 [报告]
发表于 2005-08-31 12:50 |只看该作者

CLP中sbmjob后立即更改LIBL和ENVVAR等等对其有何影响?

可以……只不过想放在一个CLP来进行批处理,即便是在COMMAND ENTRY下运行,如果要恢复环境变量不也是必要的吗?CPYENVVAR(*YES)主要是要从我先前设置过的参数中获取过来,还有就是,在处理的时CURDIR等等会变化,我想在这个JOB执行后使Green Screen就完全恢复到该CLP执行之前

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2005-08-31 12:58 |只看该作者

CLP中sbmjob后立即更改LIBL和ENVVAR等等对其有何影响?

当前作业属性的修改,不会影响已经sbmjob 的作业。
除非是已提交作业还在JOBQ,当前作业又去改已提交作业的jobd。
一般来说,当批处理作业对作业属性与当前作业不同时,为批处理作业属性建JOBD,SBMJOB 指定这个JOBD会好一些。

论坛徽章:
0
6 [报告]
发表于 2005-08-31 13:06 |只看该作者

CLP中sbmjob后立即更改LIBL和ENVVAR等等对其有何影响?

[quote]原帖由 "st.linux.ily"]不是很听得懂,我就用WRKSBSD SBSD(QBATCH)以及 WRKJOBQ看了看,没看出什么道道来……不知道该怎么分析阿?楼上的“关联QBATCH的SBSD的一些参数也改变了么?”具体是指什么参数?[/quote 发表:

意思就是你的CLP程序如果没有去更改QBATCH的SBSD的参数的话,提交到QBATCH下的JOB不不受当前LIBL和ENVVAR的影响。

论坛徽章:
0
7 [报告]
发表于 2005-08-31 13:09 |只看该作者

CLP中sbmjob后立即更改LIBL和ENVVAR等等对其有何影响?

[quote]原帖由 "st.linux.ily"]可以……只不过想放在一个CLP来进行批处理,即便是在COMMAND ENTRY下运行,如果要恢复环境变量不也是必要的吗?CPYENVVAR(*YES)主要是要从我先前设置过的参数中获取过来,还有就是,在处理的时CURDIR等等会变化,我?.........[/quote 发表:

要想及时变更环境,提交QINTER下会马上生效,提交到QBATCH下可能需要等待。

论坛徽章:
0
8 [报告]
发表于 2005-08-31 13:14 |只看该作者

CLP中sbmjob后立即更改LIBL和ENVVAR等等对其有何影响?

是这样的,该job运行需要特定的curdir、libl、envvar,如何才能在job运行后恢复到先前的一些设置呢?怎么样作一个平衡?jobd中好像没有对curdir的描述,假如该job还在jobq或是run状态,我更改了curdir,会出现什么情况?

论坛徽章:
0
9 [报告]
发表于 2005-08-31 13:19 |只看该作者

CLP中sbmjob后立即更改LIBL和ENVVAR等等对其有何影响?

原帖由 "hanyu" 发表:
..........
一般来说,当批处理作业对作业属性与当前作业不同时,为批处理作业属性建JOBD,SBMJOB 指定这个JOBD会好一些。


是的。
刚才我也想说明这点,但看LZ的问题没有动到QBATCH的JOBD、SBSD参数,所以就改变了回答。

遇到这种情况时,或者将JOB提交到QSYSWRK下也行,或者提交JOB到自行搭建的SubSystem下也行。
按照hanyu兄的意思应该是先创建一个特殊的JOBQ,然后关联QBATCH,步骤如下。

先创建作业队列:
CRTJOBQ JOBQ(LIB/JOBQ) TEXT('MY Job Queue')

然后再添加作业队列入口:
ADDJOBQE SBSD(QBATCH) JOBQ(LIB/JOBQ) MAXACT(*NOMAX)

论坛徽章:
0
10 [报告]
发表于 2005-08-31 13:24 |只看该作者

CLP中sbmjob后立即更改LIBL和ENVVAR等等对其有何影响?

如果PGM已经SUBMIT出去了(RUN状态) 你再更改任何环境变量都不会影响到这个PGM的

如果这个PGMSUBMIT出去了,但还在JOBQ中排队,如果你更改了JOBD中的参数 那是能影响到PGM的

HANYU的意思是说一般会做一个专门的JOBD 专用于SUBMIT动作
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP