Jump to content

DosInsertMessage: Difference between revisions

From EDM2
Created page with "==Description== Inserts variable text-string information into a message. ==Syntax== <PRE> #define INCL_DOSMISC #include <os2.h> PCHAR *pTable; A pointer table.: U..."
 
Ak120 (talk | contribs)
mNo edit summary
Line 7: Line 7:
#include <os2.h>
#include <os2.h>


PCHAR     *pTable;  /* A pointer table. */
PCHAR   *pTable;  /* A pointer table. */
ULONG     cTable;  /* The number of variable insertion text strings. */
ULONG     cTable;  /* The number of variable insertion text strings. */
PSZ       pszMsg;  /* The address of the input message. */
PSZ       pszMsg;  /* The address of the input message. */
ULONG     cbMsg;  /* The length, in bytes, of the input message. */
ULONG     cbMsg;  /* The length, in bytes, of the input message. */
PCHAR     pBuf;    /* The address of the caller's buffer area where the system returns the requested message. */
PCHAR     pBuf;    /* The address of the caller's buffer area where the system returns
ULONG     cbBuf;  /* The length, in bytes, of the caller's buffer area. */
                      the requested message. */
PULONG     pcbMsg;  /* The length, in bytes, of the updated message returned. */
ULONG     cbBuf;  /* The length, in bytes, of the caller's buffer area. */
APIRET     ulrc;    /* Return Code. */
PULONG   pcbMsg;  /* The length, in bytes, of the updated message returned. */
APIRET   ulrc;    /* Return Code. */


ulrc = DosInsertMessage(pTable, cTable, pszMsg,
ulrc = DosInsertMessage(pTable, cTable, pszMsg,
         cbMsg, pBuf, cbBuf, pcbMsg);
         cbMsg, pBuf, cbBuf, pcbMsg);
</PRE>


</PRE>
==Parameters==
==Parameters==
; pTable (PCHAR *) - input : A pointer table.
;pTable (PCHAR *) - input : A pointer table.
 
:Each pointer filets to an ASCIIZ string or a double-byte character-set (DBCS) string ending in nulls. A maximum of nine strings can be present.
Each pointer filets to an ASCIIZ string or a double-byte character-set (DBCS) string ending in nulls. A maximum of nine strings can be present.  
;cTable (ULONG) - input : The number of variable insertion text strings.
 
:Possible values range from 0 to 9. If cTable is 0, pTable is ignored.
; cTable (ULONG) - input : The number of variable insertion text strings.
;pszMsg (PSZ) - input : The address of the input message.
 
;cbMsg (ULONG) - input : The length, in bytes, of the input message.
Possible values range from 0 to 9. If cTable is 0, pTable is ignored.  
;pBuf (PCHAR) - output : The address of the caller's buffer area where the system returns the requested message.
 
:If the message is too long to fit in the caller's buffer, then as much of the message text as possible is returned, with the appropriate error return code.
; pszMsg (PSZ) - input : The address of the input message.  
;cbBuf (ULONG) - input : The length, in bytes, of the caller's buffer area.
 
;pcbMsg (PULONG) - output : The length, in bytes, of the updated message returned.
; cbMsg (ULONG) - input : The length, in bytes, of the input message.  
 
; pBuf (PCHAR) - output : The address of the caller's buffer area where the system returns the requested message.
 
If the message is too long to fit in the caller's buffer, then as much of the message text as possible is returned, with the appropriate error return code.  
 
; cbBuf (ULONG) - input : The length, in bytes, of the caller's buffer area.  


; pcbMsg (PULONG) - output : The length, in bytes, of the updated message returned.
==Return Code==
==Return Code==
  ulrc (APIRET) - returns
  ulrc (APIRET) - returns
DosInsertMessage returns one of the following values:
DosInsertMessage returns one of the following values:
 
* 0 NO_ERROR
* 0         NO_ERROR  
* 87 ERROR_INVALID_PARAMETER  
* 87         ERROR_INVALID_PARAMETER  
* 316 ERROR_MR_MSG_TOO_LONG  
* 316       ERROR_MR_MSG_TOO_LONG  
* 320 ERROR_MR_INV_IVCOUNT
* 320       ERROR_MR_INV_IVCOUNT


==Remarks==
==Remarks==
Line 63: Line 54:
==Example Code==
==Example Code==
This example demonstrate the insertion of the variable text into a message.
This example demonstrate the insertion of the variable text into a message.
<PRE>
<PRE>
#define INCL_DOSMISC    /* Miscellaneous values */
#define INCL_DOSMISC    /* Miscellaneous values */
Line 101: Line 91:
return NO_ERROR;
return NO_ERROR;
}
}
</PRE>


