Kbase P3288: How to call the CoCreateGuid API from Progress?
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  10/15/2008 |
|
Status: Verified
GOAL:
How to call the CoCreateGuid API from Progress?
FACT(s) (Environment):
Windows NT 4.0
FIX:
DEFINE VARIABLE cGuid AS CHARACTER NO-UNDO.
DEFINE VARIABLE createGUID AS CHARACTER NO-UNDO INITIAL ''.
DEFINE VARIABLE iResult AS INTEGER NO-UNDO.
DEFINE VARIABLE iLoop AS INTEGER NO-UNDO.
ASSIGN cGuid = FILL(' ', 16).
FUNCTION IntToHex RETURNS CHARACTER (i AS INTEGER) FORWARD.
RUN CoCreateGuid (OUTPUT cGUID, OUTPUT iResult).
IF iResult = 0 THEN
DO iLoop = 1 TO 16:
ASSIGN createGUID = createGuid + IntToHex(ASC(SUBSTRING(cGuid,iLoop,1))).
END.
MESSAGE createGUID VIEW-AS ALERT-BOX.
PROCEDURE CoCreateGuid EXTERNAL "ole32.dll":
DEFINE OUTPUT PARAMETER pGUID AS CHARACTER NO-UNDO.
DEFINE RETURN PARAMETER res AS LONG NO-UNDO.
END PROCEDURE.
FUNCTION IntToHex RETURNS CHARACTER (INPUT i AS INTEGER):
DEFINE VARIABLE cHex AS CHARACTER NO-UNDO INITIAL '0123456789ABCDEF'.
DEFINE VARIABLE j1 AS INTEGER NO-UNDO.
DEFINE VARIABLE j2 AS INTEGER NO-UNDO.
ASSIGN j1 = TRUNCATE(i / 16, 0)
j2 = i - (j1 * 16).
RETURN SUBSTRING(cHex, j1 + 1, 1) + SUBSTRING(cHex, j2 + 1, 1).
END FUNCTION.