<BLOCKQUOTE><font size="1" face="Arial, Verdana">code:</font><HR><pre>DEFINE HANDLE h-old-field AS HANDLE.
DEFINE HANDLE h-new-field AS HANDLE.
CREATE BUFFER h-old-buffer FOR TABLE table-expression.
CREATE BUFFER h-new-buffer FOR TABLE table-expression.
REPEAT x = 1 TO h-new-buffer:NUM-FIELDS:
ASSIGN
h-old-field = h-old-buffer:BUFFER-FIELD(x)
h-new-field = h-new-buffer:BUFFER-FIELD(x).
IF h-old-field:BUFFER-VALUE <> h-new-field:BUFFER-VALUE THEN
DO:
CREATE audit_table.
ASSIGN ...
END.
END.
However prior to V9, you can not get at the field values dynamically.
Therefore, however you do it, it must be repeat for each field - as with
log.i
/* prog.p */
BUFFER-COMPARE...
{log.i old-buf new-buf field-one}
{log.i old-buf new-buf field-one}
...
/* log.i */
IF CAN-DO (result-field, "{3}") AND {1}.{3} <> {2}.{3} THEN
DO:
CREATE audit-dable.
ASISGN...
END.
[/code]
DEFINE HANDLE h-new-field AS HANDLE.
CREATE BUFFER h-old-buffer FOR TABLE table-expression.
CREATE BUFFER h-new-buffer FOR TABLE table-expression.
REPEAT x = 1 TO h-new-buffer:NUM-FIELDS:
ASSIGN
h-old-field = h-old-buffer:BUFFER-FIELD(x)
h-new-field = h-new-buffer:BUFFER-FIELD(x).
IF h-old-field:BUFFER-VALUE <> h-new-field:BUFFER-VALUE THEN
DO:
CREATE audit_table.
ASSIGN ...
END.
END.
However prior to V9, you can not get at the field values dynamically.
Therefore, however you do it, it must be repeat for each field - as with
log.i
/* prog.p */
BUFFER-COMPARE...
{log.i old-buf new-buf field-one}
{log.i old-buf new-buf field-one}
...
/* log.i */
IF CAN-DO (result-field, "{3}") AND {1}.{3} <> {2}.{3} THEN
DO:
CREATE audit-dable.
ASISGN...
END.
[/code]