查看上一个主题 :: 查看下一个主题
|
作者 |
信息 |
Sanjoy
新的用户
已加入:2005年10月19日 帖子:19
|
|
|
|
一个MPP pl1程序如何调用另一个MPP pl1程序? |
|
回到顶部 |
|
 |
比特纳克
CICS主持人

加入:2005年11月7日 帖子:1104 地点:19洞荷兰
|
|
|
|
程序间切换。使用ALTPCB或更改SPA中的交易代码。 |
|
回到顶部 |
|
 |
比特纳克
CICS主持人

加入:2005年11月7日 帖子:1104 地点:19洞荷兰
|
|
|
|
比特纳克写道: |
程序间切换。使用ALTPCB或更改SPA中的交易代码。 |
使用ALTPCB时,您还进行GHNG呼叫并为被叫者插入一条消息。 |
|
回到顶部 |
|
 |
比特纳克
CICS主持人

加入:2005年11月7日 帖子:1104 地点:19洞荷兰
|
|
|
|
变更呼叫示例:
DCL ALT_TRX CHAR(8);
ALT_TRX ='程序更改为';
PARMCT = 3;
CALL PLITDLI(PARMCT,'CHNG',PALTERN,ALT_TRX);
CALL PLITDLI(PARMCT,'ISRT',PALTERN,IOAREA); |
|
回到顶部 |
|
 |
Sanjoy
新的用户
已加入:2005年10月19日 帖子:19
|
|
|
|
谢谢Bitneuker。
您能解释一下吗,我是说更多的技术细节?
实际上我得到了CHNG命令将更改Alternate PCB PALTERN和事务ALT_TRX.Am对。
但是在ISRT呼叫中,我们需要放置哪个IMS消息? |
|
回到顶部 |
|
 |
比特纳克
CICS主持人

加入:2005年11月7日 帖子:1104 地点:19洞荷兰
|
|
|
|
你好
这是完整的一块。该消息发送到MPP-prog PBE22。 PBE22使用事务NPBE22,它是通过ALTPCB在CHNG调用中启动的。 PBE22将对消息(DATA)的内容起作用。
DCL 1 IOAREA CHAR(1924);
DCL 1 MID_E0基于UNAL(ADDR(IOAREA)),
3 LL BIN FIXED(31),
3位ZZ(16),
3 TC CHAR(09),
3 PFX CHAR(08),
3个游标字符(04),
3 PAWO CHAR(08),
3个SYSSPA,
5 SPLITKZ CHAR(1),
5个SEC CHAR(1),
5 MODUS CHAR(8),
5 PAGE#CHAR(3),
5 MASKE CHAR(5),
5 TCOK CHAR(1),
3个SPA CHAR(50),
3 FEHLER CHAR(79),
3 MASKE1 CHAR(05),
3 MASKE2 CHAR(05),
3 FMASKE CHAR(05),
3 FFUNKT CHAR(01),
3 DATA CHAR(1725);
MID_E0 ='';
DATA ='PBE22的blablabla信息';
LL = 294;
MASKE1 ='QA';
FMASKE ='PBE22';
SYSSPA.MASKE ='QA';
FFUNKT ='A';
TC ='PBE22';
DCL ALT_TRX CHAR(8);
ALT_TRX ='NPBE22';
PARMCT = 3;
CALL PLITDLI(PARMCT,'CHNG',PALTERN,ALT_TRX);
CALL PLITDLI(PARMCT,'ISRT',PALTERN,IOAREA); |
|
回到顶部 |
|
 |
比特纳克
CICS主持人

加入:2005年11月7日 帖子:1104 地点:19洞荷兰
|
|
|
|
很抱歉输入错误。在消息TC中用“ NPBE22”填充。不适用于“ PBE22”。因此,IMS知道该消息是针对TRX NPBE22的。 |
|
回到顶部 |
|
 |
Sanjoy
新的用户
已加入:2005年10月19日 帖子:19
|
|
|
|
谢谢Bitneuker。
工作正常
但是我还有一个问题。
在第二个程序的第一次运行后,如何停止它。可能是什么原因? |
|
回到顶部 |
|
 |
比特纳克
CICS主持人

加入:2005年11月7日 帖子:1104 地点:19洞荷兰
|
|
|
|
Sanjoy写道: |
谢谢Bitneuker。
工作正常
但是我还有一个问题。
在第二个程序的第一次运行后,如何停止它。可能是什么原因? |
我了解以下内容:
MPP-1启动,执行对MPP-2的CHNG调用并将消息发送到MPP-2。 MPP-2被调用并处理消息。到现在为止还挺好。
问题:处理完MPP-1发送的消息后,MPP-2应该做什么? |
|
回到顶部 |
|
 |
