added LSL2 stored procedures
This commit is contained in:
105
LSL2/STPROC/MODS_UPDATE.txt
Normal file
105
LSL2/STPROC/MODS_UPDATE.txt
Normal file
@ -0,0 +1,105 @@
|
||||
function mods_update()
|
||||
|
||||
$insert logical
|
||||
$insert rlist_equates
|
||||
$insert msg_equates
|
||||
declare function utility, msg, mods_load_control
|
||||
declare subroutine record_lock, recompile_proc
|
||||
|
||||
Stmt = 'SELECT MODS BY PRIORITY BY MOD_DATE BY MOD_TIME' ;* WE HAVE REMOVED ALL DUPLICATES
|
||||
;* SO NOW ALL WE HAVE TO DO IS APPLY IN THE
|
||||
;* ORDER THAT THEY WERE PERFORMED
|
||||
|
||||
Stat = utility( 'CURSOR', 'H' )
|
||||
|
||||
rlist( Stmt, target_activelist$, '', '', '' )
|
||||
|
||||
Stat = utility( 'CURSOR', 'A' )
|
||||
|
||||
UpdatedRows = 0
|
||||
if @reccount then
|
||||
Stat = utility( 'CURSOR', 'H' )
|
||||
open 'MODS' to ModsTable else
|
||||
Void = msg( '', 'Unable to open MODS...' )
|
||||
return 0
|
||||
end
|
||||
Eof = false$
|
||||
loop
|
||||
readnext Id else Eof = true$
|
||||
until eof
|
||||
if index( Id, 'VARDECL_', 1 ) else
|
||||
ProcessErr = false$
|
||||
record_lock( ModsTable, 'MODS', Id )
|
||||
RowToUse = xlate( 'MODS', Id, '', 'X' )
|
||||
App = field( Id, '`', 1 )
|
||||
Table = field( Id, '`', 2 )
|
||||
Row = field( Id, '`', 3 )
|
||||
Date = field( Id, '`', 4 )
|
||||
Time = field( Id, '`', 5 )
|
||||
UpdateType = field( Id, '`', 6 )
|
||||
begin case
|
||||
case UpdateType = 'WR'
|
||||
open Table to TableVar else
|
||||
Void = msg( '', 'Unable to open ':Table )
|
||||
return 0
|
||||
end
|
||||
record_lock( TableVar, Table, Row )
|
||||
write RowToUse on TableVar, Row else
|
||||
Void = msg( '', 'Unable to write ':Row:' on ':Table )
|
||||
*return 0
|
||||
ProcessErr = true$
|
||||
end
|
||||
unlock TableVar, Row else
|
||||
Void = msg( '', 'Unable to unlock ':Row:' in ':Table )
|
||||
*return 0
|
||||
ProcessErr = true$
|
||||
end
|
||||
if Table = 'SYSPROCS' and ( not( index( Row, '_EQU', 1 ) ) ) then
|
||||
recompile_proc(Row)
|
||||
Err = ''
|
||||
if get_status(Err) Then
|
||||
Void = msg( '', 'Error while compiling ':quote(Row) )
|
||||
end
|
||||
end
|
||||
case UpdateType = 'DR'
|
||||
record_lock( TableVar, Table, Row )
|
||||
delete TableVar, Row else
|
||||
Void = msg( '', 'Unable to delete ':Row:' on ':Table )
|
||||
*return 0
|
||||
ProcessErr = true$
|
||||
end
|
||||
unlock TableVar, Row else
|
||||
Void = msg( '', 'Unable to unlock ':Row:' in ':Table )
|
||||
*return 0
|
||||
ProcessErr = true$
|
||||
end
|
||||
end case
|
||||
if ProcessErr else
|
||||
delete ModsTable, Id else
|
||||
Void = msg( '', 'Unable to delete ':Id:' in MODS' )
|
||||
return 0
|
||||
end
|
||||
unlock ModsTable, Id else
|
||||
Void = msg( '', 'Unable to unlock ':Id:' in MODS' )
|
||||
return 0
|
||||
end
|
||||
UpdatedRows += 1
|
||||
end
|
||||
end
|
||||
repeat
|
||||
Stat = utility( 'CURSOR', 'A' )
|
||||
MsgInfo = ''
|
||||
MsgInfo<mtext$> = UpdatedRows:' rows were updated...'
|
||||
MsgInfo<micon$> = '!'
|
||||
Void = msg( '', MsgInfo )
|
||||
Void = mods_load_control()
|
||||
end else
|
||||
MsgInfo = ''
|
||||
MsgInfo<mtext$> = 'There are no rows in the MODS table.'
|
||||
MsgInfo<micon$> = '!'
|
||||
Void = msg( '', MsgInfo )
|
||||
return 0
|
||||
end
|
||||
return 0
|
||||
|
||||
|
Reference in New Issue
Block a user