</PRE>
==Related Functions==
==Related Functions==
* [[OS2 API:CPI:DosGetMessage|DosGetMessage]]
* [[DosGetMessage]]
* [[OS2 API:CPI:DosPutMessage|DosPutMessage]]
* [[DosPutMessage]]
* [[OS2 API:CPI:DosQueryMessageCP|DosQueryMessageCP]]
* [[DosQueryMessageCP]]
 


[[Category:The OS/2 API Project]]
[[Category:Dos]]

Revision as of 15:24, 6 December 2016

Description

Inserts variable text-string information into a message.

Syntax

#define INCL_DOSMISC
#include <os2.h>

PCHAR    *pTable;  /* A pointer table. */
ULONG     cTable;  /* The number of variable insertion text strings. */
PSZ       pszMsg;  /* The address of the input message. */
ULONG     cbMsg;   /* The length, in bytes, of the input message. */
PCHAR     pBuf;    /* The address of the caller's buffer area where the system returns
                      the requested message. */
ULONG     cbBuf;   /* The length, in bytes, of the caller's buffer area. */
PULONG    pcbMsg;  /* The length, in bytes, of the updated message returned. */
APIRET    ulrc;    /* Return Code. */

ulrc = DosInsertMessage(pTable, cTable, pszMsg,
         cbMsg, pBuf, cbBuf, pcbMsg);

Parameters

pTable (PCHAR *) - input
A pointer table.
Each pointer filets to an ASCIIZ string or a double-byte character-set (DBCS) string ending in nulls. A maximum of nine strings can be present.
cTable (ULONG) - input
The number of variable insertion text strings.
Possible values range from 0 to 9. If cTable is 0, pTable is ignored.
pszMsg (PSZ) - input
The address of the input message.
cbMsg (ULONG) - input
The length, in bytes, of the input message.
pBuf (PCHAR) - output
The address of the caller's buffer area where the system returns the requested message.
If the message is too long to fit in the caller's buffer, then as much of the message text as possible is returned, with the appropriate error return code.
cbBuf (ULONG) - input
The length, in bytes, of the caller's buffer area.
pcbMsg (PULONG) - output
The length, in bytes, of the updated message returned.

Return Code

ulrc (APIRET) - returns

DosInsertMessage returns one of the following values:

  • 0 NO_ERROR
  • 87 ERROR_INVALID_PARAMETER
  • 316 ERROR_MR_MSG_TOO_LONG
  • 320 ERROR_MR_INV_IVCOUNT

Remarks

DosInsertMessage inserts variable text-string information into a message.

DosInsertMessage differs from DosGetMessage in that it does not retrieve a message. It is particularly useful when messages are loaded early, before actual insertion text strings are known.

If cTable is greater than 9, DosInsertMessage returns an error indicating that cTable is out of range. A default message also is placed into the caller's buffer. Refer to DosGetMessage for details about default messages.

If the numeric value of x in the %x sequence for %1-%9 is less than or equal to cTable, then text insertion, by substitution for %x, is performed for all occurrences of %x in the message. Otherwise, text insertion is ignored, and the %x sequence is returned in the message unchanged. Text insertion is performed for all text-strings defined by cTable and pTable.

Variable data insertion does not depend on blank character delimiters, nor are blanks automatically inserted.

Example Code

This example demonstrate the insertion of the variable text into a message.

#define INCL_DOSMISC    /* Miscellaneous values */
#define INCL_DOSERRORS  /* DOS Error values */
#include <os2.h>
#include <stdio.h>
#include <string.h>

int main(VOID) {
UCHAR   *IvTable[3] = {0};                   /* Table of variables to insert */
UCHAR   MsgInput[30] = "Processing for %1: %2 has %3. ";
UCHAR   DataArea[80]= "";                    /* Output message area */
ULONG   MsgLength   = 0;                     /* Length of returned message */
APIRET  rc          = 0;                     /* Return code */
int     LoopCtr     = 0;                     /* for loop counter */

IvTable[0] = "function";
IvTable[1] = "DosInsertMessage";
IvTable[2] = "started";

               /* Insert strings in proper variable fields */

rc = DosInsertMessage(IvTable,             /* Message insert pointer array */
                      3,                   /* Number of inserts */
                      MsgInput,            /* Input message */
                      strlen(MsgInput),    /* Length of input message */
                      DataArea,            /* Output area for message */
                      sizeof(DataArea),    /* Size of output area */
                      &MsgLength);        /* Length of output message created */
if (rc != NO_ERROR) {
   printf("DosInsertMessage error: return code = %u\n", rc);
   return 1;
}

printf("%s\n", DataArea);   /* Print the resulting message */

return NO_ERROR;
}

Related Functions