Sanjoy
新的用户
已加入:2005年10月19日 帖子:19
|
|
|
|
否...实际上,MPP2在第一次运行后就停止了。
在Ims地区显示
TRAN CLS ENQCT QCT LCT PLCT CP NP LP SEGSZ SEGNO PARLM RC
SN02 12 0 0 10 5 5 5 5 7 0 1000 4 0
PSBNAME:SN0200
状态:BAL(2),停止
因此,MMP1的后续事务无法调用MPP2。我的问题是为什么MPP2在第一次运行后会停止运行? |
|
回到顶部 |
|
 |
比特纳克
CICS主持人

加入:2005年11月7日 帖子:1104 地点:19洞荷兰
|
|
|
|
这个MPP-2开始意味着PGM和TRAN启动了吗?该地区停止了吗?请随后输入以下内容进行检查:
/ DIS REGA。
MPP-2应该运行的区域是否显示?如果没有,请检查SDSF是否超出范围。如果未激活,请从SDSF提交作业。
/ DIS TRAN交易代码
确实是说已停止,然后键入/ STA TRAN事务代码
/ DIS PROG程序名称MPP-2
它说STOPPED,然后键入/ STA PROG程序名MPP-2 |
|
回到顶部 |
|
 |
Sanjoy
新的用户
已加入:2005年10月19日 帖子:19
|
|
|
|
谢谢Bitneuker。
其实我的问题是在第一次调用MPP-2之后 停止了 不知何故。因此,MPP-1的其余调用都失败了。
现在,MPP2的内容仅是显示。
您能告诉我IMS何时停止交易吗?那我想我可以解决这个问题。 |
|
回到顶部 |
|
 |
比特纳克
CICS主持人

加入:2005年11月7日 帖子:1104 地点:19洞荷兰
|
|
|
|
我假设您使用事务代码调用了MPP-1。因此它开始运行。完成后,将启动CHNG和ISRT呼叫MPP-2。接下来发生什么。通常,MPP-2读取消息队列以检索MPP-1发送的消息。 MPP-2是否报告了QC状态码以告知没有更多消息?我不知道下一步该MPP-2应该做什么。请告诉我它是做什么的还是应该做什么?只是告诉它以某种方式停止就不会亮起。我们需要原因,因此需要更多信息。
您告诉我,它显示的是您必须通过查看显示区域作业的SDSF(A)才能找到的显示。您应该在那里找到是否停止了MPP-2以及由于什么原因而停止了该操作。
如果此类问题排查花费的时间太长,则最好在PM中将您的电话号码发送给您(只是这样做)。请考虑我们在格林威治时间的工作时间(现在这里的时间是15.19点)。 |
|
回到顶部 |
|
 |
比特纳克
CICS主持人

加入:2005年11月7日 帖子:1104 地点:19洞荷兰
|
|
|
|
当检测到(编程的)故障时,IMS可能会停止事务。原因显示在regionjob中,可以通过SDSF进行查看。与事务一起,程序也停止了。请参阅先前的帖子。 |
|
回到顶部 |
|
 |
Sanjoy
新的用户
已加入:2005年10月19日 帖子:19
|
|
|
|
实际上,我的意图是MPP1应该仅调用MPP2。无需发送IMS消息。
我在第一个程序中做了什么:
MPP1:Proc($ LTM,$ PGM)选项(主要);
DCL LTM ptr;
%包含TPPCB; / * IMS I / O PCB面膜* /
Dcl WF CHAR(21000)为基础;
dcl 1 SqlCa,
%include SQLSTATE;
dcl $ PGM ptr;
dcl PGM ptr;
PGM = $ PGM;
dcl SN_TRAN char(8)init('');
DCL 1 IMS_MSG,
%INCLUDE XXXXXX ;;
SN_TRAN ='SN02';
放入跳过列表(“调用PLITDLI更改ALP”);
CALL PLITDLI(C3,'CHNG',PGM,SN_TRAN); / *更改备用PCB * /
put skip list('status code from plitdli',substr(pgm->wf,11,2));
放入跳过列表(“调用PLITDLI更改ALP”);
致电PLITDLI(C3,'ISRT',PGM,addr(Ims_msg)); / *插入消息* /
put skip list('status code from plitdli',substr(pgm->wf,11,2));
在第二编中:
MPP2:Proc($ ltm)选项(主要);
DCL LTM ptr;
%包含TPPCB; / * IMS I / O PCB面膜* /
放入跳过列表(XXXXXXXXXXXXXXXXXX);
结束mpp2;
MPP2似乎有问题。在MPP2中接收消息是否是强制性的?并且如果我不需要发送任何消息,IMS-msg的格式应该是什么?
非常感谢你的帮助。 |
|
回到顶部 |
|
 |
