[精彩] 内部函数%SWITCH测试的作业开关,是自定义的,还是系统特定的? |
|
| 来源 chinaunix.net 酷勤网整理 |
如题!
请高手们指点!
太感谢了!:em15:
依然沈 回复于:2007-04-16 12:21:11
唉!怎么没人搭理呀!!
李海隽 回复于:2007-04-17 08:58:37
系统自带的
依然沈 回复于:2007-04-17 09:12:48
是系统自带的,那么每一位又指定为什么呢?
李海隽 回复于:2007-04-17 10:03:12
8位,只能有3个值,1、0和X,表示作业的状态。如%SWITCH(0011XXXX),前两个作业是0状态,3和4是一状态,后4个不管。
李海隽 回复于:2007-04-17 10:15:22
8位对应的是同一个JOB。上例如果作业开关的值是0011XXXX,后4位不管,那么结果是1,否则是0。
关于作业开关,你可以查一下CRTJOBD和CHGJOB。
李海隽 回复于:2007-04-17 10:30:09
作业开关的初始值是由CRTJOBD指定的,由CHGJOB修改。
依然沈 回复于:2007-04-17 13:02:16
谢谢你李隽!
可能是我描述的不好,我想知道的是每位代表作业的什么属性.
比如说有(0011xxxx),那么第一,二位代表作业的什么属性为0.第三四位又代表作业的什么属性为1.
李海隽 回复于:2007-04-17 14:11:42
0表示off,1表示on。用来控制程序的流程。比如用cl可以让0011XXXX执行A程序、1100XXXX执行B程序。
李海隽 回复于:2007-04-17 14:16:12
单独的一位没有什么含义,8位组合在一起作为一个开关变量来使用。用来控制程序的流程。
李海隽 回复于:2007-04-17 14:17:21
忘说了,默认值是8个0。
依然沈 回复于:2007-04-17 14:22:42
谢谢你的回答,我还是没弄清楚.
比如说有下例代码:
CALL PGM(EDI510P) PARM(&CTLNBR &FILNAM)
IF COND(%SWITCH(X1XXXXXX)) THEN(DO)
CHGVAR VAR(&MSG) VALUE('Invalid control or file +
name, try again !')
GOTO CMDLBL(STRDSP)
ENDDO
这边关注的是第二位是否为1,那么这第二位到底是指的什么,是不是就如同异常CPF9815一样,是固定指示某个错误呢?
李海隽 回复于:2007-04-17 14:38:44
据我所知它没有特定含义,可以任意组合,跟错误代码不一样。
你看一下这本程序或与它关联的程序中有没有类似CHGJOB SWS(X1XXXXXX)或者
CHGVAR VAR(&ABC) VALUE(%SWITCH(X1XXXXXX))这样的代码?
问问别的人吧,我说的可能也不对。
这个东西我只在练习时用过,还没在项目中使用过呢。要不你把相关代码贴上来,让我涨涨见识。
依然沈 回复于:2007-04-17 14:39:39
哦,我知道了.
我在文件EDI510P中重新指定了指示器的值.
谢谢你,李海隽!!
依然沈 回复于:2007-04-17 14:41:57
在EDI510P里有这段代码!
C CTLKEY CHAINXCTL 13
C 13 SETON U2
C N13 SETOF U2
呵呵,你给看看,上面说的对吗.
是通过U2给新赋值的吗?
李海隽 回复于:2007-04-18 09:57:21
是啊,是啊。原来用的是外部指示器啊。用U1到U8与开关的1到8位相关联。
依然沈 回复于:2007-04-19 14:42:35
:em02::em02::em02:
呵呵,这下知道了,又长知识啦!
谢谢了.
hxfang2000 回复于:2007-05-10 16:23:31
疑问:怎么把U1到U8的指示器与%SWITCH的1到8位关联起来呢?需要在程序中作什么设定么?能不能发个完全实现功能的程序上来呀?谢谢!
|
 |
原文链接:http://bbs.chinaunix.net/viewthread.php?tid=924395
转载请注明作者名及原文出处
|
|
|