compile function update_index_rep( TableName, ColumnName) $insert logical declare subroutine index.flush declare function msg Continue = true$ if TableName <> '' then * see if there are any transactions waiting.... TransWaiting = xlate('!':TableName, '0', '', 'X') if (len(TransWaiting)) and ((len(TransWaiting) > 2) or (TransWaiting<1> <> 0)) else Continue = false$ end end else TableName = '' ColumnName = '' end if Continue then flush garbagecollect * place lock on imaginary file to coordinate that only one station * at a time does the INDEX.FLUSH open 'SYSLISTS' to SysListsTable else Void = msg( '', 'Unable to open SYSLISTS...' ) return 0 end LockID = 'INDEX.FLUSH*':TableName MsgUp = false$ loop Locked = true$ lock SysListsTable, LockID else Locked = false$ until Locked if status() then * locked by this station - shouldn't happen, but if it is, proceed Locked = true$ end repeat * have the lock, now do the update index.flush( TableName, ColumnName) flush garbagecollect * now, release the lock unlock SysListsTable, LockID else Void = msg( '', 'Unable to unlock syslists ':LockId ) return 0 end end return