比特纳克
CICS主持人

加入:2005年11月7日 帖子:1104 地点:19洞荷兰
|
|
|
|
好像您在proc(xx,yy)选项main中忘记了ALTPCB。我们进行CHNG调用的程序之一:
TPQAVER:PROC(QPIOTRM,QPALTERN,Q
QPNLVERT,QPNLBUEN,Q
QPNLZBNE,QPNLHIDB,Q
QPNLVVER)
选项(主要);
在我们编码的相应PSB中,iopcb是可修改的:
PCB类型= TP,修改=是
调整并重试  |
|
回到顶部 |
|
 |
Sanjoy
新的用户
已加入:2005年10月19日 帖子:19
|
|
|
|
我也在工作中 只要 得到显示XXXXXXXXXXXXXXX
没有其他的 |
|
回到顶部 |
|
 |
Sanjoy
新的用户
已加入:2005年10月19日 帖子:19
|
|
|
|
是的,这是通过ALTPCB完成的。请参见代码中的$ PGM指针。
我是否还需要在MPP2中提及它。 |
|
回到顶部 |
|
 |
比特纳克
CICS主持人

加入:2005年11月7日 帖子:1104 地点:19洞荷兰
|
|
|
|
当我查看MPP-2时,便完成了所有工作……显示并结束,就像您编写的程序一样。如果要让MPP-2再次将控制权返回给MPP-1,则应在MPP-2中执行与在MPP-1中所做的一样:CHNG对MPP-1的控制。
顺便说一句:Regulair MPP不断读取消息以进行处理并与终端进行通信。这个东西看起来像一个子例程。如果您想要概念证明,请不要看这个专家的优势。  |
|
回到顶部 |
|
 |
比特纳克
CICS主持人

加入:2005年11月7日 帖子:1104 地点:19洞荷兰
|
|
|
|
IMS消息:
DCL 1 IOAREA CHAR(xxx);
DCL 1 MID_E0基于UNAL(ADDR(IOAREA)),
3 LL BIN FIXED(31),
3位ZZ(16),
3 TC CHAR(09),
3您的MPP2 CHAR(????)信息,
MID_E0 ='';
您的MPP2信息='PBE22的blablabla信息';
LL = ???;
TC ='交易'; |
|
回到顶部 |
|
 |
Sanjoy
新的用户
已加入:2005年10月19日 帖子:19
|
|
|
|
实际上,我想要的所有MPP2程序都应在执行一些功能后停止,但不应停止MPP2事务,以便在MPP1需要调用它时可以使用它。 |
|
回到顶部 |
|
 |
比特纳克
CICS主持人

加入:2005年11月7日 帖子:1104 地点:19洞荷兰
|
|
|
|
Sanjoy写道: |
是的,这是通过ALTPCB完成的。请参见代码中的$ PGM指针。
我是否还需要在MPP2中提及它。 |
没有.....
在我看来,这些东西完全可以满足您的要求:
调用MPP-1
更改MPP-2的控制
让MPP-2将数据放在显示器中,就好像它是子例程一样
MPP-2已终止。
如果要继续处理MPP-1或MPP-2,则应确保在消息队列中有针对它们的消息。只要有它们就会处理。如果没有更多消息(状态= QC),则任何MPP将停止运行,直到被消息队列上的消息(重新)调用为止。这可能是chng呼叫发送的交易代码。 |
|
回到顶部 |
|
 |
比特纳克
CICS主持人

加入:2005年11月7日 帖子:1104 地点:19洞荷兰
|
|
|
|
Sanjoy写道: |
实际上,我想要的所有MPP2程序都应在执行一些功能后停止,但不应停止MPP2事务,以便在MPP1需要调用它时可以使用它。 |
交易不会像那样停止。您是否使用/ DIS TRAN mpp2-tran进行了检查? |
|
回到顶部 |
|
 |
比特纳克
CICS主持人

加入:2005年11月7日 帖子:1104 地点:19洞荷兰
|
|
|
|
您是否使用SDSF(JESMSGLG)检查了该区域? |
|
回到顶部 |
|
 |
Sanjoy
新的用户
已加入:2005年10月19日 帖子:19
|
|
|
|
是的,它正在显示
TRAN CLS ENQCT QCT LCT PLCT CP NP LP SEGSZ SEGNO PARLM RC
SN02 149 20 0 10 5 5 5 7 0 1000 4 0
PSBNAME:SN0200
状态:BAL(2),停止
* 2006299/164458 * |
|
回到顶部 |
|
 |
|