Kbase P21679: How to pass a pointer and/or handle in a temp table.
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  26/05/2005 |
|
Status: Unverified
GOAL:
How to pass a static temp-table handle to an external procedure?
FACT(s) (Environment):
Progress 9.x
FIX:
The following sample code demonstrates how to pass a static temp-table handle to an external procedure:
/**************************************************
main.p:
1. Creates and populates a temp-table.
2. Calls extproc.p passing it the temp-table
handle for processing
**************************************************/
DEFINE VARIABLE hTempTable AS HANDLE NO-UNDO.
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DEFINE TEMP-TABLE tt1
FIELD tt1f1 AS INTEGER
FIELD tt1f2 AS CHARACTER.
/* Store the temp-table handle */
ASSIGN
hTempTable = TEMP-TABLE tt1:HANDLE.
/*populate the temp-table*/
DO i = 1 TO 3:
CREATE tt1.
ASSIGN
tt1f1 = RANDOM(65,90)
tt1f2 = CHR(tt1f1).
END.
/* Run the external procedure */
RUN extproc.p (INPUT TABLE-HANDLE hTempTable).
/**************************************************/
/**************************************************
extproc.p:
1. Receives a staticTEMP-TABLE TABLE-HANDLE.
2. Lists all the fields of the temp-table.
**************************************************/
DEFINE INPUT PARAMETER TABLE-HANDLE hTempTable.
DEFINE VARIABLE bh AS HANDLE NO-UNDO.
DEFINE VARIABLE bf AS HANDLE NO-UNDO.
DEFINE VARIABLE hq AS HANDLE NO-UNDO.
DEFINE VARIABLE iCounter AS INTEGER NO-UNDO.
IF hTempTable = ? THEN RETURN.
bh = hTempTable:DEFAULT-BUFFER-HANDLE.
CREATE QUERY hq.
hq:SET-BUFFERS(bh).
hq:QUERY-PREPARE("FOR EACH " + hTempTable:NAME).
hq:QUERY-OPEN.
REPEAT:
hq:GET-NEXT.
IF hq:QUERY-OFF-END THEN LEAVE.
DO iCounter = 1 TO bh:NUM-FIELDS:
ASSIGN bf = bh:BUFFER-FIELD(iCounter).
MESSAGE bf:STRING-VALUE
VIEW-AS ALERT-BOX INFO BUTTONS OK.
END.
END.
/**************************************************/