kingganesh04
New Member
My input is table name : customer
Output is dump of the customer.
Condition:
Don't create the .p program dynamically.
Output is dump of the customer.
Condition:
Don't create the .p program dynamically.
DEFINE STREAM sDump.
DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO.
DEFINE VARIABLE hfield AS HANDLE NO-UNDO.
DEFINE VARIABLE hQuery AS HANDLE NO-UNDO.
RUN ipdump ("customer","c:\customerdump.txt").
PROCEDURE ipDump:
DEFINE INPUT PARAMETER picTable AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER picDumpFile AS CHARACTER NO-UNDO.
DEFINE VARIABLE iDumpCount AS INTEGER NO-UNDO.
OUTPUT STREAM sDump TO VALUE (picDumpFile).
CREATE BUFFER hbuffer FOR TABLE pictable.
CREATE QUERY hquery.
hquery:SET-BUFFERS(hBuffer).
hquery:QUERY-PREPARE("for each customer no-lock").
hquery:QUERY-OPEN.
hquery:GET-FIRST.
REPEAT:
idumpcount = idumpcount + 1.
IF hquery:QUERY-OFF-END THEN LEAVE.
IF iDumpCount > 100 THEN LEAVE.
RUN ipDumpField.
hquery:GET-NEXT.
END.
OUTPUT STREAM sDump CLOSE.
END PROCEDURE.
PROCEDURE ipDumpField:
DEFINE VARIABLE iField AS INTEGER NO-UNDO.
DEFINE VARIABLE iextent AS INTEGER NO-UNDO.
DEFINE VARIABLE cquote AS CHARACTER NO-UNDO.
_FIELD_LOOP:
DO ifield = 1 TO hBuffer:NUM-FIELDS.
ASSIGN hfield = hbuffer:BUFFER-FIELD (iField).
IF hfield:DATA-TYPE = "character" THEN
cQuote = """".
ELSE
cquote = "".
IF hfield:EXTENT = 0 THEN
PUT STREAM sDump UNFORMATTED cquote hfield:BUFFER-VALUE cquote " ".
ELSE DO iextent = 1 TO hfield:EXTENT:
PUT STREAM sDump UNFORMATTED cquote hfield:BUFFER-VALUE (iextent) cquote " ".
END.
END.
PUT STREAM sDump UNFORMATTED SKIP.
END PROCEDURE.