|
From Sion Coulter ? Haven't been vacationing at a sex change clinic in Denmark have you ? ;-) ...Neil "Sion Coulter" <shc@flybynight.com.au> Sent by: owner-midrange-l@midrange.com 2001/06/06 22:53 Please respond to MIDRANGE-L To: MIDRANGE-L@midrange.com cc: Subject: errno (was: VIRUS ALERT!) Hello Joe, Change the bloody topic! You wrote: >Does anybod have the ILE C pieces needed to allow me to retrieve the >"errno" parameter when using the Unix APIs? According to the manuals, I >need a C module because the error is exported as "errno", which is lower >case and cannot be accessed by ILE RPG. Not strictly true. RPG IV can access lower case exports. For example * Errno in C style - imported from QC2UTIL1 service program D errno S LIKE(int_t) IMPORT('errno') however, although that is syntactically correct it won't work because the errno variable exported from the QC2UTIL1 service program is always zero. Bastards! Read on .... >And rather than provide a "geterrno()" method in the Unix APIs, evidently >I'm expected to make my own. Since I don't have the ILE C compiler, >that's sort of difficult, so I was wondering if anybody else had gone >through this step. You are expected to create your own because the conventional wisdom is that you should be using C for this stuff. However, you don't need to create it completely because the C runtime (which is on every system) already provides it. Read on ... You do have the C compiler. It is on your installation CD-ROM. You can install it and run it for 70 days before it dies. It is probably worth installing simply so you can examine the C header files whenever you need to convert an include to RPG IV. If you look at the errno.h include you will see that errno in C on the AS/400 is actually a function call. extern int *__errno(void); #define errno (*__errno()) You can prototype the function call and use it from RPG IV. It is not as transparent as the C version but it works. Here is an excerpt from my version of errno.h for RPG IV. Note that you only need to address the errno variable once in the program so put the EVAL @errno = getErrno in the *INZSR and then errno is always available. ************************************************************************* * Definition of errno : Slightly different from C language invocation * * due to language semantics. Invoke like: * * CL0N01Factor1+++++++Opcode&ExtExtended-factor2+++++++++++++++++++++++ * * EVAL @errno = getErrno * * and then test like: * * IF errno = $EWOULDBLOCK * * do something about it * * ENDIF * ************************************************************************* * Error number returned D errno S LIKE(int_t) BASED(@errno) D @errno S * D getErrno PR * Extproc('__errno') /endif Regards, Simon Coulter. «»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«» «» FlyByNight Software AS/400 Technical Specialists «» «» Eclipse the competition - run your business on an IBM AS/400. «» «» «» «» Phone: +61 3 9419 0175 Mobile: +61 0411 091 400 /"\ «» «» Fax: +61 3 9419 0175 mailto: shc@flybynight.com.au \ / «» «» X «» «» ASCII Ribbon campaign against HTML E-Mail / \ «» «»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«» +--- | This is the Midrange System Mailing List! | To submit a new message, send your mail to MIDRANGE-L@midrange.com. | To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com. | To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: david@midrange.com +---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 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.