|
Ian,
here is a program I use - it waits for the connection messages on msgq
QTCP.
I modified it from someone elses post from the list - this one will time
out and retry, if there are problems. for the customer I use this for,
every now and then the peers would shake hands, then go into a never
ending loop without ever completing the connetion, with the only recourse
being to endtcpptp and start over. so I just put that code in this
procedure.
the sndusrmsgs are only temporary until I'm comfortable that it works
every time.
hth,
rick
/*********************************************************************/
/* */
/* PROGRAM : MONPTPCL */
/* FUNCTION: start ptp connection and monitor for connect msg */
/* AUTHOR : Rick Baird */
/* */
/*********************************************************************/
PGM PARM(&CFGPRF &ERROR)
DCL VAR(&CFGPRF) TYPE(*CHAR) LEN(10)
DCL VAR(&MSGID) TYPE(*CHAR) LEN(7)
DCL VAR(&HLDMSG) TYPE(*CHAR) LEN(7)
DCL VAR(&ERROR) TYPE(*CHAR) LEN(15)
DCL VAR(&COUNT) TYPE(*DEC) LEN(2 0) VALUE(0)
DCL VAR(&COUNT1) TYPE(*DEC) LEN(2 0) VALUE(0)
/* try to alloc msgq - if it fails, wait and try 50 times again */
ALLOC: ALCOBJ OBJ((QTCP *MSGQ *EXCL)) WAIT(0)
MONMSG MSGID(CPF1002) EXEC(DO)
CHGVAR VAR(&COUNT) VALUE(&COUNT + 1)
/* couldn't allocate message queue. error message */
IF COND(&COUNT > 70) THEN(DO)
SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) +
MSGDTA('MONPTPCL (' *CAT &CFGPRF *TCAT +
') was unsuccessful. The QTCP +
message queue could +
not be allocated.') TOUSR(*SYSOPR)
ENDTCPPTP CFGPRF(&CFGPRF)
CHGVAR VAR(&COUNT1) VALUE(&COUNT1 + 1)
IF COND(&COUNT1 > 90) THEN(DO)
CHGVAR VAR(&ERROR) VALUE('ERROR')
SNDUSRMSG MSG('Allocate of QTCP MsgQ timed out - +
MONPTPCL error #2 -' || &CFGPRF) +
MSGTYPE(*INFO) TOUSR(BAIRDR)
GOTO CMDLBL(ENDPGM)
ENDDO
SNDUSRMSG MSG('Can''t allocate QTCP MsgQ - trying +
again - MONPTPCL error #1 -' || &CFGPRF) +
MSGTYPE(*INFO) TOUSR(BAIRDR)
DLYJOB DLY(10)
GOTO CMDLBL(ALLOC)
ENDDO
GOTO CMDLBL(ALLOC)
ENDDO
DLCOBJ OBJ((QTCP *MSGQ *EXCL))
/* do priming reads on msgq, to clear any lingering messages*/
READMSGQ1: CHGVAR VAR(&MSGID) VALUE(' ')
RCVMSG MSGQ(QTCP) WAIT(3) RMV(*NO) MSGID(&MSGID)
IF COND(&MSGID *NE ' ') THEN(DO)
GOTO CMDLBL(READMSGQ1)
ENDDO
/* start p2p connection */
STRTCPPTP CFGPRF(&CFGPRF)
CHGVAR VAR(&COUNT) VALUE(0)
/* loop until msg TCP8344 (tcp started) is revieced */
READMSGQ2: CHGVAR VAR(&MSGID) VALUE(' ')
RCVMSG MSGQ(QTCP) WAIT(5) RMV(*NO) MSGID(&MSGID)
IF COND(&MSGID *NE ' ') THEN(CHGVAR +
VAR(&HLDMSG) VALUE(&MSGID))
/* found the connect message, no error, ready to go */
IF COND(&MSGID *EQ 'TCP8344') THEN(DO)
CHGVAR VAR(&ERROR) VALUE(' ')
GOTO CMDLBL(ENDPGM)
ENDDO
/* found the connection ended message - cancel. */
IF COND(&MSGID *EQ 'TCP837F' +
*OR &MSGID *EQ 'TCP8242' +
*OR &MSGID *EQ 'TCP8209' +
*OR &MSGID *EQ 'TCP836B') THEN(DO)
SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) +
MSGDTA('MONPTPCL (' *CAT &CFGPRF *TCAT ') +
was unsuccessful. STRTCPPTP command ended +
due to a system error. See MSGID ' +
*CAT &HLDMSG) TOUSR(*SYSOPR)
CHGVAR VAR(&ERROR) VALUE('ERROR' *BCAT &MSGID)
ENDTCPPTP CFGPRF(&CFGPRF)
SNDUSRMSG MSG('System Error MsgId:' || &HLDMSG || ' - +
Trying again - MONPTPCL error #3 -' || +
&CFGPRF) MSGTYPE(*INFO) TOUSR(BAIRDR)
DLYJOB DLY(10)
GOTO CMDLBL(ALLOC)
ENDDO
/* wait for connection message 80 times, then fail. */
CHGVAR VAR(&COUNT) VALUE(&COUNT + 1)
IF COND(&COUNT *GT 80) THEN(DO)
SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) +
MSGDTA('MONPTPCL (' *CAT &CFGPRF *TCAT ') +
was unsuccessful. STRTCPPTP command timed +
out before recieving the connect +
message-' *CAT &HLDMSG *CAT ' trying +
again') TOUSR(*SYSOPR)
CHGVAR VAR(&ERROR) VALUE('ERROR TIMEOUT')
ENDTCPPTP CFGPRF(&CFGPRF)
SNDUSRMSG MSG('STRTCPPTP timed out - trying again - +
MONPTPCL error #4 -' || &CFGPRF) +
MSGTYPE(*INFO) TOUSR(BAIRDR)
DLYJOB DLY(10)
GOTO CMDLBL(ALLOC)
ENDDO
GOTO CMDLBL(READMSGQ2)
/* connection has been established */
ENDPGM: ENDPGM
-----original message---------
I start a tcp ptp session using the command STRTCPPTP <name>
This does not return info if the session start is successful or not
because
it then submits other jobs.
Does anyone know of an API or other method to start a PTP session and
determine programmatically that the session start has been successful ?
Thanks
Regards
Ian Patterson
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.