function mods_add_new()

$insert logical
$insert rlist_equates
$insert msg_equates
declare function utility, msg, set_property, get.reccount, mods_load_control
declare subroutine record_lock, clear_table


open 'MODS' to ModsTable else
   Void = msg( '', 'Unable to open MODS...' )
   return 0
end
*
open 'BACKREPOS' to BReposTable else
   msg( '', 'Unable to open BACKREPOS' )
   return 0
end
open 'SYSREPOS' to SysReposTable else
   msg( '', 'Unable to open SYSREPOS' )
   return 0
end

*
Stmt = 'SELECT SYSREPOS'
Stat = utility( 'CURSOR', 'H' )

rlist( Stmt, target_activelist$, '', '', '' )

* IF WE HAVE A ROW THAT IS IN SYSREPOS BUT NOT IN BACKREPOS THEN
* CREATE A WR FOR THAT SYSREPOS  ( MEANING WE HAVE A DELETION )
if @reccount then
	Eof    = false$
	loop
	  readnext Id else Eof = true$
	 until eof
	      if len( xlate( 'BACKREPOS', Id, '', 'X' ) ) then
	         * it exists in backrepos do not modify
	      end else
	         ModId = field( Id, '*', 1 ):'`'
	         ModId:= 'SYSREPOS':'`'
	         ModId:= Id:'`'
	         ModId:= date():'`'
	         ModId:= time():'`'
	         ModId:= 'WR'
	         SysReposRec = xlate( 'SYSREPOS', Id, '', 'X' )
            record_lock( ModsTable, 'MODS', ModId )
            write SysReposRec on ModsTable, ModId else
               Void = msg( '', 'Unable to write ':ModId:' on MODS...' )
               return 0
            end
            unlock ModsTable, ModId else  
               Void = msg( '', 'Unable to unlock ':ModId:' in MODS...' )
               return 0
            end
            * NOW WRITE TO BACKREPOS SO IT IS IS RUN AGAIN WE DON'T CREATE DUPLICATES
            record_lock( BReposTable, 'BACKREPOS', Id )
            write SysReposRec on BReposTable, Id else
               Void = msg( '', 'Unable to write ':Id:' on BACKREPOS...' )
               return 0
            end
            unlock BReposTable, Id else  
               Void = msg( '', 'Unable to unlock ':Id:' in BACKREPOS...' )
               return 0
            end
	      end
	repeat
end
*
Stmt = 'SELECT BACKREPOS'
Stat = utility( 'CURSOR', 'H' )

rlist( Stmt, target_activelist$, '', '', '' )

* IF WE HAVE A ROW THAT IS IN BACKREPOS BUT NOT IN SYSREPOS THEN
* CREATE A DR FOR THAT SYSREPOS ( MEANING WE HAVE A DELETION )
if @reccount then
	Eof    = false$
	loop
	  readnext Id else Eof = true$
	 until eof
	      if len( xlate( 'SYSREPOS', Id, '', 'X' ) ) then
	         * it exists in SYSREPOS do not modify
	      end else
	         ModId = field( Id, '*', 1 ):'`'
	         ModId:= 'SYSREPOS':'`'
	         ModId:= Id:'`'
	         ModId:= date():'`'
	         ModId:= time():'`'
	         ModId:= 'DR'
            record_lock( ModsTable, 'MODS', ModId )
            write '' on ModsTable, ModId else ;* WRITE NULL ON DR THE RECORD IS ALWAYS NULL
               Void = msg( '', 'Unable to write ':ModId:' on MODS...' )
               return 0
            end
            unlock ModsTable, ModId else  
               Void = msg( '', 'Unable to unlock ':ModId:' in MODS...' )
               return 0
            end
            * NOW DELETE FROM BACKREPOS SO IF IT IS RUN AGAIN WE DON'T CREATE DUPLICATES
            record_lock( BReposTable, 'BACKREPOS', Id )
            delete BReposTable, Id else
               Void = msg( '', 'Unable to delete ':Id:' on BACKREPOS...' )
               return 0
            end
            unlock BReposTable, Id else  
               Void = msg( '', 'Unable to unlock ':Id:' in BACKREPOS...' )
               return 0
            end
	      end
	repeat
end
Void = mods_load_control()
Stat = utility( 'CURSOR', 'A' )
return 0


