|
I thought I had a full bag of tricks but this is one I'm missing and
will definitely use... thanks Phil.
> -----Original Message-----
> From: Phil Hall [SMTP:hallp@ssax.com]
> Sent: Tuesday, June 13, 2000 2:05 PM
> To: c400-l@midrange.com
> Subject: ERRNO
>
> Tired of looking up the ERRNO values in the header files or looking in
> QCPFMSG by typing dspmsgd xxxYYYY ?
>
> Compile this source and call it as;
>
> call qerrno '3025'
>
> To display the message text. This can be useful from with in a
> program,
> using the OS message text saves you having to type it and more
> importantly
> having to translate it for other countries.
>
> --phil
>
> /*==================================================================*/
> /*= QERRNO =*/
> /*= =*/
> /*= Given ERRNO value, reports reason =*/
> /*= =*/
> /*= Phil Hall =*/
> /*==================================================================*/
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <string.h>
> #include <errno.h>
>
> #include <qmhsndpm.h>
>
> /*++++ defines +++++*/
> #define _SendUserRuntimeMsg(x) sndpgmmsg("CPF9897", x, "*STATUS ",
> "*EXT
> ", 0)
> #define _SendUserCompMsg(x) sndpgmmsg("CPF9897", x, "*COMP ", "*
> ", 3)
>
> /*++++ prototypes +++++*/
> void sndpgmmsg(char *msg_id, char *msg_data, char *msg_type, char
> *to_msgq,
> int stack_lvl);
>
> /*++++ structures +++++*/
> typedef struct error_code_struct
> {
> int bytes_provided;
> int bytes_avail;
> char expt_id[7];
> char RESERVED;
> char expt_data[100];
> } Error_Code_Struct;
>
> /*++++ globals +++++*/
> char userMsgBuffer[75];
>
> int main(int argc, char **argv)
> {
> int errno_val = 0;
> char *errno_txt;
> char msg_buffer[78];
>
> if (argc != 2)
> {
> _SendUserCompMsg("You did not supply an ERRNO value");
> return -1;
> }
>
> /*-- get supplied errno --*/
> errno_val = atoi( argv[1] );
> errno_txt = strerror( errno_val );
>
> if ( strstr( errno_txt, "QCPFMSG" ) )
> {
> sprintf( msg_buffer, "ERRNO(%d) Does not exist", errno_val);
> _SendUserCompMsg( msg_buffer );
> }
> else
> {
> sprintf( msg_buffer, "ERRNO(%d) = %s", errno_val, errno_txt);
> _SendUserCompMsg( msg_buffer );
> }
>
>
> return 0;
> }
>
> void sndpgmmsg(char *msg_id, char *msg_data, char *msg_type, char
> *to_msgq,
> int stack_lvl)
> {
> Error_Code_Struct err_code;
> char msg_key[4];
> char tmp_msg_id[7];
> char tmp_msg_type[10];
> char tmp_to_msgq[10];
>
> memset(&err_code, 0, sizeof(err_code));
>
> /* copy parms to AS/400 API format... */
> memcpy(tmp_msg_id, msg_id, sizeof(tmp_msg_id));
> memcpy(tmp_msg_type, msg_type, sizeof(tmp_msg_type));
> memcpy(tmp_to_msgq, to_msgq, sizeof(tmp_to_msgq));
>
> /* send message... */
> QMHSNDPM(tmp_msg_id,
> "QCPFMSG QSYS ",
> msg_data,
> strlen(msg_data),
> tmp_msg_type,
> tmp_to_msgq,
> stack_lvl,
> msg_key,
> &err_code);
> }
>
>
> +---
> | This is the C/400 Mailing List!
> | To submit a new message, send your mail to C400-L@midrange.com.
> | To subscribe to this list send email to C400-L-SUB@midrange.com.
> | To unsubscribe from this list send email to
> C400-L-UNSUB@midrange.com.
> | Questions should be directed to the list owner/operator:
> bob@cstoneindy.com
> +---
+---
| This is the C/400 Mailing List!
| To submit a new message, send your mail to C400-L@midrange.com.
| To subscribe to this list send email to C400-L-SUB@midrange.com.
| To unsubscribe from this list send email to C400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: bob@cstoneindy.com
+---
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.