|
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
+---
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.