/* tr-u-stc.p - Write trigger for state-table-code */ TRIGGER PROCEDURE FOR WRITE OF state-table-code OLD BUFFER old-code. DEFINE BUFFER localTable FOR state-table-name. DEFINE BUFFER localTableCode FOR state-table-code. /* Include commons */ {common.i} /* Assign update info */ ASSIGN state-table-code.upd-date = TODAY state-table-code.upd-time = STRING(TIME, "HH:MM:SS") state-table-code.upd-user-name = menu-user. IF NEW state-table-code THEN DO: FIND FIRST localTable WHERE localTable.state-version-id <> state-table-code.state-version-id AND localTable.state-table-name-id = state-table-code.state-table-name-id AND CAN-FIND(localTableCode OF localTable WHERE localTableCode.table-code = state-table-code.table-code) NO-LOCK NO-ERROR. IF AVAILABLE localTable THEN DO: FIND FIRST localTableCode OF localTable WHERE localTableCode.table-code = state-table-code.table-code NO-LOCK NO-ERROR. IF AVAILABLE localTableCode THEN state-table-code.state-table-code-id = localTableCode.state-table-code-id. END. END. ELSE DO: IF old-code.table-code <> state-table-code.table-code THEN DO: FIND FIRST localTable WHERE localTable.state-version-id <> state-table-code.state-version-id AND localTable.state-table-name-id = state-table-code.state-table-name-id AND CAN-FIND (localTableCode OF localTable WHERE localTableCode.table-code = state-table-code.table-code) NO-LOCK NO-ERROR. IF AVAILABLE localTable THEN DO: FIND FIRST localTableCode OF localTable WHERE localTableCode.table-code = state-table-code.table-code NO-LOCK NO-ERROR. IF AVAILABLE localTableCode THEN state-table-code.state-table-code-id = localTableCode.state-table-code-id. ELSE state-table-code.state-table-code-id = NEXT-VALUE(record-id). END. ELSE state-table-code.state-table-code-id = NEXT-VALUE(record-id). END. END. /* Go back */