Solution from Cristiano and Elisabetta

From LHEP Wiki
Jump to navigation Jump to search


Dear Igor,

please run the attached script after logging on as OPERAPUB to install the
new version of publication functions. Do not use them until Elisabetta
notifies you that she completed data deletion.
In the next days I will not have much connectivity, so help cannot be very
quick.
It would be wise to save the current version of PP_PUBLISH_OP by renaming it
to something like OLD_PP_PUBLISH_OP. This must be done before running the
script.
Best regards

Cristiano


---------------------------SCRIPT-----------------------


create or replace function pf_execute_nonquery(i_stmt varchar2) return
number as
 c number;
 ret number;
begin
 ret := 0;
 begin
  c := dbms_sql.OPEN_CURSOR();
  dbms_sql.PARSE(c, i_stmt, dbms_sql.native);
  ret := dbms_sql.EXECUTE(c);
  dbms_sql.CLOSE_CURSOR(c);
 exception when others then
  if dbms_sql.IS_OPEN(c) then
   dbms_sql.CLOSE_CURSOR(c);
   raise;
  end if;
 end;
 return ret;
end;
/

create or replace function pf_execute_number(i_stmt varchar2) return number
as
 c number;
 ret number;
 x_ret number;
begin
 begin
  c := dbms_sql.OPEN_CURSOR();
  dbms_sql.PARSE(c, i_stmt, dbms_sql.native);
  dbms_sql.DEFINE_COLUMN(c, 1, x_ret);
  ret := dbms_sql.EXECUTE_AND_FETCH(c, true);
  dbms_sql.COLUMN_VALUE(c, 1, x_ret);
  dbms_sql.CLOSE_CURSOR(c);
 exception when others then
  if dbms_sql.IS_OPEN(c) then
   dbms_sql.CLOSE_CURSOR(c);
   raise;
  end if;
 end;
 return x_ret;
end;
/

create or replace function pf_execute_tabnumber(i_stmt varchar2) return
dbms_sql.number_table as
 c number;
 ret number;
 x_ret dbms_sql.number_table;
begin
 begin
  c := dbms_sql.OPEN_CURSOR();
  dbms_sql.PARSE(c, i_stmt, dbms_sql.native);
  dbms_sql.DEFINE_ARRAY(c, 1, x_ret, 1000, 1);
  loop
   ret := dbms_sql.EXECUTE_AND_FETCH(c, true);
   dbms_sql.COLUMN_VALUE(c, 1, x_ret);
   exit when ret <> 1000;
  end loop;
  dbms_sql.CLOSE_CURSOR(c);
 exception when others then
  if dbms_sql.IS_OPEN(c) then
   dbms_sql.CLOSE_CURSOR(c);
   raise;
  end if;
 end;
 return x_ret;
end;
/

create or replace procedure pp_publish_op(x_id number, dbx varchar2, jid
number, ischild boolean default false, pcnt_floor number default 0,
pcnt_ceil number default 1) as
 type tabinteger is table of integer;
 type tabnum is table of number;
 type typcur is ref cursor;
 r_42 integer;
 i_list_42 varchar(4000);
 e_loop_42 integer;
 e_start_42 integer;
 r_41 integer;
 i_list_41 varchar(4000);
 e_loop_41 integer;
 e_start_41 integer;
 r_40 integer;
 i_list_40 varchar(4000);
 e_loop_40 integer;
 e_start_40 integer;
 r_39 integer;
 i_list_39 varchar(4000);
 e_loop_39 integer;
 e_start_39 integer;
 r_38 integer;
 i_list_38 varchar(4000);
 e_loop_38 integer;
 e_start_38 integer;
 r_37 integer;
 i_list_37 varchar(4000);
 e_loop_37 integer;
 e_start_37 integer;
 r_36 integer;
 i_list_36 varchar(4000);
 e_loop_36 integer;
 e_start_36 integer;
 rowdelta_35 integer;
 r_35 integer;
 i_list_35 varchar(4000);
 e_loop_35 integer;
 e_start_35 integer;
 rowdelta_34 integer;
 r_34 integer;
 i_list_34 varchar(4000);
 e_loop_34 integer;
 e_start_34 integer;
 pcntinc_33 number;
 t_33_id tabinteger;
 t_33_volume tabinteger;
 t_33_id_processoperation tabinteger;
 t_33_id_eventbrick tabinteger;
 r_33 integer;
 i_list_33 varchar(4000);
 e_loop_33 integer;
 e_start_33 integer;
 rowdelta_32 integer;
 r_32 integer;
 i_list_32 varchar(4000);
 e_loop_32 integer;
 e_start_32 integer;
 rowdelta_31 integer;
 r_31 integer;
 i_list_31 varchar(4000);
 e_loop_31 integer;
 e_start_31 integer;
 rowdelta_30 integer;
 r_30 integer;
 i_list_30 varchar(4000);
 e_loop_30 integer;
 e_start_30 integer;
 rowdelta_29 integer;
 r_29 integer;
 i_list_29 varchar(4000);
 e_loop_29 integer;
 e_start_29 integer;
 rowdelta_28 integer;
 r_28 integer;
 i_list_28 varchar(4000);
 e_loop_28 integer;
 e_start_28 integer;
 pcntinc_27 number;
 t_27_path tabinteger;
 t_27_id tabinteger;
 t_27_id_processoperation tabinteger;
 t_27_id_eventbrick tabinteger;
 r_27 integer;
 i_list_27 varchar(4000);
 e_loop_27 integer;
 e_start_27 integer;
 rowdelta_26 integer;
 r_26 integer;
 i_list_26 varchar(4000);
 e_loop_26 integer;
 e_start_26 integer;
 rowdelta_25 integer;
 r_25 integer;
 i_list_25 varchar(4000);
 e_loop_25 integer;
 e_start_25 integer;
 rowdelta_24 integer;
 r_24 integer;
 i_list_24 varchar(4000);
 e_loop_24 integer;
 e_start_24 integer;
 pcntinc_23 number;
 t_23_id tabinteger;
 t_23_candidate tabinteger;
 t_23_id_event tabinteger;
 t_23_id_processoperation tabinteger;
 t_23_id_eventbrick tabinteger;
 r_23 integer;
 i_list_23 varchar(4000);
 e_loop_23 integer;
 e_start_23 integer;
 rowdelta_22 integer;
 r_22 integer;
 i_list_22 varchar(4000);
 e_loop_22 integer;
 e_start_22 integer;
 rowdelta_21 integer;
 r_21 integer;
 i_list_21 varchar(4000);
 e_loop_21 integer;
 e_start_21 integer;
 rowdelta_20 integer;
 r_20 integer;
 i_list_20 varchar(4000);
 e_loop_20 integer;
 e_start_20 integer;
 rowdelta_19 integer;
 r_19 integer;
 i_list_19 varchar(4000);
 e_loop_19 integer;
 e_start_19 integer;
 rowdelta_18 integer;
 r_18 integer;
 i_list_18 varchar(4000);
 e_loop_18 integer;
 e_start_18 integer;
 pcntinc_17 number;
 t_17_event tabinteger;
 t_17_id tabinteger;
 t_17_id_processoperation tabinteger;
 r_17 integer;
 i_list_17 varchar(4000);
 e_loop_17 integer;
 e_start_17 integer;
 r_16 integer;
 i_list_16 varchar(4000);
 e_loop_16 integer;
 e_start_16 integer;
 r_15 integer;
 i_list_15 varchar(4000);
 e_loop_15 integer;
 e_start_15 integer;
 rowdelta_14 integer;
 r_14 integer;
 i_list_14 varchar(4000);
 e_loop_14 integer;
 e_start_14 integer;
 bcur_14 typcur;
 b_14_ID_VOLUMETRACK tabnum;
 b_14_ID_MIPMICROTRACK tabnum;
 b_14_SIDE tabnum;
 b_14_ID_ZONE tabnum;
 b_14_ID_PLATE tabnum;
 b_14_ID_OPTION tabnum;
 b_14_ID_RECONSTRUCTION tabnum;
 b_14_ID_EVENTBRICK tabnum;
 rowdelta_13 integer;
 r_13 integer;
 i_list_13 varchar(4000);
 e_loop_13 integer;
 e_start_13 integer;
 rowdelta_12 integer;
 r_12 integer;
 i_list_12 varchar(4000);
 e_loop_12 integer;
 e_start_12 integer;
 rowdelta_11 integer;
 r_11 integer;
 i_list_11 varchar(4000);
 e_loop_11 integer;
 e_start_11 integer;
 rowdelta_10 integer;
 r_10 integer;
 i_list_10 varchar(4000);
 e_loop_10 integer;
 e_start_10 integer;
 pcntinc_9 number;
 t_9_id tabinteger;
 t_9_id_reconstruction tabinteger;
 t_9_id_eventbrick tabinteger;
 rowdelta_9 integer;
 r_9 integer;
 i_list_9 varchar(4000);
 e_loop_9 integer;
 e_start_9 integer;
 rowdelta_8 integer;
 r_8 integer;
 i_list_8 varchar(4000);
 e_loop_8 integer;
 e_start_8 integer;
 bcur_8 typcur;
 b_8_PH tabnum;
 b_8_AREASUM tabnum;
 b_8_GRAINS tabnum;
 b_8_SIGMA tabnum;
 b_8_SLOPEY tabnum;
 b_8_SLOPEX tabnum;
 b_8_POSY tabnum;
 b_8_POSX tabnum;
 b_8_ID tabnum;
 b_8_SIDE tabnum;
 b_8_ID_ZONE tabnum;
 b_8_ID_PLATE tabnum;
 b_8_ID_RECONSTRUCTION tabnum;
 b_8_ID_EVENTBRICK tabnum;
 rowdelta_7 integer;
 r_7 integer;
 i_list_7 varchar(4000);
 e_loop_7 integer;
 e_start_7 integer;
 rowdelta_6 integer;
 r_6 integer;
 i_list_6 varchar(4000);
 e_loop_6 integer;
 e_start_6 integer;
 pcntinc_5 number;
 t_5_id tabinteger;
 t_5_id_eventbrick tabinteger;
 r_5 integer;
 i_list_5 varchar(4000);
 e_loop_5 integer;
 e_start_5 integer;
 rowdelta_4 integer;
 r_4 integer;
 i_list_4 varchar(4000);
 e_loop_4 integer;
 e_start_4 integer;
 bcur_4 typcur;
 b_4_ID_UPTRACK tabnum;
 b_4_ID_UPSIDE tabnum;
 b_4_ID_DOWNTRACK tabnum;
 b_4_ID_DOWNSIDE tabnum;
 b_4_SIGMA tabnum;
 b_4_PH tabnum;
 b_4_AREASUM tabnum;
 b_4_GRAINS tabnum;
 b_4_SLOPEY tabnum;
 b_4_SLOPEX tabnum;
 b_4_POSY tabnum;
 b_4_POSX tabnum;
 b_4_ID tabnum;
 b_4_ID_ZONE tabnum;
 b_4_ID_EVENTBRICK tabnum;
 rowdelta_3 integer;
 r_3 integer;
 i_list_3 varchar(4000);
 e_loop_3 integer;
 e_start_3 integer;
 rowdelta_2 integer;
 r_2 integer;
 i_list_2 varchar(4000);
 e_loop_2 integer;
 e_start_2 integer;
 bcur_2 typcur;
 b_2_ID_VIEW tabnum;
 b_2_SIGMA tabnum;
 b_2_PH tabnum;
 b_2_AREASUM tabnum;
 b_2_GRAINS tabnum;
 b_2_SLOPEY tabnum;
 b_2_SLOPEX tabnum;
 b_2_POSY tabnum;
 b_2_POSX tabnum;
 b_2_ID tabnum;
 b_2_SIDE tabnum;
 b_2_ID_ZONE tabnum;
 b_2_ID_EVENTBRICK tabnum;
 rowdelta_1 integer;
 r_1 integer;
 i_list_1 varchar(4000);
 e_loop_1 integer;
 e_start_1 integer;
 bcur_1 typcur;
 b_1_POSY tabnum;
 b_1_POSX tabnum;
 b_1_UPZ tabnum;
 b_1_DOWNZ tabnum;
 b_1_ID tabnum;
 b_1_SIDE tabnum;
 b_1_ID_ZONE tabnum;
 b_1_ID_EVENTBRICK tabnum;
 pcntinc_0 number;
 t_0_id tabinteger;
 t_0_id_plate tabinteger;
 t_0_id_processoperation tabinteger;
 t_0_id_eventbrick tabinteger;
 r_0 integer;
 i_list_0 varchar(4000);
 e_loop_0 integer;
 e_start_0 integer;
 t_p_id integer;
 t_p_id_eventbrick integer;
 t_p_id_plate integer;
 pcntinc number;
 pcntfloor number;
 pcntceil number;
 s_start timestamp;
 logid number;
 r_token varchar2(64);
 xop integer;
 totalops integer;
 r_chk integer;
 can_parallel boolean;
 t_ops dbms_sql.number_table;
 brickid integer;
 r_sql integer;
 CURSOR ops IS SELECT ID FROM TB_PROC_OPERATIONS WHERE ID_PARENT_OPERATION =
