10. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 4/6/2018 7:09:35 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.

10.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\DDL\ADR procedure.sql Thu Mar 29 15:22:22 2018 UTC
2 ADR FY8 Q2 Build 7 CIF submission.zip\ADR FY8 Q2 Build 7 CIF submission\ADR FY8 Q2 Build 7 CIF submission\DDL\ADR procedure.sql Wed Apr 4 15:09:28 2018 UTC

10.2 Comparison summary

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

10.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

10.4 Active regular expressions

No regular expressions were active.

10.5 Comparison detail

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