1. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 4/6/2018 7:09:02 AM Central Daylight Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.

1.1 Files compared

# Location File Last Modified
1 ADR FY8 Q2 Build 7 CIF submission.zip\ADR FY8 Q2 Build 7 CIF submission\ADR FY8 Q2 Build 7 CIF submission\ADR FY8 Q1 Build 6 CIF submission\DDL\ADR procedure.sql Thu Dec 14 14:50:38 2017 UTC
2 ADR FY8 Q2 Build 7 CIF submission.zip\ADR FY8 Q2 Build 7 CIF submission\ADR FY8 Q2 Build 7 CIF submission\ADR FY8 Q1 Build 6 CIF submission\DDL\ADR procedure.sql Wed Apr 4 14:41:34 2018 UTC

1.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 2 12186
Changed 1 2
Inserted 0 0
Removed 0 0

1.3 Comparison options

Whitespace
Character case Differences in character case are significant
Line endings Differences in line endings (CR and LF characters) are ignored
CR/LF characters Not shown in the comparison detail

1.4 Active regular expressions

No regular expressions were active.

1.5 Comparison detail

  1   DROP PROCE DURE ADR.W KF_CASE_H_ DELETE_SP;
  2  
  3   CREATE OR  REPLACE PR OCEDURE AD R.WKF_CASE _H_DELETE_ SP
  4   IS
  5  
  6  
  7  
  8     CURSOR c _wkf  IS S ELECT WKF_ CASE_H.wkf _case_id
  9          fro m ADR.wkf_ case_H
  10         wher e WKF_CASE _H.transac tion_type_ code = 'D'
  11       AND WK F_CASE_H.W KF_CASE_TY PE_ID = 16 16295;
  12  
  13     sql_stmt  string(51 2);
  14     v_cnt_wk f number(2 0);
  15     VD_log_d ate                            D ATE;
  16     VD_rec_g roup_date                      D ATE;
  17     VC_proce ss_name                        V ARCHAR2(60 ) := 'ADR  WKF_CASE_H  DELETE';
  18     VN_error _recs_coun t                   N UMBER := 0 ;
  19      BEGIN
  20           se lect  coun t(wkf_case _id)
  21           in to v_cnt_w kf
  22           fr om wkf_cas e_H
  23           wh ere transa ction_type _code = 'D '
  24           AN D WKF_CASE _TYPE_ID =  1616295;
  25          if  v_cnt_wkf  > 0 THEN
  26                FOR this _sql in  c _wkf  LOOP
  27                    sql_ stmt :=  ' DELETE FRO M ADR.WKF_ CASE_ASSIG NMENT_H  W HERE WKF_C ASE_ID = '  ||this_sq l.WKF_CASE _ID;
  28                    EXEC UTE IMMEDI ATE sql_st mt;
  29                    sql_ stmt :=  ' DELETE FRO M ADR.WKF_ CASE_COMME NTS_H  WHE RE WKF_CAS E_ID = ' | |this_sql. WKF_CASE_I D;
  30                    EXEC UTE IMMEDI ATE sql_st mt;
  31                    sql_ stmt :=  ' DELETE FRO M ADR.WKF_ CASE_STATU S_DETAIL_H    WHERE W KF_CASE_ID  = ' ||thi s_sql.WKF_ CASE_ID;
  32                    EXEC UTE IMMEDI ATE sql_st mt;
  33                    sql_ stmt :=  ' DELETE FRO M ADR.WKF_ MESSAGING_ CASE_H   W HERE WKF_C ASE_ID = '  ||this_sq l.WKF_CASE _ID;
  34                    EXEC UTE IMMEDI ATE sql_st mt;
  35                    sql_ stmt :=  ' DELETE FRO M ADR.WKF_ CASE_H   W HERE WKF_C ASE_ID = '  ||this_sq l.WKF_CASE _ID;
  36                    EXEC UTE IMMEDI ATE sql_st mt;
  37                   commi t;
  38              END LOOP;
  39         END  IF;
  40         EXCE PTION
  41           WH EN NO_DATA _FOUND THE N
  42                 NULL;
  43           WH EN OTHERS  THEN
  44              VN_error_r ecs_count  := VN_erro r_recs_cou nt + 1;
  45              ROLLBACK;
  46              VD_log_dat e := SYSDA TE;
  47              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  48                                          PD_j ob_error_d ate  => VD _log_date,
  49                                          PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  50                                          PC_j ob_error_m essage =>  SUBSTR('Un known erro r while de leting fro m ADR.Addr ess row.'
  51                                                                         || SQL ERRM,1,200 0),
  52                                          PD_d ate1 => VD _rec_group _date,
  53                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255)
  54                                          );
  55   END WKF_CA SE_H_DELET E_SP;
  56   /
  57   DROP PROCE DURE ADR.U PD_QRTZTRG _CLOCK_ST_ TIME_SP;
  58  
  59   CREATE OR  REPLACE PR OCEDURE AD R.UPD_QRTZ TRG_CLOCK_ ST_TIME_SP  (
  60      p_in_nu m_days        IN         NUMBER,
  61      p_in_nu m_hours       IN         NUMBER,
  62      p_in_vp id            IN         VARCHAR 2,
  63      p_in_tr igger_nm      IN         VARCHAR 2,
  64      p_out_n um_updated    OUT NUM BER,
  65      p_out_e rr_msg        OUT   V ARCHAR2)
  66   IS
  67  
  68      -- **** ********** ********** ********** ********** ********** ********** ********** ********** *****
  69      -- * Pr ocedure: U PD_QRTZTRG _CLOCK_ST_ TIME_SP
  70      -- *
  71      -- *
  72      -- *  D escription : - This p rocedure w ill be use  to update  the start  time of a ny clock t rigger
  73      -- *                              in QRT Z_TRIGGER  table to m ature the  clock. Thi s procedur e will inv oke by
  74      -- *                             clockTr iggerBatch Process fo r non prod uciton DBs .
  75      -- * Pa rameters:
  76      -- *
  77      -- *  p i_in_num_d ays           Day whe n trigger  is going t o expire.
  78      -- *  p i_in_num_h ours         Hours wh en trigger  is going  to fire. I t counts h ours from  midnight.
  79      -- *  p i_in_vpid                        VPID_VALUE  - for whi ch trigger  time will  change.
  80      -- *  p i_in_Trigg er_nm          Name o f the trig ger.
  81      -- *  p _out_num_u pdated   N umber of r ows update d
  82      -- *  p _out_err_m sg              Error  message/I nfo messag e
  83      -- *
  84      -- Crea ted Date            C reated By
  85      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  86      -- 04/2 5/2017                Mita Panda
  87      --
  88      --***** ********** ********** ********** ********** ********** ********** ********** ********** ***
  89      --- loc al variabl es
  90      v_vpid                        PERSON.VPI D_VALUE%TY PE;
  91      v_start _time            NUMB ER;
  92      v_perso n_id            NUMBE R;
  93      v_trigg er_name      QRTZ_TRI GGERS.TRIG GER_NAME%T YPE;
  94      v_new_s tart_time    NUMBER;
  95      v_new_d ate             VARCH AR2 (60);
  96      e_no_da ta_found     EXCEPTIO N;
  97   BEGIN
  98      BEGIN
  99         SELE CT person_ id
  100           IN TO v_perso n_id
  101           FR OM person
  102          WHE RE vpid_va lue = p_in _vpid;
  103  
  104      EXCEPTI ON
  105         WHEN  NO_DATA_F OUND
  106         THEN
  107  
  108            - -DBMS_OUTP UT.PUT_LIN E('This VP ID does no t exists i n Person t able' );
  109            R AISE e_no_ data_found ;
  110      END;
  111  
  112  
  113      --- Set  the trigg er name
  114  
  115      v_trigg er_name :=  v_person_ id || p_in _trigger_n m;
  116  
  117      --Set t he trigger  start tim e
  118      v_start _time :=
  119           (   TRUNC (SY SDATE + p_ in_num_day s)
  120            +  p_in_num_ hours / 24
  121            -  TO_DATE ( '01011970' , 'DDMMYYY Y'))
  122            *  60
  123           *  60
  124           *  24
  125           *  1000;
  126  
  127      UPDATE  qrtz_trigg ers
  128         SET  START_TIME  = v_start _time, NEX T_FIRE_TIM E = v_star t_time
  129       WHERE  trigger_na me = v_tri gger_name;
  130  
  131      p_out_n um_updated  := SQL%RO WCOUNT;
  132  
  133  
  134      SELECT  start_time ,
  135              TO_CHAR (
  136                   TO_DA TE ('1970- 01-01', 'y yyy-mm-dd  hh:mi:ss')
  137                 + (star t_TIME / 8 6400000),
  138                 'yyyy-m m-dd hh24: mi:ss am')
  139        INTO  v_new_star t_time, v_ new_date
  140        FROM  QRTZ_TRIGG ERS
  141       WHERE  trigger_na me = v_tri gger_name;
  142  
  143      --DBMS_ OUTPUT.PUT _LINE(' TR IGGER NEW_ DATE_TIME: - '||v_new _date||',  NEW_START_ TIME:-'||v _new_start _time);
  144  
  145      p_out_e rr_msg :=
  146            ' No errors,  For VPID: - '
  147         || p _in_vpid
  148         || ' , For Trig ger:-'
  149         || v _trigger_n ame
  150         || '  the NEW_D ATE_TIME:-  '
  151         || v _new_date;
  152      COMMIT;
  153  
  154   EXCEPTION
  155  
  156      WHEN e_ no_data_fo und
  157      THEN
  158         p_ou t_err_msg  := 'This V PID does n ot exists  in Person  table';
  159         p_ou t_num_upda ted := 0;
  160      WHEN NO _DATA_FOUN D
  161  
  162      THEN
  163         ---D BMS_OUTPUT .PUT_LINE( 'No trigge r found fo r this VPI D '||v_vpi d||', Chec k may be t he trigger  already f ired.');
  164         p_ou t_num_upda ted := 0;
  165         p_ou t_err_msg  :=
  166            ' No trigger  found for  this VPID  in QRTZ_T RIGGERS ta ble.';
  167      WHEN OT HERS
  168      THEN
  169         --   DBMS_OUTPU T.PUT_LINE (sqlcode|| substr(sql errm,1,100 ));
  170  
  171         p_ou t_num_upda ted := 0;
  172         p_ou t_err_msg  := SQLCODE  || SUBSTR  (SQLERRM,  1, 100);
  173   END UPD_QR TZTRG_CLOC K_ST_TIME_ SP;
  174   /
  175  
  176  
  177   CREATE OR  REPLACE PU BLIC SYNON YM UPD_QRT ZTRG_CLOCK _ST_TIME_S P FOR ADR. UPD_QRTZTR G_CLOCK_ST _TIME_SP;
  178  
  179  
  180   GRANT EXEC UTE ON ADR .UPD_QRTZT RG_CLOCK_S T_TIME_SP  TO EEUSR;
  181   DROP PROCE DURE ADR.R EBLD_ADR_C OM_MAIL_SE Q_SP;
  182  
  183   CREATE OR  REPLACE PR OCEDURE AD R.REBLD_AD R_COM_MAIL _SEQ_SP
  184   IS
  185   BEGIN
  186     DECLARE
  187  
  188           sq l_stmt                  varchar2 (200);
  189           er ror_code                varchar2 (25);
  190           er ror_msg_te xt           varchar2 (200);
  191           er ror_descr               varchar2 (200);
  192  
  193     BEGIN          -- P rocedure B ody Begin
  194           sq l_stmt :=  'DROP SEQU ENCE COM_M AILING_BAR CODE_S';
  195           DB MS_OUTPUT. PUT_LINE ( sql_stmt);
  196           EX ECUTE IMME DIATE sql_ stmt;
  197           sq l_stmt :=  'CREATE SE QUENCE COM _MAILING_B ARCODE_S';
  198           sq l_stmt :=  sql_stmt | |' START W ITH 1 ';
  199           sq l_stmt :=  sql_stmt | |' NOMAXVA LUE ';
  200           sq l_stmt :=  sql_stmt | |' MINVALU E 1 ';
  201           sq l_stmt :=  sql_stmt | |' NOCYCLE  ';
  202           sq l_stmt :=  sql_stmt | |' CACHE 2 5 ';
  203           sq l_stmt :=  sql_stmt | |' ORDER ' ;
  204           DB MS_OUTPUT. PUT_LINE ( sql_stmt);
  205           EX ECUTE IMME DIATE sql_ stmt;
  206           sq l_stmt :=  'GRANT SEL ECT ON  CO M_MAILING_ BARCODE_S  TO ADR_SEQ _R';
  207           DB MS_OUTPUT. PUT_LINE ( sql_stmt);
  208           EX ECUTE IMME DIATE sql_ stmt;
  209  
  210  
  211     EXCEPTIO N              -- Beg in Person  Trait Exce ption
  212       WHEN N OT_LOGGED_ ON THEN
  213           BE GIN
  214              error_code              := SQLCO DE ;
  215              error_msg_ text         := subst r(SQLERRM, 1,64);
  216              error_desc r            := 'Not  logged in,  operation  has faile d: ';
  217              DBMS_OUTPU T.PUT_LINE  (error_de scr);
  218              DBMS_OUTPU T.PUT_LINE  (error_co de);
  219              DBMS_OUTPU T.PUT_LINE  (error_ms g_text);
  220           EN D;
  221  
  222       WHEN T IMEOUT_ON_ RESOURCE T HEN
  223           BE GIN
  224              error_code              := SQLCO DE ;
  225              error_msg_ text         := subst r(SQLERRM, 1,64);
  226              error_desc r            := 'Reso urce unava ilable, op eration ha s failed:  ';
  227              DBMS_OUTPU T.PUT_LINE  (error_de scr);
  228              DBMS_OUTPU T.PUT_LINE  (error_co de);
  229              DBMS_OUTPU T.PUT_LINE  (error_ms g_text);
  230           EN D;
  231  
  232       WHEN O THERS THEN
  233           BE GIN
  234              error_code              := SQLCO DE ;
  235              error_msg_ text         := subst r(SQLERRM, 1,64);
  236              error_desc r            := 'Erro r has occu rred, oper ation has  failed: ';
  237              DBMS_OUTPU T.PUT_LINE  (error_de scr);
  238              DBMS_OUTPU T.PUT_LINE  (error_co de);
  239              DBMS_OUTPU T.PUT_LINE  (error_ms g_text);
  240           EN D;
  241  
  242     END;           -- E nd Person  Trait PL/S QL Block
  243  
  244  
  245   END REBLD_ ADR_COM_MA IL_SEQ_SP;
  246   /
  247   DROP PROCE DURE ADR.P ERSON_CHG_ LOG_CLEANU P_SP;
  248  
  249   CREATE OR  REPLACE PR OCEDURE AD R.Person_C hg_Log_Cle anup_Sp
  250     (PB_run_ standalone
  251        IN      BOOLEAN  DEFAULT FA LSE,
  252      PB_allo w_rpt_inst
  253        IN      BOOLEAN  DEFAULT FA LSE,
  254      PN_rows _to_proces s
  255        IN      NUMBER D EFAULT NUL L
  256     )
  257   IS
  258  
  259   -- ******* ********** ********** ********** ********** ********** ********** ********
  260   -- * Proce dure: ADR. Person_Chg _Log_Clean up_Sp
  261   -- *
  262   -- *   Upd ate the AD R.Person_C hange_Log  table to r emove rows  where the
  263   -- *   sub mission da te is olde r than the  days defi ned in the
  264   -- *   ADR MGT.Adr_Pa rameter ta ble. Initi ally this  was set to  31 days.
  265   -- *
  266   -- * Param eters:
  267   -- *
  268   -- *  PB_r un_standal one   Igno re DBMS_JO B logic fo r checking  running j obs.
  269   -- *                         Def ault: FALS E
  270   -- *
  271   -- *  PB_a llow_rpt_i nst   Allo w stored p rocedure t o be submi tted in th e
  272   -- *                        DBMS _JOB queue  on the AD R reportin g database s
  273   -- *                         Def ault: FALS E
  274   -- *
  275   -- ******* ********** ********** ********** ********** ********** ********** ********
  276   --
  277   -- ======= ========== ========== ========== ========== ========== ========== ========
  278   -- Date         Autho r             Descrip tion
  279   -- ======= ========== ========== ========== ========== ========== ========== ========
  280   -- 06/23/2 010  Craig  Wood         Created  for CCR 1 175.
  281   -- 10/13/2 014  Craig  Wood         CCR 215 2 - Fix ex ception ha ndler rout ine in
  282   --                                              main p rocessing  loop to cl ose the
  283   --                                              cursor  and write  to error  table
  284   --                                              instea d of log t able. Also , exit
  285   --                                              job if  too many  errors occ ur.
  286   -- ======= ========== ========== ========== ========== ========== ========== ========
  287  
  288   -- CONSTAN TS
  289  
  290     CC_no                                   V ARCHAR2(1)  := 'N';
  291     CC_parm_ applicatio n_name     CONSTANT V ARCHAR2(80 ) := 'PERS ON_CHG_LOG _CLEANUP_S P';
  292     CC_parm_ log_file_a ge         CONSTANT V ARCHAR2(50 ) := 'OLDE ST LOG FIL E DAYS KEP T';
  293     CC_parm_ rows_to_pr ocess      CONSTANT V ARCHAR2(50 ) := 'ROWS  TO PROCES S';
  294     CC_parm_ submitted_ age        CONSTANT V ARCHAR2(50 ) := 'OLDE ST SUBMITT ED DATE KE PT';
  295     CC_proce ss_name               CONSTANT V ARCHAR2(60 ) := 'Pers on_Change_ Log Cleanu p';
  296     CC_sp_na me                    CONSTANT V ARCHAR2(35 ) := 'Pers on_Chg_Log _Cleanup_S p';
  297     CC_yes                         CONSTANT V ARCHAR2(1)  := 'Y';
  298  
  299     CN_max_e rror_count            CONSTANT N UMBER := 5 00; -- CCR  2152
  300  
  301   -- VARIABL ES
  302  
  303     VB_allow _rpt_inst                      B OOLEAN :=  FALSE;
  304     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  305  
  306     VC_allow _rpt_inst                      V ARCHAR2(5)  := NULL;
  307     VC_insta nce_name                       V ARCHAR2(16 );
  308     VC_proce ss_duratio n                   V ARCHAR2(25 );
  309     VC_run_s tandalone                      V ARCHAR2(5)  := NULL;
  310     VC_sql_s tatement                       V ARCHAR2(20 00);
  311  
  312     VD_log_d ate                            D ATE;
  313     VD_proce ss_end_dat e                   D ATE;
  314     VD_proce ss_start_d ate                 D ATE;
  315     VD_rec_g roup_date                      D ATE;
  316  
  317     VN_error _count                         N UMBER := 0 ; -- CCR 2 152
  318     VN_job_c ount                           N UMBER := 0 ;
  319     VN_job_n umber                          N UMBER;
  320     VN_parm_ log_file_a ge                  N UMBER;
  321     VN_parm_ rows_to_pr ocess               N UMBER;
  322     VN_parm_ submitted_ age                 N UMBER;
  323     VN_pass_ count                          N UMBER := 0 ;
  324     VN_rec_c ount                           N UMBER := 0 ;
  325     VN_updat e_count                        N UMBER := 0 ;
  326  
  327   -- CURSORS
  328  
  329     CURSOR C _prsn_chg_ rec IS
  330       SELECT     Person _change_lo g_id
  331       FROM       ADR.Pe rson_Chang e_Log
  332       WHERE      Submit ted_date <  SYSDATE -  VN_parm_s ubmitted_a ge
  333       AND        ROWNUM  <= VN_par m_rows_to_ process;
  334  
  335   -- TYPES
  336  
  337     TYPE TT_ prsn_chg_i d IS
  338       TABLE  OF ADR.Per son_Change _Log.Perso n_change_l og_id%TYPE ;
  339  
  340   -- MEMORY  TABLES
  341  
  342     T_prsn_c hg_id                          T T_prsn_chg _id;
  343  
  344   -- ******* ********** ********** ********** ********** ********** ********** *******
  345   -- *
  346   -- *  MAIN  PROCEDURE :
  347   -- *
  348   -- ******* ********** ********** ********** ********** ********** ********** *******
  349  
  350   BEGIN
  351  
  352     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  353     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  354  
  355     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  356     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  357  
  358     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  359     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  360  
  361     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  362     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  363  
  364     VD_rec_g roup_date  := TRUNC(S YSDATE);
  365  
  366     VD_log_d ate := SYS DATE;
  367     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  368                                 PD _job_log_d ate => VD_ log_date,
  369                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  370                                 PD _date1 =>  VD_rec_gro up_date,
  371                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  372  
  373   -- ******* ********** ********** ********** ********** ********** ********** ********
  374   -- *
  375   -- * Valid ate input  parameters
  376   -- *
  377   -- ******* ********** ********** ********** ********** ********** ********** ********
  378  
  379   -- * Check  run stand alone flag
  380  
  381     IF PB_ru n_standalo ne IS NULL
  382      OR NOT  PB_run_sta ndalone TH EN
  383  
  384       VB_run _standalon e := FALSE ;
  385       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  386  
  387     ELSE
  388  
  389       VB_run _standalon e := TRUE;
  390       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  391  
  392     END IF;
  393  
  394   -- * Check  run on re port insta nce flag
  395  
  396     IF PB_al low_rpt_in st IS NULL
  397      OR NOT  PB_allow_r pt_inst TH EN
  398  
  399       VB_all ow_rpt_ins t := FALSE ;
  400       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  401  
  402     ELSE
  403  
  404       VB_all ow_rpt_ins t := TRUE;
  405       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  406  
  407     END IF;
  408  
  409   -- ******* ********** ********** ********** ********** ********** ********** ********
  410   -- *
  411   -- * Retri eve proces sing param eters
  412   -- *
  413   -- ******* ********** ********** ********** ********** ********** ********** ********
  414  
  415   -- ******* ********** ********** ********** ********** ********** ********** ********
  416   -- * Proce ss Paramet er for OLD EST LOG FI LE DAYS KE PT
  417   -- ******* ********** ********** ********** ********** ********** ********** ********
  418  
  419     BEGIN
  420  
  421       SELECT     Value
  422       INTO       VN_par m_log_file _age
  423       FROM       ADRMGT .Adr_Param eter
  424       WHERE      Applic ation_name  = CC_parm _applicati on_name
  425       AND        Parame ter_name =  CC_parm_l og_file_ag e;
  426  
  427       IF VN_ parm_log_f ile_age IS  NULL THEN
  428  
  429         VD_l og_date :=  SYSDATE;
  430         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  431                                      PD_job_l og_date =>  VD_log_da te,
  432                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  433                                      PC_job_l og_message  => SUBSTR ('Paramete r '
  434                                                                      || CC_par m_log_file _age
  435                                                                      || 'is NU LL. Termin ating proc ess.',1,20 00),
  436                                      PD_date1  => VD_rec _group_dat e,
  437                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  438  
  439         RETU RN;
  440  
  441       END IF ;
  442  
  443     EXCEPTIO N
  444  
  445       WHEN N O_DATA_FOU ND THEN
  446  
  447         VD_l og_date :=  SYSDATE;
  448         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  449                                      PD_job_l og_date =>  VD_log_da te,
  450                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  451                                      PC_job_l og_message  => 'Param eter for '
  452                                                              || CC_ parm_log_f ile_age
  453                                                              || ' w as not fou nd. Termin ating proc ess.',
  454                                      PD_date1  => VD_rec _group_dat e,
  455                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  456  
  457         RETU RN;
  458  
  459       WHEN O THERS THEN
  460  
  461         VD_l og_date :=  SYSDATE;
  462         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  463                                      PD_job_l og_date =>  VD_log_da te,
  464                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  465                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  '
  466                                                                      || CC_par m_log_file _age
  467                                                                      || '. Ter minating p rocess. '
  468                                                                      || SQLERR M,1,2000),
  469                                      PD_date1  => VD_rec _group_dat e,
  470                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  471  
  472         RETU RN;
  473  
  474     END;
  475  
  476   -- ******* ********** ********** ********** ********** ********** ********** ********
  477   -- * Proce ss Paramet er for OLD EST SUBMIT TED DATE K EPT
  478   -- ******* ********** ********** ********** ********** ********** ********** ********
  479  
  480     BEGIN
  481  
  482       SELECT     Value
  483       INTO       VN_par m_submitte d_age
  484       FROM       ADRMGT .Adr_Param eter
  485       WHERE      Applic ation_name  = CC_parm _applicati on_name
  486       AND        Parame ter_name =  CC_parm_s ubmitted_a ge;
  487  
  488       IF VN_ parm_submi tted_age I S NULL THE N
  489  
  490         VD_l og_date :=  SYSDATE;
  491         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  492                                      PD_job_l og_date =>  VD_log_da te,
  493                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  494                                      PC_job_l og_message  => SUBSTR ('Paramete r '
  495                                                                      || CC_par m_submitte d_age
  496                                                                      || 'is NU LL. Termin ating proc ess.',1,20 00),
  497                                      PD_date1  => VD_rec _group_dat e,
  498                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  499  
  500         RETU RN;
  501  
  502       END IF ;
  503  
  504     EXCEPTIO N
  505  
  506       WHEN N O_DATA_FOU ND THEN
  507  
  508         VD_l og_date :=  SYSDATE;
  509         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  510                                      PD_job_l og_date =>  VD_log_da te,
  511                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  512                                      PC_job_l og_message  => 'Param eter for '
  513                                                              || CC_ parm_submi tted_age
  514                                                              || ' w as not fou nd. Termin ating proc ess.',
  515                                      PD_date1  => VD_rec _group_dat e,
  516                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  517  
  518         RETU RN;
  519  
  520       WHEN O THERS THEN
  521  
  522         VD_l og_date :=  SYSDATE;
  523         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  524                                      PD_job_l og_date =>  VD_log_da te,
  525                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  526                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  '
  527                                                                      || CC_par m_submitte d_age
  528                                                                      || '. Ter minating p rocess. '
  529                                                                      || SQLERR M,1,2000),
  530                                      PD_date1  => VD_rec _group_dat e,
  531                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  532  
  533         RETU RN;
  534  
  535     END;
  536  
  537   -- ******* ********** ********** ********** ********** ********** ********** ********
  538   -- * Proce ss Paramet er ROWS TO  PROCESS
  539   -- ******* ********** ********** ********** ********** ********** ********** ********
  540  
  541     BEGIN
  542  
  543       SELECT     Value
  544       INTO       VN_par m_rows_to_ process
  545       FROM       ADRMGT .Adr_Param eter
  546       WHERE      Applic ation_name  = CC_parm _applicati on_name
  547       AND        Parame ter_name =  CC_parm_r ows_to_pro cess;
  548  
  549       IF VN_ parm_rows_ to_process  IS NULL T HEN
  550  
  551         VD_l og_date :=  SYSDATE;
  552         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  553                                      PD_job_l og_date =>  VD_log_da te,
  554                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  555                                      PC_job_l og_message  => SUBSTR ('Paramete r '
  556                                                                      || CC_par m_rows_to_ process
  557                                                                      || 'is NU LL. Termin ating proc ess.',1,20 00),
  558                                      PD_date1  => VD_rec _group_dat e,
  559                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  560  
  561         RETU RN;
  562  
  563       END IF ;
  564  
  565     EXCEPTIO N
  566  
  567       WHEN N O_DATA_FOU ND THEN
  568  
  569         VD_l og_date :=  SYSDATE;
  570         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  571                                      PD_job_l og_date =>  VD_log_da te,
  572                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  573                                      PC_job_l og_message  => 'Param eter for '
  574                                                              || CC_ parm_rows_ to_process
  575                                                              || ' w as not fou nd. Termin ating proc ess.',
  576                                      PD_date1  => VD_rec _group_dat e,
  577                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  578  
  579         RETU RN;
  580  
  581       WHEN O THERS THEN
  582  
  583         VD_l og_date :=  SYSDATE;
  584         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  585                                      PD_job_l og_date =>  VD_log_da te,
  586                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  587                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  '
  588                                                                      || CC_par m_rows_to_ process
  589                                                                      || '. Ter minating p rocess. '
  590                                                                      || SQLERR M,1,2000),
  591                                      PD_date1  => VD_rec _group_dat e,
  592                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  593  
  594         RETU RN;
  595  
  596     END;
  597  
  598   -- ******* ********** ********** ********** ********** ********** ********** ********
  599   -- *
  600   -- * Write  out Param eter log m essages fo r submitte d job
  601   -- *
  602   -- ******* ********** ********** ********** ********** ********** ********** ********
  603  
  604   -- ******* ********** ********** ********** ********** ********** ********** ********
  605   -- *  Job  Submission  Parameter s
  606   -- ******* ********** ********** ********** ********** ********** ********** ********
  607  
  608     VD_log_d ate := SYS DATE;
  609     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  610                                 PD _job_log_d ate => VD_ log_date,
  611                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  612                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  613                                 PD _date1 =>  VD_rec_gro up_date,
  614                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  615  
  616     VD_log_d ate := SYS DATE;
  617     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  618                                 PD _job_log_d ate => VD_ log_date,
  619                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  620                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  621                                 PD _date1 =>  VD_rec_gro up_date,
  622                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  623  
  624     VD_log_d ate := SYS DATE;
  625     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  626                                 PD _job_log_d ate => VD_ log_date,
  627                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  628                                 PC _job_log_m essage =>  SUBSTR(' R ows to pro cess each  loop: ' ||  NVL(TO_CH AR(PN_rows _to_proces s),'NULL') ,1,2000),
  629                                 PD _date1 =>  VD_rec_gro up_date,
  630                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  631  
  632   -- ******* ********** ********** ********** ********** ********** ********** ********
  633   -- *  Job  Table Para meters
  634   -- ******* ********** ********** ********** ********** ********** ********** ********
  635  
  636     VD_log_d ate := SYS DATE;
  637     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  638                                 PD _job_log_d ate => VD_ log_date,
  639                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  640                                 PC _job_log_m essage =>  SUBSTR(' '  || CC_par m_log_file _age || ':  ' || VN_p arm_log_fi le_age,1,2 000),
  641                                 PD _date1 =>  VD_rec_gro up_date,
  642                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  643  
  644     VD_log_d ate := SYS DATE;
  645     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  646                                 PD _job_log_d ate => VD_ log_date,
  647                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  648                                 PC _job_log_m essage =>  SUBSTR(' '  || CC_par m_submitte d_age || ' : ' || VN_ parm_submi tted_age,1 ,2000),
  649                                 PD _date1 =>  VD_rec_gro up_date,
  650                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  651  
  652     VD_log_d ate := SYS DATE;
  653     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  654                                 PD _job_log_d ate => VD_ log_date,
  655                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  656                                 PC _job_log_m essage =>  SUBSTR(' '
  657                                                                 ||  CC_parm_ro ws_to_proc ess
  658                                                                 ||  ' (in each  loop): '
  659                                                                 ||  TO_CHAR(VN _parm_rows _to_proces s),1,2000) ,
  660                                 PD _date1 =>  VD_rec_gro up_date,
  661                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  662  
  663   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  664  
  665     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  666  
  667       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  668  
  669       VD_log _date := S YSDATE;
  670       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  671                                    PD_job_log _date => V D_log_date ,
  672                                    PC_job_sta tus => SUB STR('WARNI NG - Job t able param eters',1,6 0),
  673                                    PC_job_log _message = > SUBSTR('  Processin g paramete r '
  674                                                                   | | CC_parm_ rows_to_pr ocess
  675                                                                   | | ' (in ea ch loop) h as been ov erridden.'
  676                                                                   | | ' The ov erride val ue is: '
  677                                                                   | | TO_CHAR( VN_parm_ro ws_to_proc ess),1,200 0),
  678                                    PD_date1 = > VD_rec_g roup_date,
  679                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  680  
  681     END IF;
  682  
  683   -- ******* ********** ********** ********** ********** ********** ********** ********
  684   -- *
  685   -- * Check  to see if  process i s running  on a repor ting datab ase.
  686   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  687   -- *
  688   -- ******* ********** ********** ********** ********** ********** ********** ********
  689  
  690     IF NOT V B_allow_rp t_inst THE N
  691  
  692       BEGIN
  693  
  694         VD_l og_date :=  SYSDATE;
  695         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  696                                      PD_job_l og_date =>  VD_log_da te,
  697                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  698                                      PD_date1  => VD_rec _group_dat e,
  699                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  700  
  701         SELE CT    Inst ance_name
  702         INTO       VC_i nstance_na me
  703         FROM       V$in stance;
  704  
  705         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  706  
  707           VD _log_date  := SYSDATE ;
  708           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  709                                        PD_job _log_date  => VD_log_ date,
  710                                        PC_job _status =>  SUBSTR('E RROR - Pro cessing Fa iled',1,60 ),
  711                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  712                                                                     || VC_inst ance_name
  713                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  714                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  715                                        PD_dat e1 => VD_r ec_group_d ate,
  716                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  717  
  718           RE TURN;
  719  
  720         END  IF;
  721  
  722       EXCEPT ION
  723  
  724         WHEN  OTHERS TH EN
  725  
  726           VD _log_date  := SYSDATE ;
  727           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  728                                        PD_job _log_date  => VD_log_ date,
  729                                        PC_job _status =>  SUBSTR('E RROR - Una ble to ret rieve inst ance name' ,1,60),
  730                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  731                                        PD_dat e1 => VD_r ec_group_d ate,
  732                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  733  
  734           RE TURN;
  735  
  736       END;
  737  
  738     END IF;
  739  
  740   -- ******* ********** ********** ********** ********** ********** ********** ********
  741   -- *
  742   -- * Check  to see if  the job h as already  run today
  743   -- *  - If  running i n stand-al one mode,  don't chec k.
  744   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  745   -- *
  746   -- ******* ********** ********** ********** ********** ********** ********** ********
  747  
  748     IF NOT P B_run_stan dalone THE N
  749  
  750       BEGIN
  751  
  752         VD_l og_date :=  SYSDATE;
  753         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  754                                      PD_job_l og_date =>  VD_log_da te,
  755                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  756                                      PD_date1  => VD_rec _group_dat e,
  757                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  758  
  759         SELE CT    COUN T(*)
  760         INTO       VN_r ec_count
  761         FROM       ADRM GT.Job_Pro cess_Logs
  762         WHER E     Job_ name = CC_ process_na me
  763         AND        Date 1 = VD_rec _group_dat e
  764         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  765  
  766         IF V N_rec_coun t > 0 THEN
  767  
  768           VD _log_date  := SYSDATE ;
  769           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  770                                        PD_job _log_date  => VD_log_ date,
  771                                        PC_job _status =>  SUBSTR('W ARNING - T his date h as already  been proc essed',1,6 0),
  772                                        PC_job _log_messa ge => SUBS TR('Proces sing has a lready com pleted for  this date . Exiting  to job que ue.',1,200 0),
  773                                        PD_dat e1 => VD_r ec_group_d ate,
  774                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  775  
  776           RE TURN;
  777  
  778         END  IF;
  779  
  780       EXCEPT ION
  781  
  782         WHEN  OTHERS TH EN
  783  
  784           VD _log_date  := SYSDATE ;
  785           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  786                                        PD_job _log_date  => VD_log_ date,
  787                                        PC_job _status =>  SUBSTR('E RROR - Una ble to ver ify if job  has alrea dy run',1, 60),
  788                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  789                                        PD_dat e1 => VD_r ec_group_d ate,
  790                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  791  
  792           RE TURN;
  793  
  794       END;
  795  
  796     END IF;
  797  
  798   -- ******* ********** ********** ********** ********** ********** ********** ********
  799   -- *
  800   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  801   -- *  - If  yes, then  end this  job.
  802   -- *
  803   -- ******* ********** ********** ********** ********** ********** ********** ********
  804  
  805     SELECT C OUNT(*)
  806     INTO   V N_job_coun t
  807     FROM   S YS.DBA_JOB S_RUNNING  R,
  808            S YS.DBA_JOB S J
  809     WHERE  J .JOB = R.J OB
  810     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  811  
  812     IF VN_jo b_count >  1 THEN
  813  
  814       VD_log _date := S YSDATE;
  815       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  816                                    PD_job_log _date => V D_log_date ,
  817                                    PC_job_sta tus => SUB STR('WARNI NG - Check  for runni ng jobs',1 ,60),
  818                                    PC_job_log _message = > SUBSTR(' There is a nother '
  819                                                                || C C_sp_name
  820                                                                || '  job runni ng.'
  821                                                                || '  Exiting j ob without  running.' ,1,2000),
  822                                    PD_date1 = > VD_rec_g roup_date,
  823                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  824  
  825       RETURN ;
  826  
  827     ELSE
  828  
  829       IF VB_ run_standa lone THEN
  830  
  831         VD_l og_date :=  SYSDATE;
  832         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  833                                      PD_job_l og_date =>  VD_log_da te,
  834                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  835                                      PD_date1  => VD_rec _group_dat e,
  836                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  837  
  838       ELSE
  839  
  840         SELE CT    MAX( J.Job)
  841         INTO       VN_j ob_number
  842         FROM       SYS. DBA_JOBS_R UNNING R,
  843                    SYS. DBA_JOBS J
  844         WHER E     J.JO B = R.JOB
  845         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  846  
  847         VD_l og_date :=  SYSDATE;
  848         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  849                                      PD_job_l og_date =>  VD_log_da te,
  850                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  851                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  852                                                                      || VN_job _number,1, 2000),
  853                                      PD_date1  => VD_rec _group_dat e,
  854                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  855  
  856       END IF ;
  857  
  858     END IF;
  859  
  860   -- ******* ********** ********** ********** ********** ********** ********** ********
  861   -- *
  862   -- * Main  processing  loop
  863   -- *
  864   -- ******* ********** ********** ********** ********** ********** ********** ********
  865  
  866     VN_pass_ count := 0 ;
  867     VN_updat e_count :=  0;
  868     VD_proce ss_start_d ate := SYS DATE;
  869  
  870   -- ******* ********** ********** ********** ********** ********** ********** ********
  871   -- * Remov e old proc ess log ro ws
  872   -- ******* ********** ********** ********** ********** ********** ********** ********
  873     BEGIN
  874  
  875       VD_log _date := S YSDATE;
  876       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  877                                    PD_job_log _date => V D_log_date ,
  878                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  879                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  880                                                                   | | VN_parm_ log_file_a ge
  881                                                                   | | ' days o ld',1,2000 ),
  882                                    PD_date1 = > VD_rec_g roup_date,
  883                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  884  
  885       DELETE
  886       FROM       ADRMGT .Job_Proce ss_Logs
  887       WHERE      Job_na me = CC_pr ocess_name
  888       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  889  
  890       COMMIT ;
  891  
  892       VD_log _date := S YSDATE;
  893       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  894                                    PD_job_log _date => V D_log_date ,
  895                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  896                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  897                                                                   | | VN_parm_ log_file_a ge
  898                                                                   | | ' days o ld',1,2000 ),
  899                                    PD_date1 = > VD_rec_g roup_date,
  900                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  901  
  902  
  903     EXCEPTIO N
  904  
  905       WHEN N O_DATA_FOU ND THEN
  906  
  907         NULL ;
  908  
  909       WHEN O THERS THEN
  910  
  911         VD_l og_date :=  SYSDATE;
  912         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  913                                      PD_job_l og_date  = > VD_log_d ate,
  914                                      PC_job_s tatus => S UBSTR('ERR OR - Unkno wn error r emoving ol d process  logs.',1,6 0),
  915                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  916                                      PD_date1  => VD_rec _group_dat e,
  917                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  918  
  919     END;
  920  
  921   -- ******* ********** ********** ********** ********** ********** ********** ********
  922   -- * Remov e old proc ess error  rows
  923   -- ******* ********** ********** ********** ********** ********** ********** ********
  924  
  925     BEGIN
  926  
  927       VD_log _date := S YSDATE;
  928       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  929                                    PD_job_log _date => V D_log_date ,
  930                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  931                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  932                                                                   | | VN_parm_ log_file_a ge
  933                                                                   | | ' days o ld',1,2000 ),
  934                                    PD_date1 = > VD_rec_g roup_date,
  935                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  936  
  937       DELETE
  938       FROM       ADRMGT .Job_Proce ss_Errs
  939       WHERE      Job_na me = CC_pr ocess_name
  940       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  941  
  942       COMMIT ;
  943  
  944       VD_log _date := S YSDATE;
  945       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  946                                    PD_job_log _date => V D_log_date ,
  947                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  948                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  949                                                                   | | VN_parm_ log_file_a ge
  950                                                                   | | ' days o ld',1,2000 ),
  951                                    PD_date1 = > VD_rec_g roup_date,
  952                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  953  
  954     EXCEPTIO N
  955  
  956       WHEN N O_DATA_FOU ND THEN
  957  
  958         NULL ;
  959  
  960       WHEN O THERS THEN
  961  
  962         VD_l og_date :=  SYSDATE;
  963         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  964                                      PD_job_l og_date  = > VD_log_d ate,
  965                                      PC_job_s tatus => S UBSTR('ERR OR - Unkno wn error r emoving ol d process  errors.',1 ,60),
  966                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  967                                      PD_date1  => VD_rec _group_dat e,
  968                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  969  
  970     END;
  971  
  972   -- ******* ********** ********** ********** ********** ********** ********** ********
  973   -- * Main  record cur sor logic
  974   -- ******* ********** ********** ********** ********** ********** ********** ********
  975  
  976     VN_pass_ count := 0 ;
  977     VN_updat e_count :=  0;
  978  
  979     LOOP
  980  
  981       BEGIN
  982  
  983         OPEN  C_prsn_ch g_rec;
  984  
  985         FETC H C_prsn_c hg_rec
  986         BULK  COLLECT I NTO T_prsn _chg_id
  987         LIMI T VN_parm_ rows_to_pr ocess;
  988  
  989         EXIT  WHEN T_pr sn_chg_id. COUNT = 0;
  990  
  991         FORA LL I_prsn_ chg_id IN  T_prsn_chg _id.FIRST. .T_prsn_ch g_id.last
  992           DE LETE
  993           FR OM      AD R.Person_C hange_Log
  994           WH ERE     Pe rson_chang e_log_id =  T_prsn_ch g_id(I_prs n_chg_id);
  995  
  996         COMM IT;
  997  
  998         VN_p ass_count  := VN_pass _count + 1 ;
  999  
  1000         VN_u pdate_coun t := VN_up date_count  + T_prsn_ chg_id.COU NT;
  1001  
  1002         CLOS E C_prsn_c hg_rec;
  1003  
  1004       EXCEPT ION
  1005  
  1006         WHEN  OTHERS TH EN
  1007  
  1008           VN _error_cou nt := VN_e rror_count  + 1;  --  CCR 2152
  1009  
  1010           IF  VN_error_ count >= C N_max_erro r_count TH EN  -- CCR  2152
  1011  
  1012              RETURN;  - - CCR 2152
  1013  
  1014           EL SE  -- CCR  2152
  1015  
  1016              IF C_prsn_ chg_rec%IS OPEN THEN   -- CCR 21 52
  1017  
  1018                CLOSE C_ prsn_chg_r ec;  -- CC R 2152
  1019  
  1020              END IF;  - - CCR 2152
  1021  
  1022              VD_log_dat e := SYSDA TE;
  1023  
  1024              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  1025                                          PD_j ob_error_d ate  => VD _log_date,
  1026                                          PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  1027                                          PC_j ob_error_m essage =>  SUBSTR('Un known erro r removing  person ch ange logs  - '
  1028                                                                         || SQL ERRM,1,200 0),
  1029                                          PD_d ate1 => VD _rec_group _date,
  1030                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));  --  CCR 2152
  1031  
  1032           EN D IF;  --  CCR 2152
  1033  
  1034       END;
  1035  
  1036     END LOOP ;
  1037  
  1038   -- ******* ********** ********** ********** ********** ********** ********** ********
  1039   -- * Proce ss complet ion inform ation
  1040   -- ******* ********** ********** ********** ********** ********** ********** ********
  1041  
  1042     BEGIN
  1043  
  1044       VD_log _date := S YSDATE;
  1045       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1046                                    PD_job_log _date => V D_log_date ,
  1047                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  1048                                    PD_date1 = > VD_rec_g roup_date,
  1049                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  1050                                    PN_numeric 2 => VN_pa ss_count,
  1051                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  1052  
  1053       VD_log _date := S YSDATE;
  1054       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1055                                    PD_job_log _date => V D_log_date ,
  1056                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  1057                                    PD_date1 = > VD_rec_g roup_date,
  1058                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  1059                                    PN_numeric 2 => VN_up date_count ,
  1060                                    PC_text2 = > SUBSTR(' Deleted Re cords Coun t',1,255)) ;
  1061  
  1062       VD_pro cess_end_d ate := SYS DATE;
  1063       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  1064                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  1065                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  1066                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  1067                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  1068  
  1069       VD_log _date := S YSDATE;
  1070       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1071                                    PD_job_log _date => V D_log_date ,
  1072                                    PC_job_sta tus => SUB STR('SUCCE SS - Proce ssing Comp leted',1,6 0),
  1073                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  1074                                    PD_date1 = > VD_rec_g roup_date,
  1075                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1076  
  1077     EXCEPTIO N
  1078  
  1079       WHEN O THERS THEN
  1080  
  1081         VD_l og_date :=  SYSDATE;
  1082         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1083                                      PD_job_l og_date  = > VD_log_d ate,
  1084                                      PC_job_s tatus => S UBSTR('ERR OR - Unkno wn error w riting com pletion in formation. ',1,60),
  1085                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  1086                                      PD_date1  => VD_rec _group_dat e,
  1087                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1088  
  1089         RETU RN;
  1090  
  1091     END;
  1092  
  1093   EXCEPTION
  1094  
  1095     WHEN OTH ERS THEN
  1096  
  1097       ROLLBA CK;
  1098  
  1099       VD_log _date := S YSDATE;
  1100       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1101                                    PD_job_err or_date  = > VD_log_d ate,
  1102                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  1103                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Person_Chg _Log_Clean up_Sp.'
  1104                                                                  ||  SQLERRM,1 ,2000),
  1105                                    PD_date1 = > VD_rec_g roup_date,
  1106                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1107  
  1108       VD_log _date := S YSDATE;
  1109       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  1110                                    PD_job_log _date => V D_log_date ,
  1111                                    PC_job_sta tus => SUB STR('ERROR  - Unknown  processin g error',1 ,60),
  1112                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  1113                                    PD_date1 = > VD_rec_g roup_date,
  1114                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1115  
  1116   END Person _Chg_Log_C leanup_Sp;
  1117   /
  1118   DROP PROCE DURE ADR.L OAD_MISSIN G_RESIDENT _ADDR_SP;
  1119  
  1120   CREATE OR  REPLACE PR OCEDURE AD R.LOAD_MIS SING_RESID ENT_ADDR_S P(
  1121       p_bulk _limit         NUMBER  DEFAULT 1 000)
  1122   IS
  1123  
  1124      -- 5492 34: Create  A Job to  Insert Res idential A ddresses f or Persons  with Perm anent but   without R esidential  addresses
  1125      --gc_sc hema_owner _name         VARCHAR 2 (10) :=  'ADR';
  1126      gc_prog ram_name               VARCHAR2  (40) := 'L OAD_MISSIN G_RESIDENT _ADDR_SP';
  1127  
  1128      dml_err ors         EXCEPTION ;
  1129      PRAGMA  EXCEPTION_ INIT(dml_e rrors, -24 381);
  1130  
  1131      time_a      INTEGE R;
  1132      time_b      INTEGE R;
  1133      time_c      INTEGE R;
  1134      time_d      INTEGE R;
  1135  
  1136      VC_msg_ step        VARCHAR2( 200);
  1137      VC_erro r_msg   VA RCHAR2(200 );
  1138      VN_tota l_count      NUMBER : = 0;
  1139  
  1140      VN_elap sed_time    NUMBER;
  1141  
  1142      VN_rowc nt_fetched   NUMBER : = 0;
  1143      VN_EXCE PTION_CNT   PLS_INTEG ER;
  1144  
  1145      C_PERM_ ADDRESSTYP E_ID CONST ANT NUMBER  := 144901 2;
  1146      C_RESI_ ADDRESSTYP E_ID CONST ANT NUMBER  := 180741 2;
  1147  
  1148  
  1149      TYPE NE W_RESIDENT _ADDRESS_T AB IS TABL E OF ADDRE SS%ROWTYPE   INDEX BY  BINARY_IN TEGER;
  1150      L_new_r esident_ad dr_tab     NEW_RESIDE NT_ADDRESS _TAB;
  1151  
  1152      c_limit   CONSTANT  PLS_INTEG ER := p_bu lk_limit;
  1153      gc_inte ration  PL S_INTEGER  := 0;
  1154  
  1155      CURSOR  GetPermAdd rInfo_C  I S
  1156      WITH AD D_RES_ADDR  AS
  1157        ( SEL ECT  perso n_id
  1158          FRO M (
  1159              SELECT DIS TINCT pers on_id
  1160              FROM addre ss a
  1161              WHERE STD_ ADDRESSTYP E_ID = C_P ERM_ADDRES STYPE_ID   -- permane nt addr
  1162              AND person _id IS NOT  NULL
  1163           MI NUS
  1164              SELECT DIS TINCT pers on_id
  1165              FROM addre ss a
  1166              WHERE  STD _ADDRESSTY PE_ID = C_ RESI_ADDRE SSTYPE_ID   -- reside ntial addr
  1167              AND person _id IS NOT  NULL
  1168          )
  1169        )
  1170      SELECT  *
  1171      FROM AD DRESS a
  1172      WHERE E XISTS (SEL ECT 1
  1173                    FROM  ADD_RES_A DDR d
  1174                    WHER E a.person _id = d.pe rson_id)
  1175      AND a.S TD_ADDRESS TYPE_ID =  C_PERM_ADD RESSTYPE_I D  -- perm anent addr
  1176      AND a.p erson_id I S NOT NULL ;
  1177  
  1178   BEGIN
  1179  
  1180       -- === ========== ========== ========== ========== ========== ===
  1181       --
  1182       -- Beg in Bulk Co llect Fetc h
  1183       --
  1184       -- === ========== ========== ========== ========== ========== ===
  1185       EXECUT E IMMEDIAT E 'ALTER S ESSION SET  PARALLEL_ FORCE_LOCA L=TRUE';
  1186  
  1187       DBMS_A PPLICATION _INFO.set_ client_inf o(gc_progr am_name || ': '||p_bu lk_limit|| ' STARTED  '||TO_CHAR (SYSDATE,' MM/DD/YY H H24:MI:SS' ));
  1188  
  1189       time_a  := dbms_u tility.get _time;
  1190       VN_tot al_count : = 0;
  1191  
  1192       VC_msg _step := ' OPEN CURSO R';
  1193  
  1194      ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => gc_pro gram_name,
  1195                                      PD_job_l og_date =>  SYSDATE,
  1196                                      PC_job_s tatus => ' INFORMATIO N - Proces s Initiati on',
  1197                                      PC_job_l og_message  => 'Load  missing re sident add resses ',
  1198                                      pc_text1  => 'BULK  LIMIT: '||  c_limit,
  1199                                      PD_date1  => SYSDAT E
  1200                                 );
  1201  
  1202       OPEN G etPermAddr Info_C ;
  1203       LOOP
  1204            g c_interati on := gc_i nteration  + 1;
  1205  
  1206            F ETCH GetPe rmAddrInfo _C BULK CO LLECT INTO  L_new_res ident_addr _tab LIMIT  c_limit;
  1207  
  1208            V N_rowcnt_f etched :=  VN_rowcnt_ fetched +  L_new_resi dent_addr_ tab.COUNT;
  1209  
  1210            V C_msg_step  := 'BULK  LOAD BEGIN S';
  1211  
  1212            t ime_b := d bms_utilit y.get_time ;
  1213  
  1214            F ORALL indx  IN L_new_ resident_a ddr_tab.FI RST.. L_ne w_resident _addr_tab. LAST SAVE  EXCEPTIONS
  1215  
  1216                INSERT / *+ APPEND  */ INTO AD DRESS (
  1217                         ADDRESS_ID  ,
  1218                         PERSON_ID,
  1219                         INSURANCE_ ID,
  1220                         STD_ADDRES STYPE_ID,
  1221                         ADDRESS_CH ANGE_SRC_T YPE_ID,
  1222                         STD_INSTIT UTION_ID,
  1223                         ADDRESS_IN VALID_TYPE _ID,
  1224                         NCOA_STATU S_TYPE_ID,
  1225                         NCOA_DELIV ERY_TYPE_I D,
  1226                         NCOA_ZIP_M ATCH_TYPE_ ID,
  1227                         NCOA_ZIP_N O_MATCH_TY PE_ID,
  1228                         ADDRESS_LI NE1,
  1229                         ADDRESS_LI NE2,
  1230                         ADDRESS_LI NE3,
  1231                         CITY,
  1232                         STATE_CODE ,
  1233                         COUNTY_COD E,
  1234                         PROVINCE_C ODE,
  1235                         ZIP_CODE,
  1236                         ZIP_PLUS_4 ,
  1237                         POSTAL_COD E,
  1238                         COUNTRY_CO DE,
  1239                         ADDRESS_CH ANGE_EFFEC TIVE_DATE,
  1240                         ADDRESS_IN VALIDATED_ DATE,
  1241                         NCOA_ADDRE SS_CHECK_D ATE,
  1242                         ADDRESS_ST ART_DATE_T XT,
  1243                         ADDRESS_EN D_DATE_TXT ,
  1244                         ADDRESS_PH ONE_NUMBER ,
  1245                         RECORD_CRE ATED_BY,
  1246                         RECORD_CRE ATED_DATE,
  1247                         RECORD_MOD IFIED_BY,
  1248                         RECORD_MOD IFIED_DATE ,
  1249                         RECORD_MOD IFIED_COUN T,
  1250                         RECORD_MOD IFIED_SRC_ NAME,
  1251                         PERSON_REL ATION_ID,
  1252                         CASSCERTIF IEDTYPE_ID ,
  1253                         CASS_CERTI FIED_DATE,
  1254                         PURPOSE_OF _USE_TYPE_ ID)
  1255                    VALU ES(
  1256                         TRANSACTIO N_S.NEXTVA L ,
  1257                         L_new_resi dent_addr_ tab(indx). PERSON_ID,
  1258                         L_new_resi dent_addr_ tab(indx). INSURANCE_ ID,
  1259                         1807412,
  1260                         L_new_resi dent_addr_ tab(indx). ADDRESS_CH ANGE_SRC_T YPE_ID,
  1261                         L_new_resi dent_addr_ tab(indx). STD_INSTIT UTION_ID,
  1262                         L_new_resi dent_addr_ tab(indx). ADDRESS_IN VALID_TYPE _ID,
  1263                         L_new_resi dent_addr_ tab(indx). NCOA_STATU S_TYPE_ID,
  1264                         L_new_resi dent_addr_ tab(indx). NCOA_DELIV ERY_TYPE_I D,
  1265                         L_new_resi dent_addr_ tab(indx). NCOA_ZIP_M ATCH_TYPE_ ID,
  1266                         L_new_resi dent_addr_ tab(indx). NCOA_ZIP_N O_MATCH_TY PE_ID,
  1267                         L_new_resi dent_addr_ tab(indx). ADDRESS_LI NE1,
  1268                         L_new_resi dent_addr_ tab(indx). ADDRESS_LI NE2,
  1269                         L_new_resi dent_addr_ tab(indx). ADDRESS_LI NE3,
  1270                         L_new_resi dent_addr_ tab(indx). CITY,
  1271                         L_new_resi dent_addr_ tab(indx). STATE_CODE ,
  1272                         L_new_resi dent_addr_ tab(indx). COUNTY_COD E,
  1273                         L_new_resi dent_addr_ tab(indx). PROVINCE_C ODE,
  1274                         L_new_resi dent_addr_ tab(indx). ZIP_CODE,
  1275                         L_new_resi dent_addr_ tab(indx). ZIP_PLUS_4 ,
  1276                         L_new_resi dent_addr_ tab(indx). POSTAL_COD E,
  1277                         L_new_resi dent_addr_ tab(indx). COUNTRY_CO DE,
  1278                         L_new_resi dent_addr_ tab(indx). ADDRESS_CH ANGE_EFFEC TIVE_DATE,
  1279                         L_new_resi dent_addr_ tab(indx). ADDRESS_IN VALIDATED_ DATE,
  1280                         L_new_resi dent_addr_ tab(indx). NCOA_ADDRE SS_CHECK_D ATE,
  1281                         L_new_resi dent_addr_ tab(indx). ADDRESS_ST ART_DATE_T XT,
  1282                         L_new_resi dent_addr_ tab(indx). ADDRESS_EN D_DATE_TXT ,
  1283                         L_new_resi dent_addr_ tab(indx). ADDRESS_PH ONE_NUMBER ,
  1284                         '549234',
  1285                         SYSDATE,
  1286                         '549234',
  1287                         SYSDATE,
  1288                         0,
  1289                         L_new_resi dent_addr_ tab(indx). RECORD_MOD IFIED_SRC_ NAME,
  1290                         L_new_resi dent_addr_ tab(indx). PERSON_REL ATION_ID,
  1291                         L_new_resi dent_addr_ tab(indx). CASSCERTIF IEDTYPE_ID ,
  1292                         L_new_resi dent_addr_ tab(indx). CASS_CERTI FIED_DATE,
  1293                         L_new_resi dent_addr_ tab(indx). PURPOSE_OF _USE_TYPE_ ID) ;
  1294  
  1295            c ommit;
  1296  
  1297            V C_msg_step  := 'Displ aying row  count';
  1298  
  1299            - - Rows cou nt added
  1300            F OR I IN 1. .L_new_res ident_addr _tab.COUNT  LOOP
  1301                  VN_tot al_count : = VN_total _count + S QL%BULK_RO WCOUNT(I);
  1302            E ND LOOP;
  1303  
  1304            t ime_c := d bms_utilit y.get_time ;
  1305            V N_elapsed_ time := RO UND((time_ c - time_b )/100/60,2 );
  1306  
  1307            D BMS_APPLIC ATION_INFO .set_clien t_info('It eration# ' || gc_inte ration||'  - Rows: '| |VN_total_ count ||'  - '||VN_el apsed_time ||' min');
  1308  
  1309            A DRMGT.Job_ Process_Lo g_Sp(PC_jo b_name =>  gc_program _name,
  1310                                                PD_job_lo g_date =>  SYSDATE,
  1311                                                PC_job_st atus => 'I NFORMATION  - Iterati on: '|| gc _interatio n,
  1312                                                PC_job_lo g_message  => 'Rows A dded: '||V N_total_co unt||' - E lap(min):  '||VN_elap sed_time,
  1313                                                PD_date1  => SYSDATE
  1314                                 );
  1315  
  1316            E XIT WHEN L _new_resid ent_addr_t ab.COUNT =  0;
  1317  
  1318  
  1319       END LO OP;
  1320  
  1321       CLOSE  GetPermAdd rInfo_C;
  1322  
  1323       DBMS_A PPLICATION _INFO.set_ client_inf o('Total I terations  '|| gc_int eration||'  - Row Add ed"  '||VN _total_cou nt ||' - E lapsed: '| |TO_CHAR(S YSDATE,'MM /DD/YY HH2 4:MI:SS')) ;
  1324  
  1325       time_d  := dbms_u tility.get _time;
  1326  
  1327       VN_ela psed_time  := ROUND(( time_d - t ime_a)/100 /60,2);
  1328  
  1329  
  1330       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => gc_pr ogram_name ,
  1331                                                PD_job_lo g_date =>  SYSDATE,
  1332                                                PC_job_st atus => 'I NFORMATION  - Process  Ended - E lap(min):  '||VN_elap sed_time,
  1333                                                PC_job_lo g_message  => 'Total  Rows Added /Rows Proc essed: '|| VN_total_c ount||'/'| |VN_rowcnt _fetched,
  1334                                                PD_date1  => SYSDATE
  1335                                 );
  1336  
  1337  
  1338     EXCEPTIO N
  1339  
  1340       WHEN d ml_errors  THEN
  1341  
  1342         VN_E XCEPTION_C NT := SQL% BULK_EXCEP TIONS.COUN T;
  1343  
  1344         FOR  I IN 1 ..  VN_EXCEPTI ON_CNT LOO P
  1345              VC_error_m sg :=
  1346                  'ERROR  BULK EXCE PTION: ' | | VC_msg_s tep||CHR(1 0) || SQL% BULK_EXCEP TIONS(I).E RROR_INDEX  ||
  1347                  ' Pers on ID: ' | | L_new_re sident_add r_tab(I).p erson_id | |
  1348                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  1349  
  1350                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => gc_pr ogram_name ,
  1351                                                PD_job_lo g_date =>  SYSDATE,
  1352                                                PC_job_st atus => 'E RROR BULK  EXCEPTION  - Row# '|| SQL%BULK_E XCEPTIONS( I).ERROR_I NDEX,
  1353                                                PC_job_lo g_message  => 'Total  Rows Added /Rows Proc essed: '|| VN_total_c ount||'/'| |VN_rowcnt _fetched|| ' Elapsed:  '||VN_ela psed_time,
  1354                                                PC_text1  => SUBSTR( VC_error_m sg,1,200),
  1355                                                PD_date1  => SYSDATE
  1356                                 );
  1357  
  1358               DBMS_OUTP UT.put_lin e(VC_error _msg);
  1359  
  1360         END  LOOP;
  1361  
  1362      WHEN OT HERS THEN
  1363  
  1364         VC_e rror_msg : ='ERROR EX CEPTION -  '||VC_msg_ step||CHR( 10)|| SUBS TR('Unkown  Error: '| |SQLERRM,1 ,200);
  1365  
  1366         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => gc_ program_na me,
  1367                                                        P D_job_log_ date => SY SDATE,
  1368                                                        P C_job_stat us => 'ERR OR EXCEPTI ON',
  1369                                                        P C_job_log_ message =>  'Total Ro ws Added/R ows Proces sed: '||VN _total_cou nt||'/'||V N_rowcnt_f etched||'  Elap(min):  '||VN_ela psed_time,
  1370                                                        P C_text1 =>  SUBSTR(VC _error_msg ,1,200),
  1371                                                        P D_date1 =>  SYSDATE
  1372                                 );
  1373  
  1374          DBM S_OUTPUT.P UT_LINE(VC _error_msg );
  1375  
  1376  
  1377   END LOAD_M ISSING_RES IDENT_ADDR _SP;
  1378   /
  1379  
  1380  
  1381   CREATE OR  REPLACE PU BLIC SYNON YM LOAD_MI SSING_RESI DENT_ADDR_ SP FOR ADR .LOAD_MISS ING_RESIDE NT_ADDR_SP ;
  1382   DROP PROCE DURE ADR.L OAD_CORRES PONDENCE_I NFO_SP;
  1383  
  1384   CREATE OR  REPLACE PR OCEDURE AD R.LOAD_COR RESPONDENC E_INFO_SP(
  1385       p_bulk _limit         NUMBER  DEFAULT 1 000,
  1386       p_effe ctive_date     DATE)
  1387   IS
  1388  
  1389      -- 5562 66: Add jo b(s) to po pulate ACA  mail queu e records  into Corre spondence  table
  1390      gc_job_ name              VAR CHAR2 (40)  := 'LOAD_ CORRESPOND ENCE_INFO_ JOB';
  1391  
  1392      CC_LETT ER_TEMPLAT E_ID         CONSTANT  NUMBER :=  103031;
  1393      p_corr_ effective_ date         DATE;
  1394      p_corr_ year                    NUMBER;
  1395  
  1396  
  1397      c_limit   CONSTANT  PLS_INTEG ER := p_bu lk_limit;
  1398      gc_inte ration  PL S_INTEGER  := 0;
  1399  
  1400      VC_msg_ step           VARCHA R2(200);
  1401      VC_erro r_msg          VARCHA R2(200);
  1402      VN_tota l_count        NUMBER  := 0;
  1403      VN_elap sed_time       NUMBER ;
  1404      VN_rowc nt_fetched     NUMBER  := 0;
  1405  
  1406  
  1407      time_a      INTEGE R;
  1408      time_b      INTEGE R;
  1409      time_c      INTEGE R;
  1410      time_d      INTEGE R;
  1411  
  1412  
  1413      dml_err ors         EXCEPTION ;
  1414      PRAGMA  EXCEPTION_ INIT(dml_e rrors, -24 381);
  1415      VN_EXCE PTION_CNT   PLS_INTEG ER;
  1416  
  1417      TYPE CO RRSD_PERSO NID IS TAB LE OF ADR. correspond ence.perso n_id%TYPE  INDEX BY B INARY_INTE GER;
  1418  
  1419      CORRSD_ PERSONID_T AB  CORRSD _PERSONID;
  1420  
  1421  
  1422      CURSOR  GetCorresp ondenceInf o_C (l_eff _date DATE , l_eff_ye ar NUMBER)  IS
  1423      SELECT  DISTINCT p erson_id
  1424      FROM (
  1425           SE LECT m.per son_id
  1426                 FROM me c_period m
  1427                WHERE (    m.mec_en d_date IS  NULL
  1428                       O R m.mec_en d_date >=  l_eff_date )
  1429               MINUS
  1430               SELECT pe rson_id
  1431                 FROM co rresponden ce c
  1432                WHERE      c.com_le tter_templ ate_id = C C_LETTER_T EMPLATE_ID
  1433                   AND E XTRACT( YE AR FROM c. correspond ence_effec tive_date) = l_eff_ye ar
  1434       )
  1435       ;
  1436  
  1437  
  1438   BEGIN
  1439  
  1440       SELECT  TO_DATE(( TO_CHAR(p_ effective_ date,'DD-M ON-YYYY')| |' 00:00:0 0'),'DD-MO N-YYYY HH2 4:MI:SS'),
  1441       EXTRAC T (YEAR FR OM  p_effe ctive_date )
  1442           IN TO  p_corr _effective _date, p_c orr_year
  1443       FROM D UAL;
  1444  
  1445  
  1446       -- === ========== ========== ========== ========== ========== ===
  1447       --
  1448       -- Beg in Bulk Co llect Fetc h
  1449       --
  1450       -- === ========== ========== ========== ========== ========== ===
  1451       EXECUT E IMMEDIAT E 'ALTER S ESSION for ce paralle l dml para llel 4';
  1452       EXECUT E IMMEDIAT E 'ALTER S ESSION for ce paralle l query pa rallel 4';
  1453       EXECUT E IMMEDIAT E 'ALTER S ESSION set  DB_FILE_M ULTIBLOCK_ READ_COUNT =256';
  1454       EXECUT E IMMEDIAT E 'ALTER S ESSION SET  PARALLEL_ FORCE_LOCA L=TRUE';
  1455  
  1456       DBMS_A PPLICATION _INFO.set_ client_inf o(gc_job_n ame ||': ' ||p_corr_e ffective_d ate||'-'|| p_bulk_lim it||' STAR TED '||TO_ CHAR(SYSDA TE,'MM/DD/ YY HH24:MI :SS'));
  1457  
  1458       time_a  := dbms_u tility.get _time;
  1459       VN_tot al_count : = 0;
  1460  
  1461       VC_msg _step := ' OPEN CURSO R';
  1462  
  1463      ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => gc_job _name,
  1464                                      PD_job_l og_date =>  SYSDATE,
  1465                                      PC_job_s tatus => ' INFORMATIO N - Proces s Initiati on',
  1466                                      PC_job_l og_message  => gc_job _name,
  1467                                      pc_text1  => 'EFF D ATE: '|| T O_CHAR(p_c orr_effect ive_date,' YYYY-MM-DD  hh24:mi:s s') ||' -  BULK LIMIT : '|| c_li mit,
  1468                                      PD_date1  => SYSDAT E
  1469                                 );
  1470  
  1471       OPEN G etCorrespo ndenceInfo _C (p_corr _effective _date, p_c orr_year)  ;
  1472       LOOP
  1473            g c_interati on := gc_i nteration  + 1;
  1474  
  1475            F ETCH GetCo rresponden ceInfo_C B ULK COLLEC T INTO COR RSD_PERSON ID_TAB LIM IT c_limit ;
  1476  
  1477            V N_rowcnt_f etched :=  VN_rowcnt_ fetched +  CORRSD_PER SONID_TAB. COUNT;
  1478  
  1479            V C_msg_step  := 'BULK  LOAD BEGIN S';
  1480  
  1481                time_b : = dbms_uti lity.get_t ime;
  1482  
  1483            F ORALL indx  IN CORRSD _PERSONID_ TAB.FIRST. . CORRSD_P ERSONID_TA B.LAST SAV E EXCEPTIO NS
  1484  
  1485  
  1486                INSERT / *+ APPEND  */ INTO AD R.CORRESPO NDENCE (
  1487                  CORRES PONDENCE_I D,
  1488                           CORRESPO NDENCE_TYP E_ID,
  1489                           CORRESPO NDENCE_STA TUS_ID,
  1490                           PERSON_I D,
  1491                           CORRESPO NDENCE_STA TUS_DATE,
  1492                           CORRESPO NDENCE_EFF ECTIVE_DAT E,
  1493                           COM_LETT ER_TEMPLAT E_ID,
  1494                          -- ADDRES S_H_ID ,
  1495                           RECORD_C REATED_BY,
  1496                           RECORD_C REATED_DAT E ,
  1497                           RECORD_M ODIFIED_BY  ,
  1498                           RECORD_M ODIFIED_DA TE ,
  1499                           RECORD_M ODIFIED_CO UNT )
  1500                    VALU ES(
  1501                         CORRESPOND ENCE_S.NEX TVAL ,
  1502                         1,
  1503                         4,
  1504                         CORRSD_PER SONID_TAB( indx),
  1505                         TRUNC(SYSD ATE),
  1506                         p_effectiv e_date,
  1507                         CC_LETTER_ TEMPLATE_I D,
  1508                         '556266',
  1509                         SYSDATE,
  1510                         '556266',
  1511                         SYSDATE,
  1512                         0
  1513                       )  ;
  1514  
  1515            c ommit;
  1516  
  1517            V C_msg_step  := 'Displ aying row  count';
  1518  
  1519            - - Rows cou nt added
  1520  
  1521            F OR I IN 1. .CORRSD_PE RSONID_TAB .COUNT LOO P
  1522                  VN_tot al_count : = VN_total _count + S QL%BULK_RO WCOUNT(I);
  1523            E ND LOOP;
  1524  
  1525            t ime_c := d bms_utilit y.get_time ;
  1526            V N_elapsed_ time := RO UND((time_ c - time_b )/100/60,2 );
  1527  
  1528            D BMS_APPLIC ATION_INFO .set_clien t_info('It eration# ' || gc_inte ration||'  - Rows: '| |VN_total_ count ||'  - '||VN_el apsed_time ||' min');
  1529  
  1530            A DRMGT.Job_ Process_Lo g_Sp(PC_jo b_name =>  gc_job_nam e,
  1531                                                PD_job_lo g_date =>  SYSDATE,
  1532                                                PC_job_st atus => 'I NFORMATION  - Iterati on: '|| gc _interatio n,
  1533                                                PC_job_lo g_message  => 'Total  Rows Added : '||VN_to tal_count| |' - Elap( min): '||V N_elapsed_ time,
  1534                                                PD_date1  => SYSDATE
  1535                                 );
  1536  
  1537            E XIT WHEN C ORRSD_PERS ONID_TAB.C OUNT = 0;
  1538  
  1539  
  1540       END LO OP;
  1541  
  1542       CLOSE  GetCorresp ondenceInf o_C;
  1543  
  1544       DBMS_A PPLICATION _INFO.set_ client_inf o('Total I terations  '|| gc_int eration||'  - Row Add ed"  '||VN _total_cou nt ||' - E lapsed: '| |TO_CHAR(S YSDATE,'MM /DD/YY HH2 4:MI:SS')) ;
  1545  
  1546       time_d  := dbms_u tility.get _time;
  1547  
  1548       VN_ela psed_time  := ROUND(( time_d - t ime_a)/100 /60,2);
  1549  
  1550  
  1551       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => gc_jo b_name,
  1552                                                PD_job_lo g_date =>  SYSDATE,
  1553                                                PC_job_st atus => 'I NFORMATION  - Process  Ended - E lap(min):  '||VN_elap sed_time,
  1554                                                PC_job_lo g_message  => 'Total  Rows Added /Rows Proc essed: '|| VN_total_c ount||'/'| |VN_rowcnt _fetched,
  1555                                                PD_date1  => SYSDATE
  1556                                 );
  1557  
  1558  
  1559     EXCEPTIO N
  1560  
  1561       WHEN d ml_errors  THEN
  1562  
  1563         VN_E XCEPTION_C NT := SQL% BULK_EXCEP TIONS.COUN T;
  1564  
  1565         FOR  I IN 1 ..  VN_EXCEPTI ON_CNT LOO P
  1566              VC_error_m sg :=
  1567                  'ERROR  BULK EXCE PTION: ' | | VC_msg_s tep||CHR(1 0) || SQL% BULK_EXCEP TIONS(I).E RROR_INDEX  ||
  1568                  ' Pers on ID: ' | | CORRSD_P ERSONID_TA B(I) ||
  1569                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  1570  
  1571                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => gc_jo b_name,
  1572                                                PD_job_lo g_date =>  SYSDATE,
  1573                                                PC_job_st atus => 'E RROR BULK  EXCEPTION  - Row# '|| SQL%BULK_E XCEPTIONS( I).ERROR_I NDEX,
  1574                                                PC_job_lo g_message  => 'Total  Rows Added /Rows Proc essed: '|| VN_total_c ount||'/'| |VN_rowcnt _fetched|| ' Elapsed:  '||VN_ela psed_time,
  1575                                                PC_text1  => SUBSTR( VC_error_m sg,1,200),
  1576                                                PD_date1  => SYSDATE
  1577                                 );
  1578  
  1579               DBMS_OUTP UT.put_lin e(VC_error _msg);
  1580  
  1581         END  LOOP;
  1582  
  1583      WHEN OT HERS THEN
  1584  
  1585         VC_e rror_msg : ='ERROR EX CEPTION -  '||VC_msg_ step||CHR( 10)|| SUBS TR('Unkown  Error: '| |SQLERRM,1 ,200);
  1586  
  1587         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => gc_ job_name,
  1588                                                        P D_job_log_ date => SY SDATE,
  1589                                                        P C_job_stat us => 'ERR OR EXCEPTI ON',
  1590                                                        P C_job_log_ message =>  'Total Ro ws Added/R ows Proces sed: '||VN _total_cou nt||'/'||V N_rowcnt_f etched||'  Elap(min):  '||VN_ela psed_time,
  1591                                                        P C_text1 =>  SUBSTR(VC _error_msg ,1,200),
  1592                                                        P D_date1 =>  SYSDATE
  1593                                 );
  1594  
  1595          DBM S_OUTPUT.P UT_LINE(VC _error_msg );
  1596  
  1597  
  1598   END LOAD_C ORRESPONDE NCE_INFO_S P;
  1599   /
  1600  
  1601  
  1602   CREATE OR  REPLACE PU BLIC SYNON YM LOAD_CO RRESPONDEN CE_INFO_SP  FOR ADR.L OAD_CORRES PONDENCE_I NFO_SP;
  1603   DROP PROCE DURE ADR.H L7_TXN_LOG _NULL_ERR_ COL_SP;
  1604  
  1605   CREATE OR  REPLACE PR OCEDURE AD R.Hl7_Txn_ Log_Null_E rr_Col_Sp
  1606     (PB_run_ standalone
  1607        IN      BOOLEAN  DEFAULT FA LSE,
  1608      PB_allo w_rpt_inst
  1609        IN      BOOLEAN  DEFAULT FA LSE,
  1610      PN_rows _to_proces s
  1611        IN      NUMBER D EFAULT NUL L
  1612     )
  1613   IS
  1614  
  1615   -- ******* ********** ********** ********** ********** ********** ********** ********
  1616   -- * Proce dure: Hl7_ Txn_Log_Nu ll_Error_C ol
  1617   -- *
  1618   -- *   Upd ate HL7 tr anscations  to remove  data from  the inter nal_error_ text
  1619   -- *   col umn for al l rows mor e than 6 m onths old.
  1620   -- *
  1621   -- * Param eters:
  1622   -- *
  1623   -- *  PB_r un_standal one   Igno re DBMS_JO B logic fo r checking  running j obs.
  1624   -- *                         Def ault: FALS E
  1625   -- *
  1626   -- *  PB_a llow_rpt_i nst   Allo w stored p rocedure t o be submi tted in th e
  1627   -- *                        DBMS _JOB queue  on the AD R reportin g database s
  1628   -- *                         Def ault: FALS E
  1629   -- *
  1630   -- ******* ********** ********** ********** ********** ********** ********** ********
  1631   --
  1632   -- ======= ========== ========== ========== ========== ========== ========== ========
  1633   -- Date         Autho r             Descrip tion
  1634   -- ======= ========== ========== ========== ========== ========== ========== ========
  1635   -- 06/23/2 010  Craig  Wood         Created  for CCR 1 100.
  1636   --
  1637   -- ======= ========== ========== ========== ========== ========== ========== ========
  1638  
  1639   -- CONSTAN TS
  1640  
  1641     CC_no                                   V ARCHAR2(1)  := 'N';
  1642     CC_parm_ applicatio n_name     CONSTANT V ARCHAR2(80 ) := 'HL7  NULL INTER NAL_ERROR_ TEXT COLUM N';
  1643     CC_parm_ hl7_err_tx t_age      CONSTANT V ARCHAR2(50 ) := 'OLDE ST HL7 ERR OR TEXT DA YS';
  1644     CC_parm_ last_hl7_i d          CONSTANT V ARCHAR2(50 ) := 'LAST  HL7 ID PR OCESSED';
  1645     CC_parm_ log_file_a ge         CONSTANT V ARCHAR2(50 ) := 'OLDE ST LOG FIL E DAYS';
  1646     CC_proce ss_name               CONSTANT V ARCHAR2(60 ) := 'HL7  NULL INTER NAL_ERROR_ TEXT COLUM N';
  1647     CC_sp_na me                    CONSTANT V ARCHAR2(35 ) := 'Hl7_ Txn_Log_Nu ll_Err_Col _Sp';
  1648     CC_yes                                  V ARCHAR2(1)  := 'Y';
  1649  
  1650   -- VARIABL ES
  1651  
  1652     VB_allow _rpt_inst                      B OOLEAN :=  FALSE;
  1653     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  1654  
  1655     VC_allow _rpt_inst                      V ARCHAR2(5)  := NULL;
  1656     VC_insta nce_name                       V ARCHAR2(16 );
  1657     VC_proce ss_duratio n                   V ARCHAR2(25 );
  1658     VC_run_s tandalone                      V ARCHAR2(5)  := NULL;
  1659     VC_sql_s tatement                       V ARCHAR2(20 00);
  1660  
  1661     VD_log_d ate                            D ATE;
  1662     VD_proce ss_end_dat e                   D ATE;
  1663     VD_proce ss_start_d ate                 D ATE;
  1664     VD_rec_g roup_date                      D ATE;
  1665  
  1666     VN_job_c ount                           N UMBER := 0 ;
  1667     VN_job_n umber                          N UMBER;
  1668     VN_max_l og_id                          N UMBER := 0 ;
  1669     VN_parm_ hl7_err_tx t_age               N UMBER;
  1670     VN_parm_ log_file_a ge                  N UMBER;
  1671     VN_parm_ last_log_i d                   N UMBER := 0 ;
  1672     VN_parm_ rows_to_pr ocess               N UMBER;
  1673     VN_pass_ count                          N UMBER := 0 ;
  1674     VN_rec_c ount                           N UMBER := 0 ;
  1675     VN_updat e_count                        N UMBER := 0 ;
  1676  
  1677   -- CURSORS
  1678  
  1679     CURSOR C _hl7_id IS
  1680       SELECT     Hl7_tr ansaction_ log_id
  1681       FROM       Hl7_tr ansaction_ log
  1682       WHERE      Hl7_tr ansaction_ log_id > V N_parm_las t_log_id
  1683       AND        Record _created_d ate < TRUN C(SYSDATE)  - VN_parm _hl7_err_t xt_age
  1684       AND        Intern al_error_t ext IS NOT  NULL;
  1685  
  1686   -- TYPES
  1687  
  1688     TYPE TT_ hl7_id IS
  1689       TABLE  OF ADR.Hl7 _Transacti on_Log.Hl7 _transacti on_log_id% TYPE;
  1690  
  1691   -- MEMORY  TABLES
  1692  
  1693     T_hl7_id                                T T_hl7_id;
  1694  
  1695   -- ******* ********** ********** ********** ********** ********** ********** *******
  1696   -- *
  1697   -- *  MAIN  PROCEDURE :
  1698   -- *
  1699   -- ******* ********** ********** ********** ********** ********** ********** *******
  1700  
  1701   BEGIN
  1702  
  1703     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  1704     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  1705  
  1706     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  1707     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  1708  
  1709     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  1710     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  1711  
  1712     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  1713     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  1714  
  1715     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  QUERY PARA LLEL 8';
  1716     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  1717  
  1718     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  DML PARALL EL 8';
  1719     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  1720  
  1721     VD_rec_g roup_date  := TRUNC(S YSDATE);
  1722  
  1723     VD_log_d ate := SYS DATE;
  1724     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  1725                                 PD _job_log_d ate => VD_ log_date,
  1726                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  1727                                 PD _date1 =>  VD_rec_gro up_date,
  1728                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  1729  
  1730   -- ******* ********** ********** ********** ********** ********** ********** ********
  1731   -- *
  1732   -- * Valid ate input  parameters
  1733   -- *
  1734   -- ******* ********** ********** ********** ********** ********** ********** ********
  1735  
  1736   -- * Check  run stand alone flag
  1737  
  1738     IF PB_ru n_standalo ne IS NULL
  1739      OR NOT  PB_run_sta ndalone TH EN
  1740  
  1741       VB_run _standalon e := FALSE ;
  1742       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  1743  
  1744     ELSE
  1745  
  1746       VB_run _standalon e := TRUE;
  1747       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  1748  
  1749     END IF;
  1750  
  1751   -- * Check  run on re port insta nce flag
  1752  
  1753     IF PB_al low_rpt_in st IS NULL
  1754      OR NOT  PB_allow_r pt_inst TH EN
  1755  
  1756       VB_all ow_rpt_ins t := FALSE ;
  1757       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  1758  
  1759     ELSE
  1760  
  1761       VB_all ow_rpt_ins t := TRUE;
  1762       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  1763  
  1764     END IF;
  1765  
  1766   -- ******* ********** ********** ********** ********** ********** ********** ********
  1767   -- *
  1768   -- * Retri eve proces sing param eters
  1769   -- *
  1770   -- ******* ********** ********** ********** ********** ********** ********** ********
  1771  
  1772   -- Process  Parameter  OLDEST HL 7 ERROR TE XT DAYS KE PT
  1773  
  1774     BEGIN
  1775  
  1776       SELECT     Value
  1777       INTO       VN_par m_hl7_err_ txt_age
  1778       FROM       ADRMGT .Adr_Param eter
  1779       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  1780       AND        Parame ter_name =  'OLDEST H L7 ERROR T EXT DAYS K EPT';
  1781  
  1782       IF VN_ parm_hl7_e rr_txt_age  IS NULL T HEN
  1783  
  1784         VD_l og_date :=  SYSDATE;
  1785         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1786                                      PD_job_l og_date =>  VD_log_da te,
  1787                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  1788                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST H L7 ERROR T EXT DAYS K EPT is NUL L. Termina ting proce ss.',1,200 0),
  1789                                      PD_date1  => VD_rec _group_dat e,
  1790                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1791  
  1792         RETU RN;
  1793  
  1794       END IF ;
  1795  
  1796     EXCEPTIO N
  1797  
  1798       WHEN N O_DATA_FOU ND THEN
  1799  
  1800         VD_l og_date :=  SYSDATE;
  1801         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1802                                      PD_job_l og_date =>  VD_log_da te,
  1803                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  1804                                      PC_job_l og_message  => 'Param eter for O LDEST HL7  ERROR TEXT  DAYS KEPT  was not f ound. Term inating pr ocess.',
  1805                                      PD_date1  => VD_rec _group_dat e,
  1806                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1807  
  1808         RETU RN;
  1809  
  1810       WHEN O THERS THEN
  1811  
  1812         VD_l og_date :=  SYSDATE;
  1813         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1814                                      PD_job_l og_date =>  VD_log_da te,
  1815                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  1816                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  OLDEST HL 7 ERROR TE XT DAYS KE PT. Termin ating proc ess. '
  1817                                                                      || SQLERR M,1,2000),
  1818                                      PD_date1  => VD_rec _group_dat e,
  1819                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1820  
  1821         RETU RN;
  1822  
  1823     END;
  1824  
  1825   -- Process  Parameter  OLDEST LO G FILE DAY S KEPT
  1826  
  1827     BEGIN
  1828  
  1829       SELECT     Value
  1830       INTO       VN_par m_log_file _age
  1831       FROM       ADRMGT .Adr_Param eter
  1832       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  1833       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  1834  
  1835       IF VN_ parm_log_f ile_age IS  NULL THEN
  1836  
  1837         VD_l og_date :=  SYSDATE;
  1838         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1839                                      PD_job_l og_date =>  VD_log_da te,
  1840                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  1841                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST L OG FILE DA YS KEPT is  NULL. Ter minating p rocess.',1 ,2000),
  1842                                      PD_date1  => VD_rec _group_dat e,
  1843                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1844  
  1845         RETU RN;
  1846  
  1847       END IF ;
  1848  
  1849     EXCEPTIO N
  1850  
  1851       WHEN N O_DATA_FOU ND THEN
  1852  
  1853         VD_l og_date :=  SYSDATE;
  1854         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1855                                      PD_job_l og_date =>  VD_log_da te,
  1856                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  1857                                      PC_job_l og_message  => 'Param eter for O LDEST LOG  FILE DAYS  KEPT was n ot found.  Terminatin g process. ',
  1858                                      PD_date1  => VD_rec _group_dat e,
  1859                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1860  
  1861         RETU RN;
  1862  
  1863       WHEN O THERS THEN
  1864  
  1865         VD_l og_date :=  SYSDATE;
  1866         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1867                                      PD_job_l og_date =>  VD_log_da te,
  1868                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  1869                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  OLDEST LO G FILE DAY S KEPT. Te rminating  process. '
  1870                                                                      || SQLERR M,1,2000),
  1871                                      PD_date1  => VD_rec _group_dat e,
  1872                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1873  
  1874         RETU RN;
  1875  
  1876     END;
  1877  
  1878   -- Process  Parameter  ROWS TO P ROCESS
  1879  
  1880     BEGIN
  1881  
  1882       SELECT     Value
  1883       INTO       VN_par m_rows_to_ process
  1884       FROM       ADRMGT .Adr_Param eter
  1885       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  1886       AND        Parame ter_name =  'ROWS TO  PROCESS';
  1887  
  1888       IF VN_ parm_rows_ to_process  IS NULL T HEN
  1889  
  1890         VD_l og_date :=  SYSDATE;
  1891         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1892                                      PD_job_l og_date =>  VD_log_da te,
  1893                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  1894                                      PC_job_l og_message  => SUBSTR ('Paramete r ROWS TO  PROCESS is  NULL. Ter minating p rocess.',1 ,2000),
  1895                                      PD_date1  => VD_rec _group_dat e,
  1896                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1897  
  1898         RETU RN;
  1899  
  1900       END IF ;
  1901  
  1902     EXCEPTIO N
  1903  
  1904       WHEN N O_DATA_FOU ND THEN
  1905  
  1906         VD_l og_date :=  SYSDATE;
  1907         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1908                                      PD_job_l og_date =>  VD_log_da te,
  1909                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  1910                                      PC_job_l og_message  => 'Param eter for R OWS TO PRO CESS was n ot found.  Terminatin g process. ',
  1911                                      PD_date1  => VD_rec _group_dat e,
  1912                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1913  
  1914         RETU RN;
  1915  
  1916       WHEN O THERS THEN
  1917  
  1918         VD_l og_date :=  SYSDATE;
  1919         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1920                                      PD_job_l og_date =>  VD_log_da te,
  1921                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  1922                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ROWS TO P ROCESS. Te rminating  process. '
  1923                                                                      || SQLERR M,1,2000),
  1924                                      PD_date1  => VD_rec _group_dat e,
  1925                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1926  
  1927         RETU RN;
  1928  
  1929     END;
  1930  
  1931   -- Process  Parameter  LAST PROC ESSED LOG  ID
  1932  
  1933     BEGIN
  1934  
  1935       SELECT     Value
  1936       INTO       VN_par m_last_log _id
  1937       FROM       ADRMGT .Adr_Param eter
  1938       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  1939       AND        Parame ter_name =  'LAST PRO CESSED LOG  ID';
  1940  
  1941       IF VN_ parm_last_ log_id IS  NULL THEN
  1942  
  1943         VD_l og_date :=  SYSDATE;
  1944         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1945                                      PD_job_l og_date =>  VD_log_da te,
  1946                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  1947                                      PC_job_l og_message  => SUBSTR ('Paramete r LAST PRO CESSED LOG  ID is NUL L. Termina ting proce ss.',1,200 0),
  1948                                      PD_date1  => VD_rec _group_dat e,
  1949                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1950  
  1951         RETU RN;
  1952  
  1953       END IF ;
  1954  
  1955     EXCEPTIO N
  1956  
  1957       WHEN N O_DATA_FOU ND THEN
  1958  
  1959         VD_l og_date :=  SYSDATE;
  1960         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1961                                      PD_job_l og_date =>  VD_log_da te,
  1962                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  1963                                      PC_job_l og_message  => 'Param eter for L AST PROCES SED LOG ID  was not f ound. Term inating pr ocess.',
  1964                                      PD_date1  => VD_rec _group_dat e,
  1965                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1966  
  1967         RETU RN;
  1968  
  1969       WHEN O THERS THEN
  1970  
  1971         VD_l og_date :=  SYSDATE;
  1972         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  1973                                      PD_job_l og_date =>  VD_log_da te,
  1974                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  1975                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  LAST PROC ESSED LOG  ID. Termin ating proc ess. '
  1976                                                                      || SQLERR M,1,2000),
  1977                                      PD_date1  => VD_rec _group_dat e,
  1978                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1979  
  1980         RETU RN;
  1981  
  1982     END;
  1983  
  1984   -- Write o ut Paramet er log mes sages for  submitted  job
  1985  
  1986     VD_log_d ate := SYS DATE;
  1987     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  1988                                 PD _job_log_d ate => VD_ log_date,
  1989                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  1990                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  1991                                 PD _date1 =>  VD_rec_gro up_date,
  1992                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  1993  
  1994     VD_log_d ate := SYS DATE;
  1995     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  1996                                 PD _job_log_d ate => VD_ log_date,
  1997                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  1998                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  1999                                 PD _date1 =>  VD_rec_gro up_date,
  2000                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  2001  
  2002     VD_log_d ate := SYS DATE;
  2003     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  2004                                 PD _job_log_d ate => VD_ log_date,
  2005                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  2006                                 PC _job_log_m essage =>  SUBSTR(' R ows to pro cess each  loop: ' ||  NVL(TO_CH AR(PN_rows _to_proces s),'NULL') ,1,2000),
  2007                                 PD _date1 =>  VD_rec_gro up_date,
  2008                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  2009  
  2010  
  2011     VD_log_d ate := SYS DATE;
  2012     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  2013                                 PD _job_log_d ate => VD_ log_date,
  2014                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  2015                                 PC _job_log_m essage =>  SUBSTR(' O LDEST HL7  ERROR TEXT  DAYS KEPT : ' || VN_ parm_hl7_e rr_txt_age ,1,2000),
  2016                                 PD _date1 =>  VD_rec_gro up_date,
  2017                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  2018  
  2019     VD_log_d ate := SYS DATE;
  2020     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  2021                                 PD _job_log_d ate => VD_ log_date,
  2022                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  2023                                 PC _job_log_m essage =>  SUBSTR(' O LDEST LOG  FILE DAYS  KEPT: ' ||  VN_parm_l og_file_ag e,1,2000),
  2024                                 PD _date1 =>  VD_rec_gro up_date,
  2025                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  2026  
  2027     VD_log_d ate := SYS DATE;
  2028     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  2029                                 PD _job_log_d ate => VD_ log_date,
  2030                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  2031                                 PC _job_log_m essage =>  SUBSTR(' R OWS TO PRO CESS (in e ach loop):  ' || NVL( TO_CHAR(VN _parm_rows _to_proces s),'NULL') ,1,2000),
  2032                                 PD _date1 =>  VD_rec_gro up_date,
  2033                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  2034  
  2035     VD_log_d ate := SYS DATE;
  2036     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  2037                                 PD _job_log_d ate => VD_ log_date,
  2038                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  2039                                 PC _job_log_m essage =>  SUBSTR(' L AST PROCES SED LOG ID : ' || NVL (TO_CHAR(V N_parm_las t_log_id), 'NULL'),1, 2000),
  2040                                 PD _date1 =>  VD_rec_gro up_date,
  2041                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  2042  
  2043   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  2044  
  2045     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  2046  
  2047       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  2048  
  2049       VD_log _date := S YSDATE;
  2050       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2051                                    PD_job_log _date => V D_log_date ,
  2052                                    PC_job_sta tus => SUB STR('WARNI NG     - J ob table p arameters' ,1,60),
  2053                                    PC_job_log _message = > SUBSTR('  Processin g paramete r ROWS TO  PROCESS (i n each loo p) has bee n overridd en.'
  2054                                                              || ' T he overrid e value is : ' || NVL (TO_CHAR(V N_parm_row s_to_proce ss),'NULL' ),1,2000),
  2055                                    PD_date1 = > VD_rec_g roup_date,
  2056                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2057  
  2058     END IF;
  2059  
  2060   -- ******* ********** ********** ********** ********** ********** ********** ********
  2061   -- *
  2062   -- * Check  to see if  process i s running  on a repor ting datab ase.
  2063   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  2064   -- *
  2065   -- ******* ********** ********** ********** ********** ********** ********** ********
  2066  
  2067     IF NOT V B_allow_rp t_inst THE N
  2068  
  2069       BEGIN
  2070  
  2071         VD_l og_date :=  SYSDATE;
  2072         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2073                                      PD_job_l og_date =>  VD_log_da te,
  2074                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  2075                                      PD_date1  => VD_rec _group_dat e,
  2076                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2077  
  2078         SELE CT    Inst ance_name
  2079         INTO       VC_i nstance_na me
  2080         FROM       V$in stance;
  2081  
  2082         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  2083  
  2084           VD _log_date  := SYSDATE ;
  2085           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  2086                                        PD_job _log_date  => VD_log_ date,
  2087                                        PC_job _status =>  SUBSTR('E RROR        - Process ing Failed ',1,60),
  2088                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  2089                                                                     || VC_inst ance_name
  2090                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  2091                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  2092                                        PD_dat e1 => VD_r ec_group_d ate,
  2093                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  2094  
  2095           RE TURN;
  2096  
  2097         END  IF;
  2098  
  2099       EXCEPT ION
  2100  
  2101         WHEN  OTHERS TH EN
  2102  
  2103           VD _log_date  := SYSDATE ;
  2104           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  2105                                        PD_job _log_date  => VD_log_ date,
  2106                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  2107                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  2108                                        PD_dat e1 => VD_r ec_group_d ate,
  2109                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  2110  
  2111           RE TURN;
  2112  
  2113       END;
  2114  
  2115     END IF;
  2116  
  2117   -- ******* ********** ********** ********** ********** ********** ********** ********
  2118   -- *
  2119   -- * Check  to see if  the job h as already  run today
  2120   -- *  - If  running i n stand-al one mode,  don't chec k.
  2121   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  2122   -- *
  2123   -- ******* ********** ********** ********** ********** ********** ********** ********
  2124  
  2125     IF NOT P B_run_stan dalone THE N
  2126  
  2127       BEGIN
  2128  
  2129         VD_l og_date :=  SYSDATE;
  2130         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2131                                      PD_job_l og_date =>  VD_log_da te,
  2132                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  2133                                      PD_date1  => VD_rec _group_dat e,
  2134                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2135  
  2136         SELE CT    COUN T(*)
  2137         INTO       VN_r ec_count
  2138         FROM       ADRM GT.Job_Pro cess_Logs
  2139         WHER E     Job_ name = CC_ process_na me
  2140         AND        Date 1 = VD_rec _group_dat e
  2141         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  2142  
  2143         IF V N_rec_coun t > 0 THEN
  2144  
  2145           VD _log_date  := SYSDATE ;
  2146           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  2147                                        PD_job _log_date  => VD_log_ date,
  2148                                        PC_job _status =>  SUBSTR('W ARNING      - This da te has alr eady been  processed' ,1,60),
  2149                                        PC_job _log_messa ge => SUBS TR('Proces sing has a lready com pleted for  this date . Exiting  to job que ue.',1,200 0),
  2150                                        PD_dat e1 => VD_r ec_group_d ate,
  2151                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  2152  
  2153           RE TURN;
  2154  
  2155         END  IF;
  2156  
  2157       EXCEPT ION
  2158  
  2159         WHEN  OTHERS TH EN
  2160  
  2161           VD _log_date  := SYSDATE ;
  2162           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  2163                                        PD_job _log_date  => VD_log_ date,
  2164                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  2165                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  2166                                        PD_dat e1 => VD_r ec_group_d ate,
  2167                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  2168  
  2169           RE TURN;
  2170  
  2171       END;
  2172  
  2173     END IF;
  2174  
  2175   -- ******* ********** ********** ********** ********** ********** ********** ********
  2176   -- *
  2177   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  2178   -- *  - If  yes, then  end this  job.
  2179   -- *
  2180   -- ******* ********** ********** ********** ********** ********** ********** ********
  2181  
  2182     SELECT C OUNT(*)
  2183     INTO   V N_job_coun t
  2184     FROM   S YS.DBA_JOB S_RUNNING  R,
  2185            S YS.DBA_JOB S J
  2186     WHERE  J .JOB = R.J OB
  2187     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  2188  
  2189     IF VN_jo b_count >  1 THEN
  2190  
  2191       VD_log _date := S YSDATE;
  2192       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2193                                    PD_job_log _date => V D_log_date ,
  2194                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  2195                                    PC_job_log _message = > SUBSTR(' There is a nother '
  2196                                                                || C C_sp_name
  2197                                                                || '  job runni ng.'
  2198                                                                || '  Exiting j ob without  running.' ,1,2000),
  2199                                    PD_date1 = > VD_rec_g roup_date,
  2200                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2201  
  2202       RETURN ;
  2203  
  2204     ELSE
  2205  
  2206       IF VB_ run_standa lone THEN
  2207  
  2208         VD_l og_date :=  SYSDATE;
  2209         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2210                                      PD_job_l og_date =>  VD_log_da te,
  2211                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  2212                                      PD_date1  => VD_rec _group_dat e,
  2213                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2214  
  2215       ELSE
  2216  
  2217         SELE CT    MAX( J.Job)
  2218         INTO       VN_j ob_number
  2219         FROM       SYS. DBA_JOBS_R UNNING R,
  2220                    SYS. DBA_JOBS J
  2221         WHER E     J.JO B = R.JOB
  2222         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  2223  
  2224         VD_l og_date :=  SYSDATE;
  2225         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2226                                      PD_job_l og_date =>  VD_log_da te,
  2227                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  2228                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  2229                                                                      || VN_job _number,1, 2000),
  2230                                      PD_date1  => VD_rec _group_dat e,
  2231                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2232  
  2233       END IF ;
  2234  
  2235     END IF;
  2236  
  2237   -- ******* ********** ********** ********** ********** ********** ********** ********
  2238   -- *
  2239   -- * Main  processing  loop
  2240   -- *
  2241   -- ******* ********** ********** ********** ********** ********** ********** ********
  2242  
  2243     VN_pass_ count := 0 ;
  2244     VN_updat e_count :=  0;
  2245     VD_proce ss_start_d ate := SYS DATE;
  2246  
  2247   -- ******* ********** ********** ********** ********** ********** ********** ********
  2248   -- * Remov e old proc ess log ro ws
  2249   -- ******* ********** ********** ********** ********** ********** ********** ********
  2250     BEGIN
  2251  
  2252       VD_log _date := S YSDATE;
  2253       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2254                                    PD_job_log _date => V D_log_date ,
  2255                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  2256                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  2257                                                                   | | VN_parm_ log_file_a ge
  2258                                                                   | | ' days o ld',1,2000 ),
  2259                                    PD_date1 = > VD_rec_g roup_date,
  2260                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2261  
  2262       DELETE
  2263       FROM       ADRMGT .Job_Proce ss_Logs
  2264       WHERE      Job_na me = CC_pr ocess_name
  2265       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  2266  
  2267       COMMIT ;
  2268  
  2269       VD_log _date := S YSDATE;
  2270       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2271                                    PD_job_log _date => V D_log_date ,
  2272                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  2273                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  2274                                                                   | | VN_parm_ log_file_a ge
  2275                                                                   | | ' days o ld',1,2000 ),
  2276                                    PD_date1 = > VD_rec_g roup_date,
  2277                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2278  
  2279  
  2280     EXCEPTIO N
  2281  
  2282       WHEN N O_DATA_FOU ND THEN
  2283  
  2284         NULL ;
  2285  
  2286       WHEN O THERS THEN
  2287  
  2288         VD_l og_date :=  SYSDATE;
  2289         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2290                                      PD_job_l og_date  = > VD_log_d ate,
  2291                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess logs .',1,60),
  2292                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  2293                                      PD_date1  => VD_rec _group_dat e,
  2294                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2295  
  2296     END;
  2297  
  2298   -- ******* ********** ********** ********** ********** ********** ********** ********
  2299   -- * Remov e old proc ess error  rows
  2300   -- ******* ********** ********** ********** ********** ********** ********** ********
  2301  
  2302     BEGIN
  2303  
  2304       VD_log _date := S YSDATE;
  2305       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2306                                    PD_job_log _date => V D_log_date ,
  2307                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  2308                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  2309                                                                   | | VN_parm_ log_file_a ge
  2310                                                                   | | ' days o ld',1,2000 ),
  2311                                    PD_date1 = > VD_rec_g roup_date,
  2312                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2313  
  2314       DELETE
  2315       FROM       ADRMGT .Job_Proce ss_Errs
  2316       WHERE      Job_na me = CC_pr ocess_name
  2317       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  2318  
  2319       COMMIT ;
  2320  
  2321       VD_log _date := S YSDATE;
  2322       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2323                                    PD_job_log _date => V D_log_date ,
  2324                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  2325                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  2326                                                                   | | VN_parm_ log_file_a ge
  2327                                                                   | | ' days o ld',1,2000 ),
  2328                                    PD_date1 = > VD_rec_g roup_date,
  2329                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2330  
  2331     EXCEPTIO N
  2332  
  2333       WHEN N O_DATA_FOU ND THEN
  2334  
  2335         NULL ;
  2336  
  2337       WHEN O THERS THEN
  2338  
  2339         VD_l og_date :=  SYSDATE;
  2340         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2341                                      PD_job_l og_date  = > VD_log_d ate,
  2342                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess erro rs.',1,60) ,
  2343                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  2344                                      PD_date1  => VD_rec _group_dat e,
  2345                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2346  
  2347     END;
  2348  
  2349   -- ******* ********** ********** ********** ********** ********** ********** ********
  2350   -- * Main  record cur sor logic
  2351   -- ******* ********** ********** ********** ********** ********** ********** ********
  2352  
  2353     BEGIN
  2354  
  2355       VN_max _log_id :=  0;
  2356       VN_pas s_count :=  0;
  2357       VN_upd ate_count  := 0;
  2358  
  2359       OPEN C _hl7_id;
  2360  
  2361       LOOP
  2362  
  2363         FETC H C_hl7_id
  2364         BULK  COLLECT I NTO T_hl7_ id
  2365         LIMI T VN_parm_ rows_to_pr ocess;
  2366  
  2367         EXIT  WHEN T_hl 7_id.COUNT  = 0;
  2368  
  2369         FORA LL I_hl7_i d IN T_hl7 _id.FIRST. .T_hl7_id. last
  2370           UP DATE    AD R.Hl7_tran saction_lo g
  2371           SE T       In ternal_err or_text =  NULL
  2372           WH ERE     Hl 7_transact ion_log_id  = T_hl7_i d(I_hl7_id );
  2373  
  2374         COMM IT;
  2375  
  2376         FOR  I_hl7_id I N T_hl7_id .FIRST..T_ hl7_id.las t LOOP
  2377  
  2378           IF  T_hl7_id( I_hl7_id)  > VN_max_l og_id THEN
  2379  
  2380              VN_max_log _id := T_h l7_id(I_hl 7_id);
  2381  
  2382           EN D IF;
  2383  
  2384         END  LOOP;
  2385  
  2386         VN_p ass_count  := VN_pass _count + 1 ;
  2387  
  2388         VN_u pdate_coun t := VN_up date_count  + T_hl7_i d.COUNT;
  2389  
  2390       END LO OP;
  2391  
  2392       CLOSE  C_hl7_id;
  2393  
  2394       BEGIN
  2395  
  2396         IF N VL(VN_max_ log_id,0)  <> 0 THEN
  2397  
  2398           UP DATE    AD RMGT.Adr_P arameter
  2399           SE T       Va lue = VN_m ax_log_id
  2400           WH ERE     Ap plication_ name = 'HL 7 NULL INT ERNAL_ERRO R_TEXT COL UMN'
  2401           AN D       Pa rameter_na me = 'LAST  PROCESSED  LOG ID';
  2402  
  2403           CO MMIT;
  2404  
  2405         ELSE
  2406  
  2407           VN _max_log_i d := VN_pa rm_last_lo g_id;
  2408  
  2409         END  IF;
  2410  
  2411       EXCEPT ION
  2412  
  2413         WHEN  OTHERS TH EN
  2414  
  2415           VD _log_date  := SYSDATE ;
  2416           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  2417                                        PD_job _log_date   => VD_log _date,
  2418                                        PC_job _status =>  SUBSTR('E RROR        - Unknown  error upd ating LAST  PROCESSED  LOG ID.', 1,60),
  2419                                        PC_job _log_messa ge => SUBS TR('Last p rocessed l og id: ' | | VN_max_l og_id
  2420                                                                        || '. '  || SQLERR M,1,2000),
  2421                                        PD_dat e1 => VD_r ec_group_d ate,
  2422                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  2423  
  2424           RE TURN;
  2425  
  2426       END;
  2427  
  2428   -- Process  completio n informat ion
  2429  
  2430       VD_log _date := S YSDATE;
  2431       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2432                                    PD_job_log _date => V D_log_date ,
  2433                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  2434                                    PD_date1 = > VD_rec_g roup_date,
  2435                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  2436                                    PN_numeric 2 => VN_pa ss_count,
  2437                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  2438  
  2439       VD_log _date := S YSDATE;
  2440       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2441                                    PD_job_log _date => V D_log_date ,
  2442                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  2443                                    PD_date1 = > VD_rec_g roup_date,
  2444                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  2445                                    PN_numeric 2 => VN_up date_count ,
  2446                                    PC_text2 = > SUBSTR(' Updated Re cord Count ',1,255));
  2447  
  2448       VD_log _date := S YSDATE;
  2449       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2450                                    PD_job_log _date => V D_log_date ,
  2451                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  2452                                    PD_date1 = > VD_rec_g roup_date,
  2453                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  2454                                    PN_numeric 2 => VN_ma x_log_id,
  2455                                    PC_text2 = > SUBSTR(' Last proce ssed log i d',1,255)) ;
  2456  
  2457       VD_pro cess_end_d ate := SYS DATE;
  2458       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  2459                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  2460                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  2461                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  2462                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  2463  
  2464       VD_log _date := S YSDATE;
  2465       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2466                                    PD_job_log _date => V D_log_date ,
  2467                                    PC_job_sta tus => SUB STR('SUCCE SS     - P rocessing  Completed' ,1,60),
  2468                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  2469                                    PD_date1 = > VD_rec_g roup_date,
  2470                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2471  
  2472     EXCEPTIO N
  2473  
  2474       WHEN O THERS THEN
  2475  
  2476         VD_l og_date :=  SYSDATE;
  2477         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2478                                      PD_job_l og_date  = > VD_log_d ate,
  2479                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror updat ing Intern al_error_t ext.',1,60 ),
  2480                                      PC_job_l og_message  => SUBSTR ('Cursor L oop Count:  ' || VN_p ass_count
  2481                                                                      || ' Upda ted Record  Count: '  || VN_upda te_count
  2482                                                                      || '. ' | | SQLERRM, 1,2000),
  2483                                      PD_date1  => VD_rec _group_dat e,
  2484                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2485  
  2486         RETU RN;
  2487  
  2488     END;
  2489  
  2490   EXCEPTION
  2491  
  2492     WHEN OTH ERS THEN
  2493  
  2494       ROLLBA CK;
  2495  
  2496       VD_log _date := S YSDATE;
  2497       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2498                                    PD_job_err or_date  = > VD_log_d ate,
  2499                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  2500                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Hl7_Txn_Lo g_Null_Err _Col_Sp.'
  2501                                                                  ||  SQLERRM,1 ,2000),
  2502                                    PD_date1 = > VD_rec_g roup_date,
  2503                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2504  
  2505       VD_log _date := S YSDATE;
  2506       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  2507                                    PD_job_log _date => V D_log_date ,
  2508                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  2509                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  2510                                    PD_date1 = > VD_rec_g roup_date,
  2511                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2512  
  2513   END Hl7_Tx n_Log_Null _Err_Col_S p;
  2514   /
  2515   DROP PROCE DURE ADR.H ANDBOOK_SP ;
  2516  
  2517   CREATE OR  REPLACE PR OCEDURE AD R.HANDBOOK _SP
  2518   IS
  2519  
  2520     -- VARIA BLES
  2521  
  2522     TYPE TAB LE_COL_TYP E IS TABLE  OF VARCHA R2(1000) I NDEX BY BI NARY_INTEG ER;
  2523     VN_STR_L EN         NUMBER:= 1 00;
  2524     VN_SEPAR ATOR       CONSTANT V ARCHAR2(3) := ' | ';
  2525  
  2526     VC_WHERE            VARCHAR2(3 200);
  2527     LV_Str_L ist        VARCHAR2(5 00);
  2528     LB_cnt              BINARY_INT EGER;
  2529     LA_Tab_S tr         DBMS_UTILI TY.UNCL_AR RAY;
  2530  
  2531     LC_TMP              VARCHAR2(1 00);
  2532     LC_err_s tr         VARCHAR2(3 2767);
  2533     LC_str              LONG;
  2534     l_row_cn t          BINARY_INT EGER := 0;
  2535     LN_col_c ount       BINARY_INT EGER := 0;
  2536  
  2537     VC_log_s tep        VARCHAR2(5 00);
  2538     lc_col1             TABLE_COL_ TYPE;
  2539     lc_col2             TABLE_COL_ TYPE;
  2540     lc_col3             TABLE_COL_ TYPE;
  2541     lc_col4             TABLE_COL_ TYPE;
  2542     lc_col5             TABLE_COL_ TYPE;
  2543  
  2544  
  2545     VC_SELEC T1          VARCHAR2( 60):= 'SEL ECT * FROM  (';
  2546     LC_WHERE _LIMIT      VARCHAR2( 2000);
  2547     LN_MAX_R OWS_DISP    NUMBER :=  30;  --Th is number  limit numb er of rows  display o n the body  message
  2548     VN_max_r ec_display              NUMBER;
  2549     VN_vbr_t ot             NUMBER ;
  2550     VN_ven_t ot            NUMBER;
  2551     VN_brv_t ot            NUMBER;
  2552     VN_hbr_t ot            NUMBER;
  2553     VN_pr_to t            NUMBER;
  2554  
  2555     VC_SQLST MT          VARCHAR2( 5000);
  2556  
  2557     vMesg                LONG;
  2558     vSubj                VARCHAR2( 800);
  2559  
  2560  
  2561     VB_allow _rpt_inst         BOO LEAN := FA LSE;
  2562     VB_error                  BOOL EAN := FAL SE;
  2563     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  2564     VB_updat e_row              BO OLEAN := F ALSE;
  2565  
  2566     VC_allow _rpt_inst          VA RCHAR2(5)  := NULL;
  2567  
  2568     VC_proce ss_duratio n       VA RCHAR2(25) ;
  2569     VC_proce ss_name             V ARCHAR2(30 ) := 'ADR. HANDBOOK_S P';
  2570  
  2571  
  2572     VN_Inst_ name              VAR CHAR2(60);
  2573     VC_host_ name                V ARCHAR2(60 );
  2574     VC_email _list              VA RCHAR2(300 );
  2575  
  2576  
  2577     CURSOR c _hbr IS SE LECT batch _release_s ize, batch _release_d ate
  2578       FROM h andbook_ba tch_reques t
  2579       WHERE  (record_cr eated_date  >= TRUNC( sysdate) -  7
  2580       AND re cord_creat ed_date <  sysdate)
  2581       AND st d_handbook batchreque ststa_id =  2000010
  2582       ORDER  BY record_ created_da te;
  2583  
  2584   -- ******* ********** ********** ********** ********** ********** ********** *******
  2585   -- *
  2586   -- *  MAIN  PROCEDURE :
  2587   -- *
  2588   -- *
  2589   -- ******* ********** ********** ********** ********** ********** ********** *******
  2590  
  2591   BEGIN
  2592  
  2593      VC_log_ step := 'G et instanc e name';
  2594  
  2595      SELECT  sys_contex t('USERENV ','INSTANC E_NAME'),  sys_contex t('USERENV ', 'SERVER _HOST')
  2596      into VN _Inst_name , VC_host_ name
  2597      FROM du al;
  2598  
  2599      ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (VC_proces s_name,1,6 0),
  2600                                 PD _job_log_d ate => SYS DATE,
  2601                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Initi ation',1,6 0),
  2602                                 PD _date1 =>  SYSDATE,
  2603                                 PC _text1 =>  VC_log_ste p||' - Ini tiating AD R Handbook  Job');
  2604  
  2605      VN_max_ rec_displa y := NVL(V N_max_rec_ display,30 );  -- set  max defau lt to 30 r ows
  2606       LC_str  := 'List  of batch r equests fo r the week : ';
  2607       FOR th is_sql in   c_hbr  LO OP
  2608         LC_s tr :=  LC_ str ||CHR( 10)||RPAD( this_sql.b atch_relea se_size,20 )||' '||th is_sql.bat ch_release _date;
  2609       End Lo op;
  2610  
  2611         SELE CT EMAIL_A DDRESS_LIS T
  2612           IN TO  VC_ema il_list
  2613         FROM  ADRMGT.AD R_USER_CON TACT
  2614         WHER E CONTACT_ EMAIL_USER _NAME = 'E SR_GRP';
  2615         SELE CT NVL(SUM (batch_rel ease_size) , 0) weekl y_batch_re lease_tota l
  2616         INTO  VN_vbr_to t
  2617         FROM  handbook_ batch_requ est
  2618         WHER E (record_ created_da te >= TRUN C(sysdate)  - 7
  2619         AND  record_cre ated_date  < sysdate)
  2620         AND  std_handbo okbatchreq ueststa_id  = 2000010 ;
  2621         LC_s tr := LC_s tr||CHR(10 )||'Total  number of  records se lected for  the week  from the b atch reque st:  '||VN _vbr_tot|| CHR(10);
  2622  
  2623         SELE CT COUNT(* ) requests _to_vendor _total_cou nt
  2624         INTO  VN_ven_to t
  2625         FROM  handbook_ mail_queue  hbq, hand book_mail_ status_h h ms
  2626         WHER E hbq.hand book_mail_ queue_id =  hms.handb ook_mail_q ueue_id
  2627         AND  hms.std_ha ndbookmail stattype_i d = 200000 5
  2628         AND  (hbq.recor d_created_ date >= TR UNC(sysdat e) - 7
  2629         AND  hbq.record _created_d ate < sysd ate);
  2630         LC_s tr := LC_s tr||CHR(10 )||'Total  Number of  requests s ent to ven dor:  '||  VN_ven_tot ||CHR(10);
  2631  
  2632         SELE CT COUNT(* ) batch_re quests_to_ vendor_cou nt
  2633         into  VN_brv_to t
  2634         FROM  handbook_ mail_queue  hbq, hand book_mail_ status_h h ms
  2635         WHER E hbq.hand book_mail_ queue_id =  hms.handb ook_mail_q ueue_id
  2636         AND  hms.std_ha ndbookmail stattype_i d = 200000 5
  2637         AND  hbq.handbo ok_batch_r equest_id  IN (SELECT  handbook_ batch_requ est_id
  2638                                                  FROM ha ndbook_bat ch_request
  2639                                                 WHERE (r ecord_crea ted_date > = TRUNC(sy sdate) - 7
  2640                                                   AND re cord_creat ed_date <  sysdate)
  2641                                                   AND st d_handbook batchreque ststa_id =  2000010);
  2642          LC_ str := LC_ str||CHR(1 0)||'Total  Number of  requests  sent to ve ndor from  the batch  requests f or the wee k:  '|| VN _brv_tot|| CHR(10);
  2643          SEL ECT COUNT( *) handboo ks_receive d_count
  2644          INT O VN_hbr_t ot
  2645          FRO M vbr.docu ment_recei pt d, vbr. document d r
  2646          WHE RE d.docum ent_receip t_id = dr. document_r eceipt_id
  2647          AND  receipt_s tring IN ( SELECT han dbook_mail _queue_id
  2648                                 FR OM handboo k_mail_que ue hmq, ha ndbook_bat ch_request  hbr
  2649                                WHE RE hmq.han dbook_batc h_request_ id = hbr.h andbook_ba tch_reques t_id
  2650                                  A ND hbr.std _handbookb atchreques tsta_id =  2000010
  2651                                  A ND (hbr.re cord_creat ed_date >=  TRUNC(sys date) - 7
  2652                                  A ND hbr.rec ord_create d_date < s ysdate))
  2653          AND  dr.docume nt_type_id  = 3;
  2654          LC_ str := LC_ str||CHR(1 0)||'Numbe r of handb ooks recei ved:  '||  VN_hbr_tot ||CHR(10);
  2655          SEL ECT COUNT( *) profile s_received _count
  2656          INT O VN_pr_to t
  2657          FRO M vbr.docu ment_recei pt d, vbr. document d r
  2658          WHE RE d.docum ent_receip t_id = dr. document_r eceipt_id
  2659          AND  receipt_s tring IN ( SELECT han dbook_mail _queue_id
  2660                                 FR OM handboo k_mail_que ue hmq, ha ndbook_bat ch_request  hbr
  2661                                WHE RE hmq.han dbook_batc h_request_ id = hbr.h andbook_ba tch_reques t_id
  2662                                  A ND hbr.std _handbookb atchreques tsta_id =  2000010
  2663                                  A ND (hbr.re cord_creat ed_date >=  TRUNC(sys date) - 7
  2664                                  A ND hbr.rec ord_create d_date < s ysdate))
  2665           AN D dr.docum ent_type_i d = 4;
  2666          LC_ str := LC_ str||CHR(1 0)||'Numbe r of benef it profile s received :  '|| VN_ pr_tot;
  2667   --      DB MS_OUTPUT. PUT_LINE(L C_str);
  2668         vSub j := VC_pr ocess_name ||' - Repo rt ' ||'(' ||VN_Inst_ name||'@'| |VC_host_n ame||')';
  2669         vMes g := LC_st r;
  2670         VC_l og_step :=  'Invoking  utl_mail. send';
  2671           UTL_MAIL.S END (SENDE      => 'oracle @'||VC_hos t_name||'a ac. DNS     ',
  2672                         RECIPIENTS   => VC_em ail_list,
  2673                         SUBJECT      => vSubj ,
  2674                         MESSAGE      => vMesg );
  2675  
  2676        ADRMG T.Job_Proc ess_Log_Sp (
  2677               PC_job_na me => SUBS TR(VC_proc ess_name,1 ,60),
  2678               PD_job_lo g_date =>  SYSDATE,
  2679               PC_job_st atus => SU BSTR('INFO RMATION -  '||VC_log_ step,1,60) ,
  2680               PC_job_lo g_message  => SUBSTR( VC_log_ste p,1,2000),
  2681               PD_date1  => SYSDATE ,
  2682               PC_text1  => SUBSTR( VC_log_ste p,1,255));
  2683  
  2684     EXCEPTIO N
  2685  
  2686       WHEN N O_DATA_FOU ND THEN
  2687  
  2688         NULL ;
  2689  
  2690       WHEN O THERS THEN
  2691  
  2692         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  2693                                      PD_job_e rror_date   => SYSDAT E,
  2694                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2695                                      PC_job_e rror_messa ge => SUBS TR('Unknow n error wh ile removi ng old pro cess logs.  '
  2696                                                                        || SQLE RRM,1,2000 ),
  2697                                      PD_date1  => SYSDAT E,
  2698                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2699  
  2700  
  2701   END HANDBO OK_SP;
  2702   /
  2703   DROP PROCE DURE ADR.C LEAN_SSN_F RM_ADDR;
  2704  
  2705   CREATE OR  REPLACE PR OCEDURE AD R.CLEAN_SS N_FRM_ADDR  IS
  2706      v_rec_c nt   INTEG ER;
  2707   BEGIN
  2708      ADRMGT. Job_Proces s_Log_Sp ( PC_job_nam e           => SUBSTR  ('CLEAN_S SN_FRM_ADD R', 1, 60) ,
  2709                                    PD_job_log _date       => SYSDAT E,
  2710                                    PC_job_sta tus         => 'STG-B EGIN',
  2711                                    PC_JOB_LOG _MESSAGE    => SUBSTR  (' Starti ng to proc ess', 1, 6 0));
  2712  
  2713      INSERT  INTO ADR.S TG_ADDRESS _SSN_CLEAN UP (ADDRES S_ID,
  2714                                                   ADDRES S_LINE1,
  2715                                                   ADDRES S_LINE2,
  2716                                                   ADDRES S_LINE3,
  2717                                                   CITY,
  2718                                                   SSN)
  2719         SELE CT address _id,
  2720                 address _line1,
  2721                 address _line2,
  2722                 address _line3,
  2723                 city,
  2724                 PERSON_ TRAITS.ssn
  2725           FR OM address , person,  adr.PERSON _TRAITS
  2726          WHE RE     add ress.perso n_id = per son.person _id
  2727                 AND per son.vpid_v alue = PER SON_TRAITS .vpid_valu e
  2728                 AND (    (INSTR (
  2729                              REGEX P_REPLACE  (address_l ine1,
  2730                                                '([[:alph a:]]|[[:sp ace:]]|[[: punct:]])* ',
  2731                                                ''),
  2732                              PERSO N_TRAITS.s sn) > 0)
  2733                      OR  (INSTR (
  2734                              REGEX P_REPLACE  (address_l ine2,
  2735                                                '([[:alph a:]]|[[:sp ace:]]|[[: punct:]])* ',
  2736                                                ''),
  2737                              PERSO N_TRAITS.s sn) > 0)
  2738                      OR  (INSTR (
  2739                              REGEX P_REPLACE  (address_l ine3,
  2740                                                '([[:alph a:]]|[[:sp ace:]]|[[: punct:]])* ',
  2741                                                ''),
  2742                              PERSO N_TRAITS.s sn) > 0)
  2743                      OR  (INSTR (
  2744                              REGEX P_REPLACE  (city, '([ [:alpha:]] |[[:space: ]]|[[:punc t:]])*', ' '),
  2745                              PERSO N_TRAITS.s sn) > 0));
  2746  
  2747      v_rec_c nt := SQL% ROWCOUNT;
  2748      COMMIT;
  2749  
  2750      ADRMGT. Job_Proces s_Log_Sp (
  2751         PC_j ob_name           =>  SUBSTR ('C LEAN_SSN_F RM_ADDR',  1, 60),
  2752         PD_j ob_log_dat e      =>  SYSDATE,
  2753         PC_j ob_status         =>  'STG-COMPL ETE',
  2754         PC_J OB_LOG_MES SAGE   =>  SUBSTR (
  2755                                         'STAG E record_c ount : '
  2756                                      || v_rec _cnt
  2757                                      || ' Com pleted col lecting AD DRESS_IDs' ,
  2758                                      1,
  2759                                      60));
  2760  
  2761      UPDATE  address tg t
  2762         SET  (address_l ine1,
  2763               address_l ine2,
  2764               address_l ine3,
  2765               city) =
  2766                 (SELECT  CASE
  2767                             WHEN ( INSTR (
  2768                                       REGEXP_ REPLACE (a ddress_lin e1,
  2769                                                        ' ([[:alpha: ]]|[[:spac e:]]|[[:pu nct:]])*',
  2770                                                        ' '),
  2771                                       ssn) >  0) THEN
  2772                                NUL L
  2773                             ELSE
  2774                                add ress_line1
  2775                          END
  2776                             addres s_line1_re p,
  2777                          CASE
  2778                             WHEN ( INSTR (
  2779                                       REGEXP_ REPLACE (a ddress_lin e2,
  2780                                                        ' ([[:alpha: ]]|[[:spac e:]]|[[:pu nct:]])*',
  2781                                                        ' '),
  2782                                       ssn) >  0) THEN
  2783                                NUL L
  2784                             ELSE
  2785                                add ress_line2
  2786                          END
  2787                             addres s_line2_re p,
  2788                          CASE
  2789                             WHEN ( INSTR (
  2790                                       REGEXP_ REPLACE (a ddress_lin e3,
  2791                                                        ' ([[:alpha: ]]|[[:spac e:]]|[[:pu nct:]])*',
  2792                                                        ' '),
  2793                                       ssn) >  0) THEN
  2794                                NUL L
  2795                             ELSE
  2796                                add ress_line3
  2797                          END
  2798                             addres s_line3_re p,
  2799                          CASE
  2800                             WHEN ( INSTR (
  2801                                       REGEXP_ REPLACE (c ity,
  2802                                                        ' ([[:alpha: ]]|[[:spac e:]]|[[:pu nct:]])*',
  2803                                                        ' '),
  2804                                       ssn) >  0) THEN
  2805                                NUL L
  2806                             ELSE
  2807                                cit y
  2808                          END
  2809                             city_r ep
  2810                    FROM  STG_ADDRE SS_SSN_CLE ANUP src
  2811                   WHERE  src.addre ss_id = tg t.address_ id),
  2812              record_mod ified_by =  '581393',
  2813              record_mod ified_date  = SYSDATE ,
  2814              record_mod ified_coun t = record _modified_ count + 1
  2815       WHERE  EXISTS
  2816                 (SELECT  1
  2817                    FROM  STG_ADDRE SS_SSN_CLE ANUP src
  2818                   WHERE  src.addre ss_id = tg t.address_ id);
  2819  
  2820      v_rec_c nt := SQL% ROWCOUNT;
  2821      COMMIT;
  2822  
  2823      ADRMGT. Job_Proces s_Log_Sp (
  2824         PC_j ob_name           =>  SUBSTR ('C LEAN_SSN_F RM_ADDR',  1, 60),
  2825         PD_j ob_log_dat e      =>  SYSDATE,
  2826         PC_j ob_status         =>  'COMPLETE' ,
  2827         PC_J OB_LOG_MES SAGE   =>  SUBSTR (
  2828                                         'Upda ted record _count : '
  2829                                      || v_rec _cnt
  2830                                      || ' Sta rting to p rocess',
  2831                                      1,
  2832                                      60));
  2833   EXCEPTION
  2834      WHEN NO _DATA_FOUN D THEN
  2835         ADRM GT.Job_Pro cess_Log_S p (
  2836            P C_job_name            => SUBSTR  ('CLEAN_SS N_FRM_ADDR ', 1, 60),
  2837            P D_job_log_ date       => SYSDATE ,
  2838            P C_job_stat us         => 'WARN',
  2839            P C_JOB_LOG_ MESSAGE    => SUBSTR  ('Nothing  to remove;  no record  FOUND', 1 , 60));
  2840      WHEN OT HERS THEN
  2841         ADRM GT.Job_Pro cess_Log_S p (
  2842            P C_job_name            => SUBSTR  ('CLEAN_SS N_FRM_ADDR ', 1, 60),
  2843            P D_job_log_ date       => SYSDATE ,
  2844            P C_job_stat us         => 'FAILED ',
  2845            P C_JOB_LOG_ MESSAGE    => SUBSTR  (
  2846                                            DB MS_UTILITY .FORMAT_CA LL_STACK
  2847                                         || DB MS_UTILITY .format_er ror_stack
  2848                                         || DB MS_UTILITY .format_er ror_backtr ace,
  2849                                         1,
  2850                                         60));
  2851   END CLEAN_ SSN_FRM_AD DR;
  2852   /
  2853  
  2854  
  2855   CREATE OR  REPLACE PU BLIC SYNON YM CLEAN_S SN_FRM_ADD R FOR ADR. CLEAN_SSN_ FRM_ADDR;
  2856   DROP PROCE DURE ADR.B ATCH_SSN_P ROCESSED_S P;
  2857  
  2858   CREATE OR  REPLACE PR OCEDURE AD R.BATCH_SS N_PROCESSE D_SP
  2859   ( P_batch_ SSN_ADRToP rocess_DIR   IN VARCH AR2,
  2860     P_batch_ SSN_ToProc ess_DIR      IN VARCH AR2,
  2861     P_batch_ SSN_log_DI R            IN VARCH AR2,
  2862     P_batch_ SSN_err_DI R            IN VARCH AR2,
  2863     P_num_fi les_proces s            IN NUMBE R DEFAULT  2,
  2864     PB_run_s tandalone               IN BOOLE AN DEFAULT  FALSE,
  2865     PB_allow _rpt_inst               IN BOOLE AN DEFAULT  FALSE)
  2866  
  2867   -- ####### ########## ########## ########## ########## ########## ########## ########## ##
  2868   -- #  Desc ription: C CR 1674: P rocess a b acklog of  SSN Verifi catio
  2869   -- #
  2870   -- #   Usa ge:             Calle d by run_w rapper.sql
  2871   -- #   Inp ut Paramet ers:
  2872   -- #     1 ) None
  2873   -- #   Out put:
  2874   -- #     1 ) Terminal
  2875   -- #   Int ernal Scri pt Paramet ers:
  2876   -- #     1 ) None
  2877   -- #
  2878   -- #
  2879   -- ####### ########## ########## ########## ########## ########## ########## ########
  2880   -- # Chang e History
  2881   -- #
  2882   -- # DATE        User  Name          DESCRI PTION
  2883   -- # ----- ----- ---- ---------- --- ------ ---------- ---------- ---------- ---------- ---
  2884   -- # 06/10 /2012 Rich ard Do         Create d
  2885   -- #
  2886   -- #
  2887   -- ####### ########## ########## ########## ########## ########## ########## ########
  2888   AS
  2889  
  2890      CC_SSN_ VERIFICATI ON_EXT         CONSTA NT VARCHAR 2(20):= 'S SN_VERIFIC ATION_EXT' ;
  2891      CC_BATC H_SSN_LOG_ DIR            CONSTA NT VARCHAR 2(20):= 'B ATCH_SSN_L OG_DIR';
  2892      CC_BATC H_SSN_TOPR OCESS_DIR      CONSTA NT VARCHAR 2(25):= 'B ATCH_SSN_T OPROCESS_D IR';
  2893      CC_BATC H_SSN_ADRT OPROCESS_D IR  CONSTA NT VARCHAR 2(35):= 'B ATCH_SSN_A DRTOPROCES S_DIR';
  2894      CC_BATC H_SSN_ERR_ DIR            CONSTA NT VARCHAR 2(20):= 'B ATCH_SSN_E RR_DIR';
  2895      CC_JOB_ SSN_TERM_S OL             VARCHA R2(23) :=  'Job-SSNIt erimSoluti on';
  2896  
  2897      CC_MAX_ ROWS_COMMI T            CONSTANT  NUMBER :=  1000;
  2898  
  2899      V_File_ handle UTL _FILE.FILE _TYPE;
  2900      V_FILE_ Line VARCH AR2(1024);
  2901  
  2902      VD_log_ date           DATE;
  2903      VD_rec_ group_date     DATE;
  2904      VN_SSN_ VER_ID         NUMBER ;
  2905      VC_log_ step           VARCHA R2(500);
  2906      VN_job_ number         NUMBER  := 0;
  2907      VC_proc ess_name       VARCHA R2(30) :=  'ADR.BATCH _SSN_PROCE SSED_SP';
  2908  
  2909      VC_file _name          VARCHA R2(300);
  2910      VC_log_ file           VARCHA R2(200);
  2911      VC_erro r_file         VARCHA R2(200);
  2912      VC_pref ix_file        VARCHA R2(40):= ' SSA.r';
  2913      VN_vpid _value         ADR.pe rson.vpid_ value%TYPE ;
  2914  
  2915      VN_pers on_id                   ADR.pers on.person_ id%TYPE;
  2916      VN_erro r_count                 NUMBER;
  2917      VN_num_ rows_bePro cessed       NUMBER;
  2918      VN_num_ rows_proce ssed         NUMBER;
  2919      VD_days _deletion               NUMBER:=  14;
  2920      VN_rec_ count                   NUMBER:=  0;
  2921      VN_job_ count                   NUMBER:=  0;
  2922  
  2923      VB_allo w_rpt_inst              BOOLEAN  := FALSE;
  2924      VB_run_ standalone              BOOLEAN  := FALSE;
  2925  
  2926      VC_allo w_rpt_inst              VARCHAR2 (5) := NUL L;
  2927      VC_inst ance_name               VARCHAR2 (16);
  2928      VC_run_ standalone              VARCHAR2 (5) := NUL L;
  2929      t1                              INTEGER;
  2930      t2                              INTEGER;
  2931  
  2932  
  2933  
  2934      VC_ADRt oProcess_f ile_path     ALL_DIRE CTORIES.DI RECTORY_PA TH%TYPE;
  2935      VC_ToPr ocess_file _path        ALL_DIRE CTORIES.DI RECTORY_PA TH%TYPE;
  2936      VC_erro r_file_pat h            ALL_DIRE CTORIES.DI RECTORY_PA TH%TYPE;
  2937      VC_log_ file_path               ALL_DIRE CTORIES.DI RECTORY_PA TH%TYPE;
  2938      VC_TMP                          NUMBER : = 0;
  2939      VN_comm it_cnt                  NUMBER : = 0;
  2940  
  2941      VC_SQLS TMNT                    VARCHAR2 (2000);
  2942  
  2943      FILE_PA TH_ADRTOPR OCESS_NULL _E EXCEPTI ON;
  2944      FILE_PA TH_TOPROCE SS_NULL_E    EXCEPTIO N;
  2945      LOG_FIL E_PATH_NUL L_E          EXCEPTIO N;
  2946      ERROR_F ILE_PATH_N ULL_E        EXCEPTIO N;
  2947  
  2948      INVALID _SSN_ADRTO PROCESS_E    EXCEPTIO N;
  2949      INVALID _SSN_TOPRO CESS_E       EXCEPTIO N;
  2950      INVALID _SSN_LOG_E              EXCEPTIO N;
  2951      INVALID _SSN_ERR_E              EXCEPTIO N;
  2952  
  2953  
  2954   BEGIN
  2955  
  2956      VD_rec_ group_date  := TRUNC( SYSDATE);
  2957      t1 :=   DBMS_UTILI TY.get_tim e;
  2958  
  2959  
  2960      -- **** ********** ********** ********** ********** ********** ********** ********** *
  2961      -- *
  2962      -- * Va lidate inp ut paramet ers
  2963      -- *
  2964      -- **** ********** ********** ********** ********** ********** ********** ********** *
  2965  
  2966      VC_log_ step := 'C hecking in put parame ters.';
  2967  
  2968      IF NVL( P_batch_SS N_ADRToPro cess_DIR,' ***') != C C_BATCH_SS N_ADRTOPRO CESS_DIR T HEN
  2969  
  2970        RAISE  INVALID_S SN_ADRTOPR OCESS_E;
  2971  
  2972      ELSIF N VL(P_batch _SSN_ToPro cess_DIR,' ***') != C C_BATCH_SS N_TOPROCES S_DIR THEN
  2973  
  2974         RAIS E INVALID_ SSN_TOPROC ESS_E;
  2975  
  2976      ELSIF N VL(P_batch _SSN_log_D IR,'***')  != CC_BATC H_SSN_LOG_ DIR THEN
  2977  
  2978         RAIS E INVALID_ SSN_LOG_E;
  2979  
  2980      ELSIF N VL(P_batch _SSN_err_D IR,'***')  != CC_BATC H_SSN_ERR_ DIR THEN
  2981  
  2982         RAIS E INVALID_ SSN_ERR_E;
  2983  
  2984      END IF;
  2985  
  2986  
  2987      -- * Ch eck run st andalone f lag
  2988  
  2989      IF PB_r un_standal one IS NUL L
  2990         OR N OT PB_run_ standalone  THEN
  2991  
  2992          VB_ run_standa lone := FA LSE;
  2993          VC_ run_standa lone := 'F ALSE'; --  used for l og message , boolean  can't be d isplayed
  2994  
  2995      ELSE
  2996  
  2997          VB_ run_standa lone := TR UE;
  2998          VC_ run_standa lone := 'T RUE'; -- u sed for lo g message,  boolean c an't be di splayed
  2999  
  3000      END IF;
  3001  
  3002      -- * Ch eck run on  report in stance fla g
  3003  
  3004      IF PB_a llow_rpt_i nst IS NUL L
  3005         OR N OT PB_allo w_rpt_inst  THEN
  3006  
  3007          VB_ allow_rpt_ inst := FA LSE;
  3008          VC_ allow_rpt_ inst := 'F ALSE'; --  used for l og message , boolean  can't be d isplayed
  3009  
  3010      ELSE
  3011  
  3012          VB_ allow_rpt_ inst := TR UE;
  3013          VC_ allow_rpt_ inst := 'T RUE'; -- u sed for lo g message,  boolean c an't be di splayed
  3014  
  3015      END IF;
  3016  
  3017      VD_log_ date := SY SDATE;
  3018  
  3019  
  3020  
  3021      BEGIN
  3022  
  3023         -- * ********** ********** ********** ********** ********** ********** ********** ****
  3024         -- *
  3025         -- *  Check to  see if pro cess is ru nning on a  reporting  database.
  3026         -- *   - If VB_ allow_rpt_ inst is FA LSE, then  it's not a llowed. En d the job.
  3027         -- *
  3028         -- * ********** ********** ********** ********** ********** ********** ********** ****
  3029  
  3030         IF N OT VB_allo w_rpt_inst  THEN
  3031  
  3032            S ELECT    i nstance_na me
  3033            I NTO      V C_instance _name
  3034            F ROM      V $instance;
  3035  
  3036            I F UPPER(SU BSTR(VC_in stance_nam e,1,4)) =  'ADRR' THE N
  3037  
  3038                VD_log_d ate := SYS DATE;
  3039                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  3040                     PD_ job_log_da te => VD_l og_date,
  3041                     PC_ job_status  => SUBSTR ('WARNING      - Proc essing Fai led',1,60) ,
  3042                     PC_ job_log_me ssage => S UBSTR('Att empting to  run on a  reporting  instance.  Instance n ame: '
  3043                                                            || VC_in stance_nam e
  3044                            || '. T his job ha s been ter minated. T o run on a  reporting  instance, '
  3045                            || ' se t paramete r VB_allow _rpt_inst  to TRUE an d resubmit  the job.' ,1,2000),
  3046                     PD_ date1 => V D_rec_grou p_date,
  3047                     PC_ text1 => S UBSTR('Dat e1 column  contains t he daily p rocess sta rt date',1 ,255));
  3048  
  3049               RETURN;
  3050  
  3051            E ND IF;
  3052  
  3053         END  IF;
  3054  
  3055  
  3056         -- * ********** ********** ********** ********** ********** ********** ********** ****
  3057         -- *
  3058         -- *  Check to  see if the  job has a lready run  today
  3059         -- *   - If run ning in st and-alone  mode, don' t check.
  3060         -- *   - Otherw ise, if jo b has alre ady run to day, then  exit the j ob.
  3061         -- *
  3062         -- * ********** ********** ********** ********** ********** ********** ********** ****
  3063         IF N OT PB_run_ standalone  THEN
  3064  
  3065               SELECT     COUNT(*)
  3066                INTO       VN_rec_c ount
  3067               FROM       ADRMGT.Jo b_Process_ Logs
  3068               WHERE      Job_name  = VC_proce ss_name
  3069               AND        Date1 = V D_rec_grou p_date
  3070               AND        Job_statu s = 'SUCCE SS     - P rocessing  Completed' ;
  3071  
  3072               IF VN_rec _count > 0  THEN
  3073  
  3074                  VD_log _date := S YSDATE;
  3075                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  3076                           PD_job_l og_date =>  VD_log_da te,
  3077                           PC_job_s tatus => S UBSTR('INF ORMATION -  This date  has alrea dy been pr ocessed',1 ,60),
  3078                           PC_job_l og_message  => SUBSTR ('Processi ng has alr eady compl eted for t his date.  Exiting to  job queue .',1,2000) ,
  3079                           PD_date1  => VD_rec _group_dat e,
  3080                           PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3081  
  3082                  RETURN ;
  3083  
  3084               END IF;
  3085  
  3086         END  IF;
  3087  
  3088         -- * ********** ********** ********** ********** ********** ********** ********** ****
  3089         -- *
  3090         -- *  Check to  see if any  other job s of this  procedure  are runnin g.
  3091         -- *   If yes,  then end t his job.
  3092         -- *
  3093         -- * ********** ********** ********** ********** ********** ********** ********** ****
  3094  
  3095         SELE CT COUNT(* )
  3096           IN TO   VN_jo b_count
  3097         FROM   SYS.DBA_ JOBS_RUNNI NG R,
  3098                SYS.DBA_ JOBS J
  3099         WHER E  J.JOB =  R.JOB
  3100         AND  schema_use r = 'ADR'
  3101         AND  upper(WHAT ) LIKE '%B ATCH_SSN_P ROCESSED_S P%';
  3102  
  3103  
  3104         IF V N_job_coun t > 1 THEN
  3105  
  3106           VD _log_date  := SYSDATE ;
  3107           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  3108                     PD_ job_log_da te => VD_l og_date,
  3109                     PC_ job_status  => SUBSTR ('WARNING      - Chec k for runn ing jobs', 1,60),
  3110                     PC_ job_log_me ssage => S UBSTR('The re is anot her SSN VE RIFICATION  job runni ng.'
  3111                                                 || ' Exi ting job w ithout run ning.',1,2 000),
  3112                     PD_ date1 => V D_rec_grou p_date,
  3113                     PC_ text1 => S UBSTR('Dat e1 column  contains t he daily p rocess sta rt date',1 ,255));
  3114  
  3115              RETURN;
  3116  
  3117         ELSI F VB_run_s tandalone  THEN
  3118  
  3119              VD_log_dat e := SYSDA TE;
  3120              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3121                     PD_ job_log_da te => VD_l og_date,
  3122                     PC_ job_status  => SUBSTR ('INFORMAT ION - Star ting in ST ANDALONE m ode',1,60) ,
  3123                     PD_ date1 => V D_rec_grou p_date,
  3124                     PC_ text1 => S UBSTR('Dat e1 column  contains t he daily p rocess sta rt date',1 ,255));
  3125  
  3126         ELSE
  3127  
  3128              SELECT     MAX(J.Job)
  3129               INTO       VN_job_nu mber
  3130              FROM       SYS.DBA_JO BS_RUNNING  R,
  3131                         SYS.DBA_JO BS J
  3132              WHERE      J.JOB = R. JOB
  3133              AND        UPPER(J.WH AT) LIKE ' %ADR_ADDRE SS_Z05_UPD ATE_SP%';
  3134  
  3135              VD_log_dat e := SYSDA TE;
  3136              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3137                       P D_job_log_ date => VD _log_date,
  3138                       P C_job_stat us => SUBS TR('INFORM ATION - St arting DBM S_JOB mode ',1,60),
  3139                       P D_date1 =>  VD_rec_gr oup_date,
  3140                       P C_text1 =>  SUBSTR('D ate1 colum n contains  the daily  process s tart date' ,1,255));
  3141  
  3142         END  IF;
  3143  
  3144  
  3145         EXCE PTION
  3146  
  3147          WHE N OTHERS T HEN
  3148  
  3149            V D_log_date  := SYSDAT E;
  3150            A DRMGT.Job_ Process_Lo g_Sp(PC_jo b_name =>  SUBSTR(VC_ process_na me,1,60),
  3151                       P D_job_log_ date => VD _log_date,
  3152                       P C_job_stat us => SUBS TR('ERROR        - Un able to re trieve ins tance name ',1,60),
  3153                       P C_job_log_ message =>  SUBSTR('T erminating  script.', 1,2000),
  3154                       P D_date1 =>  VD_rec_gr oup_date,
  3155                       P C_text1 =>  SUBSTR('D ate1 colum n contains  the daily  process s tart date' ,1,255));
  3156  
  3157            R ETURN;
  3158  
  3159      END;
  3160  
  3161  
  3162      VC_log_ step := 'R etrieving  dir paths  for '||P_b atch_SSN_A DRToProces s_DIR;
  3163  
  3164      -- ==== ========== ========== ========== ========== ========== ========== ==
  3165      --
  3166      -- MAIN  PROGRAM
  3167      --
  3168      -- Retr ieving dir ectory pat hs of exte rnal files , log/erro r/processe d
  3169      --
  3170      -- ==== ========== ========== ========== ========== ========== ========== =
  3171  
  3172      SELECT  d.director y_path ,
  3173              l.director y_path,
  3174              err.direct ory_path,
  3175              p.director y_path
  3176      INTO
  3177         VC_A DRToProces s_file_pat h,
  3178         VC_l og_file_pa th,
  3179         VC_e rror_file_ path,
  3180         VC_T oProcess_f ile_path
  3181      FROM al l_director ies d,
  3182          (   SELECT dir ectory_pat h
  3183              FROM  all_ directorie s
  3184              WHERE dire ctory_name  = P_batch _SSN_log_D IR) l,
  3185          (   SELECT dir ectory_pat h
  3186              FROM  all_ directorie s
  3187              WHERE dire ctory_name  = P_batch _SSN_err_D IR) err,
  3188          (   SELECT dir ectory_pat h
  3189              FROM  all_ directorie s
  3190              WHERE dire ctory_name  = P_batch _SSN_ToPro cess_DIR)  p
  3191      WHERE d .directory _name = P_ batch_SSN_ ADRToProce ss_DIR;
  3192  
  3193  
  3194      ADRMGT. Job_Proces s_Log_Sp(
  3195            P C_job_name  => SUBSTR (VC_proces s_name,1,6 0),
  3196            P D_job_log_ date => SY SDATE,
  3197            P C_job_stat us => SUBS TR('INFORM ATION - Pr ocess Init iation',1, 60),
  3198            P C_job_log_ message =>  SUBSTR('I NFORMATION  - ADRToPr ocess DIR=  '||VC_ADR ToProcess_ file_path| |' ** '||
  3199                                            'L og DIR= '| |P_batch_S SN_log_DIR ||' ** '||
  3200                                            'E rror DIR=  '||P_batch _SSN_err_D IR||' ** ' ||
  3201                                            'T oProcess D IR= '||VC_ ToProcess_ file_path| |' ** '||
  3202                                            VC _log_step, 1,2000),
  3203            P D_date1 =>  SYSDATE,
  3204            P C_text1 =>  SUBSTR(VC _log_step, 1,255));
  3205  
  3206  
  3207      IF VC_A DRtoProces s_file_pat h IS NULL  THEN
  3208  
  3209        VC_lo g_step :=  'Directory  path of A DRToProces s IS NOT s etup.';
  3210  
  3211        RAISE   FILE_PAT H_ADRTOPRO CESS_NULL_ E;
  3212  
  3213      ELSIF V C_ToProces s_file_pat h IS NULL  THEN
  3214  
  3215        VC_lo g_step :=  'Directory  path of T oProcessed  IS NOT se tup.';
  3216        RAISE   FILE_PAT H_TOPROCES S_NULL_E;
  3217  
  3218      ELSIF V C_log_file _path IS N ULL THEN
  3219  
  3220        VC_lo g_step :=  'Directory  path of L og IS NOT  setup.';
  3221        RAISE   LOG_FILE _PATH_NULL _E;
  3222  
  3223      ELSIF V C_error_fi le_path IS  NULL THEN
  3224  
  3225        VC_lo g_step :=  'Directory  path of E RROR IS NO T setup.';
  3226        RAISE   ERROR_FI LE_PATH_NU LL_E;
  3227  
  3228      END IF;
  3229  
  3230      VC_TMP  := 0;
  3231  
  3232  
  3233    -- ====== ========== ========== ========== ========== ========== ==
  3234    --
  3235    -- This w ill loop n umber of t imes to pr ocess each  source
  3236    -- data f ile.  As r equired, t here will  be 2 files  processed
  3237    --
  3238    -- ====== ========== ========== ========== ========== ========== ==
  3239  
  3240    FOR I IN  1..P_num_f iles_proce ss LOOP
  3241  
  3242  
  3243      SELECT  VC_prefix_ file||to_c har(sysdat e,'YY')||T O_CHAR(SYS DATE,'DDD' )||I||'.tx t'
  3244         INTO  VC_file_n ame
  3245      FROM du al;
  3246  
  3247      --DBMS_ OUTPUT.PUT _LINE('Fil e name: '| |VC_ADRToP rocess_fil e_path||'/ '||VC_file _name);
  3248      VC_log_ step := 'P rocessing  File '||VC _file_name ;
  3249  
  3250      ADRMGT. Job_Proces s_Log_Sp(
  3251            P C_job_name  => SUBSTR (VC_proces s_name,1,6 0),
  3252            P D_job_log_ date => SY SDATE,
  3253            P C_job_stat us => SUBS TR(VC_log_ step,1,60) ,
  3254            P C_job_log_ message =>  SUBSTR('I NFORMATION  - '||VC_l og_step,1, 2000),
  3255            P D_date1 =>  VD_rec_gr oup_date,
  3256            P C_text1 =>  SUBSTR(VC _log_step, 1,255));
  3257  
  3258      -- ==== ========== ========== ========== ==========
  3259      --
  3260      -- Open ing source  data file  for readi ng and
  3261      -- load ing into S SN_VERIFIC ATION and  details
  3262      --
  3263      -- ==== ========== ========== ========== ==========
  3264      BEGIN
  3265  
  3266        VC_lo g_step :=  'Reading f ile '|| VC _file_name ;
  3267        V_Fil e_handle : = UTL_FILE .FOPEN(P_b atch_SSN_A DRToProces s_DIR, VC_ file_name,  'R');
  3268  
  3269        ADRMG T.Job_Proc ess_Log_Sp (
  3270                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3271                    PD_j ob_log_dat e => SYSDA TE,
  3272                    PC_j ob_status  => SUBSTR( VC_log_ste p,1,60),
  3273                    PC_j ob_log_mes sage => SU BSTR('INFO RMATION -  '||VC_log_ step,1,200 0),
  3274                    PD_d ate1 => SY SDATE,
  3275                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  3276  
  3277  
  3278        -- == ========== ========== ========== ========== ========== =====
  3279        --
  3280        -- Ch ecking ext ernal tabl e existed  or nor pri or creatin g one
  3281        --
  3282        -- == ========== ========== ========== ========== ========== ======
  3283        SELEC T COUNT(1)  INTO
  3284          VC_ TMP
  3285        FROM   all_exter nal_tables
  3286        WHERE  table_nam e = CC_SSN _VERIFICAT ION_EXT;
  3287  
  3288        IF VC _TMP = 0    THEN
  3289            V C_log_step  := 'Build ing SQLSTM NT create  Ext Tab.';
  3290  
  3291            V C_SQLSTMNT  :=
  3292               'CREATE T ABLE ADR.' ||CC_SSN_V ERIFICATIO N_EXT||CHR (10)||
  3293                    '(SS N          VARCHAR2(9 ), '         ||CHR(10 )||
  3294                    'ENT RY_CODE        VARCHA R2(3),'      ||CHR(10 )||
  3295                    'PRO CESSING_CO DE  VARCHA R2(3),'      ||CHR(10 )||
  3296                    'LAS T_NAME         VARCHA R2(13),'     ||CHR(10 )||
  3297                    'FIR ST_NAME        VARCHA R2(10),'     ||CHR(10 )||
  3298                    'MID DLE_NAME       VARCHA R2(7),'      ||CHR(10 )||
  3299                    'DOB                VARCHA R2(8),'      ||CHR(10 )||
  3300                    'SEX                VARCHA R2(1),'      ||CHR(10 )||
  3301                    'INC OME_YEAR       VARCHA R2(4),'      ||CHR(10 )||
  3302                    'HEC _VA_ID         VARCHA R2(15),'     ||CHR(10 )||
  3303                    'SPO USE_CODE       VARCHA R2(1),'      ||CHR(10 )||
  3304                    'BLA NK_1           VARCHA R2(29),'     ||CHR(10 )||
  3305                    'BLA NK_2           VARCHA R2(20),'     ||CHR(10 )||
  3306                    'REQ UEST_CODE      VARCHA R2(4),'      ||CHR(10 )||
  3307                    'BLA NK_3           VARCHA R2(3))'      ||CHR(10 )||
  3308                    'ORG ANIZATION  EXTERNAL (  TYPE ORAC LE_LOADER'              ||CHR(10 )||
  3309                    'DEF AULT DIREC TORY '|| C C_BATCH_SS N_ADRTOPRO CESS_DIR | |' ' ||CHR (10)||
  3310                    'ACC ESS PARAME TERS (RECO RDS DELIMI TED BY NEW LINE '       ||CHR(10 )||
  3311                    'BAD FILE '||CC _BATCH_SSN _ERR_DIR|| ':''' ||VC _prefix_fi le||'_%a_% p.err' ||' '' '         ||CHR(10 )||
  3312                    'LOG FILE '||CC _BATCH_SSN _LOG_DIR|| ':''' ||VC _prefix_fi le||'_%a_% p.log' ||' '' '         ||CHR(10 )||
  3313                    'FIE LDS ('                                          ||CHR( 10)||
  3314                    'SSN            POSITION(1 :9) CHAR(9 ),'            ||CHR( 10)||
  3315                    'ENT RY_CODE    POSITION(1 0:12) CHAR (3),'          ||CHR( 10)||
  3316                    'PRO CESSING_CO DE  POSITI ON(13:15)  CHAR(3),'      ||CHR( 10)||
  3317                    'LAS T_NAME     POSITION(1 6:28) CHAR (13),'         ||CHR( 10)||
  3318                    'FIR ST_NAME    POSITION(2 9:38) CHAR (10),'         ||CHR( 10)||
  3319                    'MID DLE_NAME   POSITION(3 9:45) CHAR (7),'          ||CHR( 10)||
  3320                    'DOB            POSITION(4 6:53) CHAR (8),'          ||CHR( 10)||
  3321                    'SEX            POSITION(5 4:54) CHAR (1),'          ||CHR( 10)||
  3322                    'INC OME_YEAR   POSITION(5 5:58) CHAR (4),'          ||CHR( 10)||
  3323                    'HEC _VA_ID     POSITION(5 9:73) CHAR (15),'         ||CHR( 10)||
  3324                    'SPO USE_CODE   POSITION(7 4:74) CHAR (1),'          ||CHR( 10)||
  3325                    'BLA NK_1       POSITION(7 5:103) CHA R(29),'        ||CHR( 10)||
  3326                    'BLA NK_2       POSITION(1 04:123) CH AR(20),'       ||CHR( 10)||
  3327                    'REQ UEST_CODE  POSITION(1 24:127) CH AR(4),'        ||CHR( 10)||
  3328                    'BLA NK_3       POSITION(1 28:130) CH AR(3)'         ||CHR( 10)||
  3329                    ') )  LOCATION  ('''||VC_f ile_name|| ''')) PARA LLEL 4 REJ ECT LIMIT  UNLIMITED' ;
  3330  
  3331  
  3332            V C_log_step  := 'Creat ed Ext tab le '||VC_f ile_name;
  3333  
  3334            E XECUTE IMM EDIATE VC_ SQLSTMNT;
  3335  
  3336            A DRMGT.Job_ Process_Lo g_Sp(
  3337                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3338                          PD_job_lo g_date =>  SYSDATE,
  3339                          PC_job_st atus => SU BSTR('Exte rnal table  is on fil e '||VC_fi le_name,1, 60),
  3340                          PC_job_lo g_message  => SUBSTR( 'INFORMATI ON - '||VC _log_step, 1,2000),
  3341                          PD_date1  => SYSDATE ,
  3342                          PC_text1  => SUBSTR( VC_log_ste p,1,255));
  3343  
  3344            V C_SQLSTMNT  := 'GRANT  SELECT ON  ADR.'|| C C_SSN_VERI FICATION_E XT||' TO A DR_R';
  3345            E XECUTE IMM EDIATE VC_ SQLSTMNT;
  3346  
  3347        ELSE
  3348  
  3349            V C_log_step  := 'Modif ied Ext ta b on dataf ile '||VC_ file_name;
  3350  
  3351            V C_SQLSTMNT  := 'ALTER  TABLE ADR .'||CC_SSN _VERIFICAT ION_EXT||'  LOCATION  ('''||VC_f ile_name|| ''')';
  3352  
  3353  
  3354            E XECUTE IMM EDIATE VC_ SQLSTMNT;
  3355  
  3356            A DRMGT.Job_ Process_Lo g_Sp(
  3357                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3358                    PD_j ob_log_dat e => SYSDA TE,
  3359                    PC_j ob_status  => SUBSTR( 'Ext table  '||CC_SSN _VERIFICAT ION_EXT||'  EXISTED.' ,1,60),
  3360                    PC_j ob_log_mes sage => SU BSTR('INFO RMATION -  External t able point s to file  '||VC_file _name|| '  - '||VC_lo g_step,1,2 000),
  3361                    PD_d ate1 => VD _rec_group _date,
  3362                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  3363  
  3364        END I F;
  3365  
  3366        -- == ========== ========== ========== =
  3367        --
  3368        -- In sert rows  to SSN_VER IFICATION
  3369        --
  3370        -- == ========== ========== ========== =
  3371        BEGIN   -- Inser t rows to  SSN_VERIFI CATION
  3372  
  3373           VC _log_step  := 'Get ne x sequence  number.';
  3374  
  3375           SE LECT TRANS ACTION_S.N EXTVAL INT O VN_SSN_V ER_ID
  3376           FR OM DUAL;
  3377  
  3378           VC _log_step  := 'Add a  row into A DR.SSN_VER IFICATION' ;
  3379  
  3380           IN SERT /*+ A PPEND */IN TO ADR.SSN _VERIFICAT ION
  3381            (  SSN_VERIF ICATION_ID ,
  3382                    SSA_ SENT_DATE       ,
  3383                    RECO RD_CREATED _BY  ,
  3384                    RECO RD_CREATED _DATE ,
  3385                    RECO RD_MODIFIE D_BY  ,
  3386                    RECO RD_MODIFIE D_DATE ,
  3387                    RECO RD_MODIFIE D_COUNT
  3388            )
  3389           VA LUES(VN_SS N_VER_ID,  SYSDATE, C C_JOB_SSN_ TERM_SOL,  SYSDATE, C C_JOB_SSN_ TERM_SOL,  SYSDATE,0) ;
  3390  
  3391  
  3392           --  ========= ========== ========== ========== ====
  3393           --
  3394           --  Insert ro ws to SSN_ VERIFICATI ON_DETAIL
  3395           --
  3396           --  ========= ========== ========== ========== ====
  3397           BE GIN  -- lo oping exte rnal table
  3398  
  3399              VN_num_row s_processe d := 0;
  3400              VC_log_ste p := 'Loop ing extern al table ' ||CC_SSN_V ERIFICATIO N_EXT;
  3401  
  3402              FOR I IN ( SELECT bla nk_1, hec_ va_id, ssn  FROM ADR. SSN_VERIFI CATION_EXT ) LOOP
  3403  
  3404                 VN_vpid _value :=  I.blank_1;
  3405  
  3406                 BEGIN
  3407  
  3408                    VC_l og_step :=  'Obtainin g person i d using vp id_value=' ||VN_vpid_ value;
  3409  
  3410                    SELE CT p.perso n_id
  3411                       I NTO VN_per son_id
  3412                    FROM    person  p
  3413                    WHER E p.vpid_v alue = VN_ vpid_value ;
  3414  
  3415                    VC_l og_step :=  'Adding r ow to SSN_ VERIFICATI ON_DETAIL,  person_id ='||VN_per son_id||',  and vpid_ value='||V N_vpid_val ue;
  3416  
  3417  
  3418                    INSE RT /*+ APP END */ INT O ADR.SSN_ VERIFICATI ON_DETAIL
  3419                    (
  3420                             SSN_VE RIFICATION _DETAIL_ID  ,
  3421                             SSN_VE RIFICATION _ID         ,
  3422                             PERSON _ID                    ,
  3423                             SSN_ID                        ,
  3424                             SSN                            ,
  3425                             VERIFI CATION_REQ UEST_NUMBE R ,
  3426                             RECORD _CREATED_B Y            ,
  3427                             RECORD _CREATED_D ATE          ,
  3428                             RECORD _MODIFIED_ BY           ,
  3429                             RECORD _MODIFIED_ DATE         ,
  3430                             RECORD _MODIFIED_ COUNT
  3431                    )
  3432                    VALU ES( TRANSA CTION_S.NE XTVAL,
  3433                             VN_SSN _VER_ID,
  3434                             VN_per son_id,
  3435                             NULL,
  3436                             I.SSN,
  3437                             I.HEC_ VA_ID,
  3438                             CC_JOB _SSN_TERM_ SOL,
  3439                             SYSDAT E,
  3440                             CC_JOB _SSN_TERM_ SOL,
  3441                             SYSDAT E,
  3442                             0
  3443                             );
  3444  
  3445                    IF V N_commit_c nt >= CC_M AX_ROWS_CO MMIT THEN
  3446                       V N_commit_c nt := 0;
  3447  
  3448                       C OMMIT;
  3449                    ELSE
  3450                       V N_commit_c nt := VN_c ommit_cnt  + 1;
  3451  
  3452                    END  IF;
  3453  
  3454                    VN_n um_rows_pr ocessed :=  VN_num_ro ws_process ed + 1;
  3455  
  3456                    EXCE PTION
  3457                       W HEN NO_DAT A_FOUND TH EN
  3458  
  3459                           ADRMGT.J ob_Process _Err_Sp(
  3460                                PC_ job_name = > SUBSTR(V C_process_ name,1,60) ,
  3461                                PD_ job_error_ date  => S YSDATE,
  3462                                PC_ job_error_ code => SU BSTR(SQLCO DE,1,60),
  3463                                PC_ job_error_ message =>  SUBSTR('E RROR: No D ATA FOUND  in PERSON  table of F ile '||VC_ file_name| |
  3464                                      '. VPID_ VALUE= '|| VN_vpid_va lue||
  3465                                      '==> No  row added  to SSN_VER IFICATION_ DETAIL. ER RMSG: ' ||  SQLERRM,1 ,2000),
  3466                                PD_ date1 => S YSDATE,
  3467                                PC_ text1 => S UBSTR(VC_l og_step||'  VPID_VALU E='||VN_vp id_value,1 ,255));
  3468  
  3469  
  3470  
  3471                       W HEN OTHERS  THEN
  3472                             ADRMGT .Job_Proce ss_Err_Sp(
  3473                                      PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  3474                                      PD_job_e rror_date   => SYSDAT E,
  3475                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  3476                                      PC_job_e rror_messa ge => SUBS TR('ERROR:  Unknown E xception o f File '|| VC_file_na me||
  3477                                               '. ' || SQ LERRM||' -  VPID_VALU E: '||VN_v pid_value, 1,2000),
  3478                                      PD_date1  => SYSDAT E,
  3479                                      PC_text1  => SUBSTR (VC_log_st ep||' VPID _VALUE='|| VN_vpid_va lue,1,255) );
  3480  
  3481                 END;    -- SSN_VER IFICATION_ DETAIL
  3482  
  3483              END LOOP;   -- SSN_VE RIFICATION _EXT
  3484  
  3485              -- ======= ========== ========== ========== ========== ========== =
  3486              --
  3487              --  Update  rows proc essed of S SN_VERIFIC ATION.  Ot herwise
  3488              --  delete  SSN_VERIF ICATION wh en no reco rds matche d to
  3489              --  detail  table (SS N_VERIFICA TION_DETAI L)
  3490              --
  3491              -- ======= ========== ========== ========== ========== ========== =
  3492  
  3493              VN_num_row s_beProces sed := 0;
  3494  
  3495              SELECT COU NT(1)
  3496                 INTO VN _num_rows_ beProcesse d
  3497              FROM ADR.S SN_VERIFIC ATION_EXT;
  3498  
  3499  
  3500              IF VN_num_ rows_proce ssed > 0 T HEN
  3501  
  3502                  VC_log _step := ' Updating p rocessed r ows of SSN _VERIFICAT ION.';
  3503  
  3504                  MERGE  INTO ADR.S SN_VERIFIC ATION
  3505                       U SING DUAL
  3506                          ON (SSN_V ERIFICATIO N_ID = VN_ SSN_VER_ID )
  3507                       W HEN MATCHE D THEN
  3508                           UPDATE S ET SSN_SEN T_COUNT  =  VN_num_ro ws_process ed;
  3509  
  3510              ELSE
  3511  
  3512                  VC_log _step := ' Removing h eader reco rd in SSN_ VERIFICATI ON';
  3513  
  3514                  MERGE  INTO ADR.S SN_VERIFIC ATION
  3515                       U SING DUAL
  3516                       O N (SSN_VER IFICATION_ ID = VN_SS N_VER_ID)
  3517                       W HEN MATCHE D THEN
  3518                           UPDATE S ET SSN_SEN T_COUNT  =  VN_num_ro ws_process ed
  3519                           DELETE W HERE SSN_V ERIFICATIO N_ID = VN_ SSN_VER_ID ;
  3520  
  3521              END IF;
  3522              COMMIT;
  3523  
  3524              -- ======= ========== ========== ========== ========== ========== =
  3525              --
  3526              -- Moving  file name  to Process ed dir fro m toProces s folder
  3527              --
  3528              -- ======= ========== ========== ========== ========== ========== =
  3529  
  3530  
  3531              VC_log_ste p := 'Movi ng file na me '|| VC_ file_name| |' to '||V C_ToProces s_file_pat h;
  3532              --dbms_out put.put_li ne(VC_log_ step);
  3533  
  3534              VN_error_c ount:= VN_ num_rows_b eProcessed -VN_num_ro ws_process ed;
  3535  
  3536              UTL_FILE.F RENAME(P_b atch_SSN_A DRToProces s_DIR, VC_ file_name, P_batch_SS N_ToProces s_DIR,VC_f ile_name,T RUE);
  3537  
  3538  
  3539              ADRMGT.Job _Process_L og_Sp(
  3540                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3541                    PD_j ob_log_dat e => SYSDA TE,
  3542                    PC_j ob_status  => SUBSTR( 'INFORMATI ON - Proce ss Complet ed.',1,60) ,
  3543                    PC_j ob_log_mes sage => SU BSTR('****  SUMMARY I NFO CHANGE S TO SSN_V ERIFICATIO N_DETAIL * ***'||CHR( 10)||
  3544                                      '  Total  Rows Proc essed: '||  VN_num_ro ws_beProce ssed||CHR( 10)||
  3545                                      '  Num R ows Added:  '|| VN_nu m_rows_pro cessed||CH R(10)||
  3546                                      '  Num R ows Reject ed: '||VN_ error_coun t||CHR(10) ||
  3547                                      '  File  Name '||VC _file_name ||' is now  moved to  '||VC_ToPr ocess_file _path||CHR (10)||
  3548                                      '******* ********** **********  END TRANS ACTION *** ********** ********** ******',1, 2000),
  3549                    PD_d ate1 => SY SDATE,
  3550                    PC_t ext1 => SU BSTR(VC_lo g_step||'  VPID_VALUE ='||VN_vpi d_value,1, 255));
  3551  
  3552  
  3553              EXCEPTION
  3554                  WHEN O THERS THEN
  3555                    ADRM GT.Job_Pro cess_Err_S p(
  3556                             PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  3557                             PD_job _error_dat e  => SYSD ATE,
  3558                             PC_job _error_cod e => SUBST R(SQLCODE, 1,60),
  3559                             PC_job _error_mes sage => SU BSTR('ERRO R: Unknown  Exception  of File ' ||VC_file_ name||
  3560                                               '. ' || SQ LERRM||' -  VPID_VALU E: '||VN_v pid_value, 1,2000),
  3561                             PD_dat e1 => SYSD ATE,
  3562                             PC_tex t1 => SUBS TR(VC_log_ step||' VP ID_VALUE=' ||VN_vpid_ value,1,25 5));
  3563  
  3564           EN D; -- loop ing extern al table
  3565  
  3566  
  3567           EX CEPTION
  3568  
  3569               WHEN UTL_ FILE.INVAL ID_PATH TH EN
  3570  
  3571                 ADRMGT. Job_Proces s_Err_Sp(
  3572                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3573                    PD_j ob_error_d ate  => SY SDATE,
  3574                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  3575                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: Inval id PATH -  '||VC_ADRt oProcess_f ile_path||
  3576                                               ' ERRMSG:  '||   SQLE RRM,1,2000 ),
  3577                    PD_d ate1 => SY SDATE,
  3578                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  3579  
  3580               WHEN UTL_ FILE.INVAL ID_FILENAM E THEN
  3581  
  3582                 ADRMGT. Job_Proces s_Log_Sp(
  3583                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3584                    PD_j ob_log_dat e => SYSDA TE,
  3585                    PC_j ob_status  => SUBSTR( VC_log_ste p,1,60),
  3586                    PC_j ob_log_mes sage => SU BSTR('INFO RMATION -  Invalid fi le name '| | VC_file_ name,1,200 0),
  3587                    PD_d ate1 => SY SDATE,
  3588                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  3589  
  3590              WHEN NO_DA TA_FOUND T HEN
  3591  
  3592                ADRMGT.J ob_Process _Log_Sp(
  3593                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3594                    PD_j ob_log_dat e => SYSDA TE,
  3595                    PC_j ob_status  => SUBSTR( VC_log_ste p,1,60),
  3596                    PC_j ob_log_mes sage => SU BSTR('INFO RMATION -  NO DATA FO UND of Fil e '||VC_fi le_name,1, 2000),
  3597                    PD_d ate1 => SY SDATE,
  3598                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  3599  
  3600              WHEN OTHER S THEN
  3601  
  3602                ADRMGT.J ob_Process _Err_Sp(
  3603                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3604                    PD_j ob_error_d ate  => SY SDATE,
  3605                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  3606                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: Unkno wn Excepti on of File  '||VC_fil e_name||
  3607                                               '. ' || SQ LERRM,1,20 00),
  3608                    PD_d ate1 => VD _rec_group _date,
  3609                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  3610  
  3611          END ;   -- SSN _VERIFICAT ION
  3612  
  3613       EXCEPT ION
  3614  
  3615         WHEN  UTL_FILE. INVALID_PA TH THEN
  3616           AD RMGT.Job_P rocess_Err _Sp(
  3617                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3618                    PD_j ob_error_d ate  => SY SDATE,
  3619                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  3620                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: Inval id PATH -  '||VC_ADRt oProcess_f ile_path||
  3621                                               ' ERRMSG:  '||   SQLE RRM,1,2000 ),
  3622                    PD_d ate1 => SY SDATE,
  3623                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  3624  
  3625  
  3626         WHEN  UTL_FILE. INVALID_FI LENAME THE N
  3627  
  3628  
  3629           AD RMGT.Job_P rocess_Log _Sp(
  3630                     PC_ job_name = > SUBSTR(V C_process_ name,1,60) ,
  3631                     PD_ job_log_da te => SYSD ATE,
  3632                     PC_ job_status  => SUBSTR (VC_log_st ep,1,60),
  3633                     PC_ job_log_me ssage => S UBSTR('INF ORMATION -  Invalid f ile name ' || VC_file _name,1,20 00),
  3634                     PD_ date1 => S YSDATE,
  3635                     PC_ text1 => S UBSTR(VC_l og_step,1, 255));
  3636  
  3637  
  3638         WHEN  UTL_FILE. INVALID_OP ERATION TH EN
  3639  
  3640  
  3641           AD RMGT.Job_P rocess_Log _Sp(
  3642                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3643                    PD_j ob_log_dat e => SYSDA TE,
  3644                    PC_j ob_status  => SUBSTR( VC_log_ste p,1,60),
  3645                    PC_j ob_log_mes sage => SU BSTR('INFO RMATION -  File Name  Not find/I nvalid ope ration of  File '|| V C_file_nam e,1,2000),
  3646                    PD_d ate1 => SY SDATE,
  3647                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  3648  
  3649  
  3650         WHEN  UTL_FILE. WRITE_ERRO R THEN
  3651           AD RMGT.Job_P rocess_Err _Sp(
  3652                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3653                    PD_j ob_error_d ate  => SY SDATE,
  3654                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  3655                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: Inval id Write E rror. ERRM SG: ' || S QLERRM,1,2 000),
  3656                    PD_d ate1 => SY SDATE,
  3657                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  3658  
  3659         WHEN  NO_DATA_F OUND THEN
  3660           AD RMGT.Job_P rocess_Log _Sp(
  3661                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3662                    PD_j ob_log_dat e => SYSDA TE,
  3663                    PC_j ob_status  => SUBSTR( VC_log_ste p,1,60),
  3664                    PC_j ob_log_mes sage => SU BSTR('INFO RMATION -  No DATA FO UND of Fil e '||VC_fi le_name,1, 2000),
  3665                    PD_d ate1 => SY SDATE,
  3666                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  3667  
  3668         WHEN  OTHERS TH EN
  3669  
  3670           AD RMGT.Job_P rocess_Err _Sp(
  3671                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3672                    PD_j ob_error_d ate  => SY SDATE,
  3673                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  3674                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: Unkno wn Excepti on of File  '||VC_fil e_name||
  3675                                               '. ' || SQ LERRM||' -  VPID_VALU E: '||VN_v pid_value, 1,2000),
  3676                    PD_d ate1 => SY SDATE,
  3677                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  3678         END;
  3679  
  3680      END LOO P;
  3681  
  3682  
  3683      -- ==== ========== ========== ========== =========
  3684      --
  3685      -- Clea n up old l og records
  3686      --
  3687      -- ==== ========== ========== ========== =========
  3688      DELETE
  3689      FROM       ADRMGT. Job_Proces s_Logs
  3690      WHERE      Job_nam e = VC_pro cess_name
  3691      AND        TRUNC(D ATE1) < TR UNC(SYSDAT E) - VD_da ys_deletio n;
  3692  
  3693      COMMIT;
  3694  
  3695  
  3696  
  3697      VD_log_ date := SY SDATE;
  3698      t2 :=   DBMS_UTILI TY.get_tim e;
  3699  
  3700      ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (VC_proces s_name,1,6 0),
  3701                 PD_job_ log_date = > VD_log_d ate,
  3702                 PC_job_ status =>  SUBSTR('SU CCESS      - Processi ng Complet ed',1,60),
  3703                 PC_job_ log_messag e => SUBST R('Process ing Time ( sec): ' ||  TO_CHAR(( t2 - t1)/1 00),1,2000 ),
  3704                 PD_date 1 => VD_re c_group_da te,
  3705                 PC_text 1 => SUBST R('Date1 c olumn cont ains the d aily proce ss start d ate',1,255 ));
  3706  
  3707  
  3708      EXCEPTI ON
  3709  
  3710        WHEN  INVALID_SS N_ADRTOPRO CESS_E THE N
  3711            A DRMGT.Job_ Process_Er r_Sp(
  3712                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3713                    PD_j ob_error_d ate  => SY SDATE,
  3714                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  3715                    PC_j ob_error_m essage =>  SUBSTR('ER ROR - Inva lid input  parameter  ADRToProce ss: '||P_b atch_SSN_A DRToProces s_DIR,1,20 00),
  3716                    PD_d ate1 => SY SDATE,
  3717                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  3718  
  3719        WHEN  INVALID_SS N_TOPROCES S_E        THEN
  3720            A DRMGT.Job_ Process_Er r_Sp(
  3721                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3722                    PD_j ob_error_d ate  => SY SDATE,
  3723                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  3724                    PC_j ob_error_m essage =>  SUBSTR('ER ROR - Inva lid input  parameter  ToProcess:  '||P_batc h_SSN_ToPr ocess_DIR, 1,2000),
  3725                    PD_d ate1 => SY SDATE,
  3726                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  3727  
  3728  
  3729        WHEN  INVALID_SS N_LOG_E  T HEN
  3730  
  3731            A DRMGT.Job_ Process_Er r_Sp(
  3732                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3733                    PD_j ob_error_d ate  => SY SDATE,
  3734                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  3735                    PC_j ob_error_m essage =>  SUBSTR('ER ROR - Inva lid input  parameter  Log: '||P_ batch_SSN_ log_DIR,1, 2000),
  3736                    PD_d ate1 => SY SDATE,
  3737                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  3738  
  3739        WHEN  INVALID_SS N_ERR_E TH EN
  3740            A DRMGT.Job_ Process_Er r_Sp(
  3741                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3742                    PD_j ob_error_d ate  => SY SDATE,
  3743                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  3744                    PC_j ob_error_m essage =>  SUBSTR('ER ROR - Inva lid input  parameter  Error: '|| P_batch_SS N_err_DIR, 1,2000),
  3745                    PD_d ate1 => SY SDATE,
  3746                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  3747  
  3748        WHEN  NO_DATA_FO UND THEN
  3749  
  3750            A DRMGT.Job_ Process_Er r_Sp(
  3751                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3752                    PD_j ob_error_d ate  => SY SDATE,
  3753                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  3754                    PC_j ob_error_m essage =>  SUBSTR('ER ROR - No D ATA FOUND  in ADR ToP rocess of  File '||P_ batch_SSN_ ADRToProce ss_DIR,1,2 000),
  3755                    PD_d ate1 => SY SDATE,
  3756                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  3757  
  3758        WHEN  FILE_PATH_ TOPROCESS_ NULL_E THE N
  3759            A DRMGT.Job_ Process_Er r_Sp(
  3760                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3761                    PD_j ob_error_d ate  => SY SDATE,
  3762                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  3763                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: '||P_ batch_SSN_ ToProcess_ DIR||' nee ds to be c onfigured.  ' || SQLE RRM,1,2000 ),
  3764                    PD_d ate1 => SY SDATE,
  3765                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  3766  
  3767  
  3768        WHEN  FILE_PATH_ ADRTOPROCE SS_NULL_E  THEN
  3769            A DRMGT.Job_ Process_Er r_Sp(
  3770                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3771                    PD_j ob_error_d ate  => SY SDATE,
  3772                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  3773                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: '||P_ batch_SSN_ ADRToProce ss_DIR||'  needs to b e configur ed. ' || S QLERRM,1,2 000),
  3774                    PD_d ate1 => SY SDATE,
  3775                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  3776  
  3777        WHEN  LOG_FILE_P ATH_NULL_E  THEN
  3778  
  3779            A DRMGT.Job_ Process_Er r_Sp(
  3780                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3781                    PD_j ob_error_d ate  => SY SDATE,
  3782                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  3783                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: '||P_ batch_SSN_ log_DIR||'  needs to  be configu red. ' ||  SQLERRM,1, 2000),
  3784                    PD_d ate1 => SY SDATE,
  3785                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  3786  
  3787        WHEN  ERROR_FILE _PATH_NULL _E THEN
  3788  
  3789            A DRMGT.Job_ Process_Er r_Sp(
  3790                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3791                    PD_j ob_error_d ate  => SY SDATE,
  3792                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  3793                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: '||P_ batch_SSN_ err_DIR||'  needs to  be configu red. ' ||  SQLERRM,1, 2000),
  3794                    PD_d ate1 => SY SDATE,
  3795                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  3796  
  3797        WHEN  OTHERS THE N
  3798  
  3799            A DRMGT.Job_ Process_Er r_Sp(
  3800                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  3801                    PD_j ob_error_d ate  => SY SDATE,
  3802                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  3803                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: Unkno wn Excepti on of File  '||VC_fil e_name||
  3804                                      '. ' ||  SQLERRM,1, 2000),
  3805                    PD_d ate1 => SY SDATE,
  3806                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  3807  
  3808    END;
  3809   /
  3810   DROP PROCE DURE ADR.B ATCH_ACA_P ROCESSED_S P;
  3811  
  3812   CREATE OR  REPLACE PR OCEDURE AD R.BATCH_AC A_PROCESSE D_SP
  3813   AS
  3814      VF_FILE _HANDLE UT L_FILE.FIL E_TYPE;
  3815  
  3816      VC_log_ step           VARCHA R2(500);
  3817      gc_job_ name           VARCHA R2(30) :=  'BATCH_ACA _PROCESSED _JOB';
  3818  
  3819      CC_BATC H_ACA_TOPR OCESS_DIR    VARCHAR2 (30):= 'BA TCH_ACA_TO PROCESS_DI R';
  3820      CC_BATC H_ACA_LOG_ DIR          VARCHAR2 (30):= 'BA TCH_ACA_LO G_DIR';
  3821  
  3822      VC_file _name          VARCHA R2(30):= ' cms_addres s_file.txt ';
  3823      VC_log_ file_name      VARCHA R2(30):= ' cms_addres s_file.log ';
  3824  
  3825      VN_rows _count_id1     NUMBER  := 0;
  3826      VN_rows _count_id2     NUMBER  := 0;
  3827      VN_elap sed_time       NUMBER  := 0;
  3828      VN_temp                NUMBER  := 0;
  3829  
  3830      time_a      INTEGE R;
  3831      time_b      INTEGE R;
  3832      time_c      INTEGE R;
  3833      time_d      INTEGE R;
  3834  
  3835      gc_inte ration         NUMBER := 0;
  3836      vn_fetc h_lim          NUMBER := 10000;
  3837      VN_rowc nt_fetched     NUMBER  := 0;
  3838      vn_tota l_rows_tob e_processe d NUMBER:=  0;
  3839  
  3840      VN_EXCE PTION_CNT      NUMBER  ;
  3841      VC_erro r_msg          VARCHA R2(5000);
  3842  
  3843      TYPE ID _RECORD IS  RECORD (
  3844          COR RESPONDENC E_NUM    V ARCHAR2(30 ),
  3845          COR RESPONDENC E_ID1    N UMBER,
  3846          COR RESPONDENC E_ID2    N UMBER
  3847        );
  3848  
  3849      TYPE ID _REC_TAB I S TABLE OF  ID_RECORD  INDEX BY  BINARY_INT EGER;
  3850        ID_RE CORD_TAB I D_REC_TAB;
  3851  
  3852      CURSOR  corres_id_ C IS
  3853         SELE CT corresp ondence_nu m,
  3854           CA SE INSTR(c orresponde nce_num,'- ')
  3855           WH EN 0 THEN
  3856              TO_NUMBER( correspond ence_num)
  3857           WH EN 1 THEN
  3858                 TO_NUMB ER('1')
  3859           EL SE
  3860                    TO_N UMBER(SUBS TR(corresp ondence_nu m,1, INSTR (correspon dence_num, '-')-1))
  3861          END  corresp_i d1 ,
  3862          CAS E INSTR(co rresponden ce_num,'-' )
  3863            W HEN
  3864                LENGTH(c orresponde nce_num) T HEN
  3865                     TO_ NUMBER('1' )
  3866              ELSE
  3867                   TO_NU MBER(SUBST R(correspo ndence_num , INSTR(co rresponden ce_num,'-' )+1))
  3868          END  corresp_i d2
  3869        FROM  ADR.ACA_MA IL_RESPONS E_EXT;
  3870  
  3871   BEGIN
  3872  
  3873       VF_FIL E_HANDLE : = UTL_FILE .fopen('BA TCH_ACA_TO PROCESS_DI R',VC_file _name,'R') ;
  3874       IF UTL _FILE.IS_O PEN(VF_FIL E_HANDLE)  THEN
  3875  
  3876            U TL_FILE.FC LOSE(VF_FI LE_HANDLE) ;
  3877  
  3878       END IF ;
  3879  
  3880       EXECUT E IMMEDIAT E 'ALTER S ESSION SET  PARALLEL_ FORCE_LOCA L=TRUE';
  3881  
  3882       SELECT  COUNT(1)
  3883          INT O vn_total _rows_tobe _processed
  3884       FROM A DR.ACA_MAI L_RESPONSE _EXT;
  3885  
  3886       DBMS_A PPLICATION _INFO.set_ client_inf o('Job: '| |gc_job_na me ||' - T otal Rows  From File:  '||vn_tot al_rows_to be_process ed||' STAR TED '||TO_ CHAR(SYSDA TE,'MM/DD/ YY HH24:MI :SS'));
  3887       time_a  := dbms_u tility.get _time;
  3888  
  3889  
  3890       VC_log _step := ' BULK LOAD  BEGINS';
  3891  
  3892       -- === ========== ========== ========== ========== ========== ===
  3893       --
  3894       -- Beg in Bulk Co llect Fetc h
  3895       --
  3896       -- === ========== ========== ========== ========== ========== ===
  3897       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => gc_jo b_name,
  3898                                      PD_job_l og_date =>  SYSDATE,
  3899                                      PC_job_s tatus => ' INFORMATIO N - Proces s Initiati on',
  3900                                      PC_job_l og_message  => gc_job _name||' S tarted',
  3901                                      pc_text1  => 'Total  Rows From  File '||  vn_total_r ows_tobe_p rocessed | |' - BULK  LIMIT: '||  vn_fetch_ lim,
  3902                                      PD_date1  => SYSDAT E
  3903            ) ;
  3904  
  3905       OPEN c orres_id_C ;
  3906       LOOP
  3907  
  3908          FET CH corres_ id_C BULK  COLLECT IN TO ID_RECO RD_TAB LIM IT vn_fetc h_lim;
  3909          EXI T WHEN ID_ RECORD_TAB .COUNT = 0 ;
  3910          gc_ interation  := gc_int eration +  1;
  3911  
  3912          VC_ log_step : = 'Process  ID1 - Ite ration# '| |gc_intera tion;
  3913  
  3914          VN_ rowcnt_fet ched := VN _rowcnt_fe tched + ID _RECORD_TA B.COUNT;
  3915  
  3916          tim e_b := dbm s_utility. get_time;
  3917  
  3918          FOR ALL indx I N ID_RECOR D_TAB.FIRS T.. ID_REC ORD_TAB.LA ST SAVE EX CEPTIONS
  3919              UPDATE ADR .correspon dence
  3920              SET corres pondence_s tatus_id =  8,
  3921              correspond ence_statu s_date  =  SYSDATE,
  3922               record_mo dified_by         = ' 557606',
  3923              record_mod ified_date         =  SYSDATE,
  3924              record_mod ified_coun t       =  record_mod ified_coun t +1
  3925              WHERE corr espondence _id = ID_R ECORD_TAB( indx).CORR ESPONDENCE _ID1;
  3926  
  3927            V C_log_step  := 'Row C ounts ID1  - Iteratio n# '||gc_i nteration;
  3928  
  3929           FO R I IN 1.. ID_RECORD_ TAB.COUNT  LOOP
  3930               VN_rows_c ount_id1:=  VN_rows_c ount_id1 +  SQL%BULK_ ROWCOUNT(i );
  3931           EN D LOOP;
  3932  
  3933           CO MMIT;
  3934  
  3935           VC _log_step  := 'Proces s ID2 - It eration# ' ||gc_inter ation;
  3936           FO RALL indx  IN ID_RECO RD_TAB.FIR ST.. ID_RE CORD_TAB.L AST SAVE E XCEPTIONS
  3937                    UPDA TE ADR.cor respondenc e
  3938                    SET  correspond ence_statu s_id = 8,
  3939                    corr espondence _status_da te = SYSDA TE,
  3940                    reco rd_modifie d_by = '55 7606',
  3941                    reco rd_modifie d_date = S YSDATE,
  3942                    reco rd_modifie d_count =  record_mod ified_coun t +1
  3943               WHERE cor respondenc e_id = ID_ RECORD_TAB (indx).COR RESPONDENC E_ID2;
  3944  
  3945           VC _log_step  := 'Row Co unts ID2 -  Iteration # '||gc_in teration;
  3946  
  3947           FO R I IN 1.. ID_RECORD_ TAB.COUNT  LOOP
  3948               VN_rows_c ount_id2:=  VN_rows_c ount_id2 +  SQL%BULK_ ROWCOUNT(i );
  3949           EN D LOOP;
  3950  
  3951           CO MMIT;
  3952  
  3953           ti me_c := db ms_utility .get_time;
  3954           VN _elapsed_t ime := ROU ND((time_c  - time_b) /100/60,2) ;
  3955  
  3956           DB MS_APPLICA TION_INFO. set_client _info('Ite ration# '| | gc_inter ation||' R ows Update d IDs: '|| VN_rows_co unt_id1 || ' - ID2: ' ||VN_rows_ count_id2| |' Elapse:  '||VN_ela psed_time| |' min');
  3957  
  3958           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => g c_job_name ,
  3959                                         PD_jo b_log_date  => SYSDAT E,
  3960                                         PC_jo b_status = > 'INFORMA TION - Ite ration: '| | gc_inter ation||'-  Elapse: '| |VN_elapse d_time||'  min',
  3961                                         PC_jo b_log_mess age => 'Ro ws Updated : ID1: '|| VN_rows_co unt_id1 || ' - ID2: ' ||VN_rows_ count_id2,
  3962                                         PD_da te1 => SYS DATE
  3963                                 );
  3964  
  3965  
  3966           EX IT WHEN ID _RECORD_TA B.COUNT =  0;
  3967  
  3968        END L OOP;
  3969  
  3970        CLOSE  corres_id _C;
  3971  
  3972        VC_lo g_step :=  'Process C ompleted -  Iteration # '||gc_in teration;
  3973  
  3974        time_ d := dbms_ utility.ge t_time;
  3975  
  3976        VN_el apsed_time  := ROUND( (time_d -  time_a)/10 0/60,2);
  3977  
  3978        ADRMG T.Job_Proc ess_Log_Sp (PC_job_na me => gc_j ob_name,
  3979                              PD_jo b_log_date  => SYSDAT E,
  3980                              PC_jo b_status = > 'INFORMA TION - Pro cess Compl eted ', -- - Rows TO  BE Process ed: '||vn_ total_rows _tobe_proc essed,
  3981                              PC_jo b_log_mess age => 'To tal Rows U pdated ID1 : '||VN_ro ws_count_i d1||' ID2:  '||VN_row s_count_id 2,
  3982                              pc_te xt1 => 'To tal Rows F rom File ' || vn_tota l_rows_tob e_processe d,
  3983                              PD_da te1 => SYS DATE
  3984           );
  3985  
  3986        VC_lo g_step :=  'Checking  External L og File ';
  3987  
  3988        SELEC T COUNT(1)
  3989            I NTO VN_tem p
  3990        FROM  ADR.ACA_MA IL_RESPONS E_LOG_EXT
  3991        WHERE  upper(tex t) LIKE '% ORA%'
  3992        OR up per(text)  LIKE '%ERR OR%'
  3993        OR up per(text)  LIKE '%FAI L%';
  3994  
  3995        IF VN _temp >= 1  THEN
  3996  
  3997           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => g c_job_name ,
  3998                              PD_jo b_log_date  => SYSDAT E,
  3999                              PC_jo b_status = > 'WARNING  - Process  Completed , Found Er ror in Log  ',
  4000                              PC_jo b_log_mess age => 'ER OR FOUND I N LOG FILE  - PLEASE  REVIEW LOG  FILE ON S ERVER',
  4001                              pc_te xt1 => 'To tal Rows U pdated ID1 : '||VN_ro ws_count_i d1||' ID2:  '||VN_row s_count_id 2,
  4002                              PD_da te1 => SYS DATE
  4003                  );
  4004        ELSE
  4005  
  4006            A DRMGT.Job_ Process_Lo g_Sp(PC_jo b_name =>  gc_job_nam e,
  4007                                       PD_job_ log_date = > SYSDATE,
  4008                                       PC_job_ status =>  'INFORMATI ON - Proce ss Complet ed SUCCESS FULLY!',
  4009                                       PC_job_ log_messag e => 'NO E ROR FOUND  IN EXTERNA L LOG FILE ',
  4010                                       PD_date 1 => SYSDA TE
  4011                  );
  4012        END I F;
  4013  
  4014  
  4015       -- === ========== ========== ========== ========== ========== =====
  4016       --
  4017       -- Mov ing file n ame to Pro cessed dir  from toPr ocess fold er
  4018       --
  4019       -- === ========== ========== ========== ========== ========== =====
  4020       UTL_FI LE.fremove (CC_BATCH_ ACA_TOPROC ESS_DIR, V C_file_nam e);
  4021       --UTL_ FILE.fremo ve(CC_BATC H_ACA_LOG_ DIR, VC_lo g_file_nam e);
  4022  
  4023  
  4024       EXCEPT ION
  4025  
  4026         WHEN  UTL_FILE. INVALID_PA TH THEN
  4027                 DBMS_OU TPUT.put_l ine('Error  : INVALID  PATH (' | | CC_BATCH _ACA_TOPRO CESS_DIR | |') ') ;
  4028                 ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (gc_job_na me,1,60),
  4029                                        PD_job _log_date  => SYSDATE ,
  4030                                        PC_job _status =>  'ERROR -  INVALID PA TH - '||VC _file_name ,
  4031                                        PC_job _log_messa ge => 'PLE ASE MAKE S URE FILE E XISTED PRI OR TO RUNN ING THE JO B',
  4032                                        pc_tex t1 => 'INV ALID PATH  '||CC_BATC H_ACA_TOPR OCESS_DIR,
  4033                                        PD_dat e1 => SYSD ATE
  4034                                 );
  4035  
  4036         WHEN  UTL_FILE. INVALID_OP ERATION TH EN
  4037                 DBMS_OU TPUT.put_l ine('Error  : INVALID  FILE OPER ATION - FI LE NOT FOU ND '|| VC_ file_name  );
  4038                 ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (gc_job_na me,1,60),
  4039                                        PD_job _log_date  => SYSDATE ,
  4040                                        PC_job _status =>  'ERROR -  FILE NOT F OUND, '||V C_file_nam e,
  4041                                        PC_job _log_messa ge => 'PLE ASE MAKE S URE FILE E XISTED',
  4042                                        pc_tex t1 => CC_B ATCH_ACA_T OPROCESS_D IR||'.'||V C_file_nam e||' NOT E XISTED!',
  4043                                        PD_dat e1 => SYSD ATE
  4044                                 );
  4045            I F UTL_FILE .IS_OPEN(V F_FILE_HAN DLE) THEN
  4046                 UTL_FIL E.FCLOSE(V F_FILE_HAN DLE);
  4047            E ND IF;
  4048  
  4049         WHEN  UTL_FILE. INVALID_MO DE THEN
  4050                 DBMS_OU TPUT.Put_l ine('Error  : Invalid  Mode ' ||  CC_BATCH_ ACA_TOPROC ESS_DIR );
  4051  
  4052                 ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (gc_job_na me,1,60),
  4053                                        PD_job _log_date  => SYSDATE ,
  4054                                        PC_job _status =>  'ERROR -  INVALID MO DE, '||VC_ file_name,
  4055                                        PC_job _log_messa ge => 'PLE ASE MAKE S URE FILE E XISTED',
  4056                                        pc_tex t1 => CC_B ATCH_ACA_T OPROCESS_D IR||'.'||V C_file_nam e||' NOT E XISTED!',
  4057                                        PD_dat e1 => SYSD ATE
  4058                                 );
  4059                 UTL_FIL E.FCLOSE(V F_FILE_HAN DLE);
  4060  
  4061         WHEN  NO_DATA_F OUND THEN
  4062           AD RMGT.Job_P rocess_Log _Sp(
  4063                    PC_j ob_name =>  SUBSTR(gc _job_name, 1,60),
  4064                    PD_j ob_log_dat e => SYSDA TE,
  4065                    PC_j ob_status  => 'WARNIN G - No DAT A FOUND -  '||SUBSTR( VC_log_ste p,1,60),
  4066                    PC_j ob_log_mes sage => 'W ARNING - ' || SUBSTR( SQLCODE,1, 60)||' - '  ||SUBSTR( SQLERRM,1, 254),
  4067                    PD_d ate1 => SY SDATE,
  4068                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  4069  
  4070               UTL_FILE. FCLOSE(VF_ FILE_HANDL E);
  4071  
  4072         WHEN  OTHERS TH EN
  4073  
  4074            V N_EXCEPTIO N_CNT := S QL%BULK_EX CEPTIONS.C OUNT;
  4075            F OR I IN 1  .. VN_EXCE PTION_CNT  LOOP
  4076  
  4077            V C_error_ms g :=
  4078                  'ERROR  BULK EXCE PTION: ' | | VC_log_s tep||CHR(1 0) || SQL% BULK_EXCEP TIONS(I).E RROR_INDEX  ||
  4079                  ' ID1:  ' || ID_R ECORD_TAB( I).CORRESP ONDENCE_ID 1 || ' - I DX2: '||ID _RECORD_TA B(I).CORRE SPONDENCE_ ID2||
  4080                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  4081  
  4082                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(gc_job_n ame,1,60),
  4083                                                PD_job_lo g_date =>  SYSDATE,
  4084                                                PC_job_st atus => 'E RROR BULK  EXCEPTION  - Row# '|| SQL%BULK_E XCEPTIONS( I).ERROR_I NDEX,
  4085                                                PC_job_lo g_message  => 'Total  Rows Added /Rows Proc essed: '|| VN_rows_co unt_id1||' /'||VN_row cnt_fetche d||' Elaps ed: '||VN_ elapsed_ti me,
  4086                                                PC_text1  => ID_RECO RD_TAB(I). CORRESPOND ENCE_ID1||  ' - IDX2:  '||ID_REC ORD_TAB(I) .CORRESPON DENCE_ID2,
  4087                                                PD_date1  => SYSDATE
  4088                                 );
  4089  
  4090                 DBMS_OU TPUT.put_l ine(VC_err or_msg);
  4091  
  4092            E ND LOOP;
  4093  
  4094            A DRMGT.Job_ Process_Lo g_Sp(
  4095                    PC_j ob_name =>  SUBSTR(gc _job_name, 1,60),
  4096                    PD_j ob_log_dat e => SYSDA TE,
  4097                    PC_j ob_status  => 'ERROR:  Unknown E xception -  '||SUBSTR (VC_log_st ep,1,60),
  4098                    PC_j ob_log_mes sage => 'E RROR CODE  '|| SUBSTR (SQLCODE,1 ,60)||' -  ' ||SUBSTR (SQLERRM,1 ,254),
  4099                    PD_d ate1 => SY SDATE,
  4100                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  4101  
  4102            U TL_FILE.FC LOSE(VF_FI LE_HANDLE) ;
  4103  
  4104    END BATCH _ACA_PROCE SSED_SP;
  4105   /
  4106  
  4107  
  4108   CREATE OR  REPLACE PU BLIC SYNON YM BATCH_A CA_PROCESS ED_SP FOR  ADR.BATCH_ ACA_PROCES SED_SP;
  4109   DROP PROCE DURE ADR.A DR_INCOME_ TEST_FIX_S P;
  4110  
  4111   CREATE OR  REPLACE PR OCEDURE AD R.Adr_Inco me_Test_Fi x_Sp
  4112     (p_run_s tandalone
  4113        IN      BOOLEAN  DEFAULT FA LSE,
  4114      p_allow _rpt_inst
  4115        IN      BOOLEAN  DEFAULT FA LSE
  4116     )
  4117   IS
  4118  
  4119   -- ******* ********** ********** ********** ********** ********** ********** ********
  4120   -- * Proce dure: Adr_ Income_Tes t_Fix_Sp
  4121   -- *
  4122   -- *  Fix  data in In come_Test  table from  applicati on bug to  be run nig htly.
  4123   -- *
  4124   -- *  - Se lects futu re Income_ Test table  records f or individ uals with  multiple i ncome_test  records a nd multipl e records  where the  income_tes t_type_id  is the sam e
  4125   --  *  And   the futu re_test_fl ag = 1
  4126   -- *    An d there is  also an I ncome_Test  table rec ord Wherfu ture_test_ flag = 0
  4127   -- *  -And   there is  a record  where the  income_tes t_effectiv e_date = M AX(income_ test_effec tive_date)
  4128   -- *   And  there is  a record w here the i ncome_year  is greate r than the  income_ye ar selecte d where th e future_t est_flag =  1
  4129   -- *
  4130   -- *  - It  then sele cts the cu rrent year  records f or each in dividual i n the futu re Income_ Test query
  4131   -- *    Wh ere future _test_flag  = 0
  4132   -- *
  4133   -- *  It t hen update s income_t est with c orrect inf ormation.
  4134   -- *
  4135   -- * Param eters:
  4136   -- *
  4137   -- *  PB_r un_standal one   Igno re DBMS_JO B logic fo r checking  running j obs.
  4138   -- *                         Def ault: FALS E
  4139   -- *
  4140   -- *  PB_a llow_rpt_i nst   Allo w stored p rocedure t o be submi tted in th e
  4141   -- *                        DBMS _JOB queue  on the AD R reportin g database s
  4142   -- *                         Def ault: FALS E
  4143   -- *
  4144   -- ******* ********** ********** ********** ********** ********** ********** ********
  4145   --
  4146   -- ======= ========== ========== ========== ========== ========== ========== ========
  4147   -- Date         Autho r             Descrip tion
  4148   -- ======= ========== ========== ========== ========== ========== ========== ========
  4149   -- 06/22/2 010  Craig  Wood         Created  for CCR 1 173.
  4150   --
  4151   --
  4152   -- ======= ========== ========== ========== ========== ========== ========== ========
  4153  
  4154     CURSOR f utureyears cur
  4155      IS
  4156         SELE CT it1.inc ome_test_i d income_t est_idf, i t1.person_ id person_ idf,
  4157          it1 .income_ye ar income_ yearf,
  4158          it1 .income_te st_effecti ve_date in come_test_ effective_ datef,
  4159          it1 .income_te st_type_id
  4160     FROM inc ome_test i t1
  4161    WHERE it1 .future_te st_flag =  1
  4162      AND EXI STS (
  4163              SELECT it2 .income_ye ar
  4164                FROM inc ome_test i t2
  4165               WHERE it2 .future_te st_flag =  0
  4166                 AND it2 .income_te st_effecti ve_date =
  4167                         (SELECT MA X (it4.inc ome_test_e ffective_d ate)
  4168                            FROM in come_test  it4
  4169                           WHERE it 4.person_i d = it1.pe rson_id
  4170                             AND it 4.income_t est_type_i d = it1.in come_test_ type_id
  4171                             AND it 4.future_t est_flag =  0)
  4172                 AND it2 .person_id  = it1.per son_id
  4173                 AND it2 .income_te st_type_id  = it1.inc ome_test_t ype_id
  4174                 AND it2 .income_ye ar > it1.i ncome_year );
  4175  
  4176  
  4177      v_f_inc ome_test_i d                inco me_test.in come_test_ id%TYPE;
  4178      v_f_per son_id                      inco me_test.pe rson_id%TY PE;
  4179      v_f_inc ome_year                    inco me_test.in come_year% TYPE;
  4180      v_f_inc ome_test_e ffective_d ate   inco me_test.in come_test_ effective_ date%TYPE;
  4181      v_f_inc ome_test_t ype_id           inco me_test.in come_test_ type_id%TY PE;
  4182      v_c_inc ome_test_i d                inco me_test.in come_test_ id%TYPE;
  4183      v_c_per son_id                      inco me_test.pe rson_id%TY PE;
  4184      v_c_inc ome_year                    inco me_test.in come_year% TYPE;
  4185      v_c_inc ome_test_e ffective_d ate   inco me_test.in come_test_ effective_ date%TYPE;
  4186      v_incom e_test_eff ective_dat e     inco me_test.in come_test_ effective_ date%TYPE;
  4187      v_incom e_test_det ail_id           inco me_test_de tail.incom e_test_det ail_id%TYP E;
  4188      v_incom e_test_id                   inco me_test_de tail.incom e_test_det ail_id%TYP E;
  4189      v_incom e_test_typ e_id             inco me_test_de tail.incom e_test_id% TYPE;
  4190      v_test_ status_typ e_id             inco me_test_de tail.test_ status_typ e_id%TYPE;
  4191      v_test_ detmnd_sta tus_type_i d     inco me_test_de tail.test_ detmnd_sta tus_type_i d%TYPE;
  4192      v_incom e_test_las t_edited_d ate   inco me_test_de tail.incom e_test_las t_edited_d ate%TYPE;
  4193      v_incom e_test_com pleted_dat e     inco me_test_de tail.incom e_test_com pleted_dat e%TYPE;
  4194      v_incom e_test_exp iration_da te    inco me_test_de tail.incom e_test_exp iration_da te%TYPE;
  4195      v1_inco me_test_ef fective_da te    inco me_test_de tail.incom e_test_eff ective_dat e%TYPE;
  4196      v_incom e_test_sig ned_date         inco me_test_de tail.incom e_test_sig ned_date%T YPE;
  4197      vh_inco me_test_la st_edit_da te    inco me_test_de tail.incom e_test_las t_edited_d ate%TYPE;
  4198      vh_inco me_test_co mpleted_da te    inco me_test_de tail.incom e_test_com pleted_dat e%TYPE;
  4199      v_count                                           N UMBER;
  4200      v_debug                                          VA RCHAR2(200 0);
  4201  
  4202     v_allow_ rpt_inst                         BOOLEAN :=  FALSE;
  4203     v_run_st andalone                         BOOLEAN :=  FALSE;
  4204     v_instan ce_name                          VARCHAR2(1 6);
  4205     v_job_co unt                              NUMBER :=  0;
  4206     vc_allow _rpt_inst                        VARCHAR2(5 ) := NULL;
  4207     vc_run_s tandalone                        VARCHAR2(5 ) := NULL;
  4208     v_log_da te                               DATE;
  4209     v_rec_gr oup_date                         DATE;
  4210     v_proces s_name                           VARCHAR2(6 0) := 'ADR  Income Te st Fix';
  4211      CURSOR  detailcurs or
  4212      IS
  4213         SELE CT income_ test_detai l_id, inco me_test_id , income_t est_type_i d,
  4214                 test_st atus_type_ id, test_d etmnd_stat us_type_id ,
  4215                 income_ test_last_ edited_dat e, income_ test_compl eted_date,
  4216                 income_ test_expir ation_date , income_t est_effect ive_date,
  4217                 income_ test_signe d_date
  4218           FR OM income_ test_detai l
  4219          WHE RE income_ test_id =  v_f_income _test_id;
  4220  
  4221  
  4222  
  4223   BEGIN
  4224  
  4225   -- ******* ********** ********** ********** ********** ********** ********** ********
  4226   -- *
  4227   -- * Valid ate input  parameters
  4228   -- *
  4229   -- ******* ********** ********** ********** ********** ********** ********** ********
  4230  
  4231   -- * Check  run stand alone flag
  4232  
  4233     IF p_run _standalon e IS NULL
  4234      OR NOT  p_run_stan dalone THE N
  4235           v_ run_standa lone := FA LSE;
  4236           vc _run_stand alone := ' FALSE'; --  used for  log messag e, boolean  can't be  displayed
  4237     ELSE
  4238       v_run_ standalone  := TRUE;
  4239       vc_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  4240     END IF;
  4241  
  4242   -- * Check  run on re port insta nce flag
  4243  
  4244     IF p_all ow_rpt_ins t IS NULL
  4245      OR NOT  p_allow_rp t_inst THE N
  4246       v_allo w_rpt_inst  := FALSE;
  4247       vc_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  4248     ELSE
  4249       v_allo w_rpt_inst  := TRUE;
  4250       vc_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  4251     END IF;
  4252     v_log_da te := SYSD ATE;
  4253     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( v_process_ name,1,60) ,
  4254                                 PD _job_log_d ate => v_l og_date,
  4255                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cessing pa rameters f or this jo b',1,60),
  4256                                 PC _job_log_m essage =>  SUBSTR('Cu rrent job  parameters  - '
  4257                                                              || ' R un standal one: ' ||  vc_run_sta ndalone
  4258                                                              || ' R un on repo rting data bases: ' | | vc_allow _rpt_inst, 1,2000),
  4259                                 PD _date1 =>  v_rec_grou p_date,
  4260                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4261   -- ******* ********** ********** ********** ********** ********** ********** ********
  4262   -- *
  4263   -- * Check  to see if  process i s running  on a repor ting datab ase.
  4264   -- *  - If  v_allow_r pt_inst is  FALSE, th en it's no t allowed.  End the j ob.
  4265   -- *
  4266   -- ******* ********** ********** ********** ********** ********** ********** ********
  4267       IF NOT  v_allow_r pt_inst TH EN
  4268           BE GIN
  4269                 v_log_d ate := SYS DATE;
  4270                 ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (v_process _name,1,60 ),
  4271                                      PD_job_l og_date =>  v_log_dat e,
  4272                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  4273                                      PD_date1  => v_rec_ group_date ,
  4274                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4275  
  4276                SELECT     Instance _name
  4277                INTO       v_instan ce_name
  4278                FROM       V$instan ce;
  4279                IF UPPER (SUBSTR(v_ instance_n ame,1,4))  = 'ADRR' T HEN
  4280                    v_lo g_date :=  SYSDATE;
  4281                    ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(v_proc ess_name,1 ,60),
  4282                                        PD_job _log_date  => v_log_d ate,
  4283                                        PC_job _status =>  SUBSTR('W ARNING      - Process ing Failed ',1,60),
  4284                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  4285                                                                     || v_insta nce_name
  4286                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  4287                                                                     || ' set p arameter p _allow_rpt _inst to T RUE and re submit the  job.',1,2 000),
  4288                                        PD_dat e1 => v_re c_group_da te,
  4289                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4290                    RETU RN;
  4291                 END IF;
  4292                 EXCEPTI ON
  4293                    WHEN  OTHERS TH EN
  4294                      v_ log_date : = SYSDATE;
  4295                      AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(v_pr ocess_name ,1,60),
  4296                                        PD_job _log_date  => v_log_d ate,
  4297                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  4298                                        PC_job _log_messa ge => SUBS TR('Termin ating scri pt.',1,200 0),
  4299                                        PD_dat e1 => v_re c_group_da te,
  4300                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4301  
  4302                RETURN;
  4303                END;
  4304       END IF ;
  4305   -- ******* ********** ********** ********** ********** ********** ********** ********
  4306   -- *
  4307   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  4308   -- *  - If  yes, then  end this  job.
  4309   -- *
  4310   -- ******* ********** ********** ********** ********** ********** ********** ********
  4311  
  4312       SELECT  COUNT(*)
  4313       INTO    v_job_cou nt
  4314       FROM    SYS.DBA_J OBS_RUNNIN G R,
  4315            S YS.DBA_JOB S J
  4316      WHERE   J.JOB = R. JOB
  4317      AND     UPPER(J.WH AT) LIKE ' %ADR_INCOM E_TEST_FIX _SP%';
  4318       IF v_j ob_count >  1 THEN
  4319           BE GIN
  4320                v_log_da te := SYSD ATE;
  4321                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( v_process_ name,1,60) ,
  4322                                    PD_job_log _date => v _log_date,
  4323                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  4324                                    PC_job_log _message = > SUBSTR(' There is a nother Inc ome Test F ix job run ning.'
  4325                                                                || '  Exiting j ob without  running.' ,1,2000),
  4326                                    PD_date1 = > v_rec_gr oup_date,
  4327                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4328  
  4329                RETURN;
  4330           EN D;
  4331       ELSE
  4332           IF  v_run_sta ndalone TH EN
  4333                v_log_da te := SYSD ATE;
  4334                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( v_process_ name,1,60) ,
  4335                                      PD_job_l og_date =>  v_log_dat e,
  4336                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  4337                                      PD_date1  => v_rec_ group_date ,
  4338                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4339           EN D IF;
  4340       END IF ;
  4341   -- ******* ********** ********** ********** ********** ********** ********** ********
  4342   -- *
  4343   -- * Main  processing  loop
  4344   -- *
  4345   -- ******* ********** ********** ********** ********** ********** ********** ********
  4346  
  4347  
  4348  
  4349  
  4350   -- Remove  all proces s logs ove r 14 days  old
  4351  
  4352     BEGIN
  4353  
  4354       v_log_ date := SY SDATE;
  4355       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(v_proces s_name,1,6 0),
  4356                                    PD_job_log _date => v _log_date,
  4357                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  4358                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over 14  days old', 1,2000),
  4359                                    PD_date1 = > v_rec_gr oup_date,
  4360                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4361  
  4362       DELETE
  4363       FROM       ADRMGT .Job_Proce ss_Logs
  4364       WHERE      Job_na me = v_pro cess_name
  4365       AND        Date1  < TRUNC(SY SDATE) - 1 4;
  4366  
  4367       COMMIT ;
  4368  
  4369       v_log_ date := SY SDATE;
  4370       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(v_proces s_name,1,6 0),
  4371                                    PD_job_log _date => v _log_date,
  4372                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  4373                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over 14 d ays old',1 ,2000),
  4374                                    PD_date1 = > v_rec_gr oup_date,
  4375                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4376  
  4377  
  4378     EXCEPTIO N
  4379  
  4380       WHEN N O_DATA_FOU ND THEN
  4381  
  4382         NULL ;
  4383  
  4384       WHEN O THERS THEN
  4385  
  4386         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(v_proc ess_name,1 ,60),
  4387                                    PD_job_log _date => v _log_date,
  4388                                    PC_job_sta tus => SUB STR('ERROR  - UNKOWN  EXCEPTION' ,1,60),
  4389                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  4390                                    PD_date1 = > v_rec_gr oup_date,
  4391                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4392  
  4393     END;
  4394  
  4395       OPEN f utureyears cur;
  4396       LOOP
  4397         FETC H futureye arscur
  4398          INT O v_f_inco me_test_id , v_f_pers on_id, v_f _income_ye ar,
  4399                v_f_inco me_test_ef fective_da te, v_f_in come_test_ type_id;
  4400         EXIT  WHEN futu reyearscur %NOTFOUND;
  4401         v_de bug := '';
  4402         v_de bug := v_d ebug || 'S TEP1 for : ' || v_f_i ncome_test _id ;
  4403         v_lo g_date :=  SYSDATE;
  4404         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(v_proc ess_name,1 ,60),
  4405                                    PD_job_log _date => v _log_date,
  4406                                    PC_job_sta tus => SUB STR('INFOR MATION - S tep 1',1,6 0),
  4407                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  4408                                    PD_date1 = > v_rec_gr oup_date,
  4409                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4410  
  4411   --find the  current t est for th is person
  4412     BEGIN
  4413       SELECT  income_te st_id, per son_id, in come_year,  income_te st_effecti ve_date
  4414         INTO  v_c_incom e_test_id,  v_c_perso n_id, v_c_ income_yea r,v_c_inco me_test_ef fective_da te
  4415         FROM  income_te st it2
  4416        WHERE  it2.incom e_test_eff ective_dat e =
  4417                       ( SELECT MAX  (income_t est_effect ive_date)
  4418                      FR OM income_ test
  4419                     WHE RE person_ id = v_f_p erson_id A ND future_ test_flag  = 0)
  4420            A ND it2.per son_id = v _f_person_ id AND it2 .future_te st_flag =  0;
  4421  
  4422            v _debug :=  'STEP2 for  :' || v_f _income_te st_id|| CH R(10) ||
  4423                                'SE LECT incom e_test_id,  person_id , income_y ear, incom e_test_eff ective_dat e'|| CHR(1 0) ||
  4424                                'IN TO v_c_inc ome_test_i d, v_c_per son_id, v_ c_income_y ear,v_c_in come_test_ effective_ date '|| C HR(10) ||
  4425                                ' F ROM income _test it2'  || CHR(10 ) ||
  4426                                ' W HERE it2.i ncome_test _effective _date ='||  CHR(10) | |
  4427                                '(S ELECT MAX  (income_te st_effecti ve_date)'  || CHR(10)  ||
  4428                                'FR OM income_ test' || C HR(10) ||
  4429                                ' W HERE perso n_id = v_f _person_id  AND futur e_test_fla g = 0)' ;
  4430  
  4431            v _log_date  := SYSDATE ;
  4432            A DRMGT.Job_ Process_Lo g_Sp(PC_jo b_name =>  SUBSTR(v_p rocess_nam e,1,60),
  4433                                    PD_job_log _date => v _log_date,
  4434                                    PC_job_sta tus => SUB STR('INFOR MATION - S tep 2',1,6 0),
  4435                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  4436                                    PD_date1 = > v_rec_gr oup_date,
  4437                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4438   EXCEPTION
  4439  
  4440                WHEN TOO _MANY_ROWS  THEN
  4441                    SELE CT income_ test_id, p erson_id,  income_yea r, income_ test_effec tive_date
  4442                    INTO  v_c_incom e_test_id,  v_c_perso n_id, v_c_ income_yea r,v_c_inco me_test_ef fective_da te
  4443                    FROM  income_te st it2
  4444                    WHER E it2.inco me_test_ef fective_da te =
  4445                    (SEL ECT MAX (i ncome_test _effective _date)
  4446                    FROM  income_te st
  4447                    WHER E person_i d = v_f_pe rson_id AN D future_t est_flag =  0)
  4448                    AND  it2.income _year = TO _NUMBER (T O_CHAR (SY SDATE, 'YY YY')) - 1
  4449                    AND  it2.person _id = v_f_ person_id  AND it2.fu ture_test_ flag = 0;
  4450  
  4451                    v_de bug := 'ST EP2 for :'  || v_f_in come_test_ id|| CHR(1 0) ||
  4452                                'SE LECT incom e_test_id,  person_id , income_y ear, incom e_test_eff ective_dat e:'|| CHR( 10) ||
  4453                                'IN TO v_c_inc ome_test_i d, v_c_per son_id, v_ c_income_y ear,v_c_in come_test_ effective_ date '|| C HR(10) ||
  4454                                ' F ROM income _test it2'  || CHR(10 ) ||
  4455                                ' W HERE it2.i ncome_test _effective _date ='||  CHR(10) | |
  4456                                '(S ELECT MAX  (income_te st_effecti ve_date)'  || CHR(10)  ||
  4457                                'FR OM income_ test' || C HR(10) ||
  4458                                ' W HERE perso n_id = v_f _person_id  AND futur e_test_fla g = 0)' ||  CHR(10) | |
  4459                                ' A ND it2.inc ome_year =  TO_NUMBER  (TO_CHAR  (SYSDATE,  YYYY)) - 1  ' || CHR( 10) ||
  4460                                ' A ND it2.per son_id = v _f_person_ id AND it2 .future_te st_flag =  0';
  4461  
  4462                    v_lo g_date :=  SYSDATE;
  4463                    ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(v_proc ess_name,1 ,60),
  4464                                    PD_job_log _date => v _log_date,
  4465                                    PC_job_sta tus => SUB STR('INFOR MATION - S TEP 2',1,6 0),
  4466                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  4467                                    PD_date1 = > v_rec_gr oup_date,
  4468                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4469  
  4470         WHEN  OTHERS TH EN
  4471              v_debug :=  'UNKNOWN  EXCEPTION  :  ' ||CHR (10)||
  4472                     'er ror code i s : '||sql code || CH R(10)||
  4473                     'er ror code m essage is  : '||SQLER RM || CHR( 10)||
  4474                     'Ex ception oc cured for   v_c_incom e_test_id:  ' || v_c_ income_tes t_id|| CHR (10)||
  4475                                               'v_c_perso n_id:  '|| v_c_person _id ;
  4476            v _log_date  := SYSDATE ;
  4477                    ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(v_proc ess_name,1 ,60),
  4478                                    PD_job_log _date => v _log_date,
  4479                                    PC_job_sta tus => SUB STR('ERROR  - STEP 2' ,1,60),
  4480                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  4481                                    PD_date1 = > v_rec_gr oup_date,
  4482                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4483  
  4484         END;
  4485  
  4486   -- we have  the cuure nt income_ year and f uture inco me year.
  4487         BEGI N
  4488            S ELECT DIST INCT incom e_test_eff ective_dat e
  4489               INTO v_in come_test_ effective_ date
  4490               FROM inco me_test_h
  4491              WHERE pers on_id = v_ f_person_i d
  4492                AND inco me_test_id  = v_f_inc ome_test_i d
  4493                AND futu re_test_fl ag = 0
  4494                AND ( re cord_modif ied_by <>  'CCR7649 D ataCleanup ' OR recor d_modified _by <> 'AD RCQ0000117 3');
  4495  
  4496  
  4497              v_debug :=  'STEP3 [i ncome_test _h]for : v _f_income_ test_id '| |v_f_incom e_test_id;
  4498               v_log_dat e := SYSDA TE;
  4499               ADRMGT.Jo b_Process_ Log_Sp(PC_ job_name = > SUBSTR(v _process_n ame,1,60),
  4500                                    PD_job_log _date => v _log_date,
  4501                                    PC_job_sta tus => SUB STR('INFOR MATION - S tep 3',1,6 0),
  4502                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  4503                                    PD_date1 = > v_rec_gr oup_date,
  4504                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4505         EXCE PTION
  4506            W HEN NO_DAT A_FOUND
  4507            T HEN
  4508                v_debug  := 'NO DAT A FOUND IN  THE HISTO RY TABLE F OR : '
  4509                                      || v_f_i ncome_test _id || ' E xiting Loo p';
  4510                v_log_da te := SYSD ATE;
  4511                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( v_process_ name,1,60) ,
  4512                                    PD_job_log _date => v _log_date,
  4513                                    PC_job_sta tus => SUB STR('INFOR MATION - N O DATA FOU ND',1,60),
  4514                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  4515                                    PD_date1 = > v_rec_gr oup_date,
  4516                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4517                GOTO  EN D_OF_LOOP;
  4518                WHEN TOO _MANY_ROWS  THEN
  4519  
  4520                    v_de bug := 'TO O MANY ROW S  :  '
  4521                                           ||  v_income_t est_detail _id ||' Ex iting Loop ';
  4522                    v_lo g_date :=  SYSDATE;
  4523                    ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(v_proc ess_name,1 ,60),
  4524                                    PD_job_log _date => v _log_date,
  4525                                    PC_job_sta tus => SUB STR('INFOR MATION - S TEP 3',1,6 0),
  4526                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  4527                                    PD_date1 = > v_rec_gr oup_date,
  4528                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4529                  GOTO   END_OF_LOO P;
  4530         END;
  4531  
  4532  
  4533  
  4534         --up date incom e test rec ord
  4535         UPDA TE income_ test
  4536            S ET future_ test_flag  = 0,
  4537                 income_ test_effec tive_date  = v_income _test_effe ctive_date ,
  4538                 cad_adj usted_ind  = NULL,
  4539                 record_ modified_b y = 'ADRCQ 00001173',
  4540                 record_ modified_d ate = SYSD ATE,
  4541                 record_ modified_c ount = rec ord_modifi ed_count +  1
  4542          WHE RE income_ test_id =  v_f_income _test_id
  4543            A ND future_ test_flag  = 1
  4544            A ND person_ id = v_f_p erson_id;
  4545  
  4546  
  4547         v_de bug := 'ST EP4 UPDATE  finished' ;
  4548         v_lo g_date :=  SYSDATE;
  4549         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(v_proc ess_name,1 ,60),
  4550                                    PD_job_log _date => v _log_date,
  4551                                    PC_job_sta tus => SUB STR('INFOR MATION - S TEP 4',1,6 0),
  4552                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  4553                                    PD_date1 = > v_rec_gr oup_date,
  4554                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4555         --up date incom e test det ail table
  4556         OPEN  detailcur sor;
  4557  
  4558         LOOP
  4559            F ETCH detai lcursor
  4560              INTO v_inc ome_test_d etail_id,  v_income_t est_id,
  4561                   v_inc ome_test_t ype_id, v_ test_statu s_type_id,
  4562                   v_tes t_detmnd_s tatus_type _id, v_inc ome_test_l ast_edited _date,
  4563                   v_inc ome_test_c ompleted_d ate, v_inc ome_test_e xpiration_ date,
  4564                   v1_in come_test_ effective_ date, v_in come_test_ signed_dat e;
  4565  
  4566            E XIT WHEN d etailcurso r%NOTFOUND ;
  4567  
  4568  
  4569              v_debug :=      'Inne r cursor d ata :' ||  v_c_income _test_id
  4570                                       || '--'
  4571                                       || v_c_ person_id
  4572                                       || '--'
  4573                                       || v_c_ income_yea r
  4574                                       || '--'
  4575                                       || v_c_ income_tes t_effectiv e_date
  4576                                       || '--'
  4577                                       || v_f_ income_tes t_id
  4578                                       || '--'
  4579                                       || v_f_ person_id
  4580                                       || '--'
  4581                                       || v_f_ income_yea r
  4582                                       || '--'
  4583                                       || v_f_ income_tes t_effectiv e_date
  4584                                       || '--'
  4585                                       || v_in come_test_ completed_ date || '- -'
  4586                                       || v_in come_test_ effective_ date;
  4587  
  4588                 v_log_d ate := SYS DATE;
  4589                 ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (v_process _name,1,60 ),
  4590                                    PD_job_log _date => v _log_date,
  4591                                    PC_job_sta tus => SUB STR('INFOR MATION - I nner Curso r Data',1, 60),
  4592                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  4593                                    PD_date1 = > v_rec_gr oup_date,
  4594                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4595  
  4596            B EGIN
  4597  
  4598                SELECT i ncome_test _last_edit ed_date,
  4599                       i ncome_test _completed _date
  4600                  INTO v h_income_t est_last_e dit_date,
  4601                       v h_income_t est_comple ted_date
  4602                  FROM i ncome_test _detail_h
  4603                 WHERE i ncome_test _id = v_in come_test_ id
  4604                   AND i ncome_test _detail_id  = v_incom e_test_det ail_id
  4605                   AND i ncome_test _type_id =  v_income_ test_type_ id
  4606                   AND i ncome_test _completed _date <> v _income_te st_complet ed_date
  4607                   AND r ecord_modi fied_by <>  'ADRCQ000 01173' ;
  4608  
  4609                 v_debug  := 'Fixin g the deta il :'
  4610                                        || v_i ncome_test _detail_id
  4611                                        || ' W ith date : '
  4612                                        || vh_ income_tes t_complete d_date;
  4613  
  4614                 v_log_d ate := SYS DATE;
  4615                 ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (v_process _name,1,60 ),
  4616                                    PD_job_log _date => v _log_date,
  4617                                    PC_job_sta tus => SUB STR('INFOR MATION - F IXING DETA IL',1,60),
  4618                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  4619                                    PD_date1 = > v_rec_gr oup_date,
  4620                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4621  
  4622                UPDATE i ncome_test _detail
  4623                   SET i ncome_test _completed _date = vh _income_te st_complet ed_date,
  4624                       r ecord_modi fied_by =  'ADRCQ0000 1173',
  4625                       r ecord_modi fied_date  = SYSDATE,
  4626                       r ecord_modi fied_count  = record_ modified_c ount + 1
  4627                   WHERE  income_te st_detail_ id = v_inc ome_test_d etail_id;
  4628  
  4629  
  4630            E XCEPTION
  4631                WHEN NO_ DATA_FOUND
  4632                THEN
  4633                   v_deb ug := 'NO  DETAIL DAT A FOUND IN  THE HISTO RY TABLE F OR :'
  4634                              || v_ income_tes t_detail_i d;
  4635                   v_log _date := S YSDATE;
  4636                   ADRMG T.Job_Proc ess_Log_Sp (PC_job_na me => SUBS TR(v_proce ss_name,1, 60),
  4637                                    PD_job_log _date => v _log_date,
  4638                                    PC_job_sta tus => SUB STR('INFOR MATION - N O DATA FOU ND',1,60),
  4639                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  4640                                    PD_date1 = > v_rec_gr oup_date,
  4641                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4642                WHEN TOO _MANY_ROWS  THEN
  4643                      v_ debug := ' TOO MANY R OWS for in come_test_ detail :'
  4644                              || v_ income_tes t_detail_i d || 'v_de bug :' ||  v_debug;
  4645                      v_ log_date : = SYSDATE;
  4646                      AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(v_pr ocess_name ,1,60),
  4647                                    PD_job_log _date => v _log_date,
  4648                                    PC_job_sta tus => SUB STR('INFOR MATION - T OO MANY RO WS',1,60),
  4649                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  4650                                    PD_date1 = > v_rec_gr oup_date,
  4651                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4652  
  4653            E ND;
  4654         END  LOOP;
  4655  
  4656         CLOS E detailcu rsor;
  4657  
  4658       <<END_ OF_LOOP>>
  4659              v_debug :=  'END OF L OOP: '
  4660                           ||  v_c_ income_tes t_id
  4661                                 ||  '--'
  4662                                 ||  v_c_perso n_id
  4663                                 ||  '--'
  4664                                 ||  v_c_incom e_year
  4665                                 ||  '--'
  4666                                 ||  v_c_incom e_test_eff ective_dat e
  4667                                 ||  '--'
  4668                                 ||  v_f_incom e_test_id
  4669                                 ||  '--'
  4670                                 ||  v_f_perso n_id
  4671                                 ||  '--'
  4672                                 ||  v_f_incom e_year
  4673                                 ||  '--'
  4674                                 ||  v_f_incom e_test_eff ective_dat e
  4675                                 ||  '--'
  4676                                 ||  v_income_ test_effec tive_date;
  4677                v_log_da te := SYSD ATE;
  4678                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( v_process_ name,1,60) ,
  4679                                    PD_job_log _date => v _log_date,
  4680                                    PC_job_sta tus => SUB STR('INFOR MATION - < <END OF LO OP>>',1,60 ),
  4681                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  4682                                    PD_date1 = > v_rec_gr oup_date,
  4683                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4684  
  4685      END LOO P;
  4686  
  4687      CLOSE f utureyears cur;
  4688  
  4689      --get t he final c ount
  4690    SELECT co unt(*) INT O v_count
  4691     FROM inc ome_test i t1
  4692    WHERE it1 .future_te st_flag =  1
  4693      AND EXI STS (
  4694              SELECT it2 .income_ye ar
  4695                FROM inc ome_test i t2
  4696               WHERE it2 .future_te st_flag =  0
  4697                 AND it2 .income_te st_effecti ve_date =
  4698                         (SELECT MA X (it4.inc ome_test_e ffective_d ate)
  4699                            FROM in come_test  it4
  4700                           WHERE it 4.person_i d = it1.pe rson_id
  4701                             AND it 4.income_t est_type_i d = it1.in come_test_ type_id
  4702                             AND it 4.future_t est_flag =  0)
  4703                 AND it2 .person_id  = it1.per son_id
  4704                 AND it2 .income_te st_type_id  = it1.inc ome_test_t ype_id
  4705                 AND it2 .income_ye ar > it1.i ncome_year );
  4706  
  4707          v_d ebug := 'C ompleted t he cleanup . Total Nu mber of re cords stil l need to  be fixed [ SHOULD BE  0]:'
  4708          ||  v_count;
  4709          v_l og_date :=  SYSDATE;
  4710          ADR MGT.Job_Pr ocess_Log_ Sp(PC_job_ name => SU BSTR(v_pro cess_name, 1,60),
  4711                                    PD_job_log _date => v _log_date,
  4712                                    PC_job_sta tus => SUB STR('INFOR MATION - C LEANUP COM PLETED',1, 60),
  4713                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  4714                                    PD_date1 = > v_rec_gr oup_date,
  4715                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4716   EXCEPTION
  4717      WHEN NO _DATA_FOUN D
  4718      THEN
  4719                v_log_da te := SYSD ATE;
  4720                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( v_process_ name,1,60) ,
  4721                                    PD_job_log _date => v _log_date,
  4722                                    PC_job_sta tus => SUB STR('INFOR MATION - N O DATA FOU ND',1,60),
  4723                                    PC_job_log _message = > SUBSTR(' NO DATA FO UND',1,200 0),
  4724                                    PD_date1 = > v_rec_gr oup_date,
  4725                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4726      WHEN OT HERS
  4727      THEN
  4728         v_de bug := 'UN KNOWN EXCE PTION :' | |CHR(10)||
  4729                     'er ror code i s : '||sql code || CH R(10)||
  4730                     'er ror code m essage is  : '||SQLER RM || CHR( 10)||
  4731                     'Ex ception oc cured for   ' || v_c_ income_tes t_id
  4732                                 ||  '--'
  4733                                 ||  v_c_perso n_id
  4734                                 ||  '--'
  4735                                 ||  v_c_incom e_year
  4736                                 ||  '--'
  4737                                 ||  v_c_incom e_test_eff ective_dat e
  4738                                 ||  '--'
  4739                                 ||  v_f_incom e_test_id
  4740                                 ||  '--'
  4741                                 ||  v_f_perso n_id
  4742                                 ||  '--'
  4743                                 ||  v_f_incom e_year
  4744                                 ||  '--'
  4745                                 ||  v_f_incom e_test_eff ective_dat e
  4746                                 ||  '--'
  4747                                 ||  v_income_ test_effec tive_date;
  4748               v_log_dat e := SYSDA TE;
  4749               ADRMGT.Jo b_Process_ Log_Sp(PC_ job_name = > SUBSTR(v _process_n ame,1,60),
  4750                                    PD_job_log _date => v _log_date,
  4751                                    PC_job_sta tus => SUB STR('ERROR  - UNKOWN  EXCEPTION' ,1,60),
  4752                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  4753                                    PD_date1 = > v_rec_gr oup_date,
  4754                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4755  
  4756   END;
  4757   /
  4758   DROP PROCE DURE ADR.A DR_DELETE_ ADDRESS_SP ;
  4759  
  4760   CREATE OR  REPLACE PR OCEDURE AD R.Adr_dele te_address _Sp
  4761     (PB_run_ standalone
  4762        IN      BOOLEAN  DEFAULT FA LSE,
  4763      PB_allo w_rpt_inst
  4764        IN      BOOLEAN  DEFAULT FA LSE
  4765     )
  4766   IS
  4767  
  4768   -- ******* ********** ********** ********** ********** ********** ********** ********
  4769   -- * Proce dure: Adr_ delete_add ress_Sp
  4770   -- *
  4771   -- *  Temp orary  Add ress table  bug fix t o be run n ightly.
  4772   -- *
  4773   -- *  - Se lects all  Address re cords wher e the INSU RANCE_ID S TD_ADDRESS TYPE_ID
  4774   -- *     i s NULL
  4775   -- *
  4776   -- *
  4777   -- * Param eters:
  4778   -- *
  4779   -- *  PB_r un_standal one   Igno re DBMS_JO B logic fo r checking  running j obs.
  4780   -- *                         Def ault: FALS E
  4781   -- *
  4782   -- *  PB_a llow_rpt_i nst   Allo w stored p rocedure t o be submi tted in th e
  4783   -- *                        DBMS _JOB queue  on the AD R reportin g database s
  4784   -- *                         Def ault: FALS E
  4785   -- *
  4786   -- ******* ********** ********** ********** ********** ********** ********** ********
  4787   --
  4788   -- ======= ========== ========== ========== ========== ========== ========== ========
  4789   -- Date         Autho r                             De scription
  4790   -- ======= ========== ========== ========== ========== ========== ========== ========
  4791   -- 11/30/2 010  Brend a Caningto n       Cr eated for  CCR 1252.
  4792  
  4793   --
  4794   -- ======= ========== ========== ========== ========== ========== ========== ========
  4795  
  4796   -- CONSTAN TS
  4797  
  4798  
  4799   -- VARIABL ES
  4800  
  4801     VB_allow _rpt_inst                      B OOLEAN :=  FALSE;
  4802     VB_error                                B OOLEAN :=  FALSE;
  4803     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  4804     VB_updat e_row                          B OOLEAN :=  FALSE;
  4805  
  4806     VC_allow _rpt_inst                      V ARCHAR2(5)  := NULL;
  4807     VC_insta nce_name                       V ARCHAR2(16 );
  4808     VC_proce ss_duratio n                   V ARCHAR2(25 );
  4809     VC_proce ss_name                        V ARCHAR2(60 ) := 'ADR  Delete Add ress Recor ds';
  4810     VC_run_s tandalone                      V ARCHAR2(5)  := NULL;
  4811  
  4812     VD_log_d ate                            D ATE;
  4813     VD_proce ss_end_dat e                   D ATE;
  4814     VD_proce ss_start_d ate                 D ATE;
  4815     VD_rec_g roup_date                      D ATE;
  4816  
  4817     VN_addr_ chg_src_ty pe_id               N UMBER := 0 ;
  4818     VN_job_c ount                           N UMBER := 0 ;
  4819     VN_job_n umber                          N UMBER := 0 ;
  4820     VN_inst_ id_upd_cou nt                  N UMBER := 0 ;
  4821     VN_error _recs_coun t                   N UMBER := 0 ;
  4822     VN_no_in st_id_coun t                   N UMBER := 0 ;
  4823     VN_rec_c ount                           N UMBER := 0 ;
  4824     VN_src_t ype_upd_co unt                 N UMBER := 0 ;
  4825     VN_std_i nstitution _id                 N UMBER := 0 ;
  4826     VN_total _recs_coun t                   N UMBER := 0 ;
  4827     sql_stmt                                v archar2(50 0);
  4828  
  4829   -- CURSORS
  4830  
  4831   CURSOR my_ del_record s  IS
  4832        SELEC T A.ADDRES S_ID
  4833        FROM       ADR.A ddress A
  4834       WHERE      A.STD_ ADDRESSTYP E_ID IS NU LL
  4835       AND
  4836                       A .INSURANCE _ID IS NUL L;
  4837  
  4838   -- ******* ********** ********** ********** ********** ********** ********** *******
  4839   -- *
  4840   -- *  MAIN  PROCEDURE :
  4841   -- *
  4842   -- *    AD R.Adr_Addr ess_Z05_Up date_Sp
  4843   -- *
  4844   -- ******* ********** ********** ********** ********** ********** ********** *******
  4845  
  4846   BEGIN
  4847  
  4848     VD_rec_g roup_date  := TRUNC(S YSDATE);
  4849  
  4850     VD_log_d ate := SYS DATE;
  4851     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  4852                                 PD _job_log_d ate => VD_ log_date,
  4853                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  4854                                 PD _date1 =>  VD_rec_gro up_date,
  4855                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4856  
  4857   -- ******* ********** ********** ********** ********** ********** ********** ********
  4858   -- *
  4859   -- * Valid ate input  parameters
  4860   -- *
  4861   -- ******* ********** ********** ********** ********** ********** ********** ********
  4862  
  4863   -- * Check  run stand alone flag
  4864  
  4865     IF PB_ru n_standalo ne IS NULL
  4866      OR NOT  PB_run_sta ndalone TH EN
  4867  
  4868       VB_run _standalon e := FALSE ;
  4869       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  4870  
  4871     ELSE
  4872  
  4873       VB_run _standalon e := TRUE;
  4874       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  4875  
  4876     END IF;
  4877  
  4878   -- * Check  run on re port insta nce flag
  4879  
  4880     IF PB_al low_rpt_in st IS NULL
  4881      OR NOT  PB_allow_r pt_inst TH EN
  4882  
  4883       VB_all ow_rpt_ins t := FALSE ;
  4884       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  4885  
  4886     ELSE
  4887  
  4888       VB_all ow_rpt_ins t := TRUE;
  4889       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  4890  
  4891     END IF;
  4892  
  4893     VD_log_d ate := SYS DATE;
  4894     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  4895                                 PD _job_log_d ate => VD_ log_date,
  4896                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cessing pa rameters f or this jo b',1,60),
  4897                                 PC _job_log_m essage =>  SUBSTR('Cu rrent job  parameters  - '
  4898                                                              || ' R un standal one: ' ||  VC_run_sta ndalone
  4899                                                              || ' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  4900                                 PD _date1 =>  VD_rec_gro up_date,
  4901                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4902  
  4903   -- ******* ********** ********** ********** ********** ********** ********** ********
  4904   -- *
  4905   -- * Check  to see if  process i s running  on a repor ting datab ase.
  4906   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  4907   -- *
  4908   -- ******* ********** ********** ********** ********** ********** ********** ********
  4909  
  4910     IF NOT V B_allow_rp t_inst THE N
  4911  
  4912       BEGIN
  4913  
  4914         VD_l og_date :=  SYSDATE;
  4915         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  4916                                      PD_job_l og_date =>  VD_log_da te,
  4917                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  4918                                      PD_date1  => VD_rec _group_dat e,
  4919                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4920  
  4921         SELE CT    Inst ance_name
  4922         INTO       VC_i nstance_na me
  4923         FROM       V$in stance;
  4924  
  4925         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  4926  
  4927           VD _log_date  := SYSDATE ;
  4928           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  4929                                        PD_job _log_date  => VD_log_ date,
  4930                                        PC_job _status =>  SUBSTR('W ARNING      - Process ing Failed ',1,60),
  4931                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  4932                                                                     || VC_inst ance_name
  4933                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  4934                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  4935                                        PD_dat e1 => VD_r ec_group_d ate,
  4936                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4937  
  4938           RE TURN;
  4939  
  4940         END  IF;
  4941  
  4942       EXCEPT ION
  4943  
  4944         WHEN  OTHERS TH EN
  4945  
  4946           VD _log_date  := SYSDATE ;
  4947           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  4948                                        PD_job _log_date  => VD_log_ date,
  4949                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  4950                                        PC_job _log_messa ge => SUBS TR('Termin ating scri pt.',1,200 0),
  4951                                        PD_dat e1 => VD_r ec_group_d ate,
  4952                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4953  
  4954           RE TURN;
  4955  
  4956       END;
  4957  
  4958     END IF;
  4959  
  4960   -- ******* ********** ********** ********** ********** ********** ********** ********
  4961   -- *
  4962   -- * Check  to see if  the job h as already  run today
  4963   -- *  - If  running i n stand-al one mode,  don't chec k.
  4964   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  4965   -- *
  4966   -- ******* ********** ********** ********** ********** ********** ********** ********
  4967  
  4968     IF NOT P B_run_stan dalone THE N
  4969  
  4970       BEGIN
  4971  
  4972         SELE CT    COUN T(*)
  4973         INTO       VN_r ec_count
  4974         FROM       ADRM GT.Job_Pro cess_Logs
  4975         WHER E     Job_ name = VC_ process_na me
  4976         AND        Date 1 = VD_rec _group_dat e
  4977         AND        Job_ status = ' SUCCESS      - Proces sing Compl eted';
  4978  
  4979         IF V N_rec_coun t > 0 THEN
  4980  
  4981           VD _log_date  := SYSDATE ;
  4982           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  4983                                        PD_job _log_date  => VD_log_ date,
  4984                                        PC_job _status =>  SUBSTR('I NFORMATION  - This da te has alr eady been  processed' ,1,60),
  4985                                        PC_job _log_messa ge => SUBS TR('Proces sing has a lready com pleted for  this date . Exiting  to job que ue.',1,200 0),
  4986                                        PD_dat e1 => VD_r ec_group_d ate,
  4987                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4988  
  4989           RE TURN;
  4990  
  4991         END  IF;
  4992  
  4993       EXCEPT ION
  4994  
  4995         WHEN  OTHERS TH EN
  4996  
  4997           VD _log_date  := SYSDATE ;
  4998           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  4999                                        PD_job _log_date  => VD_log_ date,
  5000                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  5001                                        PC_job _log_messa ge => SUBS TR('Termin ating scri pt.',1,200 0),
  5002                                        PD_dat e1 => VD_r ec_group_d ate,
  5003                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  5004  
  5005           RE TURN;
  5006  
  5007       END;
  5008  
  5009     END IF;
  5010  
  5011   -- ******* ********** ********** ********** ********** ********** ********** ********
  5012   -- *
  5013   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  5014   -- *  - If  yes, then  end this  job.
  5015   -- *
  5016   -- ******* ********** ********** ********** ********** ********** ********** ********
  5017  
  5018     SELECT C OUNT(*)
  5019     INTO   V N_job_coun t
  5020     FROM   S YS.DBA_JOB S_RUNNING  R,
  5021            S YS.DBA_JOB S J
  5022     WHERE  J .JOB = R.J OB
  5023     AND    U PPER(J.WHA T) LIKE '% ADR_DELETE _ADDRESS_S P%';
  5024  
  5025     IF VN_jo b_count >  1 THEN
  5026  
  5027       VD_log _date := S YSDATE;
  5028       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  5029                                    PD_job_log _date => V D_log_date ,
  5030                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  5031                                    PC_job_log _message = > SUBSTR(' There is a nother add ress Delet e job runn ing.'
  5032                                                                || '  Exiting j ob without  running.' ,1,2000),
  5033                                    PD_date1 = > VD_rec_g roup_date,
  5034                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5035  
  5036       RETURN ;
  5037  
  5038     ELSE
  5039  
  5040       IF VB_ run_standa lone THEN
  5041  
  5042         VD_l og_date :=  SYSDATE;
  5043         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  5044                                      PD_job_l og_date =>  VD_log_da te,
  5045                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  5046                                      PD_date1  => VD_rec _group_dat e,
  5047                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5048  
  5049       ELSE
  5050  
  5051         SELE CT    MAX( J.Job)
  5052         INTO       VN_j ob_number
  5053         FROM       SYS. DBA_JOBS_R UNNING R,
  5054                    SYS. DBA_JOBS J
  5055         WHER E     J.JO B = R.JOB
  5056         AND        UPPE R(J.WHAT)  LIKE '%ADR _DELETE_AD DRESS_SP%' ;
  5057  
  5058         VD_l og_date :=  SYSDATE;
  5059         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  5060                                      PD_job_l og_date =>  VD_log_da te,
  5061                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  5062                                      PD_date1  => VD_rec _group_dat e,
  5063                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5064  
  5065       END IF ;
  5066  
  5067     END IF;
  5068  
  5069   -- ******* ********** ********** ********** ********** ********** ********** ********
  5070   -- *
  5071   -- * Main  processing  loop
  5072   -- *
  5073   -- ******* ********** ********** ********** ********** ********** ********** ********
  5074  
  5075     VN_error _recs_coun t := 0;
  5076     VN_inst_ id_upd_cou nt := 0;
  5077     VN_no_in st_id_coun t := 0;
  5078     VN_src_t ype_upd_co unt := 0;
  5079     VN_total _recs_coun t := 0;
  5080  
  5081     VD_proce ss_start_d ate := SYS DATE;
  5082  
  5083   -- Remove  all proces s logs ove r 14 days  old
  5084  
  5085     BEGIN
  5086  
  5087       VD_log _date := S YSDATE;
  5088       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  5089                                    PD_job_log _date => V D_log_date ,
  5090                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  5091                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over 14  days old', 1,2000),
  5092                                    PD_date1 = > VD_rec_g roup_date,
  5093                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5094  
  5095       DELETE
  5096       FROM       ADRMGT .Job_Proce ss_Logs
  5097       WHERE      Job_na me = VC_pr ocess_name
  5098       AND        Date1  < TRUNC(SY SDATE) - 1 4;
  5099  
  5100       COMMIT ;
  5101  
  5102       VD_log _date := S YSDATE;
  5103       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  5104                                    PD_job_log _date => V D_log_date ,
  5105                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  5106                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over 14 d ays old',1 ,2000),
  5107                                    PD_date1 = > VD_rec_g roup_date,
  5108                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5109  
  5110  
  5111     EXCEPTIO N
  5112  
  5113       WHEN N O_DATA_FOU ND THEN
  5114  
  5115         NULL ;
  5116  
  5117       WHEN O THERS THEN
  5118  
  5119         VD_l og_date :=  SYSDATE;
  5120         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  5121                                      PD_job_e rror_date   => VD_log _date,
  5122                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  5123                                      PC_job_e rror_messa ge => SUBS TR('Unknow n error wh ile removi ng old pro cess logs.  '
  5124                                                                        || SQLE RRM,1,2000 ),
  5125                                      PD_date1  => VD_rec _group_dat e,
  5126                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5127  
  5128     END;
  5129  
  5130   -- Remove  all proces s errors o ver 14 day s old
  5131  
  5132     BEGIN
  5133  
  5134       VD_log _date := S YSDATE;
  5135       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  5136                                    PD_job_log _date => V D_log_date ,
  5137                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  5138                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over 1 4 days old ',1,2000),
  5139                                    PD_date1 = > VD_rec_g roup_date,
  5140                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5141  
  5142       DELETE
  5143       FROM       ADRMGT .Job_Proce ss_Errs
  5144       WHERE      Job_na me = VC_pr ocess_name
  5145       AND        Date1  < TRUNC(SY SDATE) - 1 4;
  5146  
  5147       COMMIT ;
  5148  
  5149       VD_log _date := S YSDATE;
  5150       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  5151                                    PD_job_log _date => V D_log_date ,
  5152                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  5153                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over 14  days old' ,1,2000),
  5154                                    PD_date1 = > VD_rec_g roup_date,
  5155                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5156  
  5157     EXCEPTIO N
  5158  
  5159       WHEN N O_DATA_FOU ND THEN
  5160  
  5161         NULL ;
  5162  
  5163       WHEN O THERS THEN
  5164  
  5165         VD_l og_date :=  SYSDATE;
  5166         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  5167                                      PD_job_e rror_date   => VD_log _date,
  5168                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  5169                                      PC_job_e rror_messa ge => SUBS TR('Unknow n error wh ile removi ng old pro cess error s. '
  5170                                                                        || SQLE RRM,1,2000 ),
  5171                                      PD_date1  => VD_rec _group_dat e,
  5172                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5173  
  5174     END;
  5175  
  5176   -- Main re cord curso r logic
  5177   BEGIN
  5178       FOR th is_del_rec ords in my _del_recor ds LOOP
  5179                sql_stmt  := 'DELET E     FROM       ADR. Address A  WHERE A.AD DRESS_ID =  ' || this _del_recor ds.ADDRESS _ID ;
  5180                 EXECUTE  IMMEDIATE  sql_stmt;
  5181                 COMMIT;
  5182              END LOOP;
  5183  
  5184  
  5185  
  5186           EX CEPTION
  5187           WH EN NO_DATA _FOUND THE N
  5188                 NULL;
  5189           WH EN OTHERS  THEN
  5190              VN_error_r ecs_count  := VN_erro r_recs_cou nt + 1;
  5191              ROLLBACK;
  5192              VD_log_dat e := SYSDA TE;
  5193              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  5194                                          PD_j ob_error_d ate  => VD _log_date,
  5195                                          PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  5196                                          PC_j ob_error_m essage =>  SUBSTR('Un known erro r while de leting fro m ADR.Addr ess row.'
  5197                                                                         || SQL ERRM,1,200 0),
  5198                                          PD_d ate1 => VD _rec_group _date,
  5199                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255)
  5200                                          );
  5201  
  5202         END;
  5203  
  5204  
  5205  
  5206   END Adr_de lete_addre ss_Sp;
  5207   /
  5208   DROP PROCE DURE ADR.A DR_ADDRESS _Z05_UPDAT E_SP;
  5209  
  5210   CREATE OR  REPLACE PR OCEDURE AD R.Adr_Addr ess_Z05_Up date_Sp
  5211     (PB_run_ standalone
  5212        IN      BOOLEAN  DEFAULT FA LSE,
  5213      PB_allo w_rpt_inst
  5214        IN      BOOLEAN  DEFAULT FA LSE
  5215     )
  5216   IS
  5217  
  5218   -- ******* ********** ********** ********** ********** ********** ********** ********
  5219   -- * Proce dure: Adr_ Address_Z0 5_Update_S p
  5220   -- *
  5221   -- *  Temp orary 3.1  Address ta ble bug fi x to be ru n nightly.
  5222   -- *
  5223   -- *  - Se lects all  temporary  Address re cords wher e the Inst itution_id  or the
  5224   -- *    Ad dress_chan ge_src_typ e_id is NU LL
  5225   -- *  - If  Instituti on_id is N ULL, try t o find val id Institu tion_id an d update
  5226   -- *    co lumn with  new value.
  5227   -- *  - Re port any r ows where  the Instit ution_id c annot be s et.
  5228   -- *  - If  Address_c hange_src_ type_id is  NULL, upd ate column  with valu e of
  5229   -- *    14 66952
  5230   -- *
  5231   -- * Param eters:
  5232   -- *
  5233   -- *  PB_r un_standal one   Igno re DBMS_JO B logic fo r checking  running j obs.
  5234   -- *                         Def ault: FALS E
  5235   -- *
  5236   -- *  PB_a llow_rpt_i nst   Allo w stored p rocedure t o be submi tted in th e
  5237   -- *                        DBMS _JOB queue  on the AD R reportin g database s
  5238   -- *                         Def ault: FALS E
  5239   -- *
  5240   -- ******* ********** ********** ********** ********** ********** ********** ********
  5241   --
  5242   -- ======= ========== ========== ========== ========== ========== ========== ========
  5243   -- Date         Autho r             Descrip tion
  5244   -- ======= ========== ========== ========== ========== ========== ========== ========
  5245   -- 04/05/2 010  Craig  Wood         Created  for CCR 1 156.
  5246   -- 05/03/2 010  Craig  Wood         Add log ic to chec k for merg ed address  rows
  5247   --
  5248   -- ======= ========== ========== ========== ========== ========== ========== ========
  5249  
  5250   -- CONSTAN TS
  5251  
  5252     CC_temp_ addr_id                        C ONSTANT NU MBER := 14 49005;
  5253     CC_inst_ id_mask                        C ONSTANT VA RCHAR2(5)  := 'VAMC-' ;
  5254     CN_addr_ chg_src_ty pe                  C ONSTANT NU MBER := 14 66952;
  5255  
  5256   -- VARIABL ES
  5257  
  5258     VB_allow _rpt_inst                      B OOLEAN :=  FALSE;
  5259     VB_error                                B OOLEAN :=  FALSE;
  5260     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  5261     VB_updat e_row                          B OOLEAN :=  FALSE;
  5262  
  5263     VC_allow _rpt_inst                      V ARCHAR2(5)  := NULL;
  5264     VC_insta nce_name                       V ARCHAR2(16 );
  5265     VC_proce ss_duratio n                   V ARCHAR2(25 );
  5266     VC_proce ss_name                        V ARCHAR2(60 ) := 'ADR  Update Tem p Addresse s (Z05)';
  5267     VC_run_s tandalone                      V ARCHAR2(5)  := NULL;
  5268  
  5269     VD_log_d ate                            D ATE;
  5270     VD_proce ss_end_dat e                   D ATE;
  5271     VD_proce ss_start_d ate                 D ATE;
  5272     VD_rec_g roup_date                      D ATE;
  5273  
  5274     VN_addr_ chg_src_ty pe_id               N UMBER := 0 ;
  5275     VN_job_c ount                           N UMBER := 0 ;
  5276     VN_job_n umber                          N UMBER := 0 ;
  5277     VN_inst_ id_upd_cou nt                  N UMBER := 0 ;
  5278     VN_error _recs_coun t                   N UMBER := 0 ;
  5279     VN_no_in st_id_coun t                   N UMBER := 0 ;
  5280     VN_rec_c ount                           N UMBER := 0 ;
  5281     VN_src_t ype_upd_co unt                 N UMBER := 0 ;
  5282     VN_std_i nstitution _id                 N UMBER := 0 ;
  5283     VN_total _recs_coun t                   N UMBER := 0 ;
  5284  
  5285     CURSOR C _addr_rec  IS
  5286       SELECT     A.Addr ess_id,
  5287                  A.Pers on_id,
  5288                  A.Addr ess_change _src_type_ id,
  5289                  A.Std_ institutio n_id,
  5290                  A.Reco rd_created _by,
  5291                  A.Reco rd_modifie d_by
  5292       FROM       ADR.Ad dress A
  5293       WHERE      A.Std_ addresstyp e_id = CC_ temp_addr_ id
  5294       AND        (Std_i nstitution _id IS NUL L
  5295                  OR
  5296                   Addre ss_change_ src_type_i d IS NULL) ;
  5297  
  5298   -- ******* ********** ********** ********** ********** ********** ********** *******
  5299   -- *
  5300   -- *  MAIN  PROCEDURE :
  5301   -- *
  5302   -- *    AD R.Adr_Addr ess_Z05_Up date_Sp
  5303   -- *
  5304   -- ******* ********** ********** ********** ********** ********** ********** *******
  5305  
  5306   BEGIN
  5307  
  5308     VD_rec_g roup_date  := TRUNC(S YSDATE);
  5309  
  5310     VD_log_d ate := SYS DATE;
  5311     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  5312                                 PD _job_log_d ate => VD_ log_date,
  5313                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  5314                                 PD _date1 =>  VD_rec_gro up_date,
  5315                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  5316  
  5317   -- ******* ********** ********** ********** ********** ********** ********** ********
  5318   -- *
  5319   -- * Valid ate input  parameters
  5320   -- *
  5321   -- ******* ********** ********** ********** ********** ********** ********** ********
  5322  
  5323   -- * Check  run stand alone flag
  5324  
  5325     IF PB_ru n_standalo ne IS NULL
  5326      OR NOT  PB_run_sta ndalone TH EN
  5327  
  5328       VB_run _standalon e := FALSE ;
  5329       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  5330  
  5331     ELSE
  5332  
  5333       VB_run _standalon e := TRUE;
  5334       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  5335  
  5336     END IF;
  5337  
  5338   -- * Check  run on re port insta nce flag
  5339  
  5340     IF PB_al low_rpt_in st IS NULL
  5341      OR NOT  PB_allow_r pt_inst TH EN
  5342  
  5343       VB_all ow_rpt_ins t := FALSE ;
  5344       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  5345  
  5346     ELSE
  5347  
  5348       VB_all ow_rpt_ins t := TRUE;
  5349       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  5350  
  5351     END IF;
  5352  
  5353     VD_log_d ate := SYS DATE;
  5354     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  5355                                 PD _job_log_d ate => VD_ log_date,
  5356                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cessing pa rameters f or this jo b',1,60),
  5357                                 PC _job_log_m essage =>  SUBSTR('Cu rrent job  parameters  - '
  5358                                                              || ' R un standal one: ' ||  VC_run_sta ndalone
  5359                                                              || ' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  5360                                 PD _date1 =>  VD_rec_gro up_date,
  5361                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  5362  
  5363   -- ******* ********** ********** ********** ********** ********** ********** ********
  5364   -- *
  5365   -- * Check  to see if  process i s running  on a repor ting datab ase.
  5366   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  5367   -- *
  5368   -- ******* ********** ********** ********** ********** ********** ********** ********
  5369  
  5370     IF NOT V B_allow_rp t_inst THE N
  5371  
  5372       BEGIN
  5373  
  5374         VD_l og_date :=  SYSDATE;
  5375         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  5376                                      PD_job_l og_date =>  VD_log_da te,
  5377                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  5378                                      PD_date1  => VD_rec _group_dat e,
  5379                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5380  
  5381         SELE CT    Inst ance_name
  5382         INTO       VC_i nstance_na me
  5383         FROM       V$in stance;
  5384  
  5385         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  5386  
  5387           VD _log_date  := SYSDATE ;
  5388           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  5389                                        PD_job _log_date  => VD_log_ date,
  5390                                        PC_job _status =>  SUBSTR('W ARNING      - Process ing Failed ',1,60),
  5391                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  5392                                                                     || VC_inst ance_name
  5393                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  5394                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  5395                                        PD_dat e1 => VD_r ec_group_d ate,
  5396                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  5397  
  5398           RE TURN;
  5399  
  5400         END  IF;
  5401  
  5402       EXCEPT ION
  5403  
  5404         WHEN  OTHERS TH EN
  5405  
  5406           VD _log_date  := SYSDATE ;
  5407           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  5408                                        PD_job _log_date  => VD_log_ date,
  5409                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  5410                                        PC_job _log_messa ge => SUBS TR('Termin ating scri pt.',1,200 0),
  5411                                        PD_dat e1 => VD_r ec_group_d ate,
  5412                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  5413  
  5414           RE TURN;
  5415  
  5416       END;
  5417  
  5418     END IF;
  5419  
  5420   -- ******* ********** ********** ********** ********** ********** ********** ********
  5421   -- *
  5422   -- * Check  to see if  the job h as already  run today
  5423   -- *  - If  running i n stand-al one mode,  don't chec k.
  5424   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  5425   -- *
  5426   -- ******* ********** ********** ********** ********** ********** ********** ********
  5427  
  5428     IF NOT P B_run_stan dalone THE N
  5429  
  5430       BEGIN
  5431  
  5432         SELE CT    COUN T(*)
  5433         INTO       VN_r ec_count
  5434         FROM       ADRM GT.Job_Pro cess_Logs
  5435         WHER E     Job_ name = VC_ process_na me
  5436         AND        Date 1 = VD_rec _group_dat e
  5437         AND        Job_ status = ' SUCCESS      - Proces sing Compl eted';
  5438  
  5439         IF V N_rec_coun t > 0 THEN
  5440  
  5441           VD _log_date  := SYSDATE ;
  5442           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  5443                                        PD_job _log_date  => VD_log_ date,
  5444                                        PC_job _status =>  SUBSTR('I NFORMATION  - This da te has alr eady been  processed' ,1,60),
  5445                                        PC_job _log_messa ge => SUBS TR('Proces sing has a lready com pleted for  this date . Exiting  to job que ue.',1,200 0),
  5446                                        PD_dat e1 => VD_r ec_group_d ate,
  5447                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  5448  
  5449           RE TURN;
  5450  
  5451         END  IF;
  5452  
  5453       EXCEPT ION
  5454  
  5455         WHEN  OTHERS TH EN
  5456  
  5457           VD _log_date  := SYSDATE ;
  5458           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  5459                                        PD_job _log_date  => VD_log_ date,
  5460                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  5461                                        PC_job _log_messa ge => SUBS TR('Termin ating scri pt.',1,200 0),
  5462                                        PD_dat e1 => VD_r ec_group_d ate,
  5463                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  5464  
  5465           RE TURN;
  5466  
  5467       END;
  5468  
  5469     END IF;
  5470  
  5471   -- ******* ********** ********** ********** ********** ********** ********** ********
  5472   -- *
  5473   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  5474   -- *  - If  yes, then  end this  job.
  5475   -- *
  5476   -- ******* ********** ********** ********** ********** ********** ********** ********
  5477  
  5478     SELECT C OUNT(*)
  5479     INTO   V N_job_coun t
  5480     FROM   S YS.DBA_JOB S_RUNNING  R,
  5481            S YS.DBA_JOB S J
  5482     WHERE  J .JOB = R.J OB
  5483     AND    U PPER(J.WHA T) LIKE '% ADR_ADDRES S_Z05_UPDA TE_SP%';
  5484  
  5485     IF VN_jo b_count >  1 THEN
  5486  
  5487       VD_log _date := S YSDATE;
  5488       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  5489                                    PD_job_log _date => V D_log_date ,
  5490                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  5491                                    PC_job_log _message = > SUBSTR(' There is a nother add ress (Z05)  update jo b running. '
  5492                                                                || '  Exiting j ob without  running.' ,1,2000),
  5493                                    PD_date1 = > VD_rec_g roup_date,
  5494                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5495  
  5496       RETURN ;
  5497  
  5498     ELSE
  5499  
  5500       IF VB_ run_standa lone THEN
  5501  
  5502         VD_l og_date :=  SYSDATE;
  5503         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  5504                                      PD_job_l og_date =>  VD_log_da te,
  5505                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  5506                                      PD_date1  => VD_rec _group_dat e,
  5507                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5508  
  5509       ELSE
  5510  
  5511         SELE CT    MAX( J.Job)
  5512         INTO       VN_j ob_number
  5513         FROM       SYS. DBA_JOBS_R UNNING R,
  5514                    SYS. DBA_JOBS J
  5515         WHER E     J.JO B = R.JOB
  5516         AND        UPPE R(J.WHAT)  LIKE '%ADR _ADDRESS_Z 05_UPDATE_ SP%';
  5517  
  5518         VD_l og_date :=  SYSDATE;
  5519         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  5520                                      PD_job_l og_date =>  VD_log_da te,
  5521                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  5522                                      PD_date1  => VD_rec _group_dat e,
  5523                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5524  
  5525       END IF ;
  5526  
  5527     END IF;
  5528  
  5529   -- ******* ********** ********** ********** ********** ********** ********** ********
  5530   -- *
  5531   -- * Main  processing  loop
  5532   -- *
  5533   -- ******* ********** ********** ********** ********** ********** ********** ********
  5534  
  5535     VN_error _recs_coun t := 0;
  5536     VN_inst_ id_upd_cou nt := 0;
  5537     VN_no_in st_id_coun t := 0;
  5538     VN_src_t ype_upd_co unt := 0;
  5539     VN_total _recs_coun t := 0;
  5540  
  5541     VD_proce ss_start_d ate := SYS DATE;
  5542  
  5543   -- Remove  all proces s logs ove r 14 days  old
  5544  
  5545     BEGIN
  5546  
  5547       VD_log _date := S YSDATE;
  5548       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  5549                                    PD_job_log _date => V D_log_date ,
  5550                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  5551                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over 14  days old', 1,2000),
  5552                                    PD_date1 = > VD_rec_g roup_date,
  5553                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5554  
  5555       DELETE
  5556       FROM       ADRMGT .Job_Proce ss_Logs
  5557       WHERE      Job_na me = VC_pr ocess_name
  5558       AND        Date1  < TRUNC(SY SDATE) - 1 4;
  5559  
  5560       COMMIT ;
  5561  
  5562       VD_log _date := S YSDATE;
  5563       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  5564                                    PD_job_log _date => V D_log_date ,
  5565                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  5566                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over 14 d ays old',1 ,2000),
  5567                                    PD_date1 = > VD_rec_g roup_date,
  5568                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5569  
  5570  
  5571     EXCEPTIO N
  5572  
  5573       WHEN N O_DATA_FOU ND THEN
  5574  
  5575         NULL ;
  5576  
  5577       WHEN O THERS THEN
  5578  
  5579         VD_l og_date :=  SYSDATE;
  5580         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  5581                                      PD_job_e rror_date   => VD_log _date,
  5582                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  5583                                      PC_job_e rror_messa ge => SUBS TR('Unknow n error wh ile removi ng old pro cess logs.  '
  5584                                                                        || SQLE RRM,1,2000 ),
  5585                                      PD_date1  => VD_rec _group_dat e,
  5586                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5587  
  5588     END;
  5589  
  5590   -- Remove  all proces s errors o ver 14 day s old
  5591  
  5592     BEGIN
  5593  
  5594       VD_log _date := S YSDATE;
  5595       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  5596                                    PD_job_log _date => V D_log_date ,
  5597                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  5598                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over 1 4 days old ',1,2000),
  5599                                    PD_date1 = > VD_rec_g roup_date,
  5600                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5601  
  5602       DELETE
  5603       FROM       ADRMGT .Job_Proce ss_Errs
  5604       WHERE      Job_na me = VC_pr ocess_name
  5605       AND        Date1  < TRUNC(SY SDATE) - 1 4;
  5606  
  5607       COMMIT ;
  5608  
  5609       VD_log _date := S YSDATE;
  5610       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  5611                                    PD_job_log _date => V D_log_date ,
  5612                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  5613                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over 14  days old' ,1,2000),
  5614                                    PD_date1 = > VD_rec_g roup_date,
  5615                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5616  
  5617     EXCEPTIO N
  5618  
  5619       WHEN N O_DATA_FOU ND THEN
  5620  
  5621         NULL ;
  5622  
  5623       WHEN O THERS THEN
  5624  
  5625         VD_l og_date :=  SYSDATE;
  5626         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  5627                                      PD_job_e rror_date   => VD_log _date,
  5628                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  5629                                      PC_job_e rror_messa ge => SUBS TR('Unknow n error wh ile removi ng old pro cess error s. '
  5630                                                                        || SQLE RRM,1,2000 ),
  5631                                      PD_date1  => VD_rec _group_dat e,
  5632                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5633  
  5634     END;
  5635  
  5636   -- Main re cord curso r logic
  5637  
  5638     FOR I_ad dr_rec IN  C_addr_rec  LOOP
  5639  
  5640       VB_err or := FALS E;
  5641       VB_upd ate_row :=  FALSE;
  5642       VN_tot al_recs_co unt := VN_ total_recs _count + 1 ;
  5643       VN_add r_chg_src_ type_id :=  I_addr_re c.Address_ change_src _type_id;
  5644       VN_std _instituti on_id := I _addr_rec. Std_instit ution_id;
  5645  
  5646   -- Logic f or Address _change_sr c_type_id
  5647  
  5648       IF VN_ addr_chg_s rc_type_id  IS NULL T HEN
  5649  
  5650         VN_a ddr_chg_sr c_type_id  := CN_addr _chg_src_t ype;
  5651         VB_u pdate_row  := TRUE;
  5652         VN_s rc_type_up d_count :=  VN_src_ty pe_upd_cou nt + 1;
  5653  
  5654       END IF ;
  5655  
  5656   -- Logic f or Std_ins titution_i d
  5657  
  5658       IF VN_ std_instit ution_id I S NULL THE N
  5659  
  5660   --   First  try for s tation num ber from r ecord_modi fied_by co lumn
  5661  
  5662         IF I _addr_rec. Record_mod ified_by L IKE CC_ins t_id_mask  || '%' THE N
  5663  
  5664           BE GIN
  5665  
  5666              SELECT     Id
  5667              INTO       VN_std_ins titution_i d
  5668              FROM       Std_Instit ution
  5669              WHERE      Stationnum ber = SUBS TR(I_addr_ rec.Record _modified_ by,
  5670                                                  6,
  5671                                                  LENGTH( I_addr_rec .Record_mo dified_by) -5);
  5672  
  5673              VB_update_ row := TRU E;
  5674              VN_inst_id _upd_count  := VN_ins t_id_upd_c ount + 1;
  5675  
  5676           EX CEPTION
  5677  
  5678              WHEN NO_DA TA_FOUND T HEN
  5679  
  5680                NULL;
  5681  
  5682              WHEN OTHER S THEN
  5683  
  5684                VB_error  := TRUE;
  5685                VN_error _recs_coun t := VN_er ror_recs_c ount + 1;
  5686  
  5687                VD_log_d ate := SYS DATE;
  5688                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  5689                                            PD _job_error _date  =>  VD_log_dat e,
  5690                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  5691                                            PC _job_error _message = > SUBSTR(' Unknown er ror while  fetching S td_institu tion_id fr om Record_ modified_b y.'
  5692                                                                           || '  Std_insti tution_id:  '
  5693                                                                           || S UBSTR(I_ad dr_rec.Rec ord_modifi ed_by,6,LE NGTH(I_add r_rec.Reco rd_modifie d_by)-5)
  5694                                                                           || ' . '
  5695                                                                           || S QLERRM,1,2 000),
  5696                                            PD _date1 =>  VD_rec_gro up_date,
  5697                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  5698                                            PN _numeric1  => I_addr_ rec.Addres s_id);
  5699  
  5700           EN D;
  5701  
  5702         END  IF;
  5703  
  5704   --   If st ill no ins titution_i d, try for  station n umber from  record_cr eated_by c olumn
  5705  
  5706         IF N OT VB_erro r
  5707          AND  VN_std_in stitution_ id IS NULL
  5708          AND  I_addr_re c.Record_c reated_by  LIKE CC_in st_id_mask  || '%' TH EN
  5709  
  5710           BE GIN
  5711  
  5712              SELECT     Id
  5713              INTO       VN_std_ins titution_i d
  5714              FROM       Std_Instit ution
  5715              WHERE      Stationnum ber = SUBS TR(I_addr_ rec.Record _created_b y,
  5716                                                  6,
  5717                                                  LENGTH( I_addr_rec .Record_cr eated_by)- 5);
  5718  
  5719              VB_update_ row := TRU E;
  5720              VN_inst_id _upd_count  := VN_ins t_id_upd_c ount + 1;
  5721  
  5722           EX CEPTION
  5723  
  5724              WHEN NO_DA TA_FOUND T HEN
  5725  
  5726                NULL;
  5727  
  5728              WHEN OTHER S THEN
  5729  
  5730                VB_error  := TRUE;
  5731                VN_error _recs_coun t := VN_er ror_recs_c ount + 1;
  5732  
  5733                VD_log_d ate := SYS DATE;
  5734                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  5735                                            PD _job_error _date  =>  VD_log_dat e,
  5736                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  5737                                            PC _job_error _message = > SUBSTR(' Unknown er ror while  fetching S td_institu tion_id fr om Record_ created_by .'
  5738                                                                           || '  Std_insti tution_id:  '
  5739                                                                           || S UBSTR(I_ad dr_rec.Rec ord_create d_by,6,LEN GTH(I_addr _rec.Recor d_created_ by)-5)
  5740                                                                           || ' .'
  5741                                                                           || S QLERRM,1,2 000),
  5742                                            PD _date1 =>  VD_rec_gro up_date,
  5743                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  5744                                            PN _numeric1  => I_addr_ rec.Addres s_id);
  5745  
  5746           EN D;
  5747  
  5748         END  IF;
  5749  
  5750   --   If st ill no ins titution_i d, try for  instituti on_id from  address h istory
  5751  
  5752         IF N OT VB_erro r
  5753          AND  VN_std_in stitution_ id IS NULL  THEN
  5754  
  5755           BE GIN
  5756  
  5757              SELECT     A1.Std_ins titution_i d
  5758              INTO       VN_std_ins titution_i d
  5759              FROM       ADR.Addres s_H A1
  5760              WHERE      A1.Person_ id = I_add r_rec.Pers on_id -- N o index on  Address_i d, Person_ id is next  best thin g
  5761              AND        A1.Address _h_id =
  5762                           (SELECT     MAX(A2. Address_h_ id)
  5763                            FROM       ADR.Add ress_H A2
  5764                            WHERE      A2.Pers on_id = I_ addr_rec.P erson_id - - No index  on Addres s_id, Pers on_id is n ext best t hing
  5765                            AND        A2.Addr ess_Id = I _addr_rec. Address_id
  5766                            AND        A2.Std_ institutio n_id IS NO T NULL
  5767                            AND        A2.Tran saction_ty pe_code !=  'D');
  5768  
  5769              VB_update_ row := TRU E;
  5770              VN_inst_id _upd_count  := VN_ins t_id_upd_c ount + 1;
  5771  
  5772           EX CEPTION
  5773  
  5774              WHEN NO_DA TA_FOUND T HEN
  5775  
  5776                NULL;
  5777  
  5778              WHEN OTHER S THEN
  5779  
  5780                VB_error  := TRUE;
  5781                VN_error _recs_coun t := VN_er ror_recs_c ount + 1;
  5782  
  5783                VD_log_d ate := SYS DATE;
  5784                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  5785                                            PD _job_error _date  =>  VD_log_dat e,
  5786                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  5787                                            PC _job_error _message = > SUBSTR(' Unknown er ror while  fetching S td_institu tion_id fr om Address _H table.'
  5788                                                                           || S QLERRM,1,2 000),
  5789                                            PD _date1 =>  VD_rec_gro up_date,
  5790                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  5791                                            PN _numeric1  => I_addr_ rec.Addres s_id);
  5792  
  5793           EN D;
  5794  
  5795         END  IF;
  5796  
  5797   --   If st ill no ins titution_i d, try for  instituti on_id from  merged pe rson addre ss history
  5798  
  5799         IF N OT VB_erro r
  5800          AND  VN_std_in stitution_ id IS NULL  THEN
  5801  
  5802           BE GIN
  5803  
  5804              SELECT     AH.Std_ins titution_i d
  5805              INTO       VN_std_ins titution_i d
  5806              FROM       ADR.Person _Merge PM,
  5807                         ADR.Addres s_H AH
  5808              WHERE      PM.Primary _person_id  = I_addr_ rec.Person _id
  5809              AND        AH.Address _h_id =
  5810                         (SELECT     MAX(AH2.A ddress_h_i d)
  5811                          FROM       ADR.Addre ss_H AH2
  5812                          WHERE      AH2.Perso n_id = PM. Deprecated _person_id
  5813                          AND        AH2.Std_a ddresstype _id = CC_t emp_addr_i d
  5814                          AND        AH2.Std_i nstitution _id IS NOT  NULL);
  5815  
  5816              VB_update_ row := TRU E;
  5817              VN_inst_id _upd_count  := VN_ins t_id_upd_c ount + 1;
  5818  
  5819           EX CEPTION
  5820  
  5821              WHEN NO_DA TA_FOUND T HEN
  5822  
  5823                NULL;
  5824  
  5825              WHEN OTHER S THEN
  5826  
  5827                VB_error  := TRUE;
  5828                VN_error _recs_coun t := VN_er ror_recs_c ount + 1;
  5829  
  5830                VD_log_d ate := SYS DATE;
  5831                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  5832                                            PD _job_error _date  =>  VD_log_dat e,
  5833                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  5834                                            PC _job_error _message = > SUBSTR(' Unknown er ror while  fetching S td_institu tion_id '
  5835                                                                           ||'f rom merged  person Ad dress_H ta ble.'
  5836                                                                           || S QLERRM,1,2 000),
  5837                                            PD _date1 =>  VD_rec_gro up_date,
  5838                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  5839                                            PN _numeric1  => I_addr_ rec.Addres s_id);
  5840  
  5841           EN D;
  5842  
  5843         END  IF;
  5844  
  5845   --   If st ill no ins titution_i d, it's to ast. Write  an error.
  5846  
  5847  
  5848         IF N OT VB_erro r
  5849          AND  VN_std_in stitution_ id IS NULL  THEN
  5850  
  5851           VN _no_inst_i d_count :=  VN_no_ins t_id_count  + 1;
  5852  
  5853           VD _log_date  := SYSDATE ;
  5854           AD RMGT.Job_P rocess_Err _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  5855                                        PD_job _error_dat e  => VD_l og_date,
  5856                                        PC_job _error_cod e => SUBST R(SQLCODE, 1,60),
  5857                                        PC_job _error_mes sage => SU BSTR('No i nstitution  ID found  for this a ddress row .',1,2000) ,
  5858                                        PD_dat e1 => VD_r ec_group_d ate,
  5859                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5),
  5860                                        PN_num eric1 => I _addr_rec. Address_id );
  5861  
  5862         END  IF;
  5863  
  5864       END IF ;
  5865  
  5866       IF VB_ update_row  THEN
  5867  
  5868         BEGI N
  5869  
  5870           UP DATE    AD R.Address
  5871           SE T       Ad dress_chan ge_src_typ e_id = VN_ addr_chg_s rc_type_id ,
  5872                      St d_institut ion_id = V N_std_inst itution_id ,
  5873                      Re cord_modif ied_by = ' ADRCQ00001 162',
  5874                      Re cord_modif ied_date =  SYSDATE,
  5875                      Re cord_modif ied_count  = Record_m odified_co unt + 1
  5876           WH ERE     Ad dress_id =  I_addr_re c.Address_ id;
  5877  
  5878           CO MMIT;
  5879  
  5880         EXCE PTION
  5881  
  5882           WH EN OTHERS  THEN
  5883  
  5884              VN_error_r ecs_count  := VN_erro r_recs_cou nt + 1;
  5885  
  5886              ROLLBACK;
  5887  
  5888              VD_log_dat e := SYSDA TE;
  5889              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  5890                                          PD_j ob_error_d ate  => VD _log_date,
  5891                                          PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  5892                                          PC_j ob_error_m essage =>  SUBSTR('Un known erro r while up dating ADR .Address r ow.'
  5893                                                                         || SQL ERRM,1,200 0),
  5894                                          PD_d ate1 => VD _rec_group _date,
  5895                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255),
  5896                                          PN_n umeric1 =>  I_addr_re c.Address_ id);
  5897  
  5898         END;
  5899  
  5900       END IF ;
  5901  
  5902     END LOOP ;
  5903  
  5904   -- Process  completio n informat ion
  5905  
  5906     VD_log_d ate := SYS DATE;
  5907     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  5908                                 PD _job_log_d ate => VD_ log_date,
  5909                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Stati stics',1,6 0),
  5910                                 PD _date1 =>  VD_rec_gro up_date,
  5911                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  5912                                 PN _numeric2  => VN_tota l_recs_cou nt,
  5913                                 PC _text2 =>  SUBSTR('Te mp address es reviewe d',1,255)) ;
  5914  
  5915     VD_log_d ate := SYS DATE;
  5916     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  5917                                 PD _job_log_d ate => VD_ log_date,
  5918                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Stati stics',1,6 0),
  5919                                 PD _date1 =>  VD_rec_gro up_date,
  5920                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  5921                                 PN _numeric2  => VN_src_ type_upd_c ount,
  5922                                 PC _text2 =>  SUBSTR('Ch ange sourc e types up dated',1,2 55));
  5923  
  5924     VD_log_d ate := SYS DATE;
  5925     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  5926                                 PD _job_log_d ate => VD_ log_date,
  5927                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Stati stics',1,6 0),
  5928                                 PD _date1 =>  VD_rec_gro up_date,
  5929                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  5930                                 PN _numeric2  => VN_inst _id_upd_co unt,
  5931                                 PC _text2 =>  SUBSTR('In stitution  IDs update d',1,255)) ;
  5932  
  5933     VD_log_d ate := SYS DATE;
  5934     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  5935                                 PD _job_log_d ate => VD_ log_date,
  5936                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Stati stics',1,6 0),
  5937                                 PD _date1 =>  VD_rec_gro up_date,
  5938                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  5939                                 PN _numeric2  => VN_no_i nst_id_cou nt,
  5940                                 PC _text2 =>  SUBSTR('In stitution  IDs not up dated',1,2 55));
  5941  
  5942     VD_log_d ate := SYS DATE;
  5943     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  5944                                 PD _job_log_d ate => VD_ log_date,
  5945                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Stati stics',1,6 0),
  5946                                 PD _date1 =>  VD_rec_gro up_date,
  5947                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  5948                                 PN _numeric2  => VN_erro r_recs_cou nt,
  5949                                 PC _text2 =>  SUBSTR('** *Errors up dating add ress rows* **',1,255) );
  5950  
  5951     VD_proce ss_end_dat e := SYSDA TE;
  5952     VC_proce ss_duratio n := LTRIM (TO_CHAR(T RUNC((VD_p rocess_end _date - VD _process_s tart_date) *24),'00') ) || ' Hrs  '
  5953                              || LT RIM(TO_CHA R(TRUNC((( (VD_proces s_end_date  - VD_proc ess_start_ date)*24)-
  5954                                 TR UNC(((VD_p rocess_end _date - VD _process_s tart_date) *24))) * 6 0),'00'))  || ' Mins  '
  5955                              || LT RIM(TO_CHA R(TRUNC((( (VD_proces s_end_date  - VD_proc ess_start_ date)*24*6 0)-
  5956                                 TR UNC(((VD_p rocess_end _date - VD _process_s tart_date) *24*60)))  * 60),'00' )) || ' Se cs';
  5957  
  5958     VD_log_d ate := SYS DATE;
  5959     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  5960                                 PD _job_log_d ate => VD_ log_date,
  5961                                 PC _job_statu s => SUBST R('SUCCESS      - Pro cessing Co mpleted',1 ,60),
  5962                                 PC _job_log_m essage =>  SUBSTR('Pr ocessing T ime: ' ||  VC_process _duration, 1,2000),
  5963                                 PD _date1 =>  VD_rec_gro up_date,
  5964                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  5965  
  5966   EXCEPTION
  5967  
  5968     WHEN OTH ERS THEN
  5969  
  5970       ROLLBA CK;
  5971  
  5972       VD_log _date := S YSDATE;
  5973       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  5974                                    PD_job_err or_date  = > VD_log_d ate,
  5975                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  5976                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Adr_Addres s_Z05_Upda te_Sp.'
  5977                                                                  ||  SQLERRM,1 ,2000),
  5978                                    PD_date1 = > VD_rec_g roup_date,
  5979                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5980  
  5981       VD_log _date := S YSDATE;
  5982       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  5983                                    PD_job_log _date => V D_log_date ,
  5984                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  5985                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  5986                                    PD_date1 = > VD_rec_g roup_date,
  5987                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5988  
  5989   END Adr_Ad dress_Z05_ Update_Sp;
  5990   /
  5991   DROP PROCE DURE ADR.A CTIVEAGG_T RACKER_PRO C;
  5992  
  5993   CREATE OR  REPLACE PR OCEDURE AD R.ACTIVEAG G_TRACKER_ PROC
  5994   IS
  5995      gc_sche ma_owner_n ame         VARCHAR2  (20) := 'A DR';
  5996      v_parti tion_high_ val_date    DATE;
  5997      v_sql                          VARCHAR2  (2000);
  5998      v_cut_o ff_date                INTEGER : = 6;
  5999      v_CURRE NT_ACTIVE_ DATE        DATE;
  6000      v_PREVI OUS_ACTIVE _DATE       DATE;
  6001   BEGIN
  6002      SELECT  CURRENT_AC TIVE_DATE,  PREVIOUS_ ACTIVE_DAT E
  6003        INTO  v_CURRENT_ ACTIVE_DAT E, v_PREVI OUS_ACTIVE _DATE
  6004        FROM  ADR.ACTIVE AGG_TRACKE R
  6005       WHERE  LOADING_ST ATUS = 'YE S';
  6006  
  6007      ADRMGT. Job_Proces s_Log_Sp ( PC_job_nam e           => SUBSTR  ('ACTIVEA GG_TRACKER _AUR_TRGR' , 1, 60),
  6008                                    PD_job_log _date       => SYSDAT E,
  6009                                    PC_job_sta tus         => 'SUCCE SS',
  6010                                    PC_JOB_LOG _MESSAGE    => SUBSTR  (   'v_CU RRENT_ACTI VE_DATE :  '
  6011                                                                       || v_CUR RENT_ACTIV E_DATE
  6012                                                                       || ' v_P REVIOUS_AC TIVE_DATE:  '
  6013                                                                       || v_PRE VIOUS_ACTI VE_DATE,
  6014                                                                       1,
  6015                                                                       60));
  6016  
  6017      FOR r I N (SELECT  table_name ,
  6018                         partition_ name,
  6019                         high_value ,
  6020                         interval
  6021                   FROM  user_tab_p artitions
  6022                  WHERE  UPPER (tab le_name) =  ('ACTIVEA GG'))
  6023      LOOP
  6024         EXEC UTE IMMEDI ATE
  6025                'SELECT  '
  6026            | | r.high_v alue
  6027            | | ' from d ual'
  6028            I NTO v_part ition_high _val_date;
  6029  
  6030         IF      (TRUNC  (v_partiti on_high_va l_date) <  TRUNC (v_C URRENT_ACT IVE_DATE -  v_cut_off _date))
  6031            A ND TRUNC ( v_partitio n_high_val _date) <>  TRUNC (v_P REVIOUS_AC TIVE_DATE)
  6032         THEN
  6033            I F r.interv al = 'NO'
  6034            T HEN
  6035                v_sql :=
  6036                      'A LTER TABLE  '
  6037                   || gc _schema_ow ner_name
  6038                   || '. '
  6039                   || r. table_name
  6040                   || '  TRUNCATE P ARTITION '
  6041                   || r. partition_ name;
  6042  
  6043                ADRMGT.J ob_Process _Log_Sp (P C_job_name            => SUBSTR  ('ACTIVEAG G_TRACKER_ AUR_TRGR',  1, 60),
  6044                                             P D_job_log_ date       => SYSDATE ,
  6045                                             P C_job_stat us         => 'SUCCES S',
  6046                                             P C_JOB_LOG_ MESSAGE    => SUBSTR  (   v_sql
  6047                                                                                 || ' '
  6048                                                                                 || v_part ition_high _val_date,
  6049                                                                                 1,
  6050                                                                                 60));
  6051  
  6052                EXECUTE  IMMEDIATE  v_sql;
  6053            E LSE
  6054                v_sql :=
  6055                      'A LTER TABLE  '
  6056                   || gc _schema_ow ner_name
  6057                   || '. '
  6058                   || r. table_name
  6059                   || '  DROP PARTI TION '
  6060                   || r. partition_ name;
  6061  
  6062                ADRMGT.J ob_Process _Log_Sp (P C_job_name            => SUBSTR  ('ACTIVEAG G_TRACKER_ AUR_TRGR',  1, 60),
  6063                                             P D_job_log_ date       => SYSDATE ,
  6064                                             P C_job_stat us         => 'SUCCES S',
  6065                                             P C_JOB_LOG_ MESSAGE    => SUBSTR  (   v_sql
  6066                                                                                 || ' '
  6067                                                                                 || v_part ition_high _val_date,
  6068                                                                                 1,
  6069                                                                                 60));
  6070  
  6071                EXECUTE  IMMEDIATE  v_sql;
  6072            E ND IF;
  6073         END  IF;
  6074      END LOO P;
  6075   EXCEPTION
  6076      WHEN NO _DATA_FOUN D
  6077      THEN
  6078         ADRM GT.Job_Pro cess_Log_S p (
  6079            P C_job_name            => SUBSTR  ('ACTIVEAG G_TRACKER_ AUR_TRGR',  1, 60),
  6080            P D_job_log_ date       => SYSDATE ,
  6081            P C_job_stat us         => 'SUCCES S',
  6082            P C_JOB_LOG_ MESSAGE    => SUBSTR  ('Nothing  to drop; n o record F OUND in AD r.ACTIVEAG G_TRACKER   WHERE LOA DING_STATU S = ''YES' '', 1, 60) );
  6083      WHEN OT HERS
  6084      THEN
  6085         ADRM GT.Job_Pro cess_Log_S p (PC_job_ name           => SUB STR ('ACTI VEAGG_TRAC KER_AUR_TR GR', 1, 60 ),
  6086                                       PD_job_ log_date       => SYS DATE,
  6087                                       PC_job_ status         => 'PA RTITION DR OP FAILED' ,
  6088                                       PC_JOB_ LOG_MESSAG E   => SUB STR (   DB MS_UTILITY .FORMAT_CA LL_STACK
  6089                                                                          || DB MS_UTILITY .format_er ror_stack
  6090                                                                          || DB MS_UTILITY .format_er ror_backtr ace,
  6091                                                                          1,
  6092                                                                          60));
  6093   END ACTIVE AGG_TRACKE R_PROC;
  6094   /