x_id ORDER BY ID ASC;
begin
 pcntfloor := pcnt_floor;
 pcntceil := pcnt_ceil;
 logid := null;
 pp_log(logid, dbx, jid, 'Entering PP_PUBLISH_OP with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
 select b.id into brickid from tb_proc_operations a left join tb_eventbricks
b on (a.id_eventbrick = b.id) where a.id = x_id;
 if brickid is not null then
  r_chk := pf_execute_number('select count(*) from tb_eventbricks@' || dbx
|| ' where id = ' || brickid);
  if r_chk = 0 then
   pp_publish_brick(brickid, dbx, jid);
  end if;
 end if;
 if ischild = false then
  r_chk := pf_execute_number('select count(*) from
   (select distinct id_programsettings as idp from tb_proc_operations start
with id = ' || x_id || ' connect by prior id = id_parent_operation)
   left join tb_programsettings@' || dbx || ' on (idp = id) where id is
null');
  if r_chk = 0 then
   r_chk := pf_execute_number('select count(*) from
    (select distinct id_requester as idp from tb_proc_operations start with
id = ' || x_id || ' connect by prior id = id_parent_operation)
    left join tb_users@' || dbx || ' on (idp = id) where id is null');
   if r_chk = 0 then
    r_chk := pf_execute_number('select count(*) from
     (select distinct id_machine as idp from tb_proc_operations start with
id = ' || x_id || ' connect by prior id = id_parent_operation)
     left join tb_machines@' || dbx || ' on (idp = id) where id is null');
   end if;
  end if;
  if r_chk > 0 then
   select value into r_chk from opera.lz_sitevars where name = 'ID_SITE';
   pp_publish_system(r_chk, dbx, jid);
  end if;
  select count(*) into r_chk from pt_objects where type = 'OPERATION' and
objid = x_id;
  if r_chk = 0 then
    pp_register_object('OPERATION', x_id);
  end if;
  select token into r_token from pt_objects where type = 'OPERATION' and
objid = x_id;
  r_sql := pf_execute_nonquery('call operapub.pp_begin_writing_object@' ||
dbx || '(''OPERATION'', ' || x_id || ', ''' || r_token || ''')');
 end if;
 pp_set_jobstatus(jid, 'RUNNING', 'OP ' || x_id || ' # Op ' ||
Round(pcntfloor * 100.0, 0) || '%');
 xop := pf_execute_number('SELECT COUNT(*) FROM TB_PROC_OPERATIONS@' || dbx
|| ' WHERE ID = ' || x_id);
 if xop = 1 then
  raise_application_error(-20001, 'Relic operation with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx || ' found.');
 end if;
 pp_log(logid, dbx, jid, 'Publishing TB_PROC_OPERATIONS with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
 s_start := systimestamp;
 r_sql := pf_execute_nonquery('INSERT INTO PV_PROC_OPERATIONS@' || dbx || '
(ID, ID_MACHINE, ID_PROGRAMSETTINGS, ID_REQUESTER, ID_PARENT_OPERATION,
ID_EVENTBRICK, ID_PLATE, DRIVERLEVEL, ID_CALIBRATION_OPERATION, STARTTIME,
FINISHTIME, SUCCESS, NOTES) (SELECT ID, ID_MACHINE, ID_PROGRAMSETTINGS,
ID_REQUESTER, ID_PARENT_OPERATION, ID_EVENTBRICK, ID_PLATE, DRIVERLEVEL,
ID_CALIBRATION_OPERATION, STARTTIME, FINISHTIME, SUCCESS, NOTES FROM
TB_PROC_OPERATIONS WHERE ID = ' || x_id || ')');
 totalops := pf_execute_number('SELECT /*+INDEX_ASC(TB_PROC_OPERATIONS
IX_PROC_OPERATIONS_PARENT) */ COUNT(*) FROM TB_PROC_OPERATIONS WHERE
ID_PARENT_OPERATION = ' || x_id);
 select id, id_eventbrick, id_plate into t_p_id, t_p_id_eventbrick,
t_p_id_plate from tb_proc_operations where id = x_id;
 pp_add_jobstats(jid, 'ChildProcessOperations', s_start, systimestamp,
totalops);
 pcntinc := (pcntceil - pcntfloor) / (totalops + 1);
 if totalops > 0 then
  can_parallel := true;
  pp_log(logid, dbx, jid, 'Child operations found');

  t_ops := pf_execute_tabnumber('SELECT /*+INDEX_ASC(TB_PROC_OPERATIONS
IX_PROC_OPERATIONS_PARENT) */ ID FROM TB_PROC_OPERATIONS WHERE
ID_PARENT_OPERATION = ' || x_id || ' ORDER BY ID ASC');
  can_parallel := true;
  for totalops in 1..t_ops.COUNT loop
   xop := t_ops(totalops);
   pp_can_parallel(xop, can_parallel);
   if can_parallel = false then
    exit;
   end if;
  end loop;

  if can_parallel then
   pp_set_jobstatus(jid, 'RUNNING', 'PARALLEL Child OPS # Op ' ||
ROUND(100.0 * pcntfloor, 0) || '%');
   for totalops in 1..t_ops.COUNT loop
    xop := t_ops(totalops);
    begin
       sys.dbms_scheduler.drop_job(SUBSTR('TJP_' || xop || '_' ||
REPLACE(UPPER(dbx),'.','_'),0,30),true);
    exception when others then null;
    end;
   end loop;

   for totalops in 1..t_ops.COUNT loop
    xop := t_ops(totalops);
    sys.dbms_scheduler.CREATE_JOB(
     job_name => SUBSTR('TJP_' || xop || '_' ||
REPLACE(UPPER(dbx),'.','_'),0,30),
     job_type => 'plsql_block',
     job_action => 'pp_publish_op(' || xop || ', ''' || dbx || ''', ' || jid
|| ', true, 0, 1);',
     auto_drop => false,
     enabled => true);
   end loop;

   for totalops in 1..t_ops.COUNT loop
    xop := t_ops(totalops);
    loop
     select count(*) into r_chk from user_scheduler_jobs where job_name =
SUBSTR('TJP_' || xop || '_' || REPLACE(UPPER(dbx),'.','_'),0,30) and (state
= 'SUCCEEDED' or state = 'FAILED');
     exit when r_chk = 1;
     sys.DBMS_LOCK.SLEEP(1.0);
     r_chk := pf_execute_number('SELECT COUNT(*) FROM DUAL@' || dbx);
    end loop;
    select count(*) into r_chk from user_scheduler_jobs where job_name =
SUBSTR('TJP_' || xop || '_' || REPLACE(UPPER(dbx),'.','_'),0,30) and state
<> 'SUCCEEDED';
    if r_chk <> 0 then
     raise_application_error(-20690, 'Parallel job failed.');
    end if;

    begin
      sys.dbms_scheduler.drop_job(SUBSTR('TJP_' || xop || '_' ||
REPLACE(UPPER(dbx),'.','_'),0,30),true);
    exception when others then null;
    end;
   end loop;
  else
   pp_set_jobstatus(jid, 'RUNNING', 'Child OP ' || x_id || ' # Op ' ||
ROUND(100.0 * pcntfloor, 0) || '% ' || x_id);
   t_ops := pf_execute_tabnumber('SELECT /*+INDEX_ASC(TB_PROC_OPERATIONS
IX_PROC_OPERATIONS_PARENT) */ ID FROM TB_PROC_OPERATIONS WHERE
ID_PARENT_OPERATION = ' || x_id || ' ORDER BY ID ASC');
   /*open ops;*/
   for xop in 1..t_ops.count loop
    /*fetch ops into xop;*/
    /*exit when ops%notfound;*/
    pp_publish_op(t_ops(xop), dbx, jid, true, pcntfloor, pcntfloor +
pcntinc);
    pcntfloor := pcntfloor + pcntinc;
    pp_set_jobstatus(jid, 'RUNNING', 'Child OP ' || x_id || ' # Op ' ||
ROUND(100.0 * pcntfloor, 0) || '%');
   end loop;
   /*close ops;*/
  end if;
 end if;
 pcntinc := (pcntceil - pcntfloor) / 43;

 /* TB_ZONES */
 i_list_0 := null;
 pcntfloor := pcntfloor + pcntinc;
 if t_p_id_eventbrick is not null and t_p_id is not null then
  i_list_0 := '('||to_char(t_p_id_eventbrick)||','||to_char(t_p_id)||')';
  pp_log(logid, dbx, jid, 'Publishing TB_ZONES with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
  pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' # TB_ZONES ' ||
ROUND(100.0*pcntfloor,0) || '%');
  select systimestamp into s_start from dual;
  r_sql := pf_execute_nonquery('INSERT INTO PV_ZONES@' || dbx || '
("ID_EVENTBRICK", "ID_PLATE", "ID_PROCESSOPERATION", "ID", "MINX", "MAXX",
"MINY", "MAXY", "RAWDATAPATH", "STARTTIME", "ENDTIME", "SERIES", "TXX",
"TXY", "TYX", "TYY", "TDX", "TDY")
   (SELECT /*+INDEX_ASC(TB_ZONES IF_PROCOPS_ZONES) */ "ID_EVENTBRICK",
"ID_PLATE", "ID_PROCESSOPERATION", "ID", "MINX", "MAXX", "MINY", "MAXY",
"RAWDATAPATH", "STARTTIME", "ENDTIME", "SERIES", "TXX", "TXY", "TYX", "TYY",
"TDX", "TDY" FROM TB_ZONES WHERE
   ("ID_EVENTBRICK","ID_PROCESSOPERATION") in (' || i_list_0 || '))');
  r_0 := r_sql;
  execute immediate 'SELECT /*+INDEX_ASC(TB_ZONES IF_PROCOPS_ZONES) */
ID_EVENTBRICK,ID_PROCESSOPERATION,ID_PLATE,ID FROM TB_ZONES WHERE
   ("ID_EVENTBRICK","ID_PROCESSOPERATION") in (' || i_list_0 || ')'
   bulk collect into
t_0_id_eventbrick,t_0_id_processoperation,t_0_id_plate,t_0_id;
  pp_add_jobstats(jid, 'TB_ZONES', s_start, systimestamp, r_0);
 else
  r_0 := 0;
 end if;
 if r_0 <= 0 then
  pcntfloor := pcntfloor + pcntinc * 4;
 else
  pcntinc_0 := pcntinc / r_0;

 /* TB_VIEWS */
    e_start_0 := 1;
    while e_start_0 <= r_0 loop
     e_loop_0 := e_start_0;
     i_list_1 := null;
     while e_loop_0 < e_start_0+3 and e_loop_0 <= r_0 loop
      if t_0_id_eventbrick(e_loop_0) is not null and t_0_id(e_loop_0) is not
null then
       if i_list_1 is not null then
        i_list_1 :=
i_list_1||',('||to_char(t_0_id_eventbrick(e_loop_0))||','||to_char(t_0_id(e_loop_0))||')';
       else
        i_list_1 :=
'('||to_char(t_0_id_eventbrick(e_loop_0))||','||to_char(t_0_id(e_loop_0))||')';
       end if;
      end if;
      e_loop_0 := e_loop_0+1;
     end loop;
     rowdelta_1 := e_loop_0 - e_start_0;
     pcntfloor := pcntfloor + pcntinc_0 * rowdelta_1;
     e_start_0 := e_loop_0;
     if i_list_1 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_VIEWS with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' # TB_VIEWS ' ||
ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_1 := 0;
     open bcur_1 for 'SELECT /*+INDEX_ASC(TB_VIEWS PK_VIEWS) */
"ID_EVENTBRICK", "ID_ZONE", "SIDE", "ID", "DOWNZ", "UPZ", "POSX", "POSY"
FROM TB_VIEWS WHERE
      ("ID_EVENTBRICK","ID_ZONE") in (' || i_list_1 || ')';
     loop
      fetch bcur_1 bulk collect into
        b_1_ID_EVENTBRICK, b_1_ID_ZONE, b_1_SIDE, b_1_ID, b_1_DOWNZ,
b_1_UPZ, b_1_POSX, b_1_POSY
        limit 5000;
      exit when b_1_id_eventbrick.count = 0;
      r_1 := r_1 + b_1_id_eventbrick.count;
      forall i in 1..b_1_id_eventbrick.count
       execute immediate 'INSERT INTO TY_VIEWS ("ID_EVENTBRICK", "ID_ZONE",
"SIDE", "ID", "DOWNZ", "UPZ", "POSX", "POSY") values (:b_ID_EVENTBRICK,
:b_ID_ZONE, :b_SIDE, :b_ID, :b_DOWNZ, :b_UPZ, :b_POSX, :b_POSY)'
        USING b_1_ID_EVENTBRICK(i), b_1_ID_ZONE(i), b_1_SIDE(i), b_1_ID(i),
b_1_DOWNZ(i), b_1_UPZ(i), b_1_POSX(i), b_1_POSY(i);
      r_sql := pf_execute_nonquery('INSERT INTO PV_VIEWS@' || dbx || '
("ID_EVENTBRICK", "ID_ZONE", "SIDE", "ID", "DOWNZ", "UPZ", "POSX", "POSY")
(select "ID_EVENTBRICK", "ID_ZONE", "SIDE", "ID", "DOWNZ", "UPZ", "POSX",
"POSY" from TY_VIEWS)');
      commit;
     end loop;
     close bcur_1;
     pp_add_jobstats(jid, 'TB_VIEWS', s_start, systimestamp, r_1);
    else
     r_1 := 0;
    end if;
   end loop;

 /* TB_MIPMICROTRACKS */
    e_start_0 := 1;
    while e_start_0 <= r_0 loop
     e_loop_0 := e_start_0;
     i_list_2 := null;
     while e_loop_0 < e_start_0+3 and e_loop_0 <= r_0 loop
      if t_0_id_eventbrick(e_loop_0) is not null and t_0_id(e_loop_0) is not
null then
       if i_list_2 is not null then
        i_list_2 :=
i_list_2||',('||to_char(t_0_id_eventbrick(e_loop_0))||','||to_char(t_0_id(e_loop_0))||')';
       else
        i_list_2 :=
'('||to_char(t_0_id_eventbrick(e_loop_0))||','||to_char(t_0_id(e_loop_0))||')';
       end if;
      end if;
      e_loop_0 := e_loop_0+1;
     end loop;
     rowdelta_2 := e_loop_0 - e_start_0;
     pcntfloor := pcntfloor + pcntinc_0 * rowdelta_2;
     e_start_0 := e_loop_0;
     if i_list_2 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_MIPMICROTRACKS with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' # TB_MIPMICROTRACKS
' || ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_2 := 0;
     open bcur_2 for 'SELECT /*+INDEX_ASC(TB_MIPMICROTRACKS
PK_MIPMICROTRACKS) */ "ID_EVENTBRICK", "ID_ZONE", "SIDE", "ID", "POSX",
"POSY", "SLOPEX", "SLOPEY", "GRAINS", "AREASUM", "PH", "SIGMA", "ID_VIEW"
FROM TB_MIPMICROTRACKS WHERE
      ("ID_EVENTBRICK","ID_ZONE") in (' || i_list_2 || ')';
     loop
      fetch bcur_2 bulk collect into
        b_2_ID_EVENTBRICK, b_2_ID_ZONE, b_2_SIDE, b_2_ID, b_2_POSX,
b_2_POSY, b_2_SLOPEX, b_2_SLOPEY, b_2_GRAINS, b_2_AREASUM, b_2_PH,
b_2_SIGMA, b_2_ID_VIEW
        limit 5000;
      exit when b_2_id_eventbrick.count = 0;
      r_2 := r_2 + b_2_id_eventbrick.count;
      forall i in 1..b_2_id_eventbrick.count
       execute immediate 'INSERT INTO TY_MIPMICROTRACKS ("ID_EVENTBRICK",
"ID_ZONE", "SIDE", "ID", "POSX", "POSY", "SLOPEX", "SLOPEY", "GRAINS",
"AREASUM", "PH", "SIGMA", "ID_VIEW") values (:b_ID_EVENTBRICK, :b_ID_ZONE,
:b_SIDE, :b_ID, :b_POSX, :b_POSY, :b_SLOPEX, :b_SLOPEY, :b_GRAINS,
:b_AREASUM, :b_PH, :b_SIGMA, :b_ID_VIEW)'
        USING b_2_ID_EVENTBRICK(i), b_2_ID_ZONE(i), b_2_SIDE(i), b_2_ID(i),
b_2_POSX(i), b_2_POSY(i), b_2_SLOPEX(i), b_2_SLOPEY(i), b_2_GRAINS(i),
b_2_AREASUM(i), b_2_PH(i), b_2_SIGMA(i), b_2_ID_VIEW(i);
      r_sql := pf_execute_nonquery('INSERT INTO PV_MIPMICROTRACKS@' || dbx
|| ' ("ID_EVENTBRICK", "ID_ZONE", "SIDE", "ID", "POSX", "POSY", "SLOPEX",
"SLOPEY", "GRAINS", "AREASUM", "PH", "SIGMA", "ID_VIEW") (select
"ID_EVENTBRICK", "ID_ZONE", "SIDE", "ID", "POSX", "POSY", "SLOPEX",
"SLOPEY", "GRAINS", "AREASUM", "PH", "SIGMA", "ID_VIEW" from
TY_MIPMICROTRACKS)');
      commit;
     end loop;
     close bcur_2;
     pp_add_jobstats(jid, 'TB_MIPMICROTRACKS', s_start, systimestamp, r_2);
    else
     r_2 := 0;
    end if;
   end loop;

 /* TB_GRAINS */
    e_start_0 := 1;
    while e_start_0 <= r_0 loop
     e_loop_0 := e_start_0;
     i_list_3 := null;
     while e_loop_0 < e_start_0+3 and e_loop_0 <= r_0 loop
      if t_0_id_eventbrick(e_loop_0) is not null and t_0_id(e_loop_0) is not
null then
       if i_list_3 is not null then
        i_list_3 :=
i_list_3||',('||to_char(t_0_id_eventbrick(e_loop_0))||','||to_char(t_0_id(e_loop_0))||')';
       else
        i_list_3 :=
'('||to_char(t_0_id_eventbrick(e_loop_0))||','||to_char(t_0_id(e_loop_0))||')';
       end if;
      end if;
      e_loop_0 := e_loop_0+1;
     end loop;
     rowdelta_3 := e_loop_0 - e_start_0;
     pcntfloor := pcntfloor + pcntinc_0 * rowdelta_3;
     e_start_0 := e_loop_0;
     if i_list_3 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_GRAINS with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' # TB_GRAINS ' ||
ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_sql := pf_execute_nonquery('INSERT INTO PV_GRAINS@' || dbx || '
("ID_EVENTBRICK", "ID_ZONE", "SIDE", "ID_MIPMICROTRACK", "ID", "X", "Y",
"Z", "AREA", "DARKNESS")
      (SELECT /*+INDEX_ASC(TB_GRAINS PK_GRAINS) */ "ID_EVENTBRICK",
"ID_ZONE", "SIDE", "ID_MIPMICROTRACK", "ID", "X", "Y", "Z", "AREA",
"DARKNESS" FROM TB_GRAINS WHERE
      ("ID_EVENTBRICK","ID_ZONE") in (' || i_list_3 || '))');
     r_3 := r_sql;
     pp_add_jobstats(jid, 'TB_GRAINS', s_start, systimestamp, r_3);
    else
     r_3 := 0;
    end if;
   end loop;

 /* TB_MIPBASETRACKS */
    e_start_0 := 1;
    while e_start_0 <= r_0 loop
     e_loop_0 := e_start_0;
     i_list_4 := null;
     while e_loop_0 < e_start_0+3 and e_loop_0 <= r_0 loop
      if t_0_id_eventbrick(e_loop_0) is not null and t_0_id(e_loop_0) is not
null then
       if i_list_4 is not null then
        i_list_4 :=
i_list_4||',('||to_char(t_0_id_eventbrick(e_loop_0))||','||to_char(t_0_id(e_loop_0))||')';
       else
        i_list_4 :=
'('||to_char(t_0_id_eventbrick(e_loop_0))||','||to_char(t_0_id(e_loop_0))||')';
       end if;
      end if;
      e_loop_0 := e_loop_0+1;
     end loop;
     rowdelta_4 := e_loop_0 - e_start_0;
     pcntfloor := pcntfloor + pcntinc_0 * rowdelta_4;
     e_start_0 := e_loop_0;
     if i_list_4 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_MIPBASETRACKS with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' # TB_MIPBASETRACKS
' || ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_4 := 0;
     open bcur_4 for 'SELECT /*+INDEX_ASC(TB_MIPBASETRACKS PK_MIPBASETRACKS)
*/ "ID_EVENTBRICK", "ID_ZONE", "ID", "POSX", "POSY", "SLOPEX", "SLOPEY",
"GRAINS", "AREASUM", "PH", "SIGMA", "ID_DOWNSIDE", "ID_DOWNTRACK",
"ID_UPSIDE", "ID_UPTRACK" FROM TB_MIPBASETRACKS WHERE
      ("ID_EVENTBRICK","ID_ZONE") in (' || i_list_4 || ')';
     loop
      fetch bcur_4 bulk collect into
        b_4_ID_EVENTBRICK, b_4_ID_ZONE, b_4_ID, b_4_POSX, b_4_POSY,
b_4_SLOPEX, b_4_SLOPEY, b_4_GRAINS, b_4_AREASUM, b_4_PH, b_4_SIGMA,
b_4_ID_DOWNSIDE, b_4_ID_DOWNTRACK, b_4_ID_UPSIDE, b_4_ID_UPTRACK
        limit 5000;
      exit when b_4_id_eventbrick.count = 0;
      r_4 := r_4 + b_4_id_eventbrick.count;
      forall i in 1..b_4_id_eventbrick.count
       execute immediate 'INSERT INTO TY_MIPBASETRACKS ("ID_EVENTBRICK",
"ID_ZONE", "ID", "POSX", "POSY", "SLOPEX", "SLOPEY", "GRAINS", "AREASUM",
"PH", "SIGMA", "ID_DOWNSIDE", "ID_DOWNTRACK", "ID_UPSIDE", "ID_UPTRACK")
values (:b_ID_EVENTBRICK, :b_ID_ZONE, :b_ID, :b_POSX, :b_POSY, :b_SLOPEX,
:b_SLOPEY, :b_GRAINS, :b_AREASUM, :b_PH, :b_SIGMA, :b_ID_DOWNSIDE,
:b_ID_DOWNTRACK, :b_ID_UPSIDE, :b_ID_UPTRACK)'
        USING b_4_ID_EVENTBRICK(i), b_4_ID_ZONE(i), b_4_ID(i), b_4_POSX(i),
b_4_POSY(i), b_4_SLOPEX(i), b_4_SLOPEY(i), b_4_GRAINS(i), b_4_AREASUM(i),
b_4_PH(i), b_4_SIGMA(i), b_4_ID_DOWNSIDE(i), b_4_ID_DOWNTRACK(i),
b_4_ID_UPSIDE(i), b_4_ID_UPTRACK(i);
      r_sql := pf_execute_nonquery('INSERT INTO PV_MIPBASETRACKS@' || dbx ||
' ("ID_EVENTBRICK", "ID_ZONE", "ID", "POSX", "POSY", "SLOPEX", "SLOPEY",
"GRAINS", "AREASUM", "PH", "SIGMA", "ID_DOWNSIDE", "ID_DOWNTRACK",
"ID_UPSIDE", "ID_UPTRACK") (select "ID_EVENTBRICK", "ID_ZONE", "ID", "POSX",
"POSY", "SLOPEX", "SLOPEY", "GRAINS", "AREASUM", "PH", "SIGMA",
"ID_DOWNSIDE", "ID_DOWNTRACK", "ID_UPSIDE", "ID_UPTRACK" from
TY_MIPBASETRACKS)');
      commit;
     end loop;
     close bcur_4;
     pp_add_jobstats(jid, 'TB_MIPBASETRACKS', s_start, systimestamp, r_4);
    else
     r_4 := 0;
    end if;
   end loop;
 end if;

 /* TB_RECONSTRUCTIONS */
 i_list_5 := null;
 pcntfloor := pcntfloor + pcntinc;
 if t_p_id_eventbrick is not null and t_p_id is not null then
  i_list_5 := '('||to_char(t_p_id_eventbrick)||','||to_char(t_p_id)||')';
  pp_log(logid, dbx, jid, 'Publishing TB_RECONSTRUCTIONS with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
  pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' # TB_RECONSTRUCTIONS '
|| ROUND(100.0*pcntfloor,0) || '%');
  select systimestamp into s_start from dual;
  r_sql := pf_execute_nonquery('INSERT INTO PV_RECONSTRUCTIONS@' || dbx || '
("ID_EVENTBRICK", "ID", "ID_PROCESSOPERATION")
   (SELECT /*+INDEX_ASC(TB_RECONSTRUCTIONS IF_PROCOPS_RECONSTRUCTIONS) */
"ID_EVENTBRICK", "ID", "ID_PROCESSOPERATION" FROM TB_RECONSTRUCTIONS WHERE
   ("ID_EVENTBRICK","ID_PROCESSOPERATION") in (' || i_list_5 || '))');
  r_5 := r_sql;
  execute immediate 'SELECT /*+INDEX_ASC(TB_RECONSTRUCTIONS
IF_PROCOPS_RECONSTRUCTIONS) */ ID_EVENTBRICK,ID FROM TB_RECONSTRUCTIONS
WHERE
   ("ID_EVENTBRICK","ID_PROCESSOPERATION") in (' || i_list_5 || ')'
   bulk collect into t_5_id_eventbrick,t_5_id;
  pp_add_jobstats(jid, 'TB_RECONSTRUCTIONS', s_start, systimestamp, r_5);
 else
  r_5 := 0;
 end if;
 if r_5 <= 0 then
  pcntfloor := pcntfloor + pcntinc * 9;
 else
  pcntinc_5 := pcntinc / r_5;

 /* TB_ALIGNED_SLICES */
    e_start_5 := 1;
    while e_start_5 <= r_5 loop
     e_loop_5 := e_start_5;
     i_list_6 := null;
     while e_loop_5 < e_start_5+3 and e_loop_5 <= r_5 loop
      if t_5_id_eventbrick(e_loop_5) is not null and t_5_id(e_loop_5) is not
null then
       if i_list_6 is not null then
        i_list_6 :=
i_list_6||',('||to_char(t_5_id_eventbrick(e_loop_5))||','||to_char(t_5_id(e_loop_5))||')';
       else
        i_list_6 :=
'('||to_char(t_5_id_eventbrick(e_loop_5))||','||to_char(t_5_id(e_loop_5))||')';
       end if;
      end if;
      e_loop_5 := e_loop_5+1;
     end loop;
     rowdelta_6 := e_loop_5 - e_start_5;
     pcntfloor := pcntfloor + pcntinc_5 * rowdelta_6;
     e_start_5 := e_loop_5;
     if i_list_6 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_ALIGNED_SLICES with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' # TB_ALIGNED_SLICES
' || ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_sql := pf_execute_nonquery('INSERT INTO PV_ALIGNED_SLICES@' || dbx ||
' ("ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_PLATE", "MINX", "MAXX", "MINY",
"MAXY", "REFX", "REFY", "REFZ", "DOWNZ", "UPZ", "TXX", "TXY", "TYX", "TYY",
"TDX", "TDY", "TDZ")
      (SELECT /*+INDEX_ASC(TB_ALIGNED_SLICES PK_ALIGNED_SLICES) */
"ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_PLATE", "MINX", "MAXX", "MINY",
"MAXY", "REFX", "REFY", "REFZ", "DOWNZ", "UPZ", "TXX", "TXY", "TYX", "TYY",
"TDX", "TDY", "TDZ" FROM TB_ALIGNED_SLICES WHERE
      ("ID_EVENTBRICK","ID_RECONSTRUCTION") in (' || i_list_6 || '))');
     r_6 := r_sql;
     pp_add_jobstats(jid, 'TB_ALIGNED_SLICES', s_start, systimestamp, r_6);
    else
     r_6 := 0;
    end if;
   end loop;

 /* TB_ALIGNED_SIDES */
    e_start_5 := 1;
    while e_start_5 <= r_5 loop
     e_loop_5 := e_start_5;
     i_list_7 := null;
     while e_loop_5 < e_start_5+3 and e_loop_5 <= r_5 loop
      if t_5_id_eventbrick(e_loop_5) is not null and t_5_id(e_loop_5) is not
null then
       if i_list_7 is not null then
        i_list_7 :=
i_list_7||',('||to_char(t_5_id_eventbrick(e_loop_5))||','||to_char(t_5_id(e_loop_5))||')';
       else
        i_list_7 :=
'('||to_char(t_5_id_eventbrick(e_loop_5))||','||to_char(t_5_id(e_loop_5))||')';
       end if;
      end if;
      e_loop_5 := e_loop_5+1;
     end loop;
     rowdelta_7 := e_loop_5 - e_start_5;
     pcntfloor := pcntfloor + pcntinc_5 * rowdelta_7;
     e_start_5 := e_loop_5;
     if i_list_7 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_ALIGNED_SIDES with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' # TB_ALIGNED_SIDES
' || ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_sql := pf_execute_nonquery('INSERT INTO PV_ALIGNED_SIDES@' || dbx ||
' ("ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_PLATE", "SIDE", "DOWNZ", "UPZ",
"SDX", "SDY", "SMX", "SMY")
      (SELECT /*+INDEX_ASC(TB_ALIGNED_SIDES PK_ALIGNED_SIDES) */
"ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_PLATE", "SIDE", "DOWNZ", "UPZ",
"SDX", "SDY", "SMX", "SMY" FROM TB_ALIGNED_SIDES WHERE
      ("ID_EVENTBRICK","ID_RECONSTRUCTION") in (' || i_list_7 || '))');
     r_7 := r_sql;
     pp_add_jobstats(jid, 'TB_ALIGNED_SIDES', s_start, systimestamp, r_7);
    else
     r_7 := 0;
    end if;
   end loop;

 /* TB_ALIGNED_MIPMICROTRACKS */
    e_start_5 := 1;
    while e_start_5 <= r_5 loop
     e_loop_5 := e_start_5;
     i_list_8 := null;
     while e_loop_5 < e_start_5+3 and e_loop_5 <= r_5 loop
      if t_5_id_eventbrick(e_loop_5) is not null and t_5_id(e_loop_5) is not
null then
       if i_list_8 is not null then
        i_list_8 :=
i_list_8||',('||to_char(t_5_id_eventbrick(e_loop_5))||','||to_char(t_5_id(e_loop_5))||')';
       else
        i_list_8 :=
'('||to_char(t_5_id_eventbrick(e_loop_5))||','||to_char(t_5_id(e_loop_5))||')';
       end if;
      end if;
      e_loop_5 := e_loop_5+1;
     end loop;
     rowdelta_8 := e_loop_5 - e_start_5;
     pcntfloor := pcntfloor + pcntinc_5 * rowdelta_8;
     e_start_5 := e_loop_5;
     if i_list_8 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_ALIGNED_MIPMICROTRACKS with
x_id = ' || TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_ALIGNED_MIPMICROTRACKS ' || ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_8 := 0;
     open bcur_8 for 'SELECT /*+INDEX_ASC(TB_ALIGNED_MIPMICROTRACKS
PK_ALIGNED_MIPMICROTRACKS) */ "ID_EVENTBRICK", "ID_RECONSTRUCTION",
"ID_PLATE", "ID_ZONE", "SIDE", "ID", "POSX", "POSY", "SLOPEX", "SLOPEY",
"SIGMA", "GRAINS", "AREASUM", "PH" FROM TB_ALIGNED_MIPMICROTRACKS WHERE
      ("ID_EVENTBRICK","ID_RECONSTRUCTION") in (' || i_list_8 || ')';
     loop
      fetch bcur_8 bulk collect into
        b_8_ID_EVENTBRICK, b_8_ID_RECONSTRUCTION, b_8_ID_PLATE, b_8_ID_ZONE,
b_8_SIDE, b_8_ID, b_8_POSX, b_8_POSY, b_8_SLOPEX, b_8_SLOPEY, b_8_SIGMA,
b_8_GRAINS, b_8_AREASUM, b_8_PH
        limit 5000;
      exit when b_8_id_eventbrick.count = 0;
      r_8 := r_8 + b_8_id_eventbrick.count;
      forall i in 1..b_8_id_eventbrick.count
       execute immediate 'INSERT INTO TY_ALIGNED_MIPMICROTRACKS
("ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_PLATE", "ID_ZONE", "SIDE", "ID",
"POSX", "POSY", "SLOPEX", "SLOPEY", "SIGMA", "GRAINS", "AREASUM", "PH")
values (:b_ID_EVENTBRICK, :b_ID_RECONSTRUCTION, :b_ID_PLATE, :b_ID_ZONE,
:b_SIDE, :b_ID, :b_POSX, :b_POSY, :b_SLOPEX, :b_SLOPEY, :b_SIGMA, :b_GRAINS,
:b_AREASUM, :b_PH)'
        USING b_8_ID_EVENTBRICK(i), b_8_ID_RECONSTRUCTION(i),
b_8_ID_PLATE(i), b_8_ID_ZONE(i), b_8_SIDE(i), b_8_ID(i), b_8_POSX(i),
b_8_POSY(i), b_8_SLOPEX(i), b_8_SLOPEY(i), b_8_SIGMA(i), b_8_GRAINS(i),
b_8_AREASUM(i), b_8_PH(i);
      r_sql := pf_execute_nonquery('INSERT INTO PV_ALIGNED_MIPMICROTRACKS@'
|| dbx || ' ("ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_PLATE", "ID_ZONE",
"SIDE", "ID", "POSX", "POSY", "SLOPEX", "SLOPEY", "SIGMA", "GRAINS",
"AREASUM", "PH") (select "ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_PLATE",
"ID_ZONE", "SIDE", "ID", "POSX", "POSY", "SLOPEX", "SLOPEY", "SIGMA",
"GRAINS", "AREASUM", "PH" from TY_ALIGNED_MIPMICROTRACKS)');
      commit;
     end loop;
     close bcur_8;
     pp_add_jobstats(jid, 'TB_ALIGNED_MIPMICROTRACKS', s_start,
systimestamp, r_8);
    else
     r_8 := 0;
    end if;
   end loop;

 /* TB_RECONSTRUCTION_OPTIONS */
    e_start_5 := 1;
    while e_start_5 <= r_5 loop
     e_loop_5 := e_start_5;
     i_list_9 := null;
     while e_loop_5 < e_start_5+3 and e_loop_5 <= r_5 loop
      if t_5_id_eventbrick(e_loop_5) is not null and t_5_id(e_loop_5) is not
null then
       if i_list_9 is not null then
        i_list_9 :=
i_list_9||',('||to_char(t_5_id_eventbrick(e_loop_5))||','||to_char(t_5_id(e_loop_5))||')';
       else
        i_list_9 :=
'('||to_char(t_5_id_eventbrick(e_loop_5))||','||to_char(t_5_id(e_loop_5))||')';
       end if;
      end if;
      e_loop_5 := e_loop_5+1;
     end loop;
     rowdelta_9 := e_loop_5 - e_start_5;
     pcntfloor := pcntfloor + pcntinc_5 * rowdelta_9;
     e_start_5 := e_loop_5;
     if i_list_9 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_RECONSTRUCTION_OPTIONS with
x_id = ' || TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_RECONSTRUCTION_OPTIONS ' || ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_sql := pf_execute_nonquery('INSERT INTO PV_RECONSTRUCTION_OPTIONS@'
|| dbx || ' ("ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID",
"GEOMETRICAL_PROBABILITY", "PHYSICAL_PROBABILITY")
      (SELECT /*+INDEX_ASC(TB_RECONSTRUCTION_OPTIONS
PK_RECONSTRUCTION_OPTIONS) */ "ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID",
"GEOMETRICAL_PROBABILITY", "PHYSICAL_PROBABILITY" FROM
TB_RECONSTRUCTION_OPTIONS WHERE
      ("ID_EVENTBRICK","ID_RECONSTRUCTION") in (' || i_list_9 || '))');
     r_9 := r_sql;
     execute immediate 'SELECT /*+INDEX_ASC(TB_RECONSTRUCTION_OPTIONS
PK_RECONSTRUCTION_OPTIONS) */ ID_EVENTBRICK,ID_RECONSTRUCTION,ID FROM
TB_RECONSTRUCTION_OPTIONS WHERE
      ("ID_EVENTBRICK","ID_RECONSTRUCTION") in (' || i_list_9 || ')'
      bulk collect into t_9_id_eventbrick,t_9_id_reconstruction,t_9_id;
     pp_add_jobstats(jid, 'TB_RECONSTRUCTION_OPTIONS', s_start,
systimestamp, r_9);
    else
     r_9 := 0;
    end if;
    if r_9 <= 0 then
     pcntfloor := pcntfloor + pcntinc_5 * 5 * rowdelta_9;
    else
     pcntinc_9 := pcntinc_5 / r_9 * rowdelta_9;

 /* TB_VERTICES */
       e_start_9 := 1;
       while e_start_9 <= r_9 loop
        e_loop_9 := e_start_9;
        i_list_10 := null;
        while e_loop_9 < e_start_9+3 and e_loop_9 <= r_9 loop
         if t_9_id_eventbrick(e_loop_9) is not null and
t_9_id_reconstruction(e_loop_9) is not null and t_9_id(e_loop_9) is not null
then
          if i_list_10 is not null then
           i_list_10 :=
i_list_10||',('||to_char(t_9_id_eventbrick(e_loop_9))||','||to_char(t_9_id_reconstruction(e_loop_9))||','||to_char(t_9_id(e_loop_9))||')';
          else
           i_list_10 :=
'('||to_char(t_9_id_eventbrick(e_loop_9))||','||to_char(t_9_id_reconstruction(e_loop_9))||','||to_char(t_9_id(e_loop_9))||')';
          end if;
         end if;
         e_loop_9 := e_loop_9+1;
        end loop;
        rowdelta_10 := e_loop_9 - e_start_9;
        pcntfloor := pcntfloor + pcntinc_9 * rowdelta_10;
        e_start_9 := e_loop_9;
        if i_list_10 is not null then
         pp_log(logid, dbx, jid, 'Publishing TB_VERTICES with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
         pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' # TB_VERTICES '
|| ROUND(100.0*pcntfloor,0) || '%');
        select systimestamp into s_start from dual;
        r_sql := pf_execute_nonquery('INSERT INTO PV_VERTICES@' || dbx || '
("ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_OPTION", "ID")
         (SELECT /*+INDEX_ASC(TB_VERTICES PK_VERTICES) */ "ID_EVENTBRICK",
"ID_RECONSTRUCTION", "ID_OPTION", "ID" FROM TB_VERTICES WHERE
         ("ID_EVENTBRICK","ID_RECONSTRUCTION","ID_OPTION") in (' ||
i_list_10 || '))');
        r_10 := r_sql;
        pp_add_jobstats(jid, 'TB_VERTICES', s_start, systimestamp, r_10);
       else
        r_10 := 0;
       end if;
      end loop;

 /* TB_VERTICES_FIT */
       e_start_9 := 1;
       while e_start_9 <= r_9 loop
        e_loop_9 := e_start_9;
        i_list_11 := null;
        while e_loop_9 < e_start_9+3 and e_loop_9 <= r_9 loop
         if t_9_id_eventbrick(e_loop_9) is not null and
t_9_id_reconstruction(e_loop_9) is not null and t_9_id(e_loop_9) is not null
then
          if i_list_11 is not null then
           i_list_11 :=
i_list_11||',('||to_char(t_9_id_eventbrick(e_loop_9))||','||to_char(t_9_id_reconstruction(e_loop_9))||','||to_char(t_9_id(e_loop_9))||')';
          else
           i_list_11 :=
'('||to_char(t_9_id_eventbrick(e_loop_9))||','||to_char(t_9_id_reconstruction(e_loop_9))||','||to_char(t_9_id(e_loop_9))||')';
          end if;
         end if;
         e_loop_9 := e_loop_9+1;
        end loop;
        rowdelta_11 := e_loop_9 - e_start_9;
        pcntfloor := pcntfloor + pcntinc_9 * rowdelta_11;
        e_start_9 := e_loop_9;
        if i_list_11 is not null then
         pp_log(logid, dbx, jid, 'Publishing TB_VERTICES_FIT with x_id = '
|| TO_CHAR(x_id) || ' DBLINK = ' || dbx);
         pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_VERTICES_FIT ' || ROUND(100.0*pcntfloor,0) || '%');
        select systimestamp into s_start from dual;
        r_sql := pf_execute_nonquery('INSERT INTO PV_VERTICES_FIT@' || dbx
|| ' ("ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_OPTION", "ID", "TYPE",
"POSX", "POSY", "POSZ", "QUALITY")
         (SELECT /*+INDEX_ASC(TB_VERTICES_FIT PK_VERTICES_FIT) */
"ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_OPTION", "ID", "TYPE", "POSX",
"POSY", "POSZ", "QUALITY" FROM TB_VERTICES_FIT WHERE
         ("ID_EVENTBRICK","ID_RECONSTRUCTION","ID_OPTION") in (' ||
i_list_11 || '))');
        r_11 := r_sql;
        pp_add_jobstats(jid, 'TB_VERTICES_FIT', s_start, systimestamp,
r_11);
       else
        r_11 := 0;
       end if;
      end loop;

 /* TB_VOLUMETRACKS */
       e_start_9 := 1;
       while e_start_9 <= r_9 loop
        e_loop_9 := e_start_9;
        i_list_12 := null;
        while e_loop_9 < e_start_9+3 and e_loop_9 <= r_9 loop
         if t_9_id_eventbrick(e_loop_9) is not null and
t_9_id_reconstruction(e_loop_9) is not null and t_9_id(e_loop_9) is not null
then
          if i_list_12 is not null then
           i_list_12 :=
i_list_12||',('||to_char(t_9_id_eventbrick(e_loop_9))||','||to_char(t_9_id_reconstruction(e_loop_9))||','||to_char(t_9_id(e_loop_9))||')';
          else
           i_list_12 :=
'('||to_char(t_9_id_eventbrick(e_loop_9))||','||to_char(t_9_id_reconstruction(e_loop_9))||','||to_char(t_9_id(e_loop_9))||')';
          end if;
         end if;
         e_loop_9 := e_loop_9+1;
        end loop;
        rowdelta_12 := e_loop_9 - e_start_9;
        pcntfloor := pcntfloor + pcntinc_9 * rowdelta_12;
        e_start_9 := e_loop_9;
        if i_list_12 is not null then
         pp_log(logid, dbx, jid, 'Publishing TB_VOLUMETRACKS with x_id = '
|| TO_CHAR(x_id) || ' DBLINK = ' || dbx);
         pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_VOLUMETRACKS ' || ROUND(100.0*pcntfloor,0) || '%');
        select systimestamp into s_start from dual;
        r_sql := pf_execute_nonquery('INSERT INTO PV_VOLUMETRACKS@' || dbx
|| ' ("ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_OPTION", "ID", "DOWNZ",
"UPZ", "ID_DOWNSTREAMVERTEX", "ID_UPSTREAMVERTEX")
         (SELECT /*+INDEX_ASC(TB_VOLUMETRACKS PK_VOLUMETRACKS) */
"ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_OPTION", "ID", "DOWNZ", "UPZ",
"ID_DOWNSTREAMVERTEX", "ID_UPSTREAMVERTEX" FROM TB_VOLUMETRACKS WHERE
         ("ID_EVENTBRICK","ID_RECONSTRUCTION","ID_OPTION") in (' ||
i_list_12 || '))');
        r_12 := r_sql;
        pp_add_jobstats(jid, 'TB_VOLUMETRACKS', s_start, systimestamp,
r_12);
       else
        r_12 := 0;
       end if;
      end loop;

 /* TB_VOLUMETRACKS_FIT */
       e_start_9 := 1;
       while e_start_9 <= r_9 loop
        e_loop_9 := e_start_9;
        i_list_13 := null;
        while e_loop_9 < e_start_9+3 and e_loop_9 <= r_9 loop
         if t_9_id_eventbrick(e_loop_9) is not null and
t_9_id_reconstruction(e_loop_9) is not null and t_9_id(e_loop_9) is not null
then
          if i_list_13 is not null then
           i_list_13 :=
i_list_13||',('||to_char(t_9_id_eventbrick(e_loop_9))||','||to_char(t_9_id_reconstruction(e_loop_9))||','||to_char(t_9_id(e_loop_9))||')';
          else
           i_list_13 :=
'('||to_char(t_9_id_eventbrick(e_loop_9))||','||to_char(t_9_id_reconstruction(e_loop_9))||','||to_char(t_9_id(e_loop_9))||')';
          end if;
         end if;
         e_loop_9 := e_loop_9+1;
        end loop;
        rowdelta_13 := e_loop_9 - e_start_9;
        pcntfloor := pcntfloor + pcntinc_9 * rowdelta_13;
        e_start_9 := e_loop_9;
        if i_list_13 is not null then
         pp_log(logid, dbx, jid, 'Publishing TB_VOLUMETRACKS_FIT with x_id =
' || TO_CHAR(x_id) || ' DBLINK = ' || dbx);
         pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_VOLUMETRACKS_FIT ' || ROUND(100.0*pcntfloor,0) || '%');
        select systimestamp into s_start from dual;
        r_sql := pf_execute_nonquery('INSERT INTO PV_VOLUMETRACKS_FIT@' ||
dbx || ' ("ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_OPTION", "ID", "TYPE",
"DOWNPOSX", "DOWNPOSY", "DOWNPOSZ", "DOWNSLOPEX", "DOWNSLOPEY",
"DOWNQUALITY", "UPPOSX", "UPPOSY", "UPPOSZ", "UPSLOPEX", "UPSLOPEY",
"UPQUALITY")
         (SELECT /*+INDEX_ASC(TB_VOLUMETRACKS_FIT PK_VOLUMETRACKS_FIT) */
"ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_OPTION", "ID", "TYPE", "DOWNPOSX",
"DOWNPOSY", "DOWNPOSZ", "DOWNSLOPEX", "DOWNSLOPEY", "DOWNQUALITY", "UPPOSX",
"UPPOSY", "UPPOSZ", "UPSLOPEX", "UPSLOPEY", "UPQUALITY" FROM
TB_VOLUMETRACKS_FIT WHERE
         ("ID_EVENTBRICK","ID_RECONSTRUCTION","ID_OPTION") in (' ||
i_list_13 || '))');
        r_13 := r_sql;
        pp_add_jobstats(jid, 'TB_VOLUMETRACKS_FIT', s_start, systimestamp,
r_13);
       else
        r_13 := 0;
       end if;
      end loop;

 /* TB_VOLTKS_ALIGNMUTKS */
       e_start_9 := 1;
       while e_start_9 <= r_9 loop
        e_loop_9 := e_start_9;
        i_list_14 := null;
        while e_loop_9 < e_start_9+3 and e_loop_9 <= r_9 loop
         if t_9_id_eventbrick(e_loop_9) is not null and
t_9_id_reconstruction(e_loop_9) is not null and t_9_id(e_loop_9) is not null
then
          if i_list_14 is not null then
           i_list_14 :=
i_list_14||',('||to_char(t_9_id_eventbrick(e_loop_9))||','||to_char(t_9_id_reconstruction(e_loop_9))||','||to_char(t_9_id(e_loop_9))||')';
          else
           i_list_14 :=
'('||to_char(t_9_id_eventbrick(e_loop_9))||','||to_char(t_9_id_reconstruction(e_loop_9))||','||to_char(t_9_id(e_loop_9))||')';
          end if;
         end if;
         e_loop_9 := e_loop_9+1;
        end loop;
        rowdelta_14 := e_loop_9 - e_start_9;
        pcntfloor := pcntfloor + pcntinc_9 * rowdelta_14;
        e_start_9 := e_loop_9;
        if i_list_14 is not null then
         pp_log(logid, dbx, jid, 'Publishing TB_VOLTKS_ALIGNMUTKS with x_id
= ' || TO_CHAR(x_id) || ' DBLINK = ' || dbx);
         pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_VOLTKS_ALIGNMUTKS ' || ROUND(100.0*pcntfloor,0) || '%');
        select systimestamp into s_start from dual;
        r_14 := 0;
        open bcur_14 for 'SELECT /*+INDEX_ASC(TB_VOLTKS_ALIGNMUTKS
PK_VOLTKS_ALIGNMUTKS) */ "ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_OPTION",
"ID_PLATE", "ID_ZONE", "SIDE", "ID_MIPMICROTRACK", "ID_VOLUMETRACK" FROM
TB_VOLTKS_ALIGNMUTKS WHERE
         ("ID_EVENTBRICK","ID_RECONSTRUCTION","ID_OPTION") in (' ||
i_list_14 || ')';
        loop
         fetch bcur_14 bulk collect into
           b_14_ID_EVENTBRICK, b_14_ID_RECONSTRUCTION, b_14_ID_OPTION,
b_14_ID_PLATE, b_14_ID_ZONE, b_14_SIDE, b_14_ID_MIPMICROTRACK,
b_14_ID_VOLUMETRACK
           limit 5000;
         exit when b_14_id_eventbrick.count = 0;
         r_14 := r_14 + b_14_id_eventbrick.count;
         forall i in 1..b_14_id_eventbrick.count
          execute immediate 'INSERT INTO TY_VOLTKS_ALIGNMUTKS
("ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_OPTION", "ID_PLATE", "ID_ZONE",
"SIDE", "ID_MIPMICROTRACK", "ID_VOLUMETRACK") values (:b_ID_EVENTBRICK,
:b_ID_RECONSTRUCTION, :b_ID_OPTION, :b_ID_PLATE, :b_ID_ZONE, :b_SIDE,
:b_ID_MIPMICROTRACK, :b_ID_VOLUMETRACK)'
           USING b_14_ID_EVENTBRICK(i), b_14_ID_RECONSTRUCTION(i),
b_14_ID_OPTION(i), b_14_ID_PLATE(i), b_14_ID_ZONE(i), b_14_SIDE(i),
b_14_ID_MIPMICROTRACK(i), b_14_ID_VOLUMETRACK(i);
         r_sql := pf_execute_nonquery('INSERT INTO PV_VOLTKS_ALIGNMUTKS@' ||
dbx || ' ("ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_OPTION", "ID_PLATE",
"ID_ZONE", "SIDE", "ID_MIPMICROTRACK", "ID_VOLUMETRACK") (select
"ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_OPTION", "ID_PLATE", "ID_ZONE",
"SIDE", "ID_MIPMICROTRACK", "ID_VOLUMETRACK" from TY_VOLTKS_ALIGNMUTKS)');
         commit;
        end loop;
        close bcur_14;
        pp_add_jobstats(jid, 'TB_VOLTKS_ALIGNMUTKS', s_start, systimestamp,
r_14);
       else
        r_14 := 0;
       end if;
      end loop;
     end if;
    end loop;
 end if;

 /* TB_VERTICES_ATTR */
 i_list_15 := null;
 pcntfloor := pcntfloor + pcntinc;
 if t_p_id_eventbrick is not null and t_p_id is not null then
  i_list_15 := '('||to_char(t_p_id_eventbrick)||','||to_char(t_p_id)||')';
  pp_log(logid, dbx, jid, 'Publishing TB_VERTICES_ATTR with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
  pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' # TB_VERTICES_ATTR ' ||
ROUND(100.0*pcntfloor,0) || '%');
  select systimestamp into s_start from dual;
  r_sql := pf_execute_nonquery('INSERT INTO PV_VERTICES_ATTR@' || dbx || '
("ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_OPTION", "ID",
"ID_PROCESSOPERATION", "NAME", "VALUE")
   (SELECT /*+INDEX_ASC(TB_VERTICES_ATTR PK_VERTICES_ATTR) */
"ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_OPTION", "ID",
"ID_PROCESSOPERATION", "NAME", "VALUE" FROM TB_VERTICES_ATTR WHERE
   ("ID_EVENTBRICK","ID_PROCESSOPERATION") in (' || i_list_15 || '))');
  r_15 := r_sql;
  pp_add_jobstats(jid, 'TB_VERTICES_ATTR', s_start, systimestamp, r_15);
 else
  r_15 := 0;
 end if;

 /* TB_VOLUMETRACKS_ATTR */
 i_list_16 := null;
 pcntfloor := pcntfloor + pcntinc;
 if t_p_id_eventbrick is not null and t_p_id is not null then
  i_list_16 := '('||to_char(t_p_id_eventbrick)||','||to_char(t_p_id)||')';
  pp_log(logid, dbx, jid, 'Publishing TB_VOLUMETRACKS_ATTR with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
  pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' # TB_VOLUMETRACKS_ATTR
' || ROUND(100.0*pcntfloor,0) || '%');
  select systimestamp into s_start from dual;
  r_sql := pf_execute_nonquery('INSERT INTO PV_VOLUMETRACKS_ATTR@' || dbx ||
' ("ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_OPTION", "ID",
"ID_PROCESSOPERATION", "NAME", "VALUE")
   (SELECT /*+INDEX_ASC(TB_VOLUMETRACKS_ATTR PK_VOLUMETRACKS_ATTR) */
"ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_OPTION", "ID",
"ID_PROCESSOPERATION", "NAME", "VALUE" FROM TB_VOLUMETRACKS_ATTR WHERE
   ("ID_EVENTBRICK","ID_PROCESSOPERATION") in (' || i_list_16 || '))');
  r_16 := r_sql;
  pp_add_jobstats(jid, 'TB_VOLUMETRACKS_ATTR', s_start, systimestamp, r_16);
 else
  r_16 := 0;
 end if;

 /* TB_PREDICTED_EVENTS */
 i_list_17 := null;
 pcntfloor := pcntfloor + pcntinc;
 if t_p_id is not null then
  i_list_17 := '('||to_char(t_p_id)||')';
  pp_log(logid, dbx, jid, 'Publishing TB_PREDICTED_EVENTS with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
  pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' # TB_PREDICTED_EVENTS '
|| ROUND(100.0*pcntfloor,0) || '%');
  select systimestamp into s_start from dual;
  r_sql := pf_execute_nonquery('INSERT INTO PV_PREDICTED_EVENTS@' || dbx ||
' ("EVENT", "ID_PROCESSOPERATION", "ID", "POSX", "POSY", "POSZ", "TYPE",
"TIME")
   (SELECT /*+INDEX_ASC(TB_PREDICTED_EVENTS PK_PREDICTED_EVENTS) */ "EVENT",
"ID_PROCESSOPERATION", "ID", "POSX", "POSY", "POSZ", "TYPE", "TIME" FROM
TB_PREDICTED_EVENTS WHERE
   ("ID_PROCESSOPERATION") in (' || i_list_17 || '))');
  r_17 := r_sql;
  execute immediate 'SELECT /*+INDEX_ASC(TB_PREDICTED_EVENTS
PK_PREDICTED_EVENTS) */ ID_PROCESSOPERATION,ID,EVENT FROM
TB_PREDICTED_EVENTS WHERE
   ("ID_PROCESSOPERATION") in (' || i_list_17 || ')'
   bulk collect into t_17_id_processoperation,t_17_id,t_17_event;
  pp_add_jobstats(jid, 'TB_PREDICTED_EVENTS', s_start, systimestamp, r_17);
 else
  r_17 := 0;
 end if;
 if r_17 <= 0 then
  pcntfloor := pcntfloor + pcntinc * 5;
 else
  pcntinc_17 := pcntinc / r_17;

 /* TB_PREDICTED_TRACKS */
    e_start_17 := 1;
    while e_start_17 <= r_17 loop
     e_loop_17 := e_start_17;
     i_list_18 := null;
     while e_loop_17 < e_start_17+3 and e_loop_17 <= r_17 loop
      if t_17_id(e_loop_17) is not null then
       if i_list_18 is not null then
        i_list_18 := i_list_18||',('||to_char(t_17_id(e_loop_17))||')';
       else
        i_list_18 := '('||to_char(t_17_id(e_loop_17))||')';
       end if;
      end if;
      e_loop_17 := e_loop_17+1;
     end loop;
     rowdelta_18 := e_loop_17 - e_start_17;
     pcntfloor := pcntfloor + pcntinc_17 * rowdelta_18;
     e_start_17 := e_loop_17;
     if i_list_18 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_PREDICTED_TRACKS with x_id = '
|| TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_PREDICTED_TRACKS ' || ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_sql := pf_execute_nonquery('INSERT INTO PV_PREDICTED_TRACKS@' || dbx
|| ' ("ID_EVENT", "TRACK", "POSZ", "POSX", "POSY", "SLOPEX", "SLOPEY",
"FRAME", "POSTOL1", "POSTOL2", "SLOPETOL1", "SLOPETOL2")
      (SELECT /*+INDEX_ASC(TB_PREDICTED_TRACKS PK_PREDICTED_TRACKS) */
"ID_EVENT", "TRACK", "POSZ", "POSX", "POSY", "SLOPEX", "SLOPEY", "FRAME",
"POSTOL1", "POSTOL2", "SLOPETOL1", "SLOPETOL2" FROM TB_PREDICTED_TRACKS
WHERE
      ("ID_EVENT") in (' || i_list_18 || '))');
     r_18 := r_sql;
     pp_add_jobstats(jid, 'TB_PREDICTED_TRACKS', s_start, systimestamp,
r_18);
    else
     r_18 := 0;
    end if;
   end loop;

 /* TB_PREDICTED_BRICKS */
    e_start_17 := 1;
    while e_start_17 <= r_17 loop
     e_loop_17 := e_start_17;
     i_list_19 := null;
     while e_loop_17 < e_start_17+3 and e_loop_17 <= r_17 loop
      if t_17_id(e_loop_17) is not null then
       if i_list_19 is not null then
        i_list_19 := i_list_19||',('||to_char(t_17_id(e_loop_17))||')';
       else
        i_list_19 := '('||to_char(t_17_id(e_loop_17))||')';
       end if;
      end if;
      e_loop_17 := e_loop_17+1;
     end loop;
     rowdelta_19 := e_loop_17 - e_start_17;
     pcntfloor := pcntfloor + pcntinc_17 * rowdelta_19;
     e_start_17 := e_loop_17;
     if i_list_19 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_PREDICTED_BRICKS with x_id = '
|| TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_PREDICTED_BRICKS ' || ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_sql := pf_execute_nonquery('INSERT INTO PV_PREDICTED_BRICKS@' || dbx
|| ' ("ID_EVENT", "ID_EVENTBRICK", "PROBABILITY")
      (SELECT /*+INDEX_ASC(TB_PREDICTED_BRICKS PK_PREDICTED_BRICKS) */
"ID_EVENT", "ID_EVENTBRICK", "PROBABILITY" FROM TB_PREDICTED_BRICKS WHERE
      ("ID_EVENT") in (' || i_list_19 || '))');
     r_19 := r_sql;
     pp_add_jobstats(jid, 'TB_PREDICTED_BRICKS', s_start, systimestamp,
r_19);
    else
     r_19 := 0;
    end if;
   end loop;

 /* TB_PEANUT_HITS */
    e_start_17 := 1;
    while e_start_17 <= r_17 loop
     e_loop_17 := e_start_17;
     i_list_20 := null;
     while e_loop_17 < e_start_17+3 and e_loop_17 <= r_17 loop
      if t_17_id(e_loop_17) is not null then
       if i_list_20 is not null then
        i_list_20 := i_list_20||',('||to_char(t_17_id(e_loop_17))||')';
       else
        i_list_20 := '('||to_char(t_17_id(e_loop_17))||')';
       end if;
      end if;
      e_loop_17 := e_loop_17+1;
     end loop;
     rowdelta_20 := e_loop_17 - e_start_17;
     pcntfloor := pcntfloor + pcntinc_17 * rowdelta_20;
     e_start_17 := e_loop_17;
     if i_list_20 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_PEANUT_HITS with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' # TB_PEANUT_HITS '
|| ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_sql := pf_execute_nonquery('INSERT INTO PV_PEANUT_HITS@' || dbx || '
("ID_EVENT", "PLANE_ID", "HIT_ID", "TCOORD", "Z", "BRIGHTNESS", "CCDX",
"CCDY", "PROJ_ID", "II_CHAIN_ID")
      (SELECT /*+INDEX_ASC(TB_PEANUT_HITS PK_PEANUT_HITS) */ "ID_EVENT",
"PLANE_ID", "HIT_ID", "TCOORD", "Z", "BRIGHTNESS", "CCDX", "CCDY",
"PROJ_ID", "II_CHAIN_ID" FROM TB_PEANUT_HITS WHERE
      ("ID_EVENT") in (' || i_list_20 || '))');
     r_20 := r_sql;
     pp_add_jobstats(jid, 'TB_PEANUT_HITS', s_start, systimestamp, r_20);
    else
     r_20 := 0;
    end if;
   end loop;

 /* TB_PEANUT_PREDTRACKS */
    e_start_17 := 1;
    while e_start_17 <= r_17 loop
     e_loop_17 := e_start_17;
     i_list_21 := null;
     while e_loop_17 < e_start_17+3 and e_loop_17 <= r_17 loop
      if t_17_id(e_loop_17) is not null then
       if i_list_21 is not null then
        i_list_21 := i_list_21||',('||to_char(t_17_id(e_loop_17))||')';
       else
        i_list_21 := '('||to_char(t_17_id(e_loop_17))||')';
       end if;
      end if;
      e_loop_17 := e_loop_17+1;
     end loop;
     rowdelta_21 := e_loop_17 - e_start_17;
     pcntfloor := pcntfloor + pcntinc_17 * rowdelta_21;
     e_start_17 := e_loop_17;
     if i_list_21 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_PEANUT_PREDTRACKS with x_id = '
|| TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_PEANUT_PREDTRACKS ' || ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_sql := pf_execute_nonquery('INSERT INTO PV_PEANUT_PREDTRACKS@' || dbx
|| ' ("ID_EVENT", "PROJ_ID", "TRACK_ID", "TRK_ID_X", "TRK_ID_Y", "ACOORD",
"BCOORD", "NHITS", "PLANE_X", "PLANE_Y")
      (SELECT /*+INDEX_ASC(TB_PEANUT_PREDTRACKS PK_PEANUT_PREDTRACKS) */
"ID_EVENT", "PROJ_ID", "TRACK_ID", "TRK_ID_X", "TRK_ID_Y", "ACOORD",
"BCOORD", "NHITS", "PLANE_X", "PLANE_Y" FROM TB_PEANUT_PREDTRACKS WHERE
      ("ID_EVENT") in (' || i_list_21 || '))');
     r_21 := r_sql;
     pp_add_jobstats(jid, 'TB_PEANUT_PREDTRACKS', s_start, systimestamp,
r_21);
    else
     r_21 := 0;
    end if;
   end loop;

 /* TB_PEANUT_TRACKHITLINKS */
    e_start_17 := 1;
    while e_start_17 <= r_17 loop
     e_loop_17 := e_start_17;
     i_list_22 := null;
     while e_loop_17 < e_start_17+3 and e_loop_17 <= r_17 loop
      if t_17_id(e_loop_17) is not null then
       if i_list_22 is not null then
        i_list_22 := i_list_22||',('||to_char(t_17_id(e_loop_17))||')';
       else
        i_list_22 := '('||to_char(t_17_id(e_loop_17))||')';
       end if;
      end if;
      e_loop_17 := e_loop_17+1;
     end loop;
     rowdelta_22 := e_loop_17 - e_start_17;
     pcntfloor := pcntfloor + pcntinc_17 * rowdelta_22;
     e_start_17 := e_loop_17;
     if i_list_22 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_PEANUT_TRACKHITLINKS with x_id
= ' || TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_PEANUT_TRACKHITLINKS ' || ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_sql := pf_execute_nonquery('INSERT INTO PV_PEANUT_TRACKHITLINKS@' ||
dbx || ' ("ID_EVENT", "PROJ_ID", "TRACK_ID", "PLANE_ID", "HIT_ID")
      (SELECT /*+INDEX_ASC(TB_PEANUT_TRACKHITLINKS PK_PEANUT_TRACKHITLINKS)
*/ "ID_EVENT", "PROJ_ID", "TRACK_ID", "PLANE_ID", "HIT_ID" FROM
TB_PEANUT_TRACKHITLINKS WHERE
      ("ID_EVENT") in (' || i_list_22 || '))');
     r_22 := r_sql;
     pp_add_jobstats(jid, 'TB_PEANUT_TRACKHITLINKS', s_start, systimestamp,
r_22);
    else
     r_22 := 0;
    end if;
   end loop;
 end if;

 /* TB_CS_CANDIDATES */
 i_list_23 := null;
 pcntfloor := pcntfloor + pcntinc;
 if t_p_id_eventbrick is not null and t_p_id is not null then
  i_list_23 := '('||to_char(t_p_id_eventbrick)||','||to_char(t_p_id)||')';
  pp_log(logid, dbx, jid, 'Publishing TB_CS_CANDIDATES with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
  pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' # TB_CS_CANDIDATES ' ||
ROUND(100.0*pcntfloor,0) || '%');
  select systimestamp into s_start from dual;
  r_sql := pf_execute_nonquery('INSERT INTO PV_CS_CANDIDATES@' || dbx || '
("ID_EVENTBRICK", "ID_PROCESSOPERATION", "ID_EVENT", "CANDIDATE", "ID")
   (SELECT /*+INDEX_ASC(TB_CS_CANDIDATES PK_CS_CANDIDATES) */
"ID_EVENTBRICK", "ID_PROCESSOPERATION", "ID_EVENT", "CANDIDATE", "ID" FROM
TB_CS_CANDIDATES WHERE
   ("ID_EVENTBRICK","ID_PROCESSOPERATION") in (' || i_list_23 || '))');
  r_23 := r_sql;
  execute immediate 'SELECT /*+INDEX_ASC(TB_CS_CANDIDATES PK_CS_CANDIDATES)
*/ ID_EVENTBRICK,ID_PROCESSOPERATION,ID_EVENT,CANDIDATE,ID FROM
TB_CS_CANDIDATES WHERE
   ("ID_EVENTBRICK","ID_PROCESSOPERATION") in (' || i_list_23 || ')'
   bulk collect into
t_23_id_eventbrick,t_23_id_processoperation,t_23_id_event,t_23_candidate,t_23_id;
  pp_add_jobstats(jid, 'TB_CS_CANDIDATES', s_start, systimestamp, r_23);
 else
  r_23 := 0;
 end if;
 if r_23 <= 0 then
  pcntfloor := pcntfloor + pcntinc * 3;
 else
  pcntinc_23 := pcntinc / r_23;

 /* TB_CS_CANDIDATE_TRACKS */
    e_start_23 := 1;
    while e_start_23 <= r_23 loop
     e_loop_23 := e_start_23;
     i_list_24 := null;
     while e_loop_23 < e_start_23+3 and e_loop_23 <= r_23 loop
      if t_23_id_eventbrick(e_loop_23) is not null and t_23_id(e_loop_23) is
not null then
       if i_list_24 is not null then
        i_list_24 :=
i_list_24||',('||to_char(t_23_id_eventbrick(e_loop_23))||','||to_char(t_23_id(e_loop_23))||')';
       else
        i_list_24 :=
'('||to_char(t_23_id_eventbrick(e_loop_23))||','||to_char(t_23_id(e_loop_23))||')';
       end if;
      end if;
      e_loop_23 := e_loop_23+1;
     end loop;
     rowdelta_24 := e_loop_23 - e_start_23;
     pcntfloor := pcntfloor + pcntinc_23 * rowdelta_24;
     e_start_23 := e_loop_23;
     if i_list_24 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_CS_CANDIDATE_TRACKS with x_id =
' || TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_CS_CANDIDATE_TRACKS ' || ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_sql := pf_execute_nonquery('INSERT INTO PV_CS_CANDIDATE_TRACKS@' ||
dbx || ' ("ID_EVENTBRICK", "ID_CANDIDATE", "ID_ZONE", "SIDE",
"ID_MICROTRACK")
      (SELECT /*+INDEX_ASC(TB_CS_CANDIDATE_TRACKS PK_CS_CANDIDATE_TRACKS) */
"ID_EVENTBRICK", "ID_CANDIDATE", "ID_ZONE", "SIDE", "ID_MICROTRACK" FROM
TB_CS_CANDIDATE_TRACKS WHERE
      ("ID_EVENTBRICK","ID_CANDIDATE") in (' || i_list_24 || '))');
     r_24 := r_sql;
     pp_add_jobstats(jid, 'TB_CS_CANDIDATE_TRACKS', s_start, systimestamp,
r_24);
    else
     r_24 := 0;
    end if;
   end loop;

 /* TB_B_PREDTRACKS_CSCANDS */
    e_start_23 := 1;
    while e_start_23 <= r_23 loop
     e_loop_23 := e_start_23;
     i_list_25 := null;
     while e_loop_23 < e_start_23+3 and e_loop_23 <= r_23 loop
      if t_23_id_eventbrick(e_loop_23) is not null and t_23_id(e_loop_23) is
not null then
       if i_list_25 is not null then
        i_list_25 :=
i_list_25||',('||to_char(t_23_id_eventbrick(e_loop_23))||','||to_char(t_23_id(e_loop_23))||')';
       else
        i_list_25 :=
'('||to_char(t_23_id_eventbrick(e_loop_23))||','||to_char(t_23_id(e_loop_23))||')';
       end if;
      end if;
      e_loop_23 := e_loop_23+1;
     end loop;
     rowdelta_25 := e_loop_23 - e_start_23;
     pcntfloor := pcntfloor + pcntinc_23 * rowdelta_25;
     e_start_23 := e_loop_23;
     if i_list_25 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_B_PREDTRACKS_CSCANDS with x_id
= ' || TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_B_PREDTRACKS_CSCANDS ' || ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_sql := pf_execute_nonquery('INSERT INTO PV_B_PREDTRACKS_CSCANDS@' ||
dbx || ' ("ID_EVENTBRICK", "ID_CANDIDATE", "ID_EVENT", "TRACK")
      (SELECT /*+INDEX_ASC(TB_B_PREDTRACKS_CSCANDS PK_PREDTKS_CSCANDS) */
"ID_EVENTBRICK", "ID_CANDIDATE", "ID_EVENT", "TRACK" FROM
TB_B_PREDTRACKS_CSCANDS WHERE
      ("ID_EVENTBRICK","ID_CANDIDATE") in (' || i_list_25 || '))');
     r_25 := r_sql;
     pp_add_jobstats(jid, 'TB_B_PREDTRACKS_CSCANDS', s_start, systimestamp,
r_25);
    else
     r_25 := 0;
    end if;
   end loop;

 /* TB_CS_CANDIDATE_CHECKS */
    e_start_23 := 1;
    while e_start_23 <= r_23 loop
     e_loop_23 := e_start_23;
     i_list_26 := null;
     while e_loop_23 < e_start_23+3 and e_loop_23 <= r_23 loop
      if t_23_id_eventbrick(e_loop_23) is not null and t_23_id(e_loop_23) is
not null then
       if i_list_26 is not null then
        i_list_26 :=
i_list_26||',('||to_char(t_23_id_eventbrick(e_loop_23))||','||to_char(t_23_id(e_loop_23))||')';
       else
        i_list_26 :=
'('||to_char(t_23_id_eventbrick(e_loop_23))||','||to_char(t_23_id(e_loop_23))||')';
       end if;
      end if;
      e_loop_23 := e_loop_23+1;
     end loop;
     rowdelta_26 := e_loop_23 - e_start_23;
     pcntfloor := pcntfloor + pcntinc_23 * rowdelta_26;
     e_start_23 := e_loop_23;
     if i_list_26 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_CS_CANDIDATE_CHECKS with x_id =
' || TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_CS_CANDIDATE_CHECKS ' || ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_sql := pf_execute_nonquery('INSERT INTO PV_CS_CANDIDATE_CHECKS@' ||
dbx || ' ("ID_EVENTBRICK", "ID_CANDIDATE", "ID_PROCESSOPERATION", "ID_ZONE",
"SIDE", "GRAINS", "POSX", "POSY", "SLOPEX", "SLOPEY")
      (SELECT /*+INDEX_ASC(TB_CS_CANDIDATE_CHECKS PK_CS_CANDIDATE_CHECKS) */
"ID_EVENTBRICK", "ID_CANDIDATE", "ID_PROCESSOPERATION", "ID_ZONE", "SIDE",
"GRAINS", "POSX", "POSY", "SLOPEX", "SLOPEY" FROM TB_CS_CANDIDATE_CHECKS
WHERE
      ("ID_EVENTBRICK","ID_CANDIDATE") in (' || i_list_26 || '))');
     r_26 := r_sql;
     pp_add_jobstats(jid, 'TB_CS_CANDIDATE_CHECKS', s_start, systimestamp,
r_26);
    else
     r_26 := 0;
    end if;
   end loop;
 end if;

 /* TB_SCANBACK_PATHS */
 i_list_27 := null;
 pcntfloor := pcntfloor + pcntinc;
 if t_p_id_eventbrick is not null and t_p_id is not null then
  i_list_27 := '('||to_char(t_p_id_eventbrick)||','||to_char(t_p_id)||')';
  pp_log(logid, dbx, jid, 'Publishing TB_SCANBACK_PATHS with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
  pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' # TB_SCANBACK_PATHS '
|| ROUND(100.0*pcntfloor,0) || '%');
  select systimestamp into s_start from dual;
  r_sql := pf_execute_nonquery('INSERT INTO PV_SCANBACK_PATHS@' || dbx || '
("ID_EVENTBRICK", "ID_PROCESSOPERATION", "PATH", "ID", "ID_START_PLATE",
"ID_FORK_PATH", "ID_CANCEL_PLATE")
   (SELECT /*+INDEX_ASC(TB_SCANBACK_PATHS PK_SCANBACK_PATHS) */
"ID_EVENTBRICK", "ID_PROCESSOPERATION", "PATH", "ID", "ID_START_PLATE",
"ID_FORK_PATH", "ID_CANCEL_PLATE" FROM TB_SCANBACK_PATHS WHERE
   ("ID_EVENTBRICK","ID_PROCESSOPERATION") in (' || i_list_27 || '))');
  r_27 := r_sql;
  execute immediate 'SELECT /*+INDEX_ASC(TB_SCANBACK_PATHS
PK_SCANBACK_PATHS) */ ID_EVENTBRICK,ID_PROCESSOPERATION,ID,PATH FROM
TB_SCANBACK_PATHS WHERE
   ("ID_EVENTBRICK","ID_PROCESSOPERATION") in (' || i_list_27 || ')'
   bulk collect into
t_27_id_eventbrick,t_27_id_processoperation,t_27_id,t_27_path;
  pp_add_jobstats(jid, 'TB_SCANBACK_PATHS', s_start, systimestamp, r_27);
 else
  r_27 := 0;
 end if;
 if r_27 <= 0 then
  pcntfloor := pcntfloor + pcntinc * 5;
 else
  pcntinc_27 := pcntinc / r_27;

 /* TB_SCANBACK_PREDICTIONS */
    e_start_27 := 1;
    while e_start_27 <= r_27 loop
     e_loop_27 := e_start_27;
     i_list_28 := null;
     while e_loop_27 < e_start_27+3 and e_loop_27 <= r_27 loop
      if t_27_id_eventbrick(e_loop_27) is not null and t_27_id(e_loop_27) is
not null then
       if i_list_28 is not null then
        i_list_28 :=
i_list_28||',('||to_char(t_27_id_eventbrick(e_loop_27))||','||to_char(t_27_id(e_loop_27))||')';
       else
        i_list_28 :=
'('||to_char(t_27_id_eventbrick(e_loop_27))||','||to_char(t_27_id(e_loop_27))||')';
       end if;
      end if;
      e_loop_27 := e_loop_27+1;
     end loop;
     rowdelta_28 := e_loop_27 - e_start_27;
     pcntfloor := pcntfloor + pcntinc_27 * rowdelta_28;
     e_start_27 := e_loop_27;
     if i_list_28 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_SCANBACK_PREDICTIONS with x_id
= ' || TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_SCANBACK_PREDICTIONS ' || ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_sql := pf_execute_nonquery('INSERT INTO PV_SCANBACK_PREDICTIONS@' ||
dbx || ' ("ID_EVENTBRICK", "ID_PATH", "ID_PLATE", "POSX", "POSY", "SLOPEX",
"SLOPEY", "POSTOL1", "POSTOL2", "SLOPETOL1", "SLOPETOL2", "FRAME",
"ID_ZONE", "ID_CANDIDATE", "DAMAGED", "ISMANUAL")
      (SELECT /*+INDEX_ASC(TB_SCANBACK_PREDICTIONS PK_SCANBACK_PREDICTIONS)
*/ "ID_EVENTBRICK", "ID_PATH", "ID_PLATE", "POSX", "POSY", "SLOPEX",
"SLOPEY", "POSTOL1", "POSTOL2", "SLOPETOL1", "SLOPETOL2", "FRAME",
"ID_ZONE", "ID_CANDIDATE", "DAMAGED", "ISMANUAL" FROM
TB_SCANBACK_PREDICTIONS WHERE
      ("ID_EVENTBRICK","ID_PATH") in (' || i_list_28 || '))');
     r_28 := r_sql;
     pp_add_jobstats(jid, 'TB_SCANBACK_PREDICTIONS', s_start, systimestamp,
r_28);
    else
     r_28 := 0;
    end if;
   end loop;

 /* TB_B_SBPATHS_SBPATHS */
    e_start_27 := 1;
    while e_start_27 <= r_27 loop
     e_loop_27 := e_start_27;
     i_list_29 := null;
     while e_loop_27 < e_start_27+3 and e_loop_27 <= r_27 loop
      if t_27_id_eventbrick(e_loop_27) is not null and
t_27_id_processoperation(e_loop_27) is not null and t_27_path(e_loop_27) is
not null then
       if i_list_29 is not null then
        i_list_29 :=
i_list_29||',('||to_char(t_27_id_eventbrick(e_loop_27))||','||to_char(t_27_id_processoperation(e_loop_27))||','||to_char(t_27_path(e_loop_27))||')';
       else
        i_list_29 :=
'('||to_char(t_27_id_eventbrick(e_loop_27))||','||to_char(t_27_id_processoperation(e_loop_27))||','||to_char(t_27_path(e_loop_27))||')';
       end if;
      end if;
      e_loop_27 := e_loop_27+1;
     end loop;
     rowdelta_29 := e_loop_27 - e_start_27;
     pcntfloor := pcntfloor + pcntinc_27 * rowdelta_29;
     e_start_27 := e_loop_27;
     if i_list_29 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_B_SBPATHS_SBPATHS with x_id = '
|| TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_B_SBPATHS_SBPATHS ' || ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_sql := pf_execute_nonquery('INSERT INTO PV_B_SBPATHS_SBPATHS@' || dbx
|| ' ("ID_PARENT_EVENTBRICK", "ID_PARENT_SB_PROCOPID", "PARENT_PATH",
"ID_EVENTBRICK", "ID_SCANBACK_PROCOPID", "PATH")
      (SELECT /*+INDEX_ASC(TB_B_SBPATHS_SBPATHS IF_SBPATHS_SSBSSB_2) */
"ID_PARENT_EVENTBRICK", "ID_PARENT_SB_PROCOPID", "PARENT_PATH",
"ID_EVENTBRICK", "ID_SCANBACK_PROCOPID", "PATH" FROM TB_B_SBPATHS_SBPATHS
WHERE
      ("ID_EVENTBRICK","ID_SCANBACK_PROCOPID","PATH") in (' || i_list_29 ||
'))');
     r_29 := r_sql;
     pp_add_jobstats(jid, 'TB_B_SBPATHS_SBPATHS', s_start, systimestamp,
r_29);
    else
     r_29 := 0;
    end if;
   end loop;

 /* TB_B_VOLTKS_SBPATHS */
    e_start_27 := 1;
    while e_start_27 <= r_27 loop
     e_loop_27 := e_start_27;
     i_list_30 := null;
     while e_loop_27 < e_start_27+3 and e_loop_27 <= r_27 loop
      if t_27_id_eventbrick(e_loop_27) is not null and
t_27_id_processoperation(e_loop_27) is not null and t_27_path(e_loop_27) is
not null then
       if i_list_30 is not null then
        i_list_30 :=
i_list_30||',('||to_char(t_27_id_eventbrick(e_loop_27))||','||to_char(t_27_id_processoperation(e_loop_27))||','||to_char(t_27_path(e_loop_27))||')';
       else
        i_list_30 :=
'('||to_char(t_27_id_eventbrick(e_loop_27))||','||to_char(t_27_id_processoperation(e_loop_27))||','||to_char(t_27_path(e_loop_27))||')';
       end if;
      end if;
      e_loop_27 := e_loop_27+1;
     end loop;
     rowdelta_30 := e_loop_27 - e_start_27;
     pcntfloor := pcntfloor + pcntinc_27 * rowdelta_30;
     e_start_27 := e_loop_27;
     if i_list_30 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_B_VOLTKS_SBPATHS with x_id = '
|| TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_B_VOLTKS_SBPATHS ' || ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_sql := pf_execute_nonquery('INSERT INTO PV_B_VOLTKS_SBPATHS@' || dbx
|| ' ("ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_OPTION", "ID_VOLUMETRACK",
"EXTENT", "ID_SCANBACK_PROCOPID", "PATH")
      (SELECT /*+INDEX_ASC(TB_B_VOLTKS_SBPATHS IF_SBPATHS_VTKSSB) */
"ID_EVENTBRICK", "ID_RECONSTRUCTION", "ID_OPTION", "ID_VOLUMETRACK",
"EXTENT", "ID_SCANBACK_PROCOPID", "PATH" FROM TB_B_VOLTKS_SBPATHS WHERE
      ("ID_EVENTBRICK","ID_SCANBACK_PROCOPID","PATH") in (' || i_list_30 ||
'))');
     r_30 := r_sql;
     pp_add_jobstats(jid, 'TB_B_VOLTKS_SBPATHS', s_start, systimestamp,
r_30);
    else
     r_30 := 0;
    end if;
   end loop;

 /* TB_B_CSCANDS_SBPATHS */
    e_start_27 := 1;
    while e_start_27 <= r_27 loop
     e_loop_27 := e_start_27;
     i_list_31 := null;
     while e_loop_27 < e_start_27+3 and e_loop_27 <= r_27 loop
      if t_27_id_eventbrick(e_loop_27) is not null and
t_27_id_processoperation(e_loop_27) is not null and t_27_path(e_loop_27) is
not null then
       if i_list_31 is not null then
        i_list_31 :=
i_list_31||',('||to_char(t_27_id_eventbrick(e_loop_27))||','||to_char(t_27_id_processoperation(e_loop_27))||','||to_char(t_27_path(e_loop_27))||')';
       else
        i_list_31 :=
'('||to_char(t_27_id_eventbrick(e_loop_27))||','||to_char(t_27_id_processoperation(e_loop_27))||','||to_char(t_27_path(e_loop_27))||')';
       end if;
      end if;
      e_loop_27 := e_loop_27+1;
     end loop;
     rowdelta_31 := e_loop_27 - e_start_27;
     pcntfloor := pcntfloor + pcntinc_27 * rowdelta_31;
     e_start_27 := e_loop_27;
     if i_list_31 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_B_CSCANDS_SBPATHS with x_id = '
|| TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_B_CSCANDS_SBPATHS ' || ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_sql := pf_execute_nonquery('INSERT INTO PV_B_CSCANDS_SBPATHS@' || dbx
|| ' ("ID_CS_EVENTBRICK", "ID_CANDIDATE", "ID_EVENTBRICK",
"ID_SCANBACK_PROCOPID", "PATH")
      (SELECT /*+INDEX_ASC(TB_B_CSCANDS_SBPATHS IX_CSCANDS_SBPATHS) */
"ID_CS_EVENTBRICK", "ID_CANDIDATE", "ID_EVENTBRICK", "ID_SCANBACK_PROCOPID",
"PATH" FROM TB_B_CSCANDS_SBPATHS WHERE
      ("ID_EVENTBRICK","ID_SCANBACK_PROCOPID","PATH") in (' || i_list_31 ||
'))');
     r_31 := r_sql;
     pp_add_jobstats(jid, 'TB_B_CSCANDS_SBPATHS', s_start, systimestamp,
r_31);
    else
     r_31 := 0;
    end if;
   end loop;

 /* TB_B_PREDTRACKS_SBPATHS */
    e_start_27 := 1;
    while e_start_27 <= r_27 loop
     e_loop_27 := e_start_27;
     i_list_32 := null;
     while e_loop_27 < e_start_27+3 and e_loop_27 <= r_27 loop
      if t_27_id_eventbrick(e_loop_27) is not null and
t_27_id_processoperation(e_loop_27) is not null and t_27_path(e_loop_27) is
not null then
       if i_list_32 is not null then
        i_list_32 :=
i_list_32||',('||to_char(t_27_id_eventbrick(e_loop_27))||','||to_char(t_27_id_processoperation(e_loop_27))||','||to_char(t_27_path(e_loop_27))||')';
       else
        i_list_32 :=
'('||to_char(t_27_id_eventbrick(e_loop_27))||','||to_char(t_27_id_processoperation(e_loop_27))||','||to_char(t_27_path(e_loop_27))||')';
       end if;
      end if;
      e_loop_27 := e_loop_27+1;
     end loop;
     rowdelta_32 := e_loop_27 - e_start_27;
     pcntfloor := pcntfloor + pcntinc_27 * rowdelta_32;
     e_start_27 := e_loop_27;
     if i_list_32 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_B_PREDTRACKS_SBPATHS with x_id
= ' || TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_B_PREDTRACKS_SBPATHS ' || ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_sql := pf_execute_nonquery('INSERT INTO PV_B_PREDTRACKS_SBPATHS@' ||
dbx || ' ("ID_EVENT", "TRACK", "ID_EVENTBRICK", "ID_SCANBACK_PROCOPID",
"PATH")
      (SELECT /*+INDEX_ASC(TB_B_PREDTRACKS_SBPATHS IX_PREDTRACKS_SBPATHS) */
"ID_EVENT", "TRACK", "ID_EVENTBRICK", "ID_SCANBACK_PROCOPID", "PATH" FROM
TB_B_PREDTRACKS_SBPATHS WHERE
      ("ID_EVENTBRICK","ID_SCANBACK_PROCOPID","PATH") in (' || i_list_32 ||
'))');
     r_32 := r_sql;
     pp_add_jobstats(jid, 'TB_B_PREDTRACKS_SBPATHS', s_start, systimestamp,
r_32);
    else
     r_32 := 0;
    end if;
   end loop;
 end if;

 /* TB_VOLUMES */
 i_list_33 := null;
 pcntfloor := pcntfloor + pcntinc;
 if t_p_id_eventbrick is not null and t_p_id is not null then
  i_list_33 := '('||to_char(t_p_id_eventbrick)||','||to_char(t_p_id)||')';
  pp_log(logid, dbx, jid, 'Publishing TB_VOLUMES with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
  pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' # TB_VOLUMES ' ||
ROUND(100.0*pcntfloor,0) || '%');
  select systimestamp into s_start from dual;
  r_sql := pf_execute_nonquery('INSERT INTO PV_VOLUMES@' || dbx || '
("ID_EVENTBRICK", "VOLUME", "ID_PROCESSOPERATION", "ID")
   (SELECT /*+INDEX_ASC(TB_VOLUMES PK_VOLUMES) */ "ID_EVENTBRICK", "VOLUME",
"ID_PROCESSOPERATION", "ID" FROM TB_VOLUMES WHERE
   ("ID_EVENTBRICK","ID_PROCESSOPERATION") in (' || i_list_33 || '))');
  r_33 := r_sql;
  execute immediate 'SELECT /*+INDEX_ASC(TB_VOLUMES PK_VOLUMES) */
ID_EVENTBRICK,ID_PROCESSOPERATION,VOLUME,ID FROM TB_VOLUMES WHERE
   ("ID_EVENTBRICK","ID_PROCESSOPERATION") in (' || i_list_33 || ')'
   bulk collect into
t_33_id_eventbrick,t_33_id_processoperation,t_33_volume,t_33_id;
  pp_add_jobstats(jid, 'TB_VOLUMES', s_start, systimestamp, r_33);
 else
  r_33 := 0;
 end if;
 if r_33 <= 0 then
  pcntfloor := pcntfloor + pcntinc * 2;
 else
  pcntinc_33 := pcntinc / r_33;

 /* TB_VOLUME_SLICES */
    e_start_33 := 1;
    while e_start_33 <= r_33 loop
     e_loop_33 := e_start_33;
     i_list_34 := null;
     while e_loop_33 < e_start_33+3 and e_loop_33 <= r_33 loop
      if t_33_id_eventbrick(e_loop_33) is not null and t_33_id(e_loop_33) is
not null then
       if i_list_34 is not null then
        i_list_34 :=
i_list_34||',('||to_char(t_33_id_eventbrick(e_loop_33))||','||to_char(t_33_id(e_loop_33))||')';
       else
        i_list_34 :=
'('||to_char(t_33_id_eventbrick(e_loop_33))||','||to_char(t_33_id(e_loop_33))||')';
       end if;
      end if;
      e_loop_33 := e_loop_33+1;
     end loop;
     rowdelta_34 := e_loop_33 - e_start_33;
     pcntfloor := pcntfloor + pcntinc_33 * rowdelta_34;
     e_start_33 := e_loop_33;
     if i_list_34 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_VOLUME_SLICES with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' # TB_VOLUME_SLICES
' || ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_sql := pf_execute_nonquery('INSERT INTO PV_VOLUME_SLICES@' || dbx ||
' ("ID_EVENTBRICK", "ID_VOLUME", "ID_PLATE", "MINX", "MAXX", "MINY", "MAXY",
"ID_ZONE", "DAMAGED")
      (SELECT /*+INDEX_ASC(TB_VOLUME_SLICES PK_VOLUME_SLICES) */
"ID_EVENTBRICK", "ID_VOLUME", "ID_PLATE", "MINX", "MAXX", "MINY", "MAXY",
"ID_ZONE", "DAMAGED" FROM TB_VOLUME_SLICES WHERE
      ("ID_EVENTBRICK","ID_VOLUME") in (' || i_list_34 || '))');
     r_34 := r_sql;
     pp_add_jobstats(jid, 'TB_VOLUME_SLICES', s_start, systimestamp, r_34);
    else
     r_34 := 0;
    end if;
   end loop;

 /* TB_B_SBPATHS_VOLUMES */
    e_start_33 := 1;
    while e_start_33 <= r_33 loop
     e_loop_33 := e_start_33;
     i_list_35 := null;
     while e_loop_33 < e_start_33+3 and e_loop_33 <= r_33 loop
      if t_33_id_eventbrick(e_loop_33) is not null and
t_33_id_processoperation(e_loop_33) is not null and t_33_volume(e_loop_33)
is not null then
       if i_list_35 is not null then
        i_list_35 :=
i_list_35||',('||to_char(t_33_id_eventbrick(e_loop_33))||','||to_char(t_33_id_processoperation(e_loop_33))||','||to_char(t_33_volume(e_loop_33))||')';
       else
        i_list_35 :=
'('||to_char(t_33_id_eventbrick(e_loop_33))||','||to_char(t_33_id_processoperation(e_loop_33))||','||to_char(t_33_volume(e_loop_33))||')';
       end if;
      end if;
      e_loop_33 := e_loop_33+1;
     end loop;
     rowdelta_35 := e_loop_33 - e_start_33;
     pcntfloor := pcntfloor + pcntinc_33 * rowdelta_35;
     e_start_33 := e_loop_33;
     if i_list_35 is not null then
      pp_log(logid, dbx, jid, 'Publishing TB_B_SBPATHS_VOLUMES with x_id = '
|| TO_CHAR(x_id) || ' DBLINK = ' || dbx);
      pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_B_SBPATHS_VOLUMES ' || ROUND(100.0*pcntfloor,0) || '%');
     select systimestamp into s_start from dual;
     r_sql := pf_execute_nonquery('INSERT INTO PV_B_SBPATHS_VOLUMES@' || dbx
|| ' ("ID_EVENTBRICK", "ID_SCANBACK_PROCOPID", "PATH",
"ID_VOLUMESCAN_PROCOPID", "VOLUME", "ID_PLATE")
      (SELECT /*+INDEX_ASC(TB_B_SBPATHS_VOLUMES IF_VOL_SBPVOL) */
"ID_EVENTBRICK", "ID_SCANBACK_PROCOPID", "PATH", "ID_VOLUMESCAN_PROCOPID",
"VOLUME", "ID_PLATE" FROM TB_B_SBPATHS_VOLUMES WHERE
      ("ID_EVENTBRICK","ID_VOLUMESCAN_PROCOPID","VOLUME") in (' || i_list_35
|| '))');
     r_35 := r_sql;
     pp_add_jobstats(jid, 'TB_B_SBPATHS_VOLUMES', s_start, systimestamp,
r_35);
    else
     r_35 := 0;
    end if;
   end loop;
 end if;

 /* TB_SCANBACK_CHECKRESULTS */
 i_list_36 := null;
 pcntfloor := pcntfloor + pcntinc;
 if t_p_id_eventbrick is not null and t_p_id is not null then
  i_list_36 := '('||to_char(t_p_id_eventbrick)||','||to_char(t_p_id)||')';
  pp_log(logid, dbx, jid, 'Publishing TB_SCANBACK_CHECKRESULTS with x_id = '
|| TO_CHAR(x_id) || ' DBLINK = ' || dbx);
  pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_SCANBACK_CHECKRESULTS ' || ROUND(100.0*pcntfloor,0) || '%');
  select systimestamp into s_start from dual;
  r_sql := pf_execute_nonquery('INSERT INTO PV_SCANBACK_CHECKRESULTS@' ||
dbx || ' ("ID_EVENTBRICK", "ID_PROCESSOPERATION", "ID_PATH", "ID_PLATE",
"RESULT")
   (SELECT /*+INDEX_ASC(TB_SCANBACK_CHECKRESULTS PK_SCANBACK_CHECKRESULTS)
*/ "ID_EVENTBRICK", "ID_PROCESSOPERATION", "ID_PATH", "ID_PLATE", "RESULT"
FROM TB_SCANBACK_CHECKRESULTS WHERE
   ("ID_EVENTBRICK","ID_PROCESSOPERATION") in (' || i_list_36 || '))');
  r_36 := r_sql;
  pp_add_jobstats(jid, 'TB_SCANBACK_CHECKRESULTS', s_start, systimestamp,
r_36);
 else
  r_36 := 0;
 end if;

 /* TB_PLATE_DAMAGENOTICES */
 i_list_37 := null;
 pcntfloor := pcntfloor + pcntinc;
 if t_p_id_eventbrick is not null and t_p_id is not null then
  i_list_37 := '('||to_char(t_p_id_eventbrick)||','||to_char(t_p_id)||')';
  pp_log(logid, dbx, jid, 'Publishing TB_PLATE_DAMAGENOTICES with x_id = '
|| TO_CHAR(x_id) || ' DBLINK = ' || dbx);
  pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_PLATE_DAMAGENOTICES ' || ROUND(100.0*pcntfloor,0) || '%');
  select systimestamp into s_start from dual;
  r_sql := pf_execute_nonquery('INSERT INTO PV_PLATE_DAMAGENOTICES@' || dbx
|| ' ("ID_EVENTBRICK", "ID_PLATE", "ID_PROCESSOPERATION", "DETECTIONTIME",
"DAMAGED")
   (SELECT /*+INDEX_ASC(TB_PLATE_DAMAGENOTICES PK_PLATE_DAMAGENOTICES) */
"ID_EVENTBRICK", "ID_PLATE", "ID_PROCESSOPERATION", "DETECTIONTIME",
"DAMAGED" FROM TB_PLATE_DAMAGENOTICES WHERE
   ("ID_EVENTBRICK","ID_PROCESSOPERATION") in (' || i_list_37 || '))');
  r_37 := r_sql;
  pp_add_jobstats(jid, 'TB_PLATE_DAMAGENOTICES', s_start, systimestamp,
r_37);
 else
  r_37 := 0;
 end if;

 /* TB_PLATE_CALIBRATIONS */
 i_list_38 := null;
 pcntfloor := pcntfloor + pcntinc;
 if t_p_id_eventbrick is not null and t_p_id is not null then
  i_list_38 := '('||to_char(t_p_id_eventbrick)||','||to_char(t_p_id)||')';
  pp_log(logid, dbx, jid, 'Publishing TB_PLATE_CALIBRATIONS with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
  pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' # TB_PLATE_CALIBRATIONS
' || ROUND(100.0*pcntfloor,0) || '%');
  select systimestamp into s_start from dual;
  r_sql := pf_execute_nonquery('INSERT INTO PV_PLATE_CALIBRATIONS@' || dbx
|| ' ("ID_EVENTBRICK", "ID_PLATE", "ID_PROCESSOPERATION", "Z", "MAPXX",
"MAPXY", "MAPYX", "MAPYY", "MAPDX", "MAPDY", "MARKSETS")
   (SELECT /*+INDEX_ASC(TB_PLATE_CALIBRATIONS PK_PLATE_CALIBRATIONS) */
"ID_EVENTBRICK", "ID_PLATE", "ID_PROCESSOPERATION", "Z", "MAPXX", "MAPXY",
"MAPYX", "MAPYY", "MAPDX", "MAPDY", "MARKSETS" FROM TB_PLATE_CALIBRATIONS
WHERE
   ("ID_EVENTBRICK","ID_PROCESSOPERATION") in (' || i_list_38 || '))');
  r_38 := r_sql;
  pp_add_jobstats(jid, 'TB_PLATE_CALIBRATIONS', s_start, systimestamp,
r_38);
 else
  r_38 := 0;
 end if;

 /* TB_PATTERN_MATCH */
 i_list_39 := null;
 pcntfloor := pcntfloor + pcntinc;
 if t_p_id_eventbrick is not null and t_p_id is not null then
  i_list_39 := '('||to_char(t_p_id_eventbrick)||','||to_char(t_p_id)||')';
  pp_log(logid, dbx, jid, 'Publishing TB_PATTERN_MATCH with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
  pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' # TB_PATTERN_MATCH ' ||
ROUND(100.0*pcntfloor,0) || '%');
  select systimestamp into s_start from dual;
  r_sql := pf_execute_nonquery('INSERT INTO PV_PATTERN_MATCH@' || dbx || '
("ID_EVENTBRICK", "ID_FIRSTZONE", "ID_SECONDZONE", "ID_INFIRSTZONE",
"ID_INSECONDZONE", "ID_PROCESSOPERATION")
   (SELECT /*+INDEX_ASC(TB_PATTERN_MATCH PK_PATTERN_MATCH) */
"ID_EVENTBRICK", "ID_FIRSTZONE", "ID_SECONDZONE", "ID_INFIRSTZONE",
"ID_INSECONDZONE", "ID_PROCESSOPERATION" FROM TB_PATTERN_MATCH WHERE
   ("ID_EVENTBRICK","ID_PROCESSOPERATION") in (' || i_list_39 || '))');
  r_39 := r_sql;
  pp_add_jobstats(jid, 'TB_PATTERN_MATCH', s_start, systimestamp, r_39);
 else
  r_39 := 0;
 end if;

 /* TB_CS_CANDIDATE_CHECKS */
 i_list_40 := null;
 pcntfloor := pcntfloor + pcntinc;
 if t_p_id_eventbrick is not null and t_p_id is not null then
  i_list_40 := '('||to_char(t_p_id_eventbrick)||','||to_char(t_p_id)||')';
  pp_log(logid, dbx, jid, 'Publishing TB_CS_CANDIDATE_CHECKS with x_id = '
|| TO_CHAR(x_id) || ' DBLINK = ' || dbx);
  pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_CS_CANDIDATE_CHECKS ' || ROUND(100.0*pcntfloor,0) || '%');
  select systimestamp into s_start from dual;
  r_sql := pf_execute_nonquery('INSERT INTO PV_CS_CANDIDATE_CHECKS@' || dbx
|| ' ("ID_EVENTBRICK", "ID_CANDIDATE", "ID_PROCESSOPERATION", "ID_ZONE",
"SIDE", "GRAINS", "POSX", "POSY", "SLOPEX", "SLOPEY")
   (SELECT /*+INDEX_ASC(TB_CS_CANDIDATE_CHECKS PK_CS_CANDIDATE_CHECKS) */
"ID_EVENTBRICK", "ID_CANDIDATE", "ID_PROCESSOPERATION", "ID_ZONE", "SIDE",
"GRAINS", "POSX", "POSY", "SLOPEX", "SLOPEY" FROM TB_CS_CANDIDATE_CHECKS
WHERE
   ("ID_EVENTBRICK","ID_PROCESSOPERATION") in (' || i_list_40 || '))');
  r_40 := r_sql;
  pp_add_jobstats(jid, 'TB_CS_CANDIDATE_CHECKS', s_start, systimestamp,
r_40);
 else
  r_40 := 0;
 end if;

 /* TB_PEANUT_PREDTRACKBRICKS */
 i_list_41 := null;
 pcntfloor := pcntfloor + pcntinc;
 if t_p_id is not null then
  i_list_41 := '('||to_char(t_p_id)||')';
  pp_log(logid, dbx, jid, 'Publishing TB_PEANUT_PREDTRACKBRICKS with x_id =
' || TO_CHAR(x_id) || ' DBLINK = ' || dbx);
  pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' #
TB_PEANUT_PREDTRACKBRICKS ' || ROUND(100.0*pcntfloor,0) || '%');
  select systimestamp into s_start from dual;
  r_sql := pf_execute_nonquery('INSERT INTO PV_PEANUT_PREDTRACKBRICKS@' ||
dbx || ' ("ID_PROCESSOPERATION", "ID_EVENTBRICK", "ID_EVENT", "TRACK")
   (SELECT /*+INDEX_ASC(TB_PEANUT_PREDTRACKBRICKS PK_PEANUT_PREDTRACKBRICKS)
*/ "ID_PROCESSOPERATION", "ID_EVENTBRICK", "ID_EVENT", "TRACK" FROM
TB_PEANUT_PREDTRACKBRICKS WHERE
   ("ID_PROCESSOPERATION") in (' || i_list_41 || '))');
  r_41 := r_sql;
  pp_add_jobstats(jid, 'TB_PEANUT_PREDTRACKBRICKS', s_start, systimestamp,
r_41);
 else
  r_41 := 0;
 end if;

 /* TB_PEANUT_BRICKALIGN */
 i_list_42 := null;
 pcntfloor := pcntfloor + pcntinc;
 if t_p_id is not null then
  i_list_42 := '('||to_char(t_p_id)||')';
  pp_log(logid, dbx, jid, 'Publishing TB_PEANUT_BRICKALIGN with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
  pp_set_jobstatus(jid, 'RUNNING', 'OP' || x_id || ' # TB_PEANUT_BRICKALIGN
' || ROUND(100.0*pcntfloor,0) || '%');
  select systimestamp into s_start from dual;
  r_sql := pf_execute_nonquery('INSERT INTO PV_PEANUT_BRICKALIGN@' || dbx ||
' ("ID_EVENTBRICK", "ID_PROCESSOPERATION", "TDX", "TDY", "TDZ", "SDX",
"SDY", "TXX", "TXY", "TYX", "TYY", "SIGMAPOSX", "SIGMAPOSY", "SIGMASLOPEX",
"SIGMASLOPEY")
   (SELECT /*+INDEX_ASC(TB_PEANUT_BRICKALIGN PK_PNT_BKALGN) */
"ID_EVENTBRICK", "ID_PROCESSOPERATION", "TDX", "TDY", "TDZ", "SDX", "SDY",
"TXX", "TXY", "TYX", "TYY", "SIGMAPOSX", "SIGMAPOSY", "SIGMASLOPEX",
"SIGMASLOPEY" FROM TB_PEANUT_BRICKALIGN WHERE
   ("ID_PROCESSOPERATION") in (' || i_list_42 || '))');
  r_42 := r_sql;
  pp_add_jobstats(jid, 'TB_PEANUT_BRICKALIGN', s_start, systimestamp, r_42);
 else
  r_42 := 0;
 end if;

 pp_set_jobstatus(jid, 'RUNNING', 'OP ' || x_id || ' # Completed ' ||
ROUND(100.0 * pcntceil, 0) || '%');
 pp_log(logid, dbx, jid, 'Committing changes in PP_PUBLISH_OP with x_id = '
|| TO_CHAR(x_id) || ' DBLINK = ' || dbx);
 commit;
 if ischild = false then
  r_sql := pf_execute_nonquery('call operapub.pp_finish_writing_object@' ||
dbx || '(''OPERATION'', ' || x_id || ')');
  commit;
 end if;
 pp_log(logid, dbx, jid, 'Completed PP_PUBLISH_OP with x_id = ' ||
TO_CHAR(x_id) || ' DBLINK = ' || dbx);
end;