AS400服务程序流程图.docVIP

  1. 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
  2. 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
  3. 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
AS400服务程序流程图

NEW AS/400服务程序流程图 一、AS/400服务程序系统流程图 交易服务程序状态监控程序(JOBENG) 通信服务程序(SOCKM) 交易服务程序(TRANSERVER) 开始 JOBAPI/InitEnv(), 清除所有DTAQ PUBLIC/ENGINIT, 开始事物控制(*CHG)。 设置默认变量值, 获取输入参数。 开始死循环 调用JOBAPI/RtvDqMsgNum获得FreeQ里的空闲进程数,计算要提交的进程数:addjobs = MINFREEJOBS - freejobs 结束 调用RtvDqMsg()获得ControlQ里的运行进程个数和信息。 延时l秒,继续死循环。 调用GetFreePort()拿已释放的端口号,如没有则最大端口号++,n次调用SBMTRSVRC(port)程序提交TRANSVR进程。 调用RcvFreePort()函数从FreeQ接收空闲端口号;调用endtrsvrc(port,rtcd)结束该端口上的TRANSVR服务进程;再PutFreePort(FreePort)保存释放的端口号。 N Y Addjobs0? 接上 超时交易记录表 (TOTRANP) 如果运行进程个数大于0,调用ProcessMsg()处理获得的进程信息;循环调用ProcessJob()处理进程,如果进程超过5秒,调用rtvjobstcl()获得该进程的状态信息,并写到TOTRANP表中;如果进程超过60秒,调用FENDJOBCL程序结束该进程,同时调用RcvDiedJob(nport)回收ControlQ里的该条信息,并调用PutFreePort(nport)保存释放的端口号。 开始 initSockets(),初始化Socket数组,从输入获取服务端口号。 InitCommEnv(),设置各个数据队列的实际名称。 setupTcpServer(),产生和绑定一个Socket。 继续死循环。 Accept() 开始死循环 如果接收到请求,从FreeQ接收FreePort,发回客户端,关闭Socket。 结束 开始 TRANAPI/InitTranEnv(),设置相关数据队列的名字。 CrtPassiveSock(nTranPort),产生一个Socket,绑定Port,监听。 PUBLIC/CMINNEW,开始事物控制(*CHG)。 TRANCTL/load(),将交易代码表CRCRA的记录读入结构数组table。 调用rtvjobstcl()获得本作业的信息。 Accept() TRANAPI/TranIsReady(Port),向FreeQ发送4位Port号。 如果用DES,调用LSKEYPROC/readKeyList(),将Key表T1003DD2(T1003DD2)的记录读入结构数组LSkeylist。 调用LSKEYPROC/getTransKey(TransKey),获得结构数组LSkeylist第一条记录的8位Key。 LSKEYPROC/processKey(buf,plen),获得Key。 WriteKey(,,),将Key发送到客户端;继续ReadKey(,,)。 开始死循环。 SndToMonitor(1),发送1到MonitorQ。 ReadKey(,,),接收数据。如果接收到’EXIT’,则结束。 JOBAPI/SndToMonitor(3) 发送3到MonitorQ TRANAPI/TranIsEnd(nPort),从ControlQ以4位Port号为KEY收回前面发送的Jobinf。 当输出数据长度大于一个报文长度时,调用nMultiOutputCtl(,,,)函数多次发送,最后调用nCrtPackage(,,,)发送余下的数据。 TRANAPI/TranIsBegin(nPort,pTrcd,*pJobname),向ControlQ发送以4位Port号为KEY的Jobinf。 N Y TRANCTL/TranControl(msgSock,rBuffer,len), 以下是该函数的流程: 调用close(msgSock)关闭Socket。 GetTranInfo(rBuffer,len,szTrcd,szSbno),从交易报文取得交易码和机构号。 rBuffer??(0??)=X? UNDES(TransKey,rBuffer+6,len-6),从交易报文解密交易Key。 交易服务程序状态监控程序 (JOBENG) 当输出数据长度大于一个报文长度时,调用nMultiOutputCtl(,,,)函数多次发送,最后调用nCrtPackage(,,,)发送余下的数据。 MULTI_INPUT_MODE: 当(cIsLastMsg != FINISHED),循环调用nMu

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档