/* disconn-long-trans.p
Program to disconnect long transactions (more than 2 hr). Intended to be used in cron, i.e. unattended.
7200 seconds = 2 hours
06/26/2007 Dmitri Levin
*/
define variable lv-cmd
as character no-undo.
define variable lv-trhold as integer init 7200 no-undo.
form
_Trans._Trans-usrnum
format ">>>9" label "#"
_Connect-Name
_Trans._Trans-Duration label
"Minutes"
_Trans._Trans-txtime
_Connect-Device
_connect-pid
with
frame _trans.
for each _Trans where _Trans._trans-num <> ?
and
_Trans._Trans-State = "ACTIVE"
and
_Trans._Trans-Duration > lv-trhold
no-lock
by _Trans._Trans-Duration desc:
find
_connect where _connect._Connect-usr = _Trans._Trans-usrnum
no-lock
no-error.
display
_Trans._Trans-usrnum
_Connect-Name when
avail _connect
_Trans._Trans-Duration / 60 @ _Trans._Trans-Duration
_Trans._Trans-txtime
substring(
_Connect-Device,6) when avail _connect @ _Connect-Device
_Connect-pid
with
down frame _trans.
down
with frame _trans.
lv-cmd = "$DLC/bin/proshut your-database-name -C disconnect " +
string(_Trans._Trans-usrnum).
os-command silent value( lv-cmd
).
end.