- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 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
您可能关注的文档
- oracle goldgate 支付宝测试配置脚本(内部资料).docx
- opc操作步骤_串口.doc
- Juniper_SSG__5防火墙中文版配置手册.doc
- Book 3 Unit 1 Festivals全单元学案.doc
- java--数据采集系统.doc
- cgg模块RAMUR参数.doc
- orcale 10g 连接sqlserver.doc
- Maya Mental Ray 之 Final Gathering(转).docx
- sat语法专练(125版本).docx
- 时事新闻摘抄:VA program to provide private care stumbling out of the gate.docx
文档评论(0)