|
I don't see your declaration for the errno thing.
But mine looks like this:
D m_nErrNo S 10I 0 Based(pErrNo)
C eval pErrNo = errno()
C callp joblog(%str(strerror(m_nErrNo)))
Where errno is the raw, C language function. Which returns a pointer to the
error number, hence the assignment to the based pointer. The actually error
number is then available in the m_nErrNo field.
-Bob Cozzi
www.RPGxTools.com
RPG xTools - Enjoy programming again.
-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
On Behalf Of Lim Hock-Chai
Sent: Tuesday, January 17, 2006 10:29 AM
To: RPG programming on the AS400 / iSeries
Subject: alarm() not working as expected
I'm using alarm to control timeout on recv() and having the following
problem:
1) When timeout occur (errno = EINTR), the program will continue to get
the timeout error without at least waiting for timeout to occur again
(which is set to 10 secs). Below is a code snap shot.
C ...loop start here
C eval recvData = *blank
* set time out to 10 sec
C callp alarm(10)
C eval recvlen = recv(hostSock :%addr(recvData)
C :%size(recvData)-10
C :0)
* disable timeout
C callp alarm(0)
* if time out occured, return back to the main procedure to try to
* send the @GO command.
C if (errno = EINTR)
C return *off
C endif
C ....
C ....end of loop
Any help would be appreciated.
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.