3. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 8/17/2018 9:15:19 PM Eastern 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.

3.1 Files compared

# Location File Last Modified
1 ADR FY8 Q3 CIF submission.zip\ADR FY8 Q3 CIF submission\DDL\ADR procedure.sql Mon Jul 30 14:56:00 2018 UTC
2 ADR FY8 Q3 CIF submission.zip\ADR FY8 Q3 CIF submission\DDL\ADR procedure.sql Wed Aug 15 15:52:02 2018 UTC

3.2 Comparison summary

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

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

3.4 Active regular expressions

No regular expressions were active.

3.5 Comparison detail

  1   DROP PROCE DURE ADR.H ANDBOOK_SP ;
  2  
  3   CREATE OR  REPLACE PR OCEDURE AD R.HANDBOOK _SP
  4   IS
  5  
  6     -- VARIA BLES
  7  
  8     TYPE TAB LE_COL_TYP E IS TABLE  OF VARCHA R2(1000) I NDEX BY BI NARY_INTEG ER;
  9     VN_STR_L EN         NUMBER:= 1 00;
  10     VN_SEPAR ATOR       CONSTANT V ARCHAR2(3) := ' | ';
  11  
  12     VC_WHERE            VARCHAR2(3 200);
  13     LV_Str_L ist        VARCHAR2(5 00);
  14     LB_cnt              BINARY_INT EGER;
  15     LA_Tab_S tr         DBMS_UTILI TY.UNCL_AR RAY;
  16  
  17     LC_TMP              VARCHAR2(1 00);
  18     LC_err_s tr         VARCHAR2(3 2767);
  19     LC_str              LONG;
  20     l_row_cn t          BINARY_INT EGER := 0;
  21     LN_col_c ount       BINARY_INT EGER := 0;
  22  
  23     VC_log_s tep        VARCHAR2(5 00);
  24     lc_col1             TABLE_COL_ TYPE;
  25     lc_col2             TABLE_COL_ TYPE;
  26     lc_col3             TABLE_COL_ TYPE;
  27     lc_col4             TABLE_COL_ TYPE;
  28     lc_col5             TABLE_COL_ TYPE;
  29  
  30  
  31     VC_SELEC T1          VARCHAR2( 60):= 'SEL ECT * FROM  (';
  32     LC_WHERE _LIMIT      VARCHAR2( 2000);
  33     LN_MAX_R OWS_DISP    NUMBER :=  30;  --Th is number  limit numb er of rows  display o n the body  message
  34     VN_max_r ec_display              NUMBER;
  35     VN_vbr_t ot             NUMBER ;
  36     VN_ven_t ot            NUMBER;
  37     VN_brv_t ot            NUMBER;
  38     VN_hbr_t ot            NUMBER;
  39     VN_pr_to t            NUMBER;
  40  
  41     VC_SQLST MT          VARCHAR2( 5000);
  42  
  43     vMesg                LONG;
  44     vSubj                VARCHAR2( 800);
  45  
  46  
  47     VB_allow _rpt_inst         BOO LEAN := FA LSE;
  48     VB_error                  BOOL EAN := FAL SE;
  49     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  50     VB_updat e_row              BO OLEAN := F ALSE;
  51  
  52     VC_allow _rpt_inst          VA RCHAR2(5)  := NULL;
  53  
  54     VC_proce ss_duratio n       VA RCHAR2(25) ;
  55     VC_proce ss_name             V ARCHAR2(30 ) := 'ADR. HANDBOOK_S P';
  56  
  57  
  58     VN_Inst_ name              VAR CHAR2(60);
  59     VC_host_ name                V ARCHAR2(60 );
  60     VC_email _list              VA RCHAR2(300 );
  61  
  62  
  63     CURSOR c _hbr IS SE LECT batch _release_s ize, batch _release_d ate
  64       FROM h andbook_ba tch_reques t
  65       WHERE  (record_cr eated_date  >= TRUNC( sysdate) -  7
  66       AND re cord_creat ed_date <  sysdate)
  67       AND st d_handbook batchreque ststa_id =  2000010
  68       ORDER  BY record_ created_da te;
  69  
  70   -- ******* ********** ********** ********** ********** ********** ********** *******
  71   -- *
  72   -- *  MAIN  PROCEDURE :
  73   -- *
  74   -- *
  75   -- ******* ********** ********** ********** ********** ********** ********** *******
  76  
  77   BEGIN
  78  
  79      VC_log_ step := 'G et instanc e name';
  80  
  81      SELECT  sys_contex t('USERENV ','INSTANC E_NAME'),  sys_contex t('USERENV ', 'SERVER _HOST')
  82      into VN _Inst_name , VC_host_ name
  83      FROM du al;
  84  
  85      ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (VC_proces s_name,1,6 0),
  86                                 PD _job_log_d ate => SYS DATE,
  87                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Initi ation',1,6 0),
  88                                 PD _date1 =>  SYSDATE,
  89                                 PC _text1 =>  VC_log_ste p||' - Ini tiating AD R Handbook  Job');
  90  
  91      VN_max_ rec_displa y := NVL(V N_max_rec_ display,30 );  -- set  max defau lt to 30 r ows
  92       LC_str  := 'List  of batch r equests fo r the week : ';
  93       FOR th is_sql in   c_hbr  LO OP
  94         LC_s tr :=  LC_ str ||CHR( 10)||RPAD( this_sql.b atch_relea se_size,20 )||' '||th is_sql.bat ch_release _date;
  95       End Lo op;
  96  
  97         SELE CT EMAIL_A DDRESS_LIS T
  98           IN TO  VC_ema il_list
  99         FROM  ADRMGT.AD R_USER_CON TACT
  100         WHER E CONTACT_ EMAIL_USER _NAME = 'E SR_GRP';
  101         SELE CT NVL(SUM (batch_rel ease_size) , 0) weekl y_batch_re lease_tota l
  102         INTO  VN_vbr_to t
  103         FROM  handbook_ batch_requ est
  104         WHER E (record_ created_da te >= TRUN C(sysdate)  - 7
  105         AND  record_cre ated_date  < sysdate)
  106         AND  std_handbo okbatchreq ueststa_id  = 2000010 ;
  107         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);
  108  
  109         SELE CT COUNT(* ) requests _to_vendor _total_cou nt
  110         INTO  VN_ven_to t
  111         FROM  handbook_ mail_queue  hbq, hand book_mail_ status_h h ms
  112         WHER E hbq.hand book_mail_ queue_id =  hms.handb ook_mail_q ueue_id
  113         AND  hms.std_ha ndbookmail stattype_i d = 200000 5
  114         AND  (hbq.recor d_created_ date >= TR UNC(sysdat e) - 7
  115         AND  hbq.record _created_d ate < sysd ate);
  116         LC_s tr := LC_s tr||CHR(10 )||'Total  Number of  requests s ent to ven dor:  '||  VN_ven_tot ||CHR(10);
  117  
  118         SELE CT COUNT(* ) batch_re quests_to_ vendor_cou nt
  119         into  VN_brv_to t
  120         FROM  handbook_ mail_queue  hbq, hand book_mail_ status_h h ms
  121         WHER E hbq.hand book_mail_ queue_id =  hms.handb ook_mail_q ueue_id
  122         AND  hms.std_ha ndbookmail stattype_i d = 200000 5
  123         AND  hbq.handbo ok_batch_r equest_id  IN (SELECT  handbook_ batch_requ est_id
  124                                                  FROM ha ndbook_bat ch_request
  125                                                 WHERE (r ecord_crea ted_date > = TRUNC(sy sdate) - 7
  126                                                   AND re cord_creat ed_date <  sysdate)
  127                                                   AND st d_handbook batchreque ststa_id =  2000010);
  128          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);
  129          SEL ECT COUNT( *) handboo ks_receive d_count
  130          INT O VN_hbr_t ot
  131          FRO M vbr.docu ment_recei pt d, vbr. document d r
  132          WHE RE d.docum ent_receip t_id = dr. document_r eceipt_id
  133          AND  receipt_s tring IN ( SELECT han dbook_mail _queue_id
  134                                 FR OM handboo k_mail_que ue hmq, ha ndbook_bat ch_request  hbr
  135                                WHE RE hmq.han dbook_batc h_request_ id = hbr.h andbook_ba tch_reques t_id
  136                                  A ND hbr.std _handbookb atchreques tsta_id =  2000010
  137                                  A ND (hbr.re cord_creat ed_date >=  TRUNC(sys date) - 7
  138                                  A ND hbr.rec ord_create d_date < s ysdate))
  139          AND  dr.docume nt_type_id  = 3;
  140          LC_ str := LC_ str||CHR(1 0)||'Numbe r of handb ooks recei ved:  '||  VN_hbr_tot ||CHR(10);
  141          SEL ECT COUNT( *) profile s_received _count
  142          INT O VN_pr_to t
  143          FRO M vbr.docu ment_recei pt d, vbr. document d r
  144          WHE RE d.docum ent_receip t_id = dr. document_r eceipt_id
  145          AND  receipt_s tring IN ( SELECT han dbook_mail _queue_id
  146                                 FR OM handboo k_mail_que ue hmq, ha ndbook_bat ch_request  hbr
  147                                WHE RE hmq.han dbook_batc h_request_ id = hbr.h andbook_ba tch_reques t_id
  148                                  A ND hbr.std _handbookb atchreques tsta_id =  2000010
  149                                  A ND (hbr.re cord_creat ed_date >=  TRUNC(sys date) - 7
  150                                  A ND hbr.rec ord_create d_date < s ysdate))
  151           AN D dr.docum ent_type_i d = 4;
  152          LC_ str := LC_ str||CHR(1 0)||'Numbe r of benef it profile s received :  '|| VN_ pr_tot;
  153   --      DB MS_OUTPUT. PUT_LINE(L C_str);
  154         vSub j := VC_pr ocess_name ||' - Repo rt ' ||'(' ||VN_Inst_ name||'@'| |VC_host_n ame||')';
  155         vMes g := LC_st r;
  156         VC_l og_step :=  'Invoking  utl_mail. send';
  157           UTL_MAIL.S END (SENDE      => 'oracle @'||VC_hos t_name|| DNS . URL ',
  158                         RECIPIENTS   => VC_em ail_list,
  159                         SUBJECT      => vSubj ,
  160                         MESSAGE      => vMesg );
  161  
  162        ADRMG T.Job_Proc ess_Log_Sp (
  163               PC_job_na me => SUBS TR(VC_proc ess_name,1 ,60),
  164               PD_job_lo g_date =>  SYSDATE,
  165               PC_job_st atus => SU BSTR('INFO RMATION -  '||VC_log_ step,1,60) ,
  166               PC_job_lo g_message  => SUBSTR( VC_log_ste p,1,2000),
  167               PD_date1  => SYSDATE ,
  168               PC_text1  => SUBSTR( VC_log_ste p,1,255));
  169  
  170     EXCEPTIO N
  171  
  172       WHEN N O_DATA_FOU ND THEN
  173  
  174         NULL ;
  175  
  176       WHEN O THERS THEN
  177  
  178         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  179                                      PD_job_e rror_date   => SYSDAT E,
  180                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  181                                      PC_job_e rror_messa ge => SUBS TR('Unknow n error wh ile removi ng old pro cess logs.  '
  182                                                                        || SQLE RRM,1,2000 ),
  183                                      PD_date1  => SYSDAT E,
  184                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  185  
  186  
  187   END HANDBO OK_SP;
  188   /
  189   DROP PROCE DURE ADR.B ATCH_SSN_P ROCESSED_S P;
  190  
  191   CREATE OR  REPLACE PR OCEDURE AD R.BATCH_SS N_PROCESSE D_SP
  192   ( P_batch_ SSN_ADRToP rocess_DIR   IN VARCH AR2,
  193     P_batch_ SSN_ToProc ess_DIR      IN VARCH AR2,
  194     P_batch_ SSN_log_DI R            IN VARCH AR2,
  195     P_batch_ SSN_err_DI R            IN VARCH AR2,
  196     P_num_fi les_proces s            IN NUMBE R DEFAULT  2,
  197     PB_run_s tandalone               IN BOOLE AN DEFAULT  FALSE,
  198     PB_allow _rpt_inst               IN BOOLE AN DEFAULT  FALSE)
  199  
  200   -- ####### ########## ########## ########## ########## ########## ########## ########## ##
  201   -- #  Desc ription: C CR 1674: P rocess a b acklog of  SSN Verifi catio
  202   -- #
  203   -- #   Usa ge:             Calle d by run_w rapper.sql
  204   -- #   Inp ut Paramet ers:
  205   -- #     1 ) None
  206   -- #   Out put:
  207   -- #     1 ) Terminal
  208   -- #   Int ernal Scri pt Paramet ers:
  209   -- #     1 ) None
  210   -- #
  211   -- #
  212   -- ####### ########## ########## ########## ########## ########## ########## ########
  213   -- # Chang e History
  214   -- #
  215   -- # DATE        User  Name          DESCRI PTION
  216   -- # ----- ----- ---- ---------- --- ------ ---------- ---------- ---------- ---------- ---
  217   -- # 06/10 /2012 Rich ard Do         Create d
  218   -- #
  219   -- #
  220   -- ####### ########## ########## ########## ########## ########## ########## ########
  221   AS
  222  
  223      CC_SSN_ VERIFICATI ON_EXT         CONSTA NT VARCHAR 2(20):= 'S SN_VERIFIC ATION_EXT' ;
  224      CC_BATC H_SSN_LOG_ DIR            CONSTA NT VARCHAR 2(20):= 'B ATCH_SSN_L OG_DIR';
  225      CC_BATC H_SSN_TOPR OCESS_DIR      CONSTA NT VARCHAR 2(25):= 'B ATCH_SSN_T OPROCESS_D IR';
  226      CC_BATC H_SSN_ADRT OPROCESS_D IR  CONSTA NT VARCHAR 2(35):= 'B ATCH_SSN_A DRTOPROCES S_DIR';
  227      CC_BATC H_SSN_ERR_ DIR            CONSTA NT VARCHAR 2(20):= 'B ATCH_SSN_E RR_DIR';
  228      CC_JOB_ SSN_TERM_S OL             VARCHA R2(23) :=  'Job-SSNIt erimSoluti on';
  229  
  230      CC_MAX_ ROWS_COMMI T            CONSTANT  NUMBER :=  1000;
  231  
  232      V_File_ handle UTL _FILE.FILE _TYPE;
  233      V_FILE_ Line VARCH AR2(1024);
  234  
  235      VD_log_ date           DATE;
  236      VD_rec_ group_date     DATE;
  237      VN_SSN_ VER_ID         NUMBER ;
  238      VC_log_ step           VARCHA R2(500);
  239      VN_job_ number         NUMBER  := 0;
  240      VC_proc ess_name       VARCHA R2(30) :=  'ADR.BATCH _SSN_PROCE SSED_SP';
  241  
  242      VC_file _name          VARCHA R2(300);
  243      VC_log_ file           VARCHA R2(200);
  244      VC_erro r_file         VARCHA R2(200);
  245      VC_pref ix_file        VARCHA R2(40):= ' SSA.r';
  246      VN_vpid _value         ADR.pe rson.vpid_ value%TYPE ;
  247  
  248      VN_pers on_id                   ADR.pers on.person_ id%TYPE;
  249      VN_erro r_count                 NUMBER;
  250      VN_num_ rows_bePro cessed       NUMBER;
  251      VN_num_ rows_proce ssed         NUMBER;
  252      VD_days _deletion               NUMBER:=  14;
  253      VN_rec_ count                   NUMBER:=  0;
  254      VN_job_ count                   NUMBER:=  0;
  255  
  256      VB_allo w_rpt_inst              BOOLEAN  := FALSE;
  257      VB_run_ standalone              BOOLEAN  := FALSE;
  258  
  259      VC_allo w_rpt_inst              VARCHAR2 (5) := NUL L;
  260      VC_inst ance_name               VARCHAR2 (16);
  261      VC_run_ standalone              VARCHAR2 (5) := NUL L;
  262      t1                              INTEGER;
  263      t2                              INTEGER;
  264  
  265  
  266  
  267      VC_ADRt oProcess_f ile_path     ALL_DIRE CTORIES.DI RECTORY_PA TH%TYPE;
  268      VC_ToPr ocess_file _path        ALL_DIRE CTORIES.DI RECTORY_PA TH%TYPE;
  269      VC_erro r_file_pat h            ALL_DIRE CTORIES.DI RECTORY_PA TH%TYPE;
  270      VC_log_ file_path               ALL_DIRE CTORIES.DI RECTORY_PA TH%TYPE;
  271      VC_TMP                          NUMBER : = 0;
  272      VN_comm it_cnt                  NUMBER : = 0;
  273  
  274      VC_SQLS TMNT                    VARCHAR2 (2000);
  275  
  276      FILE_PA TH_ADRTOPR OCESS_NULL _E EXCEPTI ON;
  277      FILE_PA TH_TOPROCE SS_NULL_E    EXCEPTIO N;
  278      LOG_FIL E_PATH_NUL L_E          EXCEPTIO N;
  279      ERROR_F ILE_PATH_N ULL_E        EXCEPTIO N;
  280  
  281      INVALID _SSN_ADRTO PROCESS_E    EXCEPTIO N;
  282      INVALID _SSN_TOPRO CESS_E       EXCEPTIO N;
  283      INVALID _SSN_LOG_E              EXCEPTIO N;
  284      INVALID _SSN_ERR_E              EXCEPTIO N;
  285  
  286  
  287   BEGIN
  288  
  289      VD_rec_ group_date  := TRUNC( SYSDATE);
  290      t1 :=   DBMS_UTILI TY.get_tim e;
  291  
  292  
  293      -- **** ********** ********** ********** ********** ********** ********** ********** *
  294      -- *
  295      -- * Va lidate inp ut paramet ers
  296      -- *
  297      -- **** ********** ********** ********** ********** ********** ********** ********** *
  298  
  299      VC_log_ step := 'C hecking in put parame ters.';
  300  
  301      IF NVL( P_batch_SS N_ADRToPro cess_DIR,' ***') != C C_BATCH_SS N_ADRTOPRO CESS_DIR T HEN
  302  
  303        RAISE  INVALID_S SN_ADRTOPR OCESS_E;
  304  
  305      ELSIF N VL(P_batch _SSN_ToPro cess_DIR,' ***') != C C_BATCH_SS N_TOPROCES S_DIR THEN
  306  
  307         RAIS E INVALID_ SSN_TOPROC ESS_E;
  308  
  309      ELSIF N VL(P_batch _SSN_log_D IR,'***')  != CC_BATC H_SSN_LOG_ DIR THEN
  310  
  311         RAIS E INVALID_ SSN_LOG_E;
  312  
  313      ELSIF N VL(P_batch _SSN_err_D IR,'***')  != CC_BATC H_SSN_ERR_ DIR THEN
  314  
  315         RAIS E INVALID_ SSN_ERR_E;
  316  
  317      END IF;
  318  
  319  
  320      -- * Ch eck run st andalone f lag
  321  
  322      IF PB_r un_standal one IS NUL L
  323         OR N OT PB_run_ standalone  THEN
  324  
  325          VB_ run_standa lone := FA LSE;
  326          VC_ run_standa lone := 'F ALSE'; --  used for l og message , boolean  can't be d isplayed
  327  
  328      ELSE
  329  
  330          VB_ run_standa lone := TR UE;
  331          VC_ run_standa lone := 'T RUE'; -- u sed for lo g message,  boolean c an't be di splayed
  332  
  333      END IF;
  334  
  335      -- * Ch eck run on  report in stance fla g
  336  
  337      IF PB_a llow_rpt_i nst IS NUL L
  338         OR N OT PB_allo w_rpt_inst  THEN
  339  
  340          VB_ allow_rpt_ inst := FA LSE;
  341          VC_ allow_rpt_ inst := 'F ALSE'; --  used for l og message , boolean  can't be d isplayed
  342  
  343      ELSE
  344  
  345          VB_ allow_rpt_ inst := TR UE;
  346          VC_ allow_rpt_ inst := 'T RUE'; -- u sed for lo g message,  boolean c an't be di splayed
  347  
  348      END IF;
  349  
  350      VD_log_ date := SY SDATE;
  351  
  352  
  353  
  354      BEGIN
  355  
  356         -- * ********** ********** ********** ********** ********** ********** ********** ****
  357         -- *
  358         -- *  Check to  see if pro cess is ru nning on a  reporting  database.
  359         -- *   - If VB_ allow_rpt_ inst is FA LSE, then  it's not a llowed. En d the job.
  360         -- *
  361         -- * ********** ********** ********** ********** ********** ********** ********** ****
  362  
  363         IF N OT VB_allo w_rpt_inst  THEN
  364  
  365            S ELECT    i nstance_na me
  366            I NTO      V C_instance _name
  367            F ROM      V $instance;
  368  
  369            I F UPPER(SU BSTR(VC_in stance_nam e,1,4)) =  'ADRR' THE N
  370  
  371                VD_log_d ate := SYS DATE;
  372                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  373                     PD_ job_log_da te => VD_l og_date,
  374                     PC_ job_status  => SUBSTR ('WARNING      - Proc essing Fai led',1,60) ,
  375                     PC_ job_log_me ssage => S UBSTR('Att empting to  run on a  reporting  instance.  Instance n ame: '
  376                                                            || VC_in stance_nam e
  377                            || '. T his job ha s been ter minated. T o run on a  reporting  instance, '
  378                            || ' se t paramete r VB_allow _rpt_inst  to TRUE an d resubmit  the job.' ,1,2000),
  379                     PD_ date1 => V D_rec_grou p_date,
  380                     PC_ text1 => S UBSTR('Dat e1 column  contains t he daily p rocess sta rt date',1 ,255));
  381  
  382               RETURN;
  383  
  384            E ND IF;
  385  
  386         END  IF;
  387  
  388  
  389         -- * ********** ********** ********** ********** ********** ********** ********** ****
  390         -- *
  391         -- *  Check to  see if the  job has a lready run  today
  392         -- *   - If run ning in st and-alone  mode, don' t check.
  393         -- *   - Otherw ise, if jo b has alre ady run to day, then  exit the j ob.
  394         -- *
  395         -- * ********** ********** ********** ********** ********** ********** ********** ****
  396         IF N OT PB_run_ standalone  THEN
  397  
  398               SELECT     COUNT(*)
  399                INTO       VN_rec_c ount
  400               FROM       ADRMGT.Jo b_Process_ Logs
  401               WHERE      Job_name  = VC_proce ss_name
  402               AND        Date1 = V D_rec_grou p_date
  403               AND        Job_statu s = 'SUCCE SS     - P rocessing  Completed' ;
  404  
  405               IF VN_rec _count > 0  THEN
  406  
  407                  VD_log _date := S YSDATE;
  408                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  409                           PD_job_l og_date =>  VD_log_da te,
  410                           PC_job_s tatus => S UBSTR('INF ORMATION -  This date  has alrea dy been pr ocessed',1 ,60),
  411                           PC_job_l og_message  => SUBSTR ('Processi ng has alr eady compl eted for t his date.  Exiting to  job queue .',1,2000) ,
  412                           PD_date1  => VD_rec _group_dat e,
  413                           PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  414  
  415                  RETURN ;
  416  
  417               END IF;
  418  
  419         END  IF;
  420  
  421         -- * ********** ********** ********** ********** ********** ********** ********** ****
  422         -- *
  423         -- *  Check to  see if any  other job s of this  procedure  are runnin g.
  424         -- *   If yes,  then end t his job.
  425         -- *
  426         -- * ********** ********** ********** ********** ********** ********** ********** ****
  427  
  428         SELE CT COUNT(* )
  429           IN TO   VN_jo b_count
  430         FROM   SYS.DBA_ JOBS_RUNNI NG R,
  431                SYS.DBA_ JOBS J
  432         WHER E  J.JOB =  R.JOB
  433         AND  schema_use r = 'ADR'
  434         AND  upper(WHAT ) LIKE '%B ATCH_SSN_P ROCESSED_S P%';
  435  
  436  
  437         IF V N_job_coun t > 1 THEN
  438  
  439           VD _log_date  := SYSDATE ;
  440           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  441                     PD_ job_log_da te => VD_l og_date,
  442                     PC_ job_status  => SUBSTR ('WARNING      - Chec k for runn ing jobs', 1,60),
  443                     PC_ job_log_me ssage => S UBSTR('The re is anot her SSN VE RIFICATION  job runni ng.'
  444                                                 || ' Exi ting job w ithout run ning.',1,2 000),
  445                     PD_ date1 => V D_rec_grou p_date,
  446                     PC_ text1 => S UBSTR('Dat e1 column  contains t he daily p rocess sta rt date',1 ,255));
  447  
  448              RETURN;
  449  
  450         ELSI F VB_run_s tandalone  THEN
  451  
  452              VD_log_dat e := SYSDA TE;
  453              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  454                     PD_ job_log_da te => VD_l og_date,
  455                     PC_ job_status  => SUBSTR ('INFORMAT ION - Star ting in ST ANDALONE m ode',1,60) ,
  456                     PD_ date1 => V D_rec_grou p_date,
  457                     PC_ text1 => S UBSTR('Dat e1 column  contains t he daily p rocess sta rt date',1 ,255));
  458  
  459         ELSE
  460  
  461              SELECT     MAX(J.Job)
  462               INTO       VN_job_nu mber
  463              FROM       SYS.DBA_JO BS_RUNNING  R,
  464                         SYS.DBA_JO BS J
  465              WHERE      J.JOB = R. JOB
  466              AND        UPPER(J.WH AT) LIKE ' %ADR_ADDRE SS_Z05_UPD ATE_SP%';
  467  
  468              VD_log_dat e := SYSDA TE;
  469              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  470                       P D_job_log_ date => VD _log_date,
  471                       P C_job_stat us => SUBS TR('INFORM ATION - St arting DBM S_JOB mode ',1,60),
  472                       P D_date1 =>  VD_rec_gr oup_date,
  473                       P C_text1 =>  SUBSTR('D ate1 colum n contains  the daily  process s tart date' ,1,255));
  474  
  475         END  IF;
  476  
  477  
  478         EXCE PTION
  479  
  480          WHE N OTHERS T HEN
  481  
  482            V D_log_date  := SYSDAT E;
  483            A DRMGT.Job_ Process_Lo g_Sp(PC_jo b_name =>  SUBSTR(VC_ process_na me,1,60),
  484                       P D_job_log_ date => VD _log_date,
  485                       P C_job_stat us => SUBS TR('ERROR        - Un able to re trieve ins tance name ',1,60),
  486                       P C_job_log_ message =>  SUBSTR('T erminating  script.', 1,2000),
  487                       P D_date1 =>  VD_rec_gr oup_date,
  488                       P C_text1 =>  SUBSTR('D ate1 colum n contains  the daily  process s tart date' ,1,255));
  489  
  490            R ETURN;
  491  
  492      END;
  493  
  494  
  495      VC_log_ step := 'R etrieving  dir paths  for '||P_b atch_SSN_A DRToProces s_DIR;
  496  
  497      -- ==== ========== ========== ========== ========== ========== ========== ==
  498      --
  499      -- MAIN  PROGRAM
  500      --
  501      -- Retr ieving dir ectory pat hs of exte rnal files , log/erro r/processe d
  502      --
  503      -- ==== ========== ========== ========== ========== ========== ========== =
  504  
  505      SELECT  d.director y_path ,
  506              l.director y_path,
  507              err.direct ory_path,
  508              p.director y_path
  509      INTO
  510         VC_A DRToProces s_file_pat h,
  511         VC_l og_file_pa th,
  512         VC_e rror_file_ path,
  513         VC_T oProcess_f ile_path
  514      FROM al l_director ies d,
  515          (   SELECT dir ectory_pat h
  516              FROM  all_ directorie s
  517              WHERE dire ctory_name  = P_batch _SSN_log_D IR) l,
  518          (   SELECT dir ectory_pat h
  519              FROM  all_ directorie s
  520              WHERE dire ctory_name  = P_batch _SSN_err_D IR) err,
  521          (   SELECT dir ectory_pat h
  522              FROM  all_ directorie s
  523              WHERE dire ctory_name  = P_batch _SSN_ToPro cess_DIR)  p
  524      WHERE d .directory _name = P_ batch_SSN_ ADRToProce ss_DIR;
  525  
  526  
  527      ADRMGT. Job_Proces s_Log_Sp(
  528            P C_job_name  => SUBSTR (VC_proces s_name,1,6 0),
  529            P D_job_log_ date => SY SDATE,
  530            P C_job_stat us => SUBS TR('INFORM ATION - Pr ocess Init iation',1, 60),
  531            P C_job_log_ message =>  SUBSTR('I NFORMATION  - ADRToPr ocess DIR=  '||VC_ADR ToProcess_ file_path| |' ** '||
  532                                            'L og DIR= '| |P_batch_S SN_log_DIR ||' ** '||
  533                                            'E rror DIR=  '||P_batch _SSN_err_D IR||' ** ' ||
  534                                            'T oProcess D IR= '||VC_ ToProcess_ file_path| |' ** '||
  535                                            VC _log_step, 1,2000),
  536            P D_date1 =>  SYSDATE,
  537            P C_text1 =>  SUBSTR(VC _log_step, 1,255));
  538  
  539  
  540      IF VC_A DRtoProces s_file_pat h IS NULL  THEN
  541  
  542        VC_lo g_step :=  'Directory  path of A DRToProces s IS NOT s etup.';
  543  
  544        RAISE   FILE_PAT H_ADRTOPRO CESS_NULL_ E;
  545  
  546      ELSIF V C_ToProces s_file_pat h IS NULL  THEN
  547  
  548        VC_lo g_step :=  'Directory  path of T oProcessed  IS NOT se tup.';
  549        RAISE   FILE_PAT H_TOPROCES S_NULL_E;
  550  
  551      ELSIF V C_log_file _path IS N ULL THEN
  552  
  553        VC_lo g_step :=  'Directory  path of L og IS NOT  setup.';
  554        RAISE   LOG_FILE _PATH_NULL _E;
  555  
  556      ELSIF V C_error_fi le_path IS  NULL THEN
  557  
  558        VC_lo g_step :=  'Directory  path of E RROR IS NO T setup.';
  559        RAISE   ERROR_FI LE_PATH_NU LL_E;
  560  
  561      END IF;
  562  
  563      VC_TMP  := 0;
  564  
  565  
  566    -- ====== ========== ========== ========== ========== ========== ==
  567    --
  568    -- This w ill loop n umber of t imes to pr ocess each  source
  569    -- data f ile.  As r equired, t here will  be 2 files  processed
  570    --
  571    -- ====== ========== ========== ========== ========== ========== ==
  572  
  573    FOR I IN  1..P_num_f iles_proce ss LOOP
  574  
  575  
  576      SELECT  VC_prefix_ file||to_c har(sysdat e,'YY')||T O_CHAR(SYS DATE,'DDD' )||I||'.tx t'
  577         INTO  VC_file_n ame
  578      FROM du al;
  579  
  580      --DBMS_ OUTPUT.PUT _LINE('Fil e name: '| |VC_ADRToP rocess_fil e_path||'/ '||VC_file _name);
  581      VC_log_ step := 'P rocessing  File '||VC _file_name ;
  582  
  583      ADRMGT. Job_Proces s_Log_Sp(
  584            P C_job_name  => SUBSTR (VC_proces s_name,1,6 0),
  585            P D_job_log_ date => SY SDATE,
  586            P C_job_stat us => SUBS TR(VC_log_ step,1,60) ,
  587            P C_job_log_ message =>  SUBSTR('I NFORMATION  - '||VC_l og_step,1, 2000),
  588            P D_date1 =>  VD_rec_gr oup_date,
  589            P C_text1 =>  SUBSTR(VC _log_step, 1,255));
  590  
  591      -- ==== ========== ========== ========== ==========
  592      --
  593      -- Open ing source  data file  for readi ng and
  594      -- load ing into S SN_VERIFIC ATION and  details
  595      --
  596      -- ==== ========== ========== ========== ==========
  597      BEGIN
  598  
  599        VC_lo g_step :=  'Reading f ile '|| VC _file_name ;
  600        V_Fil e_handle : = UTL_FILE .FOPEN(P_b atch_SSN_A DRToProces s_DIR, VC_ file_name,  'R');
  601  
  602        ADRMG T.Job_Proc ess_Log_Sp (
  603                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  604                    PD_j ob_log_dat e => SYSDA TE,
  605                    PC_j ob_status  => SUBSTR( VC_log_ste p,1,60),
  606                    PC_j ob_log_mes sage => SU BSTR('INFO RMATION -  '||VC_log_ step,1,200 0),
  607                    PD_d ate1 => SY SDATE,
  608                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  609  
  610  
  611        -- == ========== ========== ========== ========== ========== =====
  612        --
  613        -- Ch ecking ext ernal tabl e existed  or nor pri or creatin g one
  614        --
  615        -- == ========== ========== ========== ========== ========== ======
  616        SELEC T COUNT(1)  INTO
  617          VC_ TMP
  618        FROM   all_exter nal_tables
  619        WHERE  table_nam e = CC_SSN _VERIFICAT ION_EXT;
  620  
  621        IF VC _TMP = 0    THEN
  622            V C_log_step  := 'Build ing SQLSTM NT create  Ext Tab.';
  623  
  624            V C_SQLSTMNT  :=
  625               'CREATE T ABLE ADR.' ||CC_SSN_V ERIFICATIO N_EXT||CHR (10)||
  626                    '(SS N          VARCHAR2(9 ), '         ||CHR(10 )||
  627                    'ENT RY_CODE        VARCHA R2(3),'      ||CHR(10 )||
  628                    'PRO CESSING_CO DE  VARCHA R2(3),'      ||CHR(10 )||
  629                    'LAS T_NAME         VARCHA R2(13),'     ||CHR(10 )||
  630                    'FIR ST_NAME        VARCHA R2(10),'     ||CHR(10 )||
  631                    'MID DLE_NAME       VARCHA R2(7),'      ||CHR(10 )||
  632                    'DOB                VARCHA R2(8),'      ||CHR(10 )||
  633                    'SEX                VARCHA R2(1),'      ||CHR(10 )||
  634                    'INC OME_YEAR       VARCHA R2(4),'      ||CHR(10 )||
  635                    'HEC _VA_ID         VARCHA R2(15),'     ||CHR(10 )||
  636                    'SPO USE_CODE       VARCHA R2(1),'      ||CHR(10 )||
  637                    'BLA NK_1           VARCHA R2(29),'     ||CHR(10 )||
  638                    'BLA NK_2           VARCHA R2(20),'     ||CHR(10 )||
  639                    'REQ UEST_CODE      VARCHA R2(4),'      ||CHR(10 )||
  640                    'BLA NK_3           VARCHA R2(3))'      ||CHR(10 )||
  641                    'ORG ANIZATION  EXTERNAL (  TYPE ORAC LE_LOADER'              ||CHR(10 )||
  642                    'DEF AULT DIREC TORY '|| C C_BATCH_SS N_ADRTOPRO CESS_DIR | |' ' ||CHR (10)||
  643                    'ACC ESS PARAME TERS (RECO RDS DELIMI TED BY NEW LINE '       ||CHR(10 )||
  644                    'BAD FILE '||CC _BATCH_SSN _ERR_DIR|| ':''' ||VC _prefix_fi le||'_%a_% p.err' ||' '' '         ||CHR(10 )||
  645                    'LOG FILE '||CC _BATCH_SSN _LOG_DIR|| ':''' ||VC _prefix_fi le||'_%a_% p.log' ||' '' '         ||CHR(10 )||
  646                    'FIE LDS ('                                          ||CHR( 10)||
  647                    'SSN            POSITION(1 :9) CHAR(9 ),'            ||CHR( 10)||
  648                    'ENT RY_CODE    POSITION(1 0:12) CHAR (3),'          ||CHR( 10)||
  649                    'PRO CESSING_CO DE  POSITI ON(13:15)  CHAR(3),'      ||CHR( 10)||
  650                    'LAS T_NAME     POSITION(1 6:28) CHAR (13),'         ||CHR( 10)||
  651                    'FIR ST_NAME    POSITION(2 9:38) CHAR (10),'         ||CHR( 10)||
  652                    'MID DLE_NAME   POSITION(3 9:45) CHAR (7),'          ||CHR( 10)||
  653                    'DOB            POSITION(4 6:53) CHAR (8),'          ||CHR( 10)||
  654                    'SEX            POSITION(5 4:54) CHAR (1),'          ||CHR( 10)||
  655                    'INC OME_YEAR   POSITION(5 5:58) CHAR (4),'          ||CHR( 10)||
  656                    'HEC _VA_ID     POSITION(5 9:73) CHAR (15),'         ||CHR( 10)||
  657                    'SPO USE_CODE   POSITION(7 4:74) CHAR (1),'          ||CHR( 10)||
  658                    'BLA NK_1       POSITION(7 5:103) CHA R(29),'        ||CHR( 10)||
  659                    'BLA NK_2       POSITION(1 04:123) CH AR(20),'       ||CHR( 10)||
  660                    'REQ UEST_CODE  POSITION(1 24:127) CH AR(4),'        ||CHR( 10)||
  661                    'BLA NK_3       POSITION(1 28:130) CH AR(3)'         ||CHR( 10)||
  662                    ') )  LOCATION  ('''||VC_f ile_name|| ''')) PARA LLEL 4 REJ ECT LIMIT  UNLIMITED' ;
  663  
  664  
  665            V C_log_step  := 'Creat ed Ext tab le '||VC_f ile_name;
  666  
  667            E XECUTE IMM EDIATE VC_ SQLSTMNT;
  668  
  669            A DRMGT.Job_ Process_Lo g_Sp(
  670                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  671                          PD_job_lo g_date =>  SYSDATE,
  672                          PC_job_st atus => SU BSTR('Exte rnal table  is on fil e '||VC_fi le_name,1, 60),
  673                          PC_job_lo g_message  => SUBSTR( 'INFORMATI ON - '||VC _log_step, 1,2000),
  674                          PD_date1  => SYSDATE ,
  675                          PC_text1  => SUBSTR( VC_log_ste p,1,255));
  676  
  677            V C_SQLSTMNT  := 'GRANT  SELECT ON  ADR.'|| C C_SSN_VERI FICATION_E XT||' TO A DR_R';
  678            E XECUTE IMM EDIATE VC_ SQLSTMNT;
  679  
  680        ELSE
  681  
  682            V C_log_step  := 'Modif ied Ext ta b on dataf ile '||VC_ file_name;
  683  
  684            V C_SQLSTMNT  := 'ALTER  TABLE ADR .'||CC_SSN _VERIFICAT ION_EXT||'  LOCATION  ('''||VC_f ile_name|| ''')';
  685  
  686  
  687            E XECUTE IMM EDIATE VC_ SQLSTMNT;
  688  
  689            A DRMGT.Job_ Process_Lo g_Sp(
  690                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  691                    PD_j ob_log_dat e => SYSDA TE,
  692                    PC_j ob_status  => SUBSTR( 'Ext table  '||CC_SSN _VERIFICAT ION_EXT||'  EXISTED.' ,1,60),
  693                    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),
  694                    PD_d ate1 => VD _rec_group _date,
  695                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  696  
  697        END I F;
  698  
  699        -- == ========== ========== ========== =
  700        --
  701        -- In sert rows  to SSN_VER IFICATION
  702        --
  703        -- == ========== ========== ========== =
  704        BEGIN   -- Inser t rows to  SSN_VERIFI CATION
  705  
  706           VC _log_step  := 'Get ne x sequence  number.';
  707  
  708           SE LECT TRANS ACTION_S.N EXTVAL INT O VN_SSN_V ER_ID
  709           FR OM DUAL;
  710  
  711           VC _log_step  := 'Add a  row into A DR.SSN_VER IFICATION' ;
  712  
  713           IN SERT /*+ A PPEND */IN TO ADR.SSN _VERIFICAT ION
  714            (  SSN_VERIF ICATION_ID ,
  715                    SSA_ SENT_DATE       ,
  716                    RECO RD_CREATED _BY  ,
  717                    RECO RD_CREATED _DATE ,
  718                    RECO RD_MODIFIE D_BY  ,
  719                    RECO RD_MODIFIE D_DATE ,
  720                    RECO RD_MODIFIE D_COUNT
  721            )
  722           VA LUES(VN_SS N_VER_ID,  SYSDATE, C C_JOB_SSN_ TERM_SOL,  SYSDATE, C C_JOB_SSN_ TERM_SOL,  SYSDATE,0) ;
  723  
  724  
  725           --  ========= ========== ========== ========== ====
  726           --
  727           --  Insert ro ws to SSN_ VERIFICATI ON_DETAIL
  728           --
  729           --  ========= ========== ========== ========== ====
  730           BE GIN  -- lo oping exte rnal table
  731  
  732              VN_num_row s_processe d := 0;
  733              VC_log_ste p := 'Loop ing extern al table ' ||CC_SSN_V ERIFICATIO N_EXT;
  734  
  735              FOR I IN ( SELECT bla nk_1, hec_ va_id, ssn  FROM ADR. SSN_VERIFI CATION_EXT ) LOOP
  736  
  737                 VN_vpid _value :=  I.blank_1;
  738  
  739                 BEGIN
  740  
  741                    VC_l og_step :=  'Obtainin g person i d using vp id_value=' ||VN_vpid_ value;
  742  
  743                    SELE CT p.perso n_id
  744                       I NTO VN_per son_id
  745                    FROM    person  p
  746                    WHER E p.vpid_v alue = VN_ vpid_value ;
  747  
  748                    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;
  749  
  750  
  751                    INSE RT /*+ APP END */ INT O ADR.SSN_ VERIFICATI ON_DETAIL
  752                    (
  753                             SSN_VE RIFICATION _DETAIL_ID  ,
  754                             SSN_VE RIFICATION _ID         ,
  755                             PERSON _ID                    ,
  756                             SSN_ID                        ,
  757                             SSN                            ,
  758                             VERIFI CATION_REQ UEST_NUMBE R ,
  759                             RECORD _CREATED_B Y            ,
  760                             RECORD _CREATED_D ATE          ,
  761                             RECORD _MODIFIED_ BY           ,
  762                             RECORD _MODIFIED_ DATE         ,
  763                             RECORD _MODIFIED_ COUNT
  764                    )
  765                    VALU ES( TRANSA CTION_S.NE XTVAL,
  766                             VN_SSN _VER_ID,
  767                             VN_per son_id,
  768                             NULL,
  769                             I.SSN,
  770                             I.HEC_ VA_ID,
  771                             CC_JOB _SSN_TERM_ SOL,
  772                             SYSDAT E,
  773                             CC_JOB _SSN_TERM_ SOL,
  774                             SYSDAT E,
  775                             0
  776                             );
  777  
  778                    IF V N_commit_c nt >= CC_M AX_ROWS_CO MMIT THEN
  779                       V N_commit_c nt := 0;
  780  
  781                       C OMMIT;
  782                    ELSE
  783                       V N_commit_c nt := VN_c ommit_cnt  + 1;
  784  
  785                    END  IF;
  786  
  787                    VN_n um_rows_pr ocessed :=  VN_num_ro ws_process ed + 1;
  788  
  789                    EXCE PTION
  790                       W HEN NO_DAT A_FOUND TH EN
  791  
  792                           ADRMGT.J ob_Process _Err_Sp(
  793                                PC_ job_name = > SUBSTR(V C_process_ name,1,60) ,
  794                                PD_ job_error_ date  => S YSDATE,
  795                                PC_ job_error_ code => SU BSTR(SQLCO DE,1,60),
  796                                PC_ job_error_ message =>  SUBSTR('E RROR: No D ATA FOUND  in PERSON  table of F ile '||VC_ file_name| |
  797                                      '. VPID_ VALUE= '|| VN_vpid_va lue||
  798                                      '==> No  row added  to SSN_VER IFICATION_ DETAIL. ER RMSG: ' ||  SQLERRM,1 ,2000),
  799                                PD_ date1 => S YSDATE,
  800                                PC_ text1 => S UBSTR(VC_l og_step||'  VPID_VALU E='||VN_vp id_value,1 ,255));
  801  
  802  
  803  
  804                       W HEN OTHERS  THEN
  805                             ADRMGT .Job_Proce ss_Err_Sp(
  806                                      PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  807                                      PD_job_e rror_date   => SYSDAT E,
  808                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  809                                      PC_job_e rror_messa ge => SUBS TR('ERROR:  Unknown E xception o f File '|| VC_file_na me||
  810                                               '. ' || SQ LERRM||' -  VPID_VALU E: '||VN_v pid_value, 1,2000),
  811                                      PD_date1  => SYSDAT E,
  812                                      PC_text1  => SUBSTR (VC_log_st ep||' VPID _VALUE='|| VN_vpid_va lue,1,255) );
  813  
  814                 END;    -- SSN_VER IFICATION_ DETAIL
  815  
  816              END LOOP;   -- SSN_VE RIFICATION _EXT
  817  
  818              -- ======= ========== ========== ========== ========== ========== =
  819              --
  820              --  Update  rows proc essed of S SN_VERIFIC ATION.  Ot herwise
  821              --  delete  SSN_VERIF ICATION wh en no reco rds matche d to
  822              --  detail  table (SS N_VERIFICA TION_DETAI L)
  823              --
  824              -- ======= ========== ========== ========== ========== ========== =
  825  
  826              VN_num_row s_beProces sed := 0;
  827  
  828              SELECT COU NT(1)
  829                 INTO VN _num_rows_ beProcesse d
  830              FROM ADR.S SN_VERIFIC ATION_EXT;
  831  
  832  
  833              IF VN_num_ rows_proce ssed > 0 T HEN
  834  
  835                  VC_log _step := ' Updating p rocessed r ows of SSN _VERIFICAT ION.';
  836  
  837                  MERGE  INTO ADR.S SN_VERIFIC ATION
  838                       U SING DUAL
  839                          ON (SSN_V ERIFICATIO N_ID = VN_ SSN_VER_ID )
  840                       W HEN MATCHE D THEN
  841                           UPDATE S ET SSN_SEN T_COUNT  =  VN_num_ro ws_process ed;
  842  
  843              ELSE
  844  
  845                  VC_log _step := ' Removing h eader reco rd in SSN_ VERIFICATI ON';
  846  
  847                  MERGE  INTO ADR.S SN_VERIFIC ATION
  848                       U SING DUAL
  849                       O N (SSN_VER IFICATION_ ID = VN_SS N_VER_ID)
  850                       W HEN MATCHE D THEN
  851                           UPDATE S ET SSN_SEN T_COUNT  =  VN_num_ro ws_process ed
  852                           DELETE W HERE SSN_V ERIFICATIO N_ID = VN_ SSN_VER_ID ;
  853  
  854              END IF;
  855              COMMIT;
  856  
  857              -- ======= ========== ========== ========== ========== ========== =
  858              --
  859              -- Moving  file name  to Process ed dir fro m toProces s folder
  860              --
  861              -- ======= ========== ========== ========== ========== ========== =
  862  
  863  
  864              VC_log_ste p := 'Movi ng file na me '|| VC_ file_name| |' to '||V C_ToProces s_file_pat h;
  865              --dbms_out put.put_li ne(VC_log_ step);
  866  
  867              VN_error_c ount:= VN_ num_rows_b eProcessed -VN_num_ro ws_process ed;
  868  
  869              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);
  870  
  871  
  872              ADRMGT.Job _Process_L og_Sp(
  873                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  874                    PD_j ob_log_dat e => SYSDA TE,
  875                    PC_j ob_status  => SUBSTR( 'INFORMATI ON - Proce ss Complet ed.',1,60) ,
  876                    PC_j ob_log_mes sage => SU BSTR('****  SUMMARY I NFO CHANGE S TO SSN_V ERIFICATIO N_DETAIL * ***'||CHR( 10)||
  877                                      '  Total  Rows Proc essed: '||  VN_num_ro ws_beProce ssed||CHR( 10)||
  878                                      '  Num R ows Added:  '|| VN_nu m_rows_pro cessed||CH R(10)||
  879                                      '  Num R ows Reject ed: '||VN_ error_coun t||CHR(10) ||
  880                                      '  File  Name '||VC _file_name ||' is now  moved to  '||VC_ToPr ocess_file _path||CHR (10)||
  881                                      '******* ********** **********  END TRANS ACTION *** ********** ********** ******',1, 2000),
  882                    PD_d ate1 => SY SDATE,
  883                    PC_t ext1 => SU BSTR(VC_lo g_step||'  VPID_VALUE ='||VN_vpi d_value,1, 255));
  884  
  885  
  886              EXCEPTION
  887                  WHEN O THERS THEN
  888                    ADRM GT.Job_Pro cess_Err_S p(
  889                             PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  890                             PD_job _error_dat e  => SYSD ATE,
  891                             PC_job _error_cod e => SUBST R(SQLCODE, 1,60),
  892                             PC_job _error_mes sage => SU BSTR('ERRO R: Unknown  Exception  of File ' ||VC_file_ name||
  893                                               '. ' || SQ LERRM||' -  VPID_VALU E: '||VN_v pid_value, 1,2000),
  894                             PD_dat e1 => SYSD ATE,
  895                             PC_tex t1 => SUBS TR(VC_log_ step||' VP ID_VALUE=' ||VN_vpid_ value,1,25 5));
  896  
  897           EN D; -- loop ing extern al table
  898  
  899  
  900           EX CEPTION
  901  
  902               WHEN UTL_ FILE.INVAL ID_PATH TH EN
  903  
  904                 ADRMGT. Job_Proces s_Err_Sp(
  905                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  906                    PD_j ob_error_d ate  => SY SDATE,
  907                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  908                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: Inval id PATH -  '||VC_ADRt oProcess_f ile_path||
  909                                               ' ERRMSG:  '||   SQLE RRM,1,2000 ),
  910                    PD_d ate1 => SY SDATE,
  911                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  912  
  913               WHEN UTL_ FILE.INVAL ID_FILENAM E THEN
  914  
  915                 ADRMGT. Job_Proces s_Log_Sp(
  916                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  917                    PD_j ob_log_dat e => SYSDA TE,
  918                    PC_j ob_status  => SUBSTR( VC_log_ste p,1,60),
  919                    PC_j ob_log_mes sage => SU BSTR('INFO RMATION -  Invalid fi le name '| | VC_file_ name,1,200 0),
  920                    PD_d ate1 => SY SDATE,
  921                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  922  
  923              WHEN NO_DA TA_FOUND T HEN
  924  
  925                ADRMGT.J ob_Process _Log_Sp(
  926                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  927                    PD_j ob_log_dat e => SYSDA TE,
  928                    PC_j ob_status  => SUBSTR( VC_log_ste p,1,60),
  929                    PC_j ob_log_mes sage => SU BSTR('INFO RMATION -  NO DATA FO UND of Fil e '||VC_fi le_name,1, 2000),
  930                    PD_d ate1 => SY SDATE,
  931                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  932  
  933              WHEN OTHER S THEN
  934  
  935                ADRMGT.J ob_Process _Err_Sp(
  936                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  937                    PD_j ob_error_d ate  => SY SDATE,
  938                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  939                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: Unkno wn Excepti on of File  '||VC_fil e_name||
  940                                               '. ' || SQ LERRM,1,20 00),
  941                    PD_d ate1 => VD _rec_group _date,
  942                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  943  
  944          END ;   -- SSN _VERIFICAT ION
  945  
  946       EXCEPT ION
  947  
  948         WHEN  UTL_FILE. INVALID_PA TH THEN
  949           AD RMGT.Job_P rocess_Err _Sp(
  950                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  951                    PD_j ob_error_d ate  => SY SDATE,
  952                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  953                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: Inval id PATH -  '||VC_ADRt oProcess_f ile_path||
  954                                               ' ERRMSG:  '||   SQLE RRM,1,2000 ),
  955                    PD_d ate1 => SY SDATE,
  956                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  957  
  958  
  959         WHEN  UTL_FILE. INVALID_FI LENAME THE N
  960  
  961  
  962           AD RMGT.Job_P rocess_Log _Sp(
  963                     PC_ job_name = > SUBSTR(V C_process_ name,1,60) ,
  964                     PD_ job_log_da te => SYSD ATE,
  965                     PC_ job_status  => SUBSTR (VC_log_st ep,1,60),
  966                     PC_ job_log_me ssage => S UBSTR('INF ORMATION -  Invalid f ile name ' || VC_file _name,1,20 00),
  967                     PD_ date1 => S YSDATE,
  968                     PC_ text1 => S UBSTR(VC_l og_step,1, 255));
  969  
  970  
  971         WHEN  UTL_FILE. INVALID_OP ERATION TH EN
  972  
  973  
  974           AD RMGT.Job_P rocess_Log _Sp(
  975                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  976                    PD_j ob_log_dat e => SYSDA TE,
  977                    PC_j ob_status  => SUBSTR( VC_log_ste p,1,60),
  978                    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),
  979                    PD_d ate1 => SY SDATE,
  980                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  981  
  982  
  983         WHEN  UTL_FILE. WRITE_ERRO R THEN
  984           AD RMGT.Job_P rocess_Err _Sp(
  985                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  986                    PD_j ob_error_d ate  => SY SDATE,
  987                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  988                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: Inval id Write E rror. ERRM SG: ' || S QLERRM,1,2 000),
  989                    PD_d ate1 => SY SDATE,
  990                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  991  
  992         WHEN  NO_DATA_F OUND THEN
  993           AD RMGT.Job_P rocess_Log _Sp(
  994                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  995                    PD_j ob_log_dat e => SYSDA TE,
  996                    PC_j ob_status  => SUBSTR( VC_log_ste p,1,60),
  997                    PC_j ob_log_mes sage => SU BSTR('INFO RMATION -  No DATA FO UND of Fil e '||VC_fi le_name,1, 2000),
  998                    PD_d ate1 => SY SDATE,
  999                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  1000  
  1001         WHEN  OTHERS TH EN
  1002  
  1003           AD RMGT.Job_P rocess_Err _Sp(
  1004                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  1005                    PD_j ob_error_d ate  => SY SDATE,
  1006                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  1007                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: Unkno wn Excepti on of File  '||VC_fil e_name||
  1008                                               '. ' || SQ LERRM||' -  VPID_VALU E: '||VN_v pid_value, 1,2000),
  1009                    PD_d ate1 => SY SDATE,
  1010                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  1011         END;
  1012  
  1013      END LOO P;
  1014  
  1015  
  1016      -- ==== ========== ========== ========== =========
  1017      --
  1018      -- Clea n up old l og records
  1019      --
  1020      -- ==== ========== ========== ========== =========
  1021      DELETE
  1022      FROM       ADRMGT. Job_Proces s_Logs
  1023      WHERE      Job_nam e = VC_pro cess_name
  1024      AND        TRUNC(D ATE1) < TR UNC(SYSDAT E) - VD_da ys_deletio n;
  1025  
  1026      COMMIT;
  1027  
  1028  
  1029  
  1030      VD_log_ date := SY SDATE;
  1031      t2 :=   DBMS_UTILI TY.get_tim e;
  1032  
  1033      ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (VC_proces s_name,1,6 0),
  1034                 PD_job_ log_date = > VD_log_d ate,
  1035                 PC_job_ status =>  SUBSTR('SU CCESS      - Processi ng Complet ed',1,60),
  1036                 PC_job_ log_messag e => SUBST R('Process ing Time ( sec): ' ||  TO_CHAR(( t2 - t1)/1 00),1,2000 ),
  1037                 PD_date 1 => VD_re c_group_da te,
  1038                 PC_text 1 => SUBST R('Date1 c olumn cont ains the d aily proce ss start d ate',1,255 ));
  1039  
  1040  
  1041      EXCEPTI ON
  1042  
  1043        WHEN  INVALID_SS N_ADRTOPRO CESS_E THE N
  1044            A DRMGT.Job_ Process_Er r_Sp(
  1045                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  1046                    PD_j ob_error_d ate  => SY SDATE,
  1047                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  1048                    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),
  1049                    PD_d ate1 => SY SDATE,
  1050                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  1051  
  1052        WHEN  INVALID_SS N_TOPROCES S_E        THEN
  1053            A DRMGT.Job_ Process_Er r_Sp(
  1054                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  1055                    PD_j ob_error_d ate  => SY SDATE,
  1056                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  1057                    PC_j ob_error_m essage =>  SUBSTR('ER ROR - Inva lid input  parameter  ToProcess:  '||P_batc h_SSN_ToPr ocess_DIR, 1,2000),
  1058                    PD_d ate1 => SY SDATE,
  1059                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  1060  
  1061  
  1062        WHEN  INVALID_SS N_LOG_E  T HEN
  1063  
  1064            A DRMGT.Job_ Process_Er r_Sp(
  1065                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  1066                    PD_j ob_error_d ate  => SY SDATE,
  1067                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  1068                    PC_j ob_error_m essage =>  SUBSTR('ER ROR - Inva lid input  parameter  Log: '||P_ batch_SSN_ log_DIR,1, 2000),
  1069                    PD_d ate1 => SY SDATE,
  1070                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  1071  
  1072        WHEN  INVALID_SS N_ERR_E TH EN
  1073            A DRMGT.Job_ Process_Er r_Sp(
  1074                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  1075                    PD_j ob_error_d ate  => SY SDATE,
  1076                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  1077                    PC_j ob_error_m essage =>  SUBSTR('ER ROR - Inva lid input  parameter  Error: '|| P_batch_SS N_err_DIR, 1,2000),
  1078                    PD_d ate1 => SY SDATE,
  1079                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  1080  
  1081        WHEN  NO_DATA_FO UND THEN
  1082  
  1083            A DRMGT.Job_ Process_Er r_Sp(
  1084                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  1085                    PD_j ob_error_d ate  => SY SDATE,
  1086                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  1087                    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),
  1088                    PD_d ate1 => SY SDATE,
  1089                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  1090  
  1091        WHEN  FILE_PATH_ TOPROCESS_ NULL_E THE N
  1092            A DRMGT.Job_ Process_Er r_Sp(
  1093                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  1094                    PD_j ob_error_d ate  => SY SDATE,
  1095                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  1096                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: '||P_ batch_SSN_ ToProcess_ DIR||' nee ds to be c onfigured.  ' || SQLE RRM,1,2000 ),
  1097                    PD_d ate1 => SY SDATE,
  1098                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  1099  
  1100  
  1101        WHEN  FILE_PATH_ ADRTOPROCE SS_NULL_E  THEN
  1102            A DRMGT.Job_ Process_Er r_Sp(
  1103                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  1104                    PD_j ob_error_d ate  => SY SDATE,
  1105                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  1106                    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),
  1107                    PD_d ate1 => SY SDATE,
  1108                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  1109  
  1110        WHEN  LOG_FILE_P ATH_NULL_E  THEN
  1111  
  1112            A DRMGT.Job_ Process_Er r_Sp(
  1113                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  1114                    PD_j ob_error_d ate  => SY SDATE,
  1115                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  1116                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: '||P_ batch_SSN_ log_DIR||'  needs to  be configu red. ' ||  SQLERRM,1, 2000),
  1117                    PD_d ate1 => SY SDATE,
  1118                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  1119  
  1120        WHEN  ERROR_FILE _PATH_NULL _E THEN
  1121  
  1122            A DRMGT.Job_ Process_Er r_Sp(
  1123                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  1124                    PD_j ob_error_d ate  => SY SDATE,
  1125                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  1126                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: '||P_ batch_SSN_ err_DIR||'  needs to  be configu red. ' ||  SQLERRM,1, 2000),
  1127                    PD_d ate1 => SY SDATE,
  1128                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  1129  
  1130        WHEN  OTHERS THE N
  1131  
  1132            A DRMGT.Job_ Process_Er r_Sp(
  1133                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  1134                    PD_j ob_error_d ate  => SY SDATE,
  1135                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  1136                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: Unkno wn Excepti on of File  '||VC_fil e_name||
  1137                                      '. ' ||  SQLERRM,1, 2000),
  1138                    PD_d ate1 => SY SDATE,
  1139                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  1140  
  1141    END;
  1142   /
  1143   DROP PROCE DURE ADR.R EBLD_ADR_C OM_MAIL_SE Q_SP;
  1144  
  1145   CREATE OR  REPLACE PR OCEDURE AD R.REBLD_AD R_COM_MAIL _SEQ_SP
  1146   IS
  1147   BEGIN
  1148     DECLARE
  1149  
  1150           sq l_stmt                  varchar2 (200);
  1151           er ror_code                varchar2 (25);
  1152           er ror_msg_te xt           varchar2 (200);
  1153           er ror_descr               varchar2 (200);
  1154  
  1155     BEGIN          -- P rocedure B ody Begin
  1156           sq l_stmt :=  'DROP SEQU ENCE COM_M AILING_BAR CODE_S';
  1157           DB MS_OUTPUT. PUT_LINE ( sql_stmt);
  1158           EX ECUTE IMME DIATE sql_ stmt;
  1159           sq l_stmt :=  'CREATE SE QUENCE COM _MAILING_B ARCODE_S';
  1160           sq l_stmt :=  sql_stmt | |' START W ITH 1 ';
  1161           sq l_stmt :=  sql_stmt | |' NOMAXVA LUE ';
  1162           sq l_stmt :=  sql_stmt | |' MINVALU E 1 ';
  1163           sq l_stmt :=  sql_stmt | |' NOCYCLE  ';
  1164           sq l_stmt :=  sql_stmt | |' CACHE 2 5 ';
  1165           sq l_stmt :=  sql_stmt | |' ORDER ' ;
  1166           DB MS_OUTPUT. PUT_LINE ( sql_stmt);
  1167           EX ECUTE IMME DIATE sql_ stmt;
  1168           sq l_stmt :=  'GRANT SEL ECT ON  CO M_MAILING_ BARCODE_S  TO ADR_SEQ _R';
  1169           DB MS_OUTPUT. PUT_LINE ( sql_stmt);
  1170           EX ECUTE IMME DIATE sql_ stmt;
  1171  
  1172  
  1173     EXCEPTIO N              -- Beg in Person  Trait Exce ption
  1174       WHEN N OT_LOGGED_ ON THEN
  1175           BE GIN
  1176              error_code              := SQLCO DE ;
  1177              error_msg_ text         := subst r(SQLERRM, 1,64);
  1178              error_desc r            := 'Not  logged in,  operation  has faile d: ';
  1179              DBMS_OUTPU T.PUT_LINE  (error_de scr);
  1180              DBMS_OUTPU T.PUT_LINE  (error_co de);
  1181              DBMS_OUTPU T.PUT_LINE  (error_ms g_text);
  1182           EN D;
  1183  
  1184       WHEN T IMEOUT_ON_ RESOURCE T HEN
  1185           BE GIN
  1186              error_code              := SQLCO DE ;
  1187              error_msg_ text         := subst r(SQLERRM, 1,64);
  1188              error_desc r            := 'Reso urce unava ilable, op eration ha s failed:  ';
  1189              DBMS_OUTPU T.PUT_LINE  (error_de scr);
  1190              DBMS_OUTPU T.PUT_LINE  (error_co de);
  1191              DBMS_OUTPU T.PUT_LINE  (error_ms g_text);
  1192           EN D;
  1193  
  1194       WHEN O THERS THEN
  1195           BE GIN
  1196              error_code              := SQLCO DE ;
  1197              error_msg_ text         := subst r(SQLERRM, 1,64);
  1198              error_desc r            := 'Erro r has occu rred, oper ation has  failed: ';
  1199              DBMS_OUTPU T.PUT_LINE  (error_de scr);
  1200              DBMS_OUTPU T.PUT_LINE  (error_co de);
  1201              DBMS_OUTPU T.PUT_LINE  (error_ms g_text);
  1202           EN D;
  1203  
  1204     END;           -- E nd Person  Trait PL/S QL Block
  1205  
  1206  
  1207   END REBLD_ ADR_COM_MA IL_SEQ_SP;
  1208   /
  1209   DROP PROCE DURE ADR.A DR_ADDRESS _Z05_UPDAT E_SP;
  1210  
  1211   CREATE OR  REPLACE PR OCEDURE AD R.Adr_Addr ess_Z05_Up date_Sp
  1212     (PB_run_ standalone
  1213        IN      BOOLEAN  DEFAULT FA LSE,
  1214      PB_allo w_rpt_inst
  1215        IN      BOOLEAN  DEFAULT FA LSE
  1216     )
  1217   IS
  1218  
  1219   -- ******* ********** ********** ********** ********** ********** ********** ********
  1220   -- * Proce dure: Adr_ Address_Z0 5_Update_S p
  1221   -- *
  1222   -- *  Temp orary 3.1  Address ta ble bug fi x to be ru n nightly.
  1223   -- *
  1224   -- *  - Se lects all  temporary  Address re cords wher e the Inst itution_id  or the
  1225   -- *    Ad dress_chan ge_src_typ e_id is NU LL
  1226   -- *  - If  Instituti on_id is N ULL, try t o find val id Institu tion_id an d update
  1227   -- *    co lumn with  new value.
  1228   -- *  - Re port any r ows where  the Instit ution_id c annot be s et.
  1229   -- *  - If  Address_c hange_src_ type_id is  NULL, upd ate column  with valu e of
  1230   -- *    14 66952
  1231   -- *
  1232   -- * Param eters:
  1233   -- *
  1234   -- *  PB_r un_standal one   Igno re DBMS_JO B logic fo r checking  running j obs.
  1235   -- *                         Def ault: FALS E
  1236   -- *
  1237   -- *  PB_a llow_rpt_i nst   Allo w stored p rocedure t o be submi tted in th e
  1238   -- *                        DBMS _JOB queue  on the AD R reportin g database s
  1239   -- *                         Def ault: FALS E
  1240   -- *
  1241   -- ******* ********** ********** ********** ********** ********** ********** ********
  1242   --
  1243   -- ======= ========== ========== ========== ========== ========== ========== ========
  1244   -- Date         Autho r             Descrip tion
  1245   -- ======= ========== ========== ========== ========== ========== ========== ========
  1246   -- 04/05/2 010  Craig  Wood         Created  for CCR 1 156.
  1247   -- 05/03/2 010  Craig  Wood         Add log ic to chec k for merg ed address  rows
  1248   --
  1249   -- ======= ========== ========== ========== ========== ========== ========== ========
  1250  
  1251   -- CONSTAN TS
  1252  
  1253     CC_temp_ addr_id                        C ONSTANT NU MBER := 14 49005;
  1254     CC_inst_ id_mask                        C ONSTANT VA RCHAR2(5)  := 'VAMC-' ;
  1255     CN_addr_ chg_src_ty pe                  C ONSTANT NU MBER := 14 66952;
  1256  
  1257   -- VARIABL ES
  1258  
  1259     VB_allow _rpt_inst                      B OOLEAN :=  FALSE;
  1260     VB_error                                B OOLEAN :=  FALSE;
  1261     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  1262     VB_updat e_row                          B OOLEAN :=  FALSE;
  1263  
  1264     VC_allow _rpt_inst                      V ARCHAR2(5)  := NULL;
  1265     VC_insta nce_name                       V ARCHAR2(16 );
  1266     VC_proce ss_duratio n                   V ARCHAR2(25 );
  1267     VC_proce ss_name                        V ARCHAR2(60 ) := 'ADR  Update Tem p Addresse s (Z05)';
  1268     VC_run_s tandalone                      V ARCHAR2(5)  := NULL;
  1269  
  1270     VD_log_d ate                            D ATE;
  1271     VD_proce ss_end_dat e                   D ATE;
  1272     VD_proce ss_start_d ate                 D ATE;
  1273     VD_rec_g roup_date                      D ATE;
  1274  
  1275     VN_addr_ chg_src_ty pe_id               N UMBER := 0 ;
  1276     VN_job_c ount                           N UMBER := 0 ;
  1277     VN_job_n umber                          N UMBER := 0 ;
  1278     VN_inst_ id_upd_cou nt                  N UMBER := 0 ;
  1279     VN_error _recs_coun t                   N UMBER := 0 ;
  1280     VN_no_in st_id_coun t                   N UMBER := 0 ;
  1281     VN_rec_c ount                           N UMBER := 0 ;
  1282     VN_src_t ype_upd_co unt                 N UMBER := 0 ;
  1283     VN_std_i nstitution _id                 N UMBER := 0 ;
  1284     VN_total _recs_coun t                   N UMBER := 0 ;
  1285  
  1286     CURSOR C _addr_rec  IS
  1287       SELECT     A.Addr ess_id,
  1288                  A.Pers on_id,
  1289                  A.Addr ess_change _src_type_ id,
  1290                  A.Std_ institutio n_id,
  1291                  A.Reco rd_created _by,
  1292                  A.Reco rd_modifie d_by
  1293       FROM       ADR.Ad dress A
  1294       WHERE      A.Std_ addresstyp e_id = CC_ temp_addr_ id
  1295       AND        (Std_i nstitution _id IS NUL L
  1296                  OR
  1297                   Addre ss_change_ src_type_i d IS NULL) ;
  1298  
  1299   -- ******* ********** ********** ********** ********** ********** ********** *******
  1300   -- *
  1301   -- *  MAIN  PROCEDURE :
  1302   -- *
  1303   -- *    AD R.Adr_Addr ess_Z05_Up date_Sp
  1304   -- *
  1305   -- ******* ********** ********** ********** ********** ********** ********** *******
  1306  
  1307   BEGIN
  1308  
  1309     VD_rec_g roup_date  := TRUNC(S YSDATE);
  1310  
  1311     VD_log_d ate := SYS DATE;
  1312     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  1313                                 PD _job_log_d ate => VD_ log_date,
  1314                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  1315                                 PD _date1 =>  VD_rec_gro up_date,
  1316                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  1317  
  1318   -- ******* ********** ********** ********** ********** ********** ********** ********
  1319   -- *
  1320   -- * Valid ate input  parameters
  1321   -- *
  1322   -- ******* ********** ********** ********** ********** ********** ********** ********
  1323  
  1324   -- * Check  run stand alone flag
  1325  
  1326     IF PB_ru n_standalo ne IS NULL
  1327      OR NOT  PB_run_sta ndalone TH EN
  1328  
  1329       VB_run _standalon e := FALSE ;
  1330       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  1331  
  1332     ELSE
  1333  
  1334       VB_run _standalon e := TRUE;
  1335       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  1336  
  1337     END IF;
  1338  
  1339   -- * Check  run on re port insta nce flag
  1340  
  1341     IF PB_al low_rpt_in st IS NULL
  1342      OR NOT  PB_allow_r pt_inst TH EN
  1343  
  1344       VB_all ow_rpt_ins t := FALSE ;
  1345       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  1346  
  1347     ELSE
  1348  
  1349       VB_all ow_rpt_ins t := TRUE;
  1350       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  1351  
  1352     END IF;
  1353  
  1354     VD_log_d ate := SYS DATE;
  1355     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  1356                                 PD _job_log_d ate => VD_ log_date,
  1357                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cessing pa rameters f or this jo b',1,60),
  1358                                 PC _job_log_m essage =>  SUBSTR('Cu rrent job  parameters  - '
  1359                                                              || ' R un standal one: ' ||  VC_run_sta ndalone
  1360                                                              || ' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  1361                                 PD _date1 =>  VD_rec_gro up_date,
  1362                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  1363  
  1364   -- ******* ********** ********** ********** ********** ********** ********** ********
  1365   -- *
  1366   -- * Check  to see if  process i s running  on a repor ting datab ase.
  1367   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  1368   -- *
  1369   -- ******* ********** ********** ********** ********** ********** ********** ********
  1370  
  1371     IF NOT V B_allow_rp t_inst THE N
  1372  
  1373       BEGIN
  1374  
  1375         VD_l og_date :=  SYSDATE;
  1376         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  1377                                      PD_job_l og_date =>  VD_log_da te,
  1378                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  1379                                      PD_date1  => VD_rec _group_dat e,
  1380                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1381  
  1382         SELE CT    Inst ance_name
  1383         INTO       VC_i nstance_na me
  1384         FROM       V$in stance;
  1385  
  1386         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  1387  
  1388           VD _log_date  := SYSDATE ;
  1389           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  1390                                        PD_job _log_date  => VD_log_ date,
  1391                                        PC_job _status =>  SUBSTR('W ARNING      - Process ing Failed ',1,60),
  1392                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  1393                                                                     || VC_inst ance_name
  1394                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  1395                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  1396                                        PD_dat e1 => VD_r ec_group_d ate,
  1397                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  1398  
  1399           RE TURN;
  1400  
  1401         END  IF;
  1402  
  1403       EXCEPT ION
  1404  
  1405         WHEN  OTHERS TH EN
  1406  
  1407           VD _log_date  := SYSDATE ;
  1408           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  1409                                        PD_job _log_date  => VD_log_ date,
  1410                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  1411                                        PC_job _log_messa ge => SUBS TR('Termin ating scri pt.',1,200 0),
  1412                                        PD_dat e1 => VD_r ec_group_d ate,
  1413                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  1414  
  1415           RE TURN;
  1416  
  1417       END;
  1418  
  1419     END IF;
  1420  
  1421   -- ******* ********** ********** ********** ********** ********** ********** ********
  1422   -- *
  1423   -- * Check  to see if  the job h as already  run today
  1424   -- *  - If  running i n stand-al one mode,  don't chec k.
  1425   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  1426   -- *
  1427   -- ******* ********** ********** ********** ********** ********** ********** ********
  1428  
  1429     IF NOT P B_run_stan dalone THE N
  1430  
  1431       BEGIN
  1432  
  1433         SELE CT    COUN T(*)
  1434         INTO       VN_r ec_count
  1435         FROM       ADRM GT.Job_Pro cess_Logs
  1436         WHER E     Job_ name = VC_ process_na me
  1437         AND        Date 1 = VD_rec _group_dat e
  1438         AND        Job_ status = ' SUCCESS      - Proces sing Compl eted';
  1439  
  1440         IF V N_rec_coun t > 0 THEN
  1441  
  1442           VD _log_date  := SYSDATE ;
  1443           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  1444                                        PD_job _log_date  => VD_log_ date,
  1445                                        PC_job _status =>  SUBSTR('I NFORMATION  - This da te has alr eady been  processed' ,1,60),
  1446                                        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),
  1447                                        PD_dat e1 => VD_r ec_group_d ate,
  1448                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  1449  
  1450           RE TURN;
  1451  
  1452         END  IF;
  1453  
  1454       EXCEPT ION
  1455  
  1456         WHEN  OTHERS TH EN
  1457  
  1458           VD _log_date  := SYSDATE ;
  1459           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  1460                                        PD_job _log_date  => VD_log_ date,
  1461                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  1462                                        PC_job _log_messa ge => SUBS TR('Termin ating scri pt.',1,200 0),
  1463                                        PD_dat e1 => VD_r ec_group_d ate,
  1464                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  1465  
  1466           RE TURN;
  1467  
  1468       END;
  1469  
  1470     END IF;
  1471  
  1472   -- ******* ********** ********** ********** ********** ********** ********** ********
  1473   -- *
  1474   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  1475   -- *  - If  yes, then  end this  job.
  1476   -- *
  1477   -- ******* ********** ********** ********** ********** ********** ********** ********
  1478  
  1479     SELECT C OUNT(*)
  1480     INTO   V N_job_coun t
  1481     FROM   S YS.DBA_JOB S_RUNNING  R,
  1482            S YS.DBA_JOB S J
  1483     WHERE  J .JOB = R.J OB
  1484     AND    U PPER(J.WHA T) LIKE '% ADR_ADDRES S_Z05_UPDA TE_SP%';
  1485  
  1486     IF VN_jo b_count >  1 THEN
  1487  
  1488       VD_log _date := S YSDATE;
  1489       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  1490                                    PD_job_log _date => V D_log_date ,
  1491                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  1492                                    PC_job_log _message = > SUBSTR(' There is a nother add ress (Z05)  update jo b running. '
  1493                                                                || '  Exiting j ob without  running.' ,1,2000),
  1494                                    PD_date1 = > VD_rec_g roup_date,
  1495                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1496  
  1497       RETURN ;
  1498  
  1499     ELSE
  1500  
  1501       IF VB_ run_standa lone THEN
  1502  
  1503         VD_l og_date :=  SYSDATE;
  1504         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  1505                                      PD_job_l og_date =>  VD_log_da te,
  1506                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  1507                                      PD_date1  => VD_rec _group_dat e,
  1508                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1509  
  1510       ELSE
  1511  
  1512         SELE CT    MAX( J.Job)
  1513         INTO       VN_j ob_number
  1514         FROM       SYS. DBA_JOBS_R UNNING R,
  1515                    SYS. DBA_JOBS J
  1516         WHER E     J.JO B = R.JOB
  1517         AND        UPPE R(J.WHAT)  LIKE '%ADR _ADDRESS_Z 05_UPDATE_ SP%';
  1518  
  1519         VD_l og_date :=  SYSDATE;
  1520         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  1521                                      PD_job_l og_date =>  VD_log_da te,
  1522                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  1523                                      PD_date1  => VD_rec _group_dat e,
  1524                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1525  
  1526       END IF ;
  1527  
  1528     END IF;
  1529  
  1530   -- ******* ********** ********** ********** ********** ********** ********** ********
  1531   -- *
  1532   -- * Main  processing  loop
  1533   -- *
  1534   -- ******* ********** ********** ********** ********** ********** ********** ********
  1535  
  1536     VN_error _recs_coun t := 0;
  1537     VN_inst_ id_upd_cou nt := 0;
  1538     VN_no_in st_id_coun t := 0;
  1539     VN_src_t ype_upd_co unt := 0;
  1540     VN_total _recs_coun t := 0;
  1541  
  1542     VD_proce ss_start_d ate := SYS DATE;
  1543  
  1544   -- Remove  all proces s logs ove r 14 days  old
  1545  
  1546     BEGIN
  1547  
  1548       VD_log _date := S YSDATE;
  1549       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  1550                                    PD_job_log _date => V D_log_date ,
  1551                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  1552                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over 14  days old', 1,2000),
  1553                                    PD_date1 = > VD_rec_g roup_date,
  1554                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1555  
  1556       DELETE
  1557       FROM       ADRMGT .Job_Proce ss_Logs
  1558       WHERE      Job_na me = VC_pr ocess_name
  1559       AND        Date1  < TRUNC(SY SDATE) - 1 4;
  1560  
  1561       COMMIT ;
  1562  
  1563       VD_log _date := S YSDATE;
  1564       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  1565                                    PD_job_log _date => V D_log_date ,
  1566                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  1567                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over 14 d ays old',1 ,2000),
  1568                                    PD_date1 = > VD_rec_g roup_date,
  1569                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1570  
  1571  
  1572     EXCEPTIO N
  1573  
  1574       WHEN N O_DATA_FOU ND THEN
  1575  
  1576         NULL ;
  1577  
  1578       WHEN O THERS THEN
  1579  
  1580         VD_l og_date :=  SYSDATE;
  1581         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  1582                                      PD_job_e rror_date   => VD_log _date,
  1583                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  1584                                      PC_job_e rror_messa ge => SUBS TR('Unknow n error wh ile removi ng old pro cess logs.  '
  1585                                                                        || SQLE RRM,1,2000 ),
  1586                                      PD_date1  => VD_rec _group_dat e,
  1587                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1588  
  1589     END;
  1590  
  1591   -- Remove  all proces s errors o ver 14 day s old
  1592  
  1593     BEGIN
  1594  
  1595       VD_log _date := S YSDATE;
  1596       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  1597                                    PD_job_log _date => V D_log_date ,
  1598                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  1599                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over 1 4 days old ',1,2000),
  1600                                    PD_date1 = > VD_rec_g roup_date,
  1601                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1602  
  1603       DELETE
  1604       FROM       ADRMGT .Job_Proce ss_Errs
  1605       WHERE      Job_na me = VC_pr ocess_name
  1606       AND        Date1  < TRUNC(SY SDATE) - 1 4;
  1607  
  1608       COMMIT ;
  1609  
  1610       VD_log _date := S YSDATE;
  1611       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  1612                                    PD_job_log _date => V D_log_date ,
  1613                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  1614                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over 14  days old' ,1,2000),
  1615                                    PD_date1 = > VD_rec_g roup_date,
  1616                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1617  
  1618     EXCEPTIO N
  1619  
  1620       WHEN N O_DATA_FOU ND THEN
  1621  
  1622         NULL ;
  1623  
  1624       WHEN O THERS THEN
  1625  
  1626         VD_l og_date :=  SYSDATE;
  1627         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  1628                                      PD_job_e rror_date   => VD_log _date,
  1629                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  1630                                      PC_job_e rror_messa ge => SUBS TR('Unknow n error wh ile removi ng old pro cess error s. '
  1631                                                                        || SQLE RRM,1,2000 ),
  1632                                      PD_date1  => VD_rec _group_dat e,
  1633                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1634  
  1635     END;
  1636  
  1637   -- Main re cord curso r logic
  1638  
  1639     FOR I_ad dr_rec IN  C_addr_rec  LOOP
  1640  
  1641       VB_err or := FALS E;
  1642       VB_upd ate_row :=  FALSE;
  1643       VN_tot al_recs_co unt := VN_ total_recs _count + 1 ;
  1644       VN_add r_chg_src_ type_id :=  I_addr_re c.Address_ change_src _type_id;
  1645       VN_std _instituti on_id := I _addr_rec. Std_instit ution_id;
  1646  
  1647   -- Logic f or Address _change_sr c_type_id
  1648  
  1649       IF VN_ addr_chg_s rc_type_id  IS NULL T HEN
  1650  
  1651         VN_a ddr_chg_sr c_type_id  := CN_addr _chg_src_t ype;
  1652         VB_u pdate_row  := TRUE;
  1653         VN_s rc_type_up d_count :=  VN_src_ty pe_upd_cou nt + 1;
  1654  
  1655       END IF ;
  1656  
  1657   -- Logic f or Std_ins titution_i d
  1658  
  1659       IF VN_ std_instit ution_id I S NULL THE N
  1660  
  1661   --   First  try for s tation num ber from r ecord_modi fied_by co lumn
  1662  
  1663         IF I _addr_rec. Record_mod ified_by L IKE CC_ins t_id_mask  || '%' THE N
  1664  
  1665           BE GIN
  1666  
  1667              SELECT     Id
  1668              INTO       VN_std_ins titution_i d
  1669              FROM       Std_Instit ution
  1670              WHERE      Stationnum ber = SUBS TR(I_addr_ rec.Record _modified_ by,
  1671                                                  6,
  1672                                                  LENGTH( I_addr_rec .Record_mo dified_by) -5);
  1673  
  1674              VB_update_ row := TRU E;
  1675              VN_inst_id _upd_count  := VN_ins t_id_upd_c ount + 1;
  1676  
  1677           EX CEPTION
  1678  
  1679              WHEN NO_DA TA_FOUND T HEN
  1680  
  1681                NULL;
  1682  
  1683              WHEN OTHER S THEN
  1684  
  1685                VB_error  := TRUE;
  1686                VN_error _recs_coun t := VN_er ror_recs_c ount + 1;
  1687  
  1688                VD_log_d ate := SYS DATE;
  1689                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  1690                                            PD _job_error _date  =>  VD_log_dat e,
  1691                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  1692                                            PC _job_error _message = > SUBSTR(' Unknown er ror while  fetching S td_institu tion_id fr om Record_ modified_b y.'
  1693                                                                           || '  Std_insti tution_id:  '
  1694                                                                           || S UBSTR(I_ad dr_rec.Rec ord_modifi ed_by,6,LE NGTH(I_add r_rec.Reco rd_modifie d_by)-5)
  1695                                                                           || ' . '
  1696                                                                           || S QLERRM,1,2 000),
  1697                                            PD _date1 =>  VD_rec_gro up_date,
  1698                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  1699                                            PN _numeric1  => I_addr_ rec.Addres s_id);
  1700  
  1701           EN D;
  1702  
  1703         END  IF;
  1704  
  1705   --   If st ill no ins titution_i d, try for  station n umber from  record_cr eated_by c olumn
  1706  
  1707         IF N OT VB_erro r
  1708          AND  VN_std_in stitution_ id IS NULL
  1709          AND  I_addr_re c.Record_c reated_by  LIKE CC_in st_id_mask  || '%' TH EN
  1710  
  1711           BE GIN
  1712  
  1713              SELECT     Id
  1714              INTO       VN_std_ins titution_i d
  1715              FROM       Std_Instit ution
  1716              WHERE      Stationnum ber = SUBS TR(I_addr_ rec.Record _created_b y,
  1717                                                  6,
  1718                                                  LENGTH( I_addr_rec .Record_cr eated_by)- 5);
  1719  
  1720              VB_update_ row := TRU E;
  1721              VN_inst_id _upd_count  := VN_ins t_id_upd_c ount + 1;
  1722  
  1723           EX CEPTION
  1724  
  1725              WHEN NO_DA TA_FOUND T HEN
  1726  
  1727                NULL;
  1728  
  1729              WHEN OTHER S THEN
  1730  
  1731                VB_error  := TRUE;
  1732                VN_error _recs_coun t := VN_er ror_recs_c ount + 1;
  1733  
  1734                VD_log_d ate := SYS DATE;
  1735                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  1736                                            PD _job_error _date  =>  VD_log_dat e,
  1737                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  1738                                            PC _job_error _message = > SUBSTR(' Unknown er ror while  fetching S td_institu tion_id fr om Record_ created_by .'
  1739                                                                           || '  Std_insti tution_id:  '
  1740                                                                           || S UBSTR(I_ad dr_rec.Rec ord_create d_by,6,LEN GTH(I_addr _rec.Recor d_created_ by)-5)
  1741                                                                           || ' .'
  1742                                                                           || S QLERRM,1,2 000),
  1743                                            PD _date1 =>  VD_rec_gro up_date,
  1744                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  1745                                            PN _numeric1  => I_addr_ rec.Addres s_id);
  1746  
  1747           EN D;
  1748  
  1749         END  IF;
  1750  
  1751   --   If st ill no ins titution_i d, try for  instituti on_id from  address h istory
  1752  
  1753         IF N OT VB_erro r
  1754          AND  VN_std_in stitution_ id IS NULL  THEN
  1755  
  1756           BE GIN
  1757  
  1758              SELECT     A1.Std_ins titution_i d
  1759              INTO       VN_std_ins titution_i d
  1760              FROM       ADR.Addres s_H A1
  1761              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
  1762              AND        A1.Address _h_id =
  1763                           (SELECT     MAX(A2. Address_h_ id)
  1764                            FROM       ADR.Add ress_H A2
  1765                            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
  1766                            AND        A2.Addr ess_Id = I _addr_rec. Address_id
  1767                            AND        A2.Std_ institutio n_id IS NO T NULL
  1768                            AND        A2.Tran saction_ty pe_code !=  'D');
  1769  
  1770              VB_update_ row := TRU E;
  1771              VN_inst_id _upd_count  := VN_ins t_id_upd_c ount + 1;
  1772  
  1773           EX CEPTION
  1774  
  1775              WHEN NO_DA TA_FOUND T HEN
  1776  
  1777                NULL;
  1778  
  1779              WHEN OTHER S THEN
  1780  
  1781                VB_error  := TRUE;
  1782                VN_error _recs_coun t := VN_er ror_recs_c ount + 1;
  1783  
  1784                VD_log_d ate := SYS DATE;
  1785                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  1786                                            PD _job_error _date  =>  VD_log_dat e,
  1787                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  1788                                            PC _job_error _message = > SUBSTR(' Unknown er ror while  fetching S td_institu tion_id fr om Address _H table.'
  1789                                                                           || S QLERRM,1,2 000),
  1790                                            PD _date1 =>  VD_rec_gro up_date,
  1791                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  1792                                            PN _numeric1  => I_addr_ rec.Addres s_id);
  1793  
  1794           EN D;
  1795  
  1796         END  IF;
  1797  
  1798   --   If st ill no ins titution_i d, try for  instituti on_id from  merged pe rson addre ss history
  1799  
  1800         IF N OT VB_erro r
  1801          AND  VN_std_in stitution_ id IS NULL  THEN
  1802  
  1803           BE GIN
  1804  
  1805              SELECT     AH.Std_ins titution_i d
  1806              INTO       VN_std_ins titution_i d
  1807              FROM       ADR.Person _Merge PM,
  1808                         ADR.Addres s_H AH
  1809              WHERE      PM.Primary _person_id  = I_addr_ rec.Person _id
  1810              AND        AH.Address _h_id =
  1811                         (SELECT     MAX(AH2.A ddress_h_i d)
  1812                          FROM       ADR.Addre ss_H AH2
  1813                          WHERE      AH2.Perso n_id = PM. Deprecated _person_id
  1814                          AND        AH2.Std_a ddresstype _id = CC_t emp_addr_i d
  1815                          AND        AH2.Std_i nstitution _id IS NOT  NULL);
  1816  
  1817              VB_update_ row := TRU E;
  1818              VN_inst_id _upd_count  := VN_ins t_id_upd_c ount + 1;
  1819  
  1820           EX CEPTION
  1821  
  1822              WHEN NO_DA TA_FOUND T HEN
  1823  
  1824                NULL;
  1825  
  1826              WHEN OTHER S THEN
  1827  
  1828                VB_error  := TRUE;
  1829                VN_error _recs_coun t := VN_er ror_recs_c ount + 1;
  1830  
  1831                VD_log_d ate := SYS DATE;
  1832                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  1833                                            PD _job_error _date  =>  VD_log_dat e,
  1834                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  1835                                            PC _job_error _message = > SUBSTR(' Unknown er ror while  fetching S td_institu tion_id '
  1836                                                                           ||'f rom merged  person Ad dress_H ta ble.'
  1837                                                                           || S QLERRM,1,2 000),
  1838                                            PD _date1 =>  VD_rec_gro up_date,
  1839                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  1840                                            PN _numeric1  => I_addr_ rec.Addres s_id);
  1841  
  1842           EN D;
  1843  
  1844         END  IF;
  1845  
  1846   --   If st ill no ins titution_i d, it's to ast. Write  an error.
  1847  
  1848  
  1849         IF N OT VB_erro r
  1850          AND  VN_std_in stitution_ id IS NULL  THEN
  1851  
  1852           VN _no_inst_i d_count :=  VN_no_ins t_id_count  + 1;
  1853  
  1854           VD _log_date  := SYSDATE ;
  1855           AD RMGT.Job_P rocess_Err _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  1856                                        PD_job _error_dat e  => VD_l og_date,
  1857                                        PC_job _error_cod e => SUBST R(SQLCODE, 1,60),
  1858                                        PC_job _error_mes sage => SU BSTR('No i nstitution  ID found  for this a ddress row .',1,2000) ,
  1859                                        PD_dat e1 => VD_r ec_group_d ate,
  1860                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5),
  1861                                        PN_num eric1 => I _addr_rec. Address_id );
  1862  
  1863         END  IF;
  1864  
  1865       END IF ;
  1866  
  1867       IF VB_ update_row  THEN
  1868  
  1869         BEGI N
  1870  
  1871           UP DATE    AD R.Address
  1872           SE T       Ad dress_chan ge_src_typ e_id = VN_ addr_chg_s rc_type_id ,
  1873                      St d_institut ion_id = V N_std_inst itution_id ,
  1874                      Re cord_modif ied_by = ' ADRCQ00001 162',
  1875                      Re cord_modif ied_date =  SYSDATE,
  1876                      Re cord_modif ied_count  = Record_m odified_co unt + 1
  1877           WH ERE     Ad dress_id =  I_addr_re c.Address_ id;
  1878  
  1879           CO MMIT;
  1880  
  1881         EXCE PTION
  1882  
  1883           WH EN OTHERS  THEN
  1884  
  1885              VN_error_r ecs_count  := VN_erro r_recs_cou nt + 1;
  1886  
  1887              ROLLBACK;
  1888  
  1889              VD_log_dat e := SYSDA TE;
  1890              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  1891                                          PD_j ob_error_d ate  => VD _log_date,
  1892                                          PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  1893                                          PC_j ob_error_m essage =>  SUBSTR('Un known erro r while up dating ADR .Address r ow.'
  1894                                                                         || SQL ERRM,1,200 0),
  1895                                          PD_d ate1 => VD _rec_group _date,
  1896                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255),
  1897                                          PN_n umeric1 =>  I_addr_re c.Address_ id);
  1898  
  1899         END;
  1900  
  1901       END IF ;
  1902  
  1903     END LOOP ;
  1904  
  1905   -- Process  completio n informat ion
  1906  
  1907     VD_log_d ate := SYS DATE;
  1908     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  1909                                 PD _job_log_d ate => VD_ log_date,
  1910                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Stati stics',1,6 0),
  1911                                 PD _date1 =>  VD_rec_gro up_date,
  1912                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  1913                                 PN _numeric2  => VN_tota l_recs_cou nt,
  1914                                 PC _text2 =>  SUBSTR('Te mp address es reviewe d',1,255)) ;
  1915  
  1916     VD_log_d ate := SYS DATE;
  1917     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  1918                                 PD _job_log_d ate => VD_ log_date,
  1919                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Stati stics',1,6 0),
  1920                                 PD _date1 =>  VD_rec_gro up_date,
  1921                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  1922                                 PN _numeric2  => VN_src_ type_upd_c ount,
  1923                                 PC _text2 =>  SUBSTR('Ch ange sourc e types up dated',1,2 55));
  1924  
  1925     VD_log_d ate := SYS DATE;
  1926     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  1927                                 PD _job_log_d ate => VD_ log_date,
  1928                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Stati stics',1,6 0),
  1929                                 PD _date1 =>  VD_rec_gro up_date,
  1930                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  1931                                 PN _numeric2  => VN_inst _id_upd_co unt,
  1932                                 PC _text2 =>  SUBSTR('In stitution  IDs update d',1,255)) ;
  1933  
  1934     VD_log_d ate := SYS DATE;
  1935     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  1936                                 PD _job_log_d ate => VD_ log_date,
  1937                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Stati stics',1,6 0),
  1938                                 PD _date1 =>  VD_rec_gro up_date,
  1939                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  1940                                 PN _numeric2  => VN_no_i nst_id_cou nt,
  1941                                 PC _text2 =>  SUBSTR('In stitution  IDs not up dated',1,2 55));
  1942  
  1943     VD_log_d ate := SYS DATE;
  1944     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  1945                                 PD _job_log_d ate => VD_ log_date,
  1946                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Stati stics',1,6 0),
  1947                                 PD _date1 =>  VD_rec_gro up_date,
  1948                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  1949                                 PN _numeric2  => VN_erro r_recs_cou nt,
  1950                                 PC _text2 =>  SUBSTR('** *Errors up dating add ress rows* **',1,255) );
  1951  
  1952     VD_proce ss_end_dat e := SYSDA TE;
  1953     VC_proce ss_duratio n := LTRIM (TO_CHAR(T RUNC((VD_p rocess_end _date - VD _process_s tart_date) *24),'00') ) || ' Hrs  '
  1954                              || LT RIM(TO_CHA R(TRUNC((( (VD_proces s_end_date  - VD_proc ess_start_ date)*24)-
  1955                                 TR UNC(((VD_p rocess_end _date - VD _process_s tart_date) *24))) * 6 0),'00'))  || ' Mins  '
  1956                              || LT RIM(TO_CHA R(TRUNC((( (VD_proces s_end_date  - VD_proc ess_start_ date)*24*6 0)-
  1957                                 TR UNC(((VD_p rocess_end _date - VD _process_s tart_date) *24*60)))  * 60),'00' )) || ' Se cs';
  1958  
  1959     VD_log_d ate := SYS DATE;
  1960     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  1961                                 PD _job_log_d ate => VD_ log_date,
  1962                                 PC _job_statu s => SUBST R('SUCCESS      - Pro cessing Co mpleted',1 ,60),
  1963                                 PC _job_log_m essage =>  SUBSTR('Pr ocessing T ime: ' ||  VC_process _duration, 1,2000),
  1964                                 PD _date1 =>  VD_rec_gro up_date,
  1965                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  1966  
  1967   EXCEPTION
  1968  
  1969     WHEN OTH ERS THEN
  1970  
  1971       ROLLBA CK;
  1972  
  1973       VD_log _date := S YSDATE;
  1974       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  1975                                    PD_job_err or_date  = > VD_log_d ate,
  1976                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  1977                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Adr_Addres s_Z05_Upda te_Sp.'
  1978                                                                  ||  SQLERRM,1 ,2000),
  1979                                    PD_date1 = > VD_rec_g roup_date,
  1980                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1981  
  1982       VD_log _date := S YSDATE;
  1983       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  1984                                    PD_job_log _date => V D_log_date ,
  1985                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  1986                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  1987                                    PD_date1 = > VD_rec_g roup_date,
  1988                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1989  
  1990   END Adr_Ad dress_Z05_ Update_Sp;
  1991   /
  1992   DROP PROCE DURE ADR.A DR_INCOME_ TEST_FIX_S P;
  1993  
  1994   CREATE OR  REPLACE PR OCEDURE AD R.Adr_Inco me_Test_Fi x_Sp
  1995     (p_run_s tandalone
  1996        IN      BOOLEAN  DEFAULT FA LSE,
  1997      p_allow _rpt_inst
  1998        IN      BOOLEAN  DEFAULT FA LSE
  1999     )
  2000   IS
  2001  
  2002   -- ******* ********** ********** ********** ********** ********** ********** ********
  2003   -- * Proce dure: Adr_ Income_Tes t_Fix_Sp
  2004   -- *
  2005   -- *  Fix  data in In come_Test  table from  applicati on bug to  be run nig htly.
  2006   -- *
  2007   -- *  - 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
  2008   --  *  And   the futu re_test_fl ag = 1
  2009   -- *    An d there is  also an I ncome_Test  table rec ord Wherfu ture_test_ flag = 0
  2010   -- *  -And   there is  a record  where the  income_tes t_effectiv e_date = M AX(income_ test_effec tive_date)
  2011   -- *   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
  2012   -- *
  2013   -- *  - It  then sele cts the cu rrent year  records f or each in dividual i n the futu re Income_ Test query
  2014   -- *    Wh ere future _test_flag  = 0
  2015   -- *
  2016   -- *  It t hen update s income_t est with c orrect inf ormation.
  2017   -- *
  2018   -- * Param eters:
  2019   -- *
  2020   -- *  PB_r un_standal one   Igno re DBMS_JO B logic fo r checking  running j obs.
  2021   -- *                         Def ault: FALS E
  2022   -- *
  2023   -- *  PB_a llow_rpt_i nst   Allo w stored p rocedure t o be submi tted in th e
  2024   -- *                        DBMS _JOB queue  on the AD R reportin g database s
  2025   -- *                         Def ault: FALS E
  2026   -- *
  2027   -- ******* ********** ********** ********** ********** ********** ********** ********
  2028   --
  2029   -- ======= ========== ========== ========== ========== ========== ========== ========
  2030   -- Date         Autho r             Descrip tion
  2031   -- ======= ========== ========== ========== ========== ========== ========== ========
  2032   -- 06/22/2 010  Craig  Wood         Created  for CCR 1 173.
  2033   --
  2034   --
  2035   -- ======= ========== ========== ========== ========== ========== ========== ========
  2036  
  2037     CURSOR f utureyears cur
  2038      IS
  2039         SELE CT it1.inc ome_test_i d income_t est_idf, i t1.person_ id person_ idf,
  2040          it1 .income_ye ar income_ yearf,
  2041          it1 .income_te st_effecti ve_date in come_test_ effective_ datef,
  2042          it1 .income_te st_type_id
  2043     FROM inc ome_test i t1
  2044    WHERE it1 .future_te st_flag =  1
  2045      AND EXI STS (
  2046              SELECT it2 .income_ye ar
  2047                FROM inc ome_test i t2
  2048               WHERE it2 .future_te st_flag =  0
  2049                 AND it2 .income_te st_effecti ve_date =
  2050                         (SELECT MA X (it4.inc ome_test_e ffective_d ate)
  2051                            FROM in come_test  it4
  2052                           WHERE it 4.person_i d = it1.pe rson_id
  2053                             AND it 4.income_t est_type_i d = it1.in come_test_ type_id
  2054                             AND it 4.future_t est_flag =  0)
  2055                 AND it2 .person_id  = it1.per son_id
  2056                 AND it2 .income_te st_type_id  = it1.inc ome_test_t ype_id
  2057                 AND it2 .income_ye ar > it1.i ncome_year );
  2058  
  2059  
  2060      v_f_inc ome_test_i d                inco me_test.in come_test_ id%TYPE;
  2061      v_f_per son_id                      inco me_test.pe rson_id%TY PE;
  2062      v_f_inc ome_year                    inco me_test.in come_year% TYPE;
  2063      v_f_inc ome_test_e ffective_d ate   inco me_test.in come_test_ effective_ date%TYPE;
  2064      v_f_inc ome_test_t ype_id           inco me_test.in come_test_ type_id%TY PE;
  2065      v_c_inc ome_test_i d                inco me_test.in come_test_ id%TYPE;
  2066      v_c_per son_id                      inco me_test.pe rson_id%TY PE;
  2067      v_c_inc ome_year                    inco me_test.in come_year% TYPE;
  2068      v_c_inc ome_test_e ffective_d ate   inco me_test.in come_test_ effective_ date%TYPE;
  2069      v_incom e_test_eff ective_dat e     inco me_test.in come_test_ effective_ date%TYPE;
  2070      v_incom e_test_det ail_id           inco me_test_de tail.incom e_test_det ail_id%TYP E;
  2071      v_incom e_test_id                   inco me_test_de tail.incom e_test_det ail_id%TYP E;
  2072      v_incom e_test_typ e_id             inco me_test_de tail.incom e_test_id% TYPE;
  2073      v_test_ status_typ e_id             inco me_test_de tail.test_ status_typ e_id%TYPE;
  2074      v_test_ detmnd_sta tus_type_i d     inco me_test_de tail.test_ detmnd_sta tus_type_i d%TYPE;
  2075      v_incom e_test_las t_edited_d ate   inco me_test_de tail.incom e_test_las t_edited_d ate%TYPE;
  2076      v_incom e_test_com pleted_dat e     inco me_test_de tail.incom e_test_com pleted_dat e%TYPE;
  2077      v_incom e_test_exp iration_da te    inco me_test_de tail.incom e_test_exp iration_da te%TYPE;
  2078      v1_inco me_test_ef fective_da te    inco me_test_de tail.incom e_test_eff ective_dat e%TYPE;
  2079      v_incom e_test_sig ned_date         inco me_test_de tail.incom e_test_sig ned_date%T YPE;
  2080      vh_inco me_test_la st_edit_da te    inco me_test_de tail.incom e_test_las t_edited_d ate%TYPE;
  2081      vh_inco me_test_co mpleted_da te    inco me_test_de tail.incom e_test_com pleted_dat e%TYPE;
  2082      v_count                                           N UMBER;
  2083      v_debug                                          VA RCHAR2(200 0);
  2084  
  2085     v_allow_ rpt_inst                         BOOLEAN :=  FALSE;
  2086     v_run_st andalone                         BOOLEAN :=  FALSE;
  2087     v_instan ce_name                          VARCHAR2(1 6);
  2088     v_job_co unt                              NUMBER :=  0;
  2089     vc_allow _rpt_inst                        VARCHAR2(5 ) := NULL;
  2090     vc_run_s tandalone                        VARCHAR2(5 ) := NULL;
  2091     v_log_da te                               DATE;
  2092     v_rec_gr oup_date                         DATE;
  2093     v_proces s_name                           VARCHAR2(6 0) := 'ADR  Income Te st Fix';
  2094      CURSOR  detailcurs or
  2095      IS
  2096         SELE CT income_ test_detai l_id, inco me_test_id , income_t est_type_i d,
  2097                 test_st atus_type_ id, test_d etmnd_stat us_type_id ,
  2098                 income_ test_last_ edited_dat e, income_ test_compl eted_date,
  2099                 income_ test_expir ation_date , income_t est_effect ive_date,
  2100                 income_ test_signe d_date
  2101           FR OM income_ test_detai l
  2102          WHE RE income_ test_id =  v_f_income _test_id;
  2103  
  2104  
  2105  
  2106   BEGIN
  2107  
  2108   -- ******* ********** ********** ********** ********** ********** ********** ********
  2109   -- *
  2110   -- * Valid ate input  parameters
  2111   -- *
  2112   -- ******* ********** ********** ********** ********** ********** ********** ********
  2113  
  2114   -- * Check  run stand alone flag
  2115  
  2116     IF p_run _standalon e IS NULL
  2117      OR NOT  p_run_stan dalone THE N
  2118           v_ run_standa lone := FA LSE;
  2119           vc _run_stand alone := ' FALSE'; --  used for  log messag e, boolean  can't be  displayed
  2120     ELSE
  2121       v_run_ standalone  := TRUE;
  2122       vc_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  2123     END IF;
  2124  
  2125   -- * Check  run on re port insta nce flag
  2126  
  2127     IF p_all ow_rpt_ins t IS NULL
  2128      OR NOT  p_allow_rp t_inst THE N
  2129       v_allo w_rpt_inst  := FALSE;
  2130       vc_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  2131     ELSE
  2132       v_allo w_rpt_inst  := TRUE;
  2133       vc_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  2134     END IF;
  2135     v_log_da te := SYSD ATE;
  2136     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( v_process_ name,1,60) ,
  2137                                 PD _job_log_d ate => v_l og_date,
  2138                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cessing pa rameters f or this jo b',1,60),
  2139                                 PC _job_log_m essage =>  SUBSTR('Cu rrent job  parameters  - '
  2140                                                              || ' R un standal one: ' ||  vc_run_sta ndalone
  2141                                                              || ' R un on repo rting data bases: ' | | vc_allow _rpt_inst, 1,2000),
  2142                                 PD _date1 =>  v_rec_grou p_date,
  2143                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  2144   -- ******* ********** ********** ********** ********** ********** ********** ********
  2145   -- *
  2146   -- * Check  to see if  process i s running  on a repor ting datab ase.
  2147   -- *  - If  v_allow_r pt_inst is  FALSE, th en it's no t allowed.  End the j ob.
  2148   -- *
  2149   -- ******* ********** ********** ********** ********** ********** ********** ********
  2150       IF NOT  v_allow_r pt_inst TH EN
  2151           BE GIN
  2152                 v_log_d ate := SYS DATE;
  2153                 ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (v_process _name,1,60 ),
  2154                                      PD_job_l og_date =>  v_log_dat e,
  2155                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  2156                                      PD_date1  => v_rec_ group_date ,
  2157                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2158  
  2159                SELECT     Instance _name
  2160                INTO       v_instan ce_name
  2161                FROM       V$instan ce;
  2162                IF UPPER (SUBSTR(v_ instance_n ame,1,4))  = 'ADRR' T HEN
  2163                    v_lo g_date :=  SYSDATE;
  2164                    ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(v_proc ess_name,1 ,60),
  2165                                        PD_job _log_date  => v_log_d ate,
  2166                                        PC_job _status =>  SUBSTR('W ARNING      - Process ing Failed ',1,60),
  2167                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  2168                                                                     || v_insta nce_name
  2169                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  2170                                                                     || ' set p arameter p _allow_rpt _inst to T RUE and re submit the  job.',1,2 000),
  2171                                        PD_dat e1 => v_re c_group_da te,
  2172                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  2173                    RETU RN;
  2174                 END IF;
  2175                 EXCEPTI ON
  2176                    WHEN  OTHERS TH EN
  2177                      v_ log_date : = SYSDATE;
  2178                      AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(v_pr ocess_name ,1,60),
  2179                                        PD_job _log_date  => v_log_d ate,
  2180                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  2181                                        PC_job _log_messa ge => SUBS TR('Termin ating scri pt.',1,200 0),
  2182                                        PD_dat e1 => v_re c_group_da te,
  2183                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  2184  
  2185                RETURN;
  2186                END;
  2187       END IF ;
  2188   -- ******* ********** ********** ********** ********** ********** ********** ********
  2189   -- *
  2190   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  2191   -- *  - If  yes, then  end this  job.
  2192   -- *
  2193   -- ******* ********** ********** ********** ********** ********** ********** ********
  2194  
  2195       SELECT  COUNT(*)
  2196       INTO    v_job_cou nt
  2197       FROM    SYS.DBA_J OBS_RUNNIN G R,
  2198            S YS.DBA_JOB S J
  2199      WHERE   J.JOB = R. JOB
  2200      AND     UPPER(J.WH AT) LIKE ' %ADR_INCOM E_TEST_FIX _SP%';
  2201       IF v_j ob_count >  1 THEN
  2202           BE GIN
  2203                v_log_da te := SYSD ATE;
  2204                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( v_process_ name,1,60) ,
  2205                                    PD_job_log _date => v _log_date,
  2206                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  2207                                    PC_job_log _message = > SUBSTR(' There is a nother Inc ome Test F ix job run ning.'
  2208                                                                || '  Exiting j ob without  running.' ,1,2000),
  2209                                    PD_date1 = > v_rec_gr oup_date,
  2210                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2211  
  2212                RETURN;
  2213           EN D;
  2214       ELSE
  2215           IF  v_run_sta ndalone TH EN
  2216                v_log_da te := SYSD ATE;
  2217                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( v_process_ name,1,60) ,
  2218                                      PD_job_l og_date =>  v_log_dat e,
  2219                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  2220                                      PD_date1  => v_rec_ group_date ,
  2221                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2222           EN D IF;
  2223       END IF ;
  2224   -- ******* ********** ********** ********** ********** ********** ********** ********
  2225   -- *
  2226   -- * Main  processing  loop
  2227   -- *
  2228   -- ******* ********** ********** ********** ********** ********** ********** ********
  2229  
  2230  
  2231  
  2232  
  2233   -- Remove  all proces s logs ove r 14 days  old
  2234  
  2235     BEGIN
  2236  
  2237       v_log_ date := SY SDATE;
  2238       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(v_proces s_name,1,6 0),
  2239                                    PD_job_log _date => v _log_date,
  2240                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  2241                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over 14  days old', 1,2000),
  2242                                    PD_date1 = > v_rec_gr oup_date,
  2243                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2244  
  2245       DELETE
  2246       FROM       ADRMGT .Job_Proce ss_Logs
  2247       WHERE      Job_na me = v_pro cess_name
  2248       AND        Date1  < TRUNC(SY SDATE) - 1 4;
  2249  
  2250       COMMIT ;
  2251  
  2252       v_log_ date := SY SDATE;
  2253       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(v_proces s_name,1,6 0),
  2254                                    PD_job_log _date => v _log_date,
  2255                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  2256                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over 14 d ays old',1 ,2000),
  2257                                    PD_date1 = > v_rec_gr oup_date,
  2258                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2259  
  2260  
  2261     EXCEPTIO N
  2262  
  2263       WHEN N O_DATA_FOU ND THEN
  2264  
  2265         NULL ;
  2266  
  2267       WHEN O THERS THEN
  2268  
  2269         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(v_proc ess_name,1 ,60),
  2270                                    PD_job_log _date => v _log_date,
  2271                                    PC_job_sta tus => SUB STR('ERROR  - UNKOWN  EXCEPTION' ,1,60),
  2272                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  2273                                    PD_date1 = > v_rec_gr oup_date,
  2274                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2275  
  2276     END;
  2277  
  2278       OPEN f utureyears cur;
  2279       LOOP
  2280         FETC H futureye arscur
  2281          INT O v_f_inco me_test_id , v_f_pers on_id, v_f _income_ye ar,
  2282                v_f_inco me_test_ef fective_da te, v_f_in come_test_ type_id;
  2283         EXIT  WHEN futu reyearscur %NOTFOUND;
  2284         v_de bug := '';
  2285         v_de bug := v_d ebug || 'S TEP1 for : ' || v_f_i ncome_test _id ;
  2286         v_lo g_date :=  SYSDATE;
  2287         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(v_proc ess_name,1 ,60),
  2288                                    PD_job_log _date => v _log_date,
  2289                                    PC_job_sta tus => SUB STR('INFOR MATION - S tep 1',1,6 0),
  2290                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  2291                                    PD_date1 = > v_rec_gr oup_date,
  2292                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2293  
  2294   --find the  current t est for th is person
  2295     BEGIN
  2296       SELECT  income_te st_id, per son_id, in come_year,  income_te st_effecti ve_date
  2297         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
  2298         FROM  income_te st it2
  2299        WHERE  it2.incom e_test_eff ective_dat e =
  2300                       ( SELECT MAX  (income_t est_effect ive_date)
  2301                      FR OM income_ test
  2302                     WHE RE person_ id = v_f_p erson_id A ND future_ test_flag  = 0)
  2303            A ND it2.per son_id = v _f_person_ id AND it2 .future_te st_flag =  0;
  2304  
  2305            v _debug :=  'STEP2 for  :' || v_f _income_te st_id|| CH R(10) ||
  2306                                'SE LECT incom e_test_id,  person_id , income_y ear, incom e_test_eff ective_dat e'|| CHR(1 0) ||
  2307                                '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) ||
  2308                                ' F ROM income _test it2'  || CHR(10 ) ||
  2309                                ' W HERE it2.i ncome_test _effective _date ='||  CHR(10) | |
  2310                                '(S ELECT MAX  (income_te st_effecti ve_date)'  || CHR(10)  ||
  2311                                'FR OM income_ test' || C HR(10) ||
  2312                                ' W HERE perso n_id = v_f _person_id  AND futur e_test_fla g = 0)' ;
  2313  
  2314            v _log_date  := SYSDATE ;
  2315            A DRMGT.Job_ Process_Lo g_Sp(PC_jo b_name =>  SUBSTR(v_p rocess_nam e,1,60),
  2316                                    PD_job_log _date => v _log_date,
  2317                                    PC_job_sta tus => SUB STR('INFOR MATION - S tep 2',1,6 0),
  2318                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  2319                                    PD_date1 = > v_rec_gr oup_date,
  2320                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2321   EXCEPTION
  2322  
  2323                WHEN TOO _MANY_ROWS  THEN
  2324                    SELE CT income_ test_id, p erson_id,  income_yea r, income_ test_effec tive_date
  2325                    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
  2326                    FROM  income_te st it2
  2327                    WHER E it2.inco me_test_ef fective_da te =
  2328                    (SEL ECT MAX (i ncome_test _effective _date)
  2329                    FROM  income_te st
  2330                    WHER E person_i d = v_f_pe rson_id AN D future_t est_flag =  0)
  2331                    AND  it2.income _year = TO _NUMBER (T O_CHAR (SY SDATE, 'YY YY')) - 1
  2332                    AND  it2.person _id = v_f_ person_id  AND it2.fu ture_test_ flag = 0;
  2333  
  2334                    v_de bug := 'ST EP2 for :'  || v_f_in come_test_ id|| CHR(1 0) ||
  2335                                'SE LECT incom e_test_id,  person_id , income_y ear, incom e_test_eff ective_dat e:'|| CHR( 10) ||
  2336                                '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) ||
  2337                                ' F ROM income _test it2'  || CHR(10 ) ||
  2338                                ' W HERE it2.i ncome_test _effective _date ='||  CHR(10) | |
  2339                                '(S ELECT MAX  (income_te st_effecti ve_date)'  || CHR(10)  ||
  2340                                'FR OM income_ test' || C HR(10) ||
  2341                                ' W HERE perso n_id = v_f _person_id  AND futur e_test_fla g = 0)' ||  CHR(10) | |
  2342                                ' A ND it2.inc ome_year =  TO_NUMBER  (TO_CHAR  (SYSDATE,  YYYY)) - 1  ' || CHR( 10) ||
  2343                                ' A ND it2.per son_id = v _f_person_ id AND it2 .future_te st_flag =  0';
  2344  
  2345                    v_lo g_date :=  SYSDATE;
  2346                    ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(v_proc ess_name,1 ,60),
  2347                                    PD_job_log _date => v _log_date,
  2348                                    PC_job_sta tus => SUB STR('INFOR MATION - S TEP 2',1,6 0),
  2349                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  2350                                    PD_date1 = > v_rec_gr oup_date,
  2351                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2352  
  2353         WHEN  OTHERS TH EN
  2354              v_debug :=  'UNKNOWN  EXCEPTION  :  ' ||CHR (10)||
  2355                     'er ror code i s : '||sql code || CH R(10)||
  2356                     'er ror code m essage is  : '||SQLER RM || CHR( 10)||
  2357                     'Ex ception oc cured for   v_c_incom e_test_id:  ' || v_c_ income_tes t_id|| CHR (10)||
  2358                                               'v_c_perso n_id:  '|| v_c_person _id ;
  2359            v _log_date  := SYSDATE ;
  2360                    ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(v_proc ess_name,1 ,60),
  2361                                    PD_job_log _date => v _log_date,
  2362                                    PC_job_sta tus => SUB STR('ERROR  - STEP 2' ,1,60),
  2363                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  2364                                    PD_date1 = > v_rec_gr oup_date,
  2365                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2366  
  2367         END;
  2368  
  2369   -- we have  the cuure nt income_ year and f uture inco me year.
  2370         BEGI N
  2371            S ELECT DIST INCT incom e_test_eff ective_dat e
  2372               INTO v_in come_test_ effective_ date
  2373               FROM inco me_test_h
  2374              WHERE pers on_id = v_ f_person_i d
  2375                AND inco me_test_id  = v_f_inc ome_test_i d
  2376                AND futu re_test_fl ag = 0
  2377                AND ( re cord_modif ied_by <>  'CCR7649 D ataCleanup ' OR recor d_modified _by <> 'AD RCQ0000117 3');
  2378  
  2379  
  2380              v_debug :=  'STEP3 [i ncome_test _h]for : v _f_income_ test_id '| |v_f_incom e_test_id;
  2381               v_log_dat e := SYSDA TE;
  2382               ADRMGT.Jo b_Process_ Log_Sp(PC_ job_name = > SUBSTR(v _process_n ame,1,60),
  2383                                    PD_job_log _date => v _log_date,
  2384                                    PC_job_sta tus => SUB STR('INFOR MATION - S tep 3',1,6 0),
  2385                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  2386                                    PD_date1 = > v_rec_gr oup_date,
  2387                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2388         EXCE PTION
  2389            W HEN NO_DAT A_FOUND
  2390            T HEN
  2391                v_debug  := 'NO DAT A FOUND IN  THE HISTO RY TABLE F OR : '
  2392                                      || v_f_i ncome_test _id || ' E xiting Loo p';
  2393                v_log_da te := SYSD ATE;
  2394                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( v_process_ name,1,60) ,
  2395                                    PD_job_log _date => v _log_date,
  2396                                    PC_job_sta tus => SUB STR('INFOR MATION - N O DATA FOU ND',1,60),
  2397                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  2398                                    PD_date1 = > v_rec_gr oup_date,
  2399                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2400                GOTO  EN D_OF_LOOP;
  2401                WHEN TOO _MANY_ROWS  THEN
  2402  
  2403                    v_de bug := 'TO O MANY ROW S  :  '
  2404                                           ||  v_income_t est_detail _id ||' Ex iting Loop ';
  2405                    v_lo g_date :=  SYSDATE;
  2406                    ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(v_proc ess_name,1 ,60),
  2407                                    PD_job_log _date => v _log_date,
  2408                                    PC_job_sta tus => SUB STR('INFOR MATION - S TEP 3',1,6 0),
  2409                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  2410                                    PD_date1 = > v_rec_gr oup_date,
  2411                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2412                  GOTO   END_OF_LOO P;
  2413         END;
  2414  
  2415  
  2416  
  2417         --up date incom e test rec ord
  2418         UPDA TE income_ test
  2419            S ET future_ test_flag  = 0,
  2420                 income_ test_effec tive_date  = v_income _test_effe ctive_date ,
  2421                 cad_adj usted_ind  = NULL,
  2422                 record_ modified_b y = 'ADRCQ 00001173',
  2423                 record_ modified_d ate = SYSD ATE,
  2424                 record_ modified_c ount = rec ord_modifi ed_count +  1
  2425          WHE RE income_ test_id =  v_f_income _test_id
  2426            A ND future_ test_flag  = 1
  2427            A ND person_ id = v_f_p erson_id;
  2428  
  2429  
  2430         v_de bug := 'ST EP4 UPDATE  finished' ;
  2431         v_lo g_date :=  SYSDATE;
  2432         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(v_proc ess_name,1 ,60),
  2433                                    PD_job_log _date => v _log_date,
  2434                                    PC_job_sta tus => SUB STR('INFOR MATION - S TEP 4',1,6 0),
  2435                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  2436                                    PD_date1 = > v_rec_gr oup_date,
  2437                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2438         --up date incom e test det ail table
  2439         OPEN  detailcur sor;
  2440  
  2441         LOOP
  2442            F ETCH detai lcursor
  2443              INTO v_inc ome_test_d etail_id,  v_income_t est_id,
  2444                   v_inc ome_test_t ype_id, v_ test_statu s_type_id,
  2445                   v_tes t_detmnd_s tatus_type _id, v_inc ome_test_l ast_edited _date,
  2446                   v_inc ome_test_c ompleted_d ate, v_inc ome_test_e xpiration_ date,
  2447                   v1_in come_test_ effective_ date, v_in come_test_ signed_dat e;
  2448  
  2449            E XIT WHEN d etailcurso r%NOTFOUND ;
  2450  
  2451  
  2452              v_debug :=      'Inne r cursor d ata :' ||  v_c_income _test_id
  2453                                       || '--'
  2454                                       || v_c_ person_id
  2455                                       || '--'
  2456                                       || v_c_ income_yea r
  2457                                       || '--'
  2458                                       || v_c_ income_tes t_effectiv e_date
  2459                                       || '--'
  2460                                       || v_f_ income_tes t_id
  2461                                       || '--'
  2462                                       || v_f_ person_id
  2463                                       || '--'
  2464                                       || v_f_ income_yea r
  2465                                       || '--'
  2466                                       || v_f_ income_tes t_effectiv e_date
  2467                                       || '--'
  2468                                       || v_in come_test_ completed_ date || '- -'
  2469                                       || v_in come_test_ effective_ date;
  2470  
  2471                 v_log_d ate := SYS DATE;
  2472                 ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (v_process _name,1,60 ),
  2473                                    PD_job_log _date => v _log_date,
  2474                                    PC_job_sta tus => SUB STR('INFOR MATION - I nner Curso r Data',1, 60),
  2475                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  2476                                    PD_date1 = > v_rec_gr oup_date,
  2477                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2478  
  2479            B EGIN
  2480  
  2481                SELECT i ncome_test _last_edit ed_date,
  2482                       i ncome_test _completed _date
  2483                  INTO v h_income_t est_last_e dit_date,
  2484                       v h_income_t est_comple ted_date
  2485                  FROM i ncome_test _detail_h
  2486                 WHERE i ncome_test _id = v_in come_test_ id
  2487                   AND i ncome_test _detail_id  = v_incom e_test_det ail_id
  2488                   AND i ncome_test _type_id =  v_income_ test_type_ id
  2489                   AND i ncome_test _completed _date <> v _income_te st_complet ed_date
  2490                   AND r ecord_modi fied_by <>  'ADRCQ000 01173' ;
  2491  
  2492                 v_debug  := 'Fixin g the deta il :'
  2493                                        || v_i ncome_test _detail_id
  2494                                        || ' W ith date : '
  2495                                        || vh_ income_tes t_complete d_date;
  2496  
  2497                 v_log_d ate := SYS DATE;
  2498                 ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (v_process _name,1,60 ),
  2499                                    PD_job_log _date => v _log_date,
  2500                                    PC_job_sta tus => SUB STR('INFOR MATION - F IXING DETA IL',1,60),
  2501                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  2502                                    PD_date1 = > v_rec_gr oup_date,
  2503                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2504  
  2505                UPDATE i ncome_test _detail
  2506                   SET i ncome_test _completed _date = vh _income_te st_complet ed_date,
  2507                       r ecord_modi fied_by =  'ADRCQ0000 1173',
  2508                       r ecord_modi fied_date  = SYSDATE,
  2509                       r ecord_modi fied_count  = record_ modified_c ount + 1
  2510                   WHERE  income_te st_detail_ id = v_inc ome_test_d etail_id;
  2511  
  2512  
  2513            E XCEPTION
  2514                WHEN NO_ DATA_FOUND
  2515                THEN
  2516                   v_deb ug := 'NO  DETAIL DAT A FOUND IN  THE HISTO RY TABLE F OR :'
  2517                              || v_ income_tes t_detail_i d;
  2518                   v_log _date := S YSDATE;
  2519                   ADRMG T.Job_Proc ess_Log_Sp (PC_job_na me => SUBS TR(v_proce ss_name,1, 60),
  2520                                    PD_job_log _date => v _log_date,
  2521                                    PC_job_sta tus => SUB STR('INFOR MATION - N O DATA FOU ND',1,60),
  2522                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  2523                                    PD_date1 = > v_rec_gr oup_date,
  2524                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2525                WHEN TOO _MANY_ROWS  THEN
  2526                      v_ debug := ' TOO MANY R OWS for in come_test_ detail :'
  2527                              || v_ income_tes t_detail_i d || 'v_de bug :' ||  v_debug;
  2528                      v_ log_date : = SYSDATE;
  2529                      AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(v_pr ocess_name ,1,60),
  2530                                    PD_job_log _date => v _log_date,
  2531                                    PC_job_sta tus => SUB STR('INFOR MATION - T OO MANY RO WS',1,60),
  2532                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  2533                                    PD_date1 = > v_rec_gr oup_date,
  2534                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2535  
  2536            E ND;
  2537         END  LOOP;
  2538  
  2539         CLOS E detailcu rsor;
  2540  
  2541       <<END_ OF_LOOP>>
  2542              v_debug :=  'END OF L OOP: '
  2543                           ||  v_c_ income_tes t_id
  2544                                 ||  '--'
  2545                                 ||  v_c_perso n_id
  2546                                 ||  '--'
  2547                                 ||  v_c_incom e_year
  2548                                 ||  '--'
  2549                                 ||  v_c_incom e_test_eff ective_dat e
  2550                                 ||  '--'
  2551                                 ||  v_f_incom e_test_id
  2552                                 ||  '--'
  2553                                 ||  v_f_perso n_id
  2554                                 ||  '--'
  2555                                 ||  v_f_incom e_year
  2556                                 ||  '--'
  2557                                 ||  v_f_incom e_test_eff ective_dat e
  2558                                 ||  '--'
  2559                                 ||  v_income_ test_effec tive_date;
  2560                v_log_da te := SYSD ATE;
  2561                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( v_process_ name,1,60) ,
  2562                                    PD_job_log _date => v _log_date,
  2563                                    PC_job_sta tus => SUB STR('INFOR MATION - < <END OF LO OP>>',1,60 ),
  2564                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  2565                                    PD_date1 = > v_rec_gr oup_date,
  2566                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2567  
  2568      END LOO P;
  2569  
  2570      CLOSE f utureyears cur;
  2571  
  2572      --get t he final c ount
  2573    SELECT co unt(*) INT O v_count
  2574     FROM inc ome_test i t1
  2575    WHERE it1 .future_te st_flag =  1
  2576      AND EXI STS (
  2577              SELECT it2 .income_ye ar
  2578                FROM inc ome_test i t2
  2579               WHERE it2 .future_te st_flag =  0
  2580                 AND it2 .income_te st_effecti ve_date =
  2581                         (SELECT MA X (it4.inc ome_test_e ffective_d ate)
  2582                            FROM in come_test  it4
  2583                           WHERE it 4.person_i d = it1.pe rson_id
  2584                             AND it 4.income_t est_type_i d = it1.in come_test_ type_id
  2585                             AND it 4.future_t est_flag =  0)
  2586                 AND it2 .person_id  = it1.per son_id
  2587                 AND it2 .income_te st_type_id  = it1.inc ome_test_t ype_id
  2588                 AND it2 .income_ye ar > it1.i ncome_year );
  2589  
  2590          v_d ebug := 'C ompleted t he cleanup . Total Nu mber of re cords stil l need to  be fixed [ SHOULD BE  0]:'
  2591          ||  v_count;
  2592          v_l og_date :=  SYSDATE;
  2593          ADR MGT.Job_Pr ocess_Log_ Sp(PC_job_ name => SU BSTR(v_pro cess_name, 1,60),
  2594                                    PD_job_log _date => v _log_date,
  2595                                    PC_job_sta tus => SUB STR('INFOR MATION - C LEANUP COM PLETED',1, 60),
  2596                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  2597                                    PD_date1 = > v_rec_gr oup_date,
  2598                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2599   EXCEPTION
  2600      WHEN NO _DATA_FOUN D
  2601      THEN
  2602                v_log_da te := SYSD ATE;
  2603                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( v_process_ name,1,60) ,
  2604                                    PD_job_log _date => v _log_date,
  2605                                    PC_job_sta tus => SUB STR('INFOR MATION - N O DATA FOU ND',1,60),
  2606                                    PC_job_log _message = > SUBSTR(' NO DATA FO UND',1,200 0),
  2607                                    PD_date1 = > v_rec_gr oup_date,
  2608                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2609      WHEN OT HERS
  2610      THEN
  2611         v_de bug := 'UN KNOWN EXCE PTION :' | |CHR(10)||
  2612                     'er ror code i s : '||sql code || CH R(10)||
  2613                     'er ror code m essage is  : '||SQLER RM || CHR( 10)||
  2614                     'Ex ception oc cured for   ' || v_c_ income_tes t_id
  2615                                 ||  '--'
  2616                                 ||  v_c_perso n_id
  2617                                 ||  '--'
  2618                                 ||  v_c_incom e_year
  2619                                 ||  '--'
  2620                                 ||  v_c_incom e_test_eff ective_dat e
  2621                                 ||  '--'
  2622                                 ||  v_f_incom e_test_id
  2623                                 ||  '--'
  2624                                 ||  v_f_perso n_id
  2625                                 ||  '--'
  2626                                 ||  v_f_incom e_year
  2627                                 ||  '--'
  2628                                 ||  v_f_incom e_test_eff ective_dat e
  2629                                 ||  '--'
  2630                                 ||  v_income_ test_effec tive_date;
  2631               v_log_dat e := SYSDA TE;
  2632               ADRMGT.Jo b_Process_ Log_Sp(PC_ job_name = > SUBSTR(v _process_n ame,1,60),
  2633                                    PD_job_log _date => v _log_date,
  2634                                    PC_job_sta tus => SUB STR('ERROR  - UNKOWN  EXCEPTION' ,1,60),
  2635                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  2636                                    PD_date1 = > v_rec_gr oup_date,
  2637                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  2638  
  2639   END;
  2640   /
  2641   DROP PROCE DURE ADR.H L7_TXN_LOG _NULL_ERR_ COL_SP;
  2642  
  2643   CREATE OR  REPLACE PR OCEDURE AD R.Hl7_Txn_ Log_Null_E rr_Col_Sp
  2644     (PB_run_ standalone
  2645        IN      BOOLEAN  DEFAULT FA LSE,
  2646      PB_allo w_rpt_inst
  2647        IN      BOOLEAN  DEFAULT FA LSE,
  2648      PN_rows _to_proces s
  2649        IN      NUMBER D EFAULT NUL L
  2650     )
  2651   IS
  2652  
  2653   -- ******* ********** ********** ********** ********** ********** ********** ********
  2654   -- * Proce dure: Hl7_ Txn_Log_Nu ll_Error_C ol
  2655   -- *
  2656   -- *   Upd ate HL7 tr anscations  to remove  data from  the inter nal_error_ text
  2657   -- *   col umn for al l rows mor e than 6 m onths old.
  2658   -- *
  2659   -- * Param eters:
  2660   -- *
  2661   -- *  PB_r un_standal one   Igno re DBMS_JO B logic fo r checking  running j obs.
  2662   -- *                         Def ault: FALS E
  2663   -- *
  2664   -- *  PB_a llow_rpt_i nst   Allo w stored p rocedure t o be submi tted in th e
  2665   -- *                        DBMS _JOB queue  on the AD R reportin g database s
  2666   -- *                         Def ault: FALS E
  2667   -- *
  2668   -- ******* ********** ********** ********** ********** ********** ********** ********
  2669   --
  2670   -- ======= ========== ========== ========== ========== ========== ========== ========
  2671   -- Date         Autho r             Descrip tion
  2672   -- ======= ========== ========== ========== ========== ========== ========== ========
  2673   -- 06/23/2 010  Craig  Wood         Created  for CCR 1 100.
  2674   --
  2675   -- ======= ========== ========== ========== ========== ========== ========== ========
  2676  
  2677   -- CONSTAN TS
  2678  
  2679     CC_no                                   V ARCHAR2(1)  := 'N';
  2680     CC_parm_ applicatio n_name     CONSTANT V ARCHAR2(80 ) := 'HL7  NULL INTER NAL_ERROR_ TEXT COLUM N';
  2681     CC_parm_ hl7_err_tx t_age      CONSTANT V ARCHAR2(50 ) := 'OLDE ST HL7 ERR OR TEXT DA YS';
  2682     CC_parm_ last_hl7_i d          CONSTANT V ARCHAR2(50 ) := 'LAST  HL7 ID PR OCESSED';
  2683     CC_parm_ log_file_a ge         CONSTANT V ARCHAR2(50 ) := 'OLDE ST LOG FIL E DAYS';
  2684     CC_proce ss_name               CONSTANT V ARCHAR2(60 ) := 'HL7  NULL INTER NAL_ERROR_ TEXT COLUM N';
  2685     CC_sp_na me                    CONSTANT V ARCHAR2(35 ) := 'Hl7_ Txn_Log_Nu ll_Err_Col _Sp';
  2686     CC_yes                                  V ARCHAR2(1)  := 'Y';
  2687  
  2688   -- VARIABL ES
  2689  
  2690     VB_allow _rpt_inst                      B OOLEAN :=  FALSE;
  2691     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  2692  
  2693     VC_allow _rpt_inst                      V ARCHAR2(5)  := NULL;
  2694     VC_insta nce_name                       V ARCHAR2(16 );
  2695     VC_proce ss_duratio n                   V ARCHAR2(25 );
  2696     VC_run_s tandalone                      V ARCHAR2(5)  := NULL;
  2697     VC_sql_s tatement                       V ARCHAR2(20 00);
  2698  
  2699     VD_log_d ate                            D ATE;
  2700     VD_proce ss_end_dat e                   D ATE;
  2701     VD_proce ss_start_d ate                 D ATE;
  2702     VD_rec_g roup_date                      D ATE;
  2703  
  2704     VN_job_c ount                           N UMBER := 0 ;
  2705     VN_job_n umber                          N UMBER;
  2706     VN_max_l og_id                          N UMBER := 0 ;
  2707     VN_parm_ hl7_err_tx t_age               N UMBER;
  2708     VN_parm_ log_file_a ge                  N UMBER;
  2709     VN_parm_ last_log_i d                   N UMBER := 0 ;
  2710     VN_parm_ rows_to_pr ocess               N UMBER;
  2711     VN_pass_ count                          N UMBER := 0 ;
  2712     VN_rec_c ount                           N UMBER := 0 ;
  2713     VN_updat e_count                        N UMBER := 0 ;
  2714  
  2715   -- CURSORS
  2716  
  2717     CURSOR C _hl7_id IS
  2718       SELECT   /*+ para llel(4) */  Hl7_trans action_log _id
  2719       FROM       Hl7_tr ansaction_ log
  2720       WHERE      Hl7_tr ansaction_ log_id > V N_parm_las t_log_id
  2721       AND        Record _created_d ate < TRUN C(SYSDATE)  - VN_parm _hl7_err_t xt_age
  2722       AND        Intern al_error_t ext IS NOT  NULL;
  2723  
  2724   -- TYPES
  2725  
  2726     TYPE TT_ hl7_id IS
  2727       TABLE  OF ADR.Hl7 _Transacti on_Log.Hl7 _transacti on_log_id% TYPE;
  2728  
  2729   -- MEMORY  TABLES
  2730  
  2731     T_hl7_id                                T T_hl7_id;
  2732  
  2733   -- ******* ********** ********** ********** ********** ********** ********** *******
  2734   -- *
  2735   -- *  MAIN  PROCEDURE :
  2736   -- *
  2737   -- ******* ********** ********** ********** ********** ********** ********** *******
  2738  
  2739   BEGIN
  2740  
  2741     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  2742     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  2743  
  2744     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  2745     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  2746  
  2747     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  2748     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  2749  
  2750     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  2751     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  2752  
  2753     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  QUERY PARA LLEL ' ||   4;  --  c onfigurabl e via DDL
  2754     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  2755  
  2756     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  DML PARALL EL ' || 4;      --  c onfigurabl e via DDL
  2757     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  2758  
  2759     VD_rec_g roup_date  := TRUNC(S YSDATE);
  2760  
  2761     VD_log_d ate := SYS DATE;
  2762     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  2763                                 PD _job_log_d ate => VD_ log_date,
  2764                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  2765                                 PD _date1 =>  VD_rec_gro up_date,
  2766                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  2767  
  2768   -- ******* ********** ********** ********** ********** ********** ********** ********
  2769   -- *
  2770   -- * Valid ate input  parameters
  2771   -- *
  2772   -- ******* ********** ********** ********** ********** ********** ********** ********
  2773  
  2774   -- * Check  run stand alone flag
  2775  
  2776     IF PB_ru n_standalo ne IS NULL
  2777      OR NOT  PB_run_sta ndalone TH EN
  2778  
  2779       VB_run _standalon e := FALSE ;
  2780       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  2781  
  2782     ELSE
  2783  
  2784       VB_run _standalon e := TRUE;
  2785       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  2786  
  2787     END IF;
  2788  
  2789   -- * Check  run on re port insta nce flag
  2790  
  2791     IF PB_al low_rpt_in st IS NULL
  2792      OR NOT  PB_allow_r pt_inst TH EN
  2793  
  2794       VB_all ow_rpt_ins t := FALSE ;
  2795       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  2796  
  2797     ELSE
  2798  
  2799       VB_all ow_rpt_ins t := TRUE;
  2800       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  2801  
  2802     END IF;
  2803  
  2804   -- ******* ********** ********** ********** ********** ********** ********** ********
  2805   -- *
  2806   -- * Retri eve proces sing param eters
  2807   -- *
  2808   -- ******* ********** ********** ********** ********** ********** ********** ********
  2809  
  2810   -- Process  Parameter  OLDEST HL 7 ERROR TE XT DAYS KE PT
  2811  
  2812     BEGIN
  2813  
  2814       SELECT     Value
  2815       INTO       VN_par m_hl7_err_ txt_age
  2816       FROM       ADRMGT .Adr_Param eter
  2817       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  2818       AND        Parame ter_name =  'OLDEST H L7 ERROR T EXT DAYS K EPT';
  2819  
  2820       IF VN_ parm_hl7_e rr_txt_age  IS NULL T HEN
  2821  
  2822         VD_l og_date :=  SYSDATE;
  2823         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2824                                      PD_job_l og_date =>  VD_log_da te,
  2825                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  2826                                      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),
  2827                                      PD_date1  => VD_rec _group_dat e,
  2828                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2829  
  2830         RETU RN;
  2831  
  2832       END IF ;
  2833  
  2834     EXCEPTIO N
  2835  
  2836       WHEN N O_DATA_FOU ND THEN
  2837  
  2838         VD_l og_date :=  SYSDATE;
  2839         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2840                                      PD_job_l og_date =>  VD_log_da te,
  2841                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  2842                                      PC_job_l og_message  => 'Param eter for O LDEST HL7  ERROR TEXT  DAYS KEPT  was not f ound. Term inating pr ocess.',
  2843                                      PD_date1  => VD_rec _group_dat e,
  2844                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2845  
  2846         RETU RN;
  2847  
  2848       WHEN O THERS THEN
  2849  
  2850         VD_l og_date :=  SYSDATE;
  2851         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2852                                      PD_job_l og_date =>  VD_log_da te,
  2853                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  2854                                      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. '
  2855                                                                      || SQLERR M,1,2000),
  2856                                      PD_date1  => VD_rec _group_dat e,
  2857                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2858  
  2859         RETU RN;
  2860  
  2861     END;
  2862  
  2863   -- Process  Parameter  OLDEST LO G FILE DAY S KEPT
  2864  
  2865     BEGIN
  2866  
  2867       SELECT     Value
  2868       INTO       VN_par m_log_file _age
  2869       FROM       ADRMGT .Adr_Param eter
  2870       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  2871       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  2872  
  2873       IF VN_ parm_log_f ile_age IS  NULL THEN
  2874  
  2875         VD_l og_date :=  SYSDATE;
  2876         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2877                                      PD_job_l og_date =>  VD_log_da te,
  2878                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  2879                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST L OG FILE DA YS KEPT is  NULL. Ter minating p rocess.',1 ,2000),
  2880                                      PD_date1  => VD_rec _group_dat e,
  2881                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2882  
  2883         RETU RN;
  2884  
  2885       END IF ;
  2886  
  2887     EXCEPTIO N
  2888  
  2889       WHEN N O_DATA_FOU ND THEN
  2890  
  2891         VD_l og_date :=  SYSDATE;
  2892         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2893                                      PD_job_l og_date =>  VD_log_da te,
  2894                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  2895                                      PC_job_l og_message  => 'Param eter for O LDEST LOG  FILE DAYS  KEPT was n ot found.  Terminatin g process. ',
  2896                                      PD_date1  => VD_rec _group_dat e,
  2897                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2898  
  2899         RETU RN;
  2900  
  2901       WHEN O THERS THEN
  2902  
  2903         VD_l og_date :=  SYSDATE;
  2904         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2905                                      PD_job_l og_date =>  VD_log_da te,
  2906                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  2907                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  OLDEST LO G FILE DAY S KEPT. Te rminating  process. '
  2908                                                                      || SQLERR M,1,2000),
  2909                                      PD_date1  => VD_rec _group_dat e,
  2910                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2911  
  2912         RETU RN;
  2913  
  2914     END;
  2915  
  2916   -- Process  Parameter  ROWS TO P ROCESS
  2917  
  2918     BEGIN
  2919  
  2920       SELECT     Value
  2921       INTO       VN_par m_rows_to_ process
  2922       FROM       ADRMGT .Adr_Param eter
  2923       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  2924       AND        Parame ter_name =  'ROWS TO  PROCESS';
  2925  
  2926       IF VN_ parm_rows_ to_process  IS NULL T HEN
  2927  
  2928         VD_l og_date :=  SYSDATE;
  2929         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2930                                      PD_job_l og_date =>  VD_log_da te,
  2931                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  2932                                      PC_job_l og_message  => SUBSTR ('Paramete r ROWS TO  PROCESS is  NULL. Ter minating p rocess.',1 ,2000),
  2933                                      PD_date1  => VD_rec _group_dat e,
  2934                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2935  
  2936         RETU RN;
  2937  
  2938       END IF ;
  2939  
  2940     EXCEPTIO N
  2941  
  2942       WHEN N O_DATA_FOU ND THEN
  2943  
  2944         VD_l og_date :=  SYSDATE;
  2945         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2946                                      PD_job_l og_date =>  VD_log_da te,
  2947                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  2948                                      PC_job_l og_message  => 'Param eter for R OWS TO PRO CESS was n ot found.  Terminatin g process. ',
  2949                                      PD_date1  => VD_rec _group_dat e,
  2950                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2951  
  2952         RETU RN;
  2953  
  2954       WHEN O THERS THEN
  2955  
  2956         VD_l og_date :=  SYSDATE;
  2957         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2958                                      PD_job_l og_date =>  VD_log_da te,
  2959                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  2960                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ROWS TO P ROCESS. Te rminating  process. '
  2961                                                                      || SQLERR M,1,2000),
  2962                                      PD_date1  => VD_rec _group_dat e,
  2963                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2964  
  2965         RETU RN;
  2966  
  2967     END;
  2968  
  2969   -- Process  Parameter  LAST PROC ESSED LOG  ID
  2970  
  2971     BEGIN
  2972  
  2973       SELECT     Value
  2974       INTO       VN_par m_last_log _id
  2975       FROM       ADRMGT .Adr_Param eter
  2976       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  2977       AND        Parame ter_name =  'LAST PRO CESSED LOG  ID';
  2978  
  2979       IF VN_ parm_last_ log_id IS  NULL THEN
  2980  
  2981         VD_l og_date :=  SYSDATE;
  2982         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2983                                      PD_job_l og_date =>  VD_log_da te,
  2984                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  2985                                      PC_job_l og_message  => SUBSTR ('Paramete r LAST PRO CESSED LOG  ID is NUL L. Termina ting proce ss.',1,200 0),
  2986                                      PD_date1  => VD_rec _group_dat e,
  2987                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2988  
  2989         RETU RN;
  2990  
  2991       END IF ;
  2992  
  2993     EXCEPTIO N
  2994  
  2995       WHEN N O_DATA_FOU ND THEN
  2996  
  2997         VD_l og_date :=  SYSDATE;
  2998         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2999                                      PD_job_l og_date =>  VD_log_da te,
  3000                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  3001                                      PC_job_l og_message  => 'Param eter for L AST PROCES SED LOG ID  was not f ound. Term inating pr ocess.',
  3002                                      PD_date1  => VD_rec _group_dat e,
  3003                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3004  
  3005         RETU RN;
  3006  
  3007       WHEN O THERS THEN
  3008  
  3009         VD_l og_date :=  SYSDATE;
  3010         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3011                                      PD_job_l og_date =>  VD_log_da te,
  3012                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  3013                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  LAST PROC ESSED LOG  ID. Termin ating proc ess. '
  3014                                                                      || SQLERR M,1,2000),
  3015                                      PD_date1  => VD_rec _group_dat e,
  3016                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3017  
  3018         RETU RN;
  3019  
  3020     END;
  3021  
  3022   -- Write o ut Paramet er log mes sages for  submitted  job
  3023  
  3024     VD_log_d ate := SYS DATE;
  3025     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3026                                 PD _job_log_d ate => VD_ log_date,
  3027                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  3028                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  3029                                 PD _date1 =>  VD_rec_gro up_date,
  3030                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3031  
  3032     VD_log_d ate := SYS DATE;
  3033     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3034                                 PD _job_log_d ate => VD_ log_date,
  3035                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  3036                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  3037                                 PD _date1 =>  VD_rec_gro up_date,
  3038                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3039  
  3040     VD_log_d ate := SYS DATE;
  3041     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3042                                 PD _job_log_d ate => VD_ log_date,
  3043                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  3044                                 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),
  3045                                 PD _date1 =>  VD_rec_gro up_date,
  3046                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3047  
  3048  
  3049     VD_log_d ate := SYS DATE;
  3050     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3051                                 PD _job_log_d ate => VD_ log_date,
  3052                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  3053                                 PC _job_log_m essage =>  SUBSTR(' O LDEST HL7  ERROR TEXT  DAYS KEPT : ' || VN_ parm_hl7_e rr_txt_age ,1,2000),
  3054                                 PD _date1 =>  VD_rec_gro up_date,
  3055                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3056  
  3057     VD_log_d ate := SYS DATE;
  3058     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3059                                 PD _job_log_d ate => VD_ log_date,
  3060                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  3061                                 PC _job_log_m essage =>  SUBSTR(' O LDEST LOG  FILE DAYS  KEPT: ' ||  VN_parm_l og_file_ag e,1,2000),
  3062                                 PD _date1 =>  VD_rec_gro up_date,
  3063                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3064  
  3065     VD_log_d ate := SYS DATE;
  3066     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3067                                 PD _job_log_d ate => VD_ log_date,
  3068                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  3069                                 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),
  3070                                 PD _date1 =>  VD_rec_gro up_date,
  3071                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3072  
  3073     VD_log_d ate := SYS DATE;
  3074     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3075                                 PD _job_log_d ate => VD_ log_date,
  3076                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  3077                                 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),
  3078                                 PD _date1 =>  VD_rec_gro up_date,
  3079                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3080  
  3081   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  3082  
  3083     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  3084  
  3085       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  3086  
  3087       VD_log _date := S YSDATE;
  3088       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3089                                    PD_job_log _date => V D_log_date ,
  3090                                    PC_job_sta tus => SUB STR('WARNI NG     - J ob table p arameters' ,1,60),
  3091                                    PC_job_log _message = > SUBSTR('  Processin g paramete r ROWS TO  PROCESS (i n each loo p) has bee n overridd en.'
  3092                                                              || ' T he overrid e value is : ' || NVL (TO_CHAR(V N_parm_row s_to_proce ss),'NULL' ),1,2000),
  3093                                    PD_date1 = > VD_rec_g roup_date,
  3094                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3095  
  3096     END IF;
  3097  
  3098   -- ******* ********** ********** ********** ********** ********** ********** ********
  3099   -- *
  3100   -- * Check  to see if  process i s running  on a repor ting datab ase.
  3101   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  3102   -- *
  3103   -- ******* ********** ********** ********** ********** ********** ********** ********
  3104  
  3105     IF NOT V B_allow_rp t_inst THE N
  3106  
  3107       BEGIN
  3108  
  3109         VD_l og_date :=  SYSDATE;
  3110         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3111                                      PD_job_l og_date =>  VD_log_da te,
  3112                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  3113                                      PD_date1  => VD_rec _group_dat e,
  3114                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3115  
  3116         SELE CT    Inst ance_name
  3117         INTO       VC_i nstance_na me
  3118         FROM       V$in stance;
  3119  
  3120         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  3121  
  3122           VD _log_date  := SYSDATE ;
  3123           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  3124                                        PD_job _log_date  => VD_log_ date,
  3125                                        PC_job _status =>  SUBSTR('E RROR        - Process ing Failed ',1,60),
  3126                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  3127                                                                     || VC_inst ance_name
  3128                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  3129                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  3130                                        PD_dat e1 => VD_r ec_group_d ate,
  3131                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  3132  
  3133           RE TURN;
  3134  
  3135         END  IF;
  3136  
  3137       EXCEPT ION
  3138  
  3139         WHEN  OTHERS TH EN
  3140  
  3141           VD _log_date  := SYSDATE ;
  3142           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  3143                                        PD_job _log_date  => VD_log_ date,
  3144                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  3145                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  3146                                        PD_dat e1 => VD_r ec_group_d ate,
  3147                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  3148  
  3149           RE TURN;
  3150  
  3151       END;
  3152  
  3153     END IF;
  3154  
  3155   -- ******* ********** ********** ********** ********** ********** ********** ********
  3156   -- *
  3157   -- * Check  to see if  the job h as already  run today
  3158   -- *  - If  running i n stand-al one mode,  don't chec k.
  3159   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  3160   -- *
  3161   -- ******* ********** ********** ********** ********** ********** ********** ********
  3162  
  3163     IF NOT P B_run_stan dalone THE N
  3164  
  3165       BEGIN
  3166  
  3167         VD_l og_date :=  SYSDATE;
  3168         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3169                                      PD_job_l og_date =>  VD_log_da te,
  3170                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  3171                                      PD_date1  => VD_rec _group_dat e,
  3172                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3173  
  3174         SELE CT    COUN T(*)
  3175         INTO       VN_r ec_count
  3176         FROM       ADRM GT.Job_Pro cess_Logs
  3177         WHER E     Job_ name = CC_ process_na me
  3178         AND        Date 1 = VD_rec _group_dat e
  3179         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  3180  
  3181         IF V N_rec_coun t > 0 THEN
  3182  
  3183           VD _log_date  := SYSDATE ;
  3184           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  3185                                        PD_job _log_date  => VD_log_ date,
  3186                                        PC_job _status =>  SUBSTR('W ARNING      - This da te has alr eady been  processed' ,1,60),
  3187                                        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),
  3188                                        PD_dat e1 => VD_r ec_group_d ate,
  3189                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  3190  
  3191           RE TURN;
  3192  
  3193         END  IF;
  3194  
  3195       EXCEPT ION
  3196  
  3197         WHEN  OTHERS TH EN
  3198  
  3199           VD _log_date  := SYSDATE ;
  3200           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  3201                                        PD_job _log_date  => VD_log_ date,
  3202                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  3203                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  3204                                        PD_dat e1 => VD_r ec_group_d ate,
  3205                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  3206  
  3207           RE TURN;
  3208  
  3209       END;
  3210  
  3211     END IF;
  3212  
  3213   -- ******* ********** ********** ********** ********** ********** ********** ********
  3214   -- *
  3215   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  3216   -- *  - If  yes, then  end this  job.
  3217   -- *
  3218   -- ******* ********** ********** ********** ********** ********** ********** ********
  3219  
  3220     SELECT C OUNT(*)
  3221     INTO   V N_job_coun t
  3222     FROM   S YS.DBA_JOB S_RUNNING  R,
  3223            S YS.DBA_JOB S J
  3224     WHERE  J .JOB = R.J OB
  3225     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  3226  
  3227     IF VN_jo b_count >  1 THEN
  3228  
  3229       VD_log _date := S YSDATE;
  3230       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3231                                    PD_job_log _date => V D_log_date ,
  3232                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  3233                                    PC_job_log _message = > SUBSTR(' There is a nother '
  3234                                                                || C C_sp_name
  3235                                                                || '  job runni ng.'
  3236                                                                || '  Exiting j ob without  running.' ,1,2000),
  3237                                    PD_date1 = > VD_rec_g roup_date,
  3238                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3239  
  3240       RETURN ;
  3241  
  3242     ELSE
  3243  
  3244       IF VB_ run_standa lone THEN
  3245  
  3246         VD_l og_date :=  SYSDATE;
  3247         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3248                                      PD_job_l og_date =>  VD_log_da te,
  3249                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  3250                                      PD_date1  => VD_rec _group_dat e,
  3251                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3252  
  3253       ELSE
  3254  
  3255         SELE CT    MAX( J.Job)
  3256         INTO       VN_j ob_number
  3257         FROM       SYS. DBA_JOBS_R UNNING R,
  3258                    SYS. DBA_JOBS J
  3259         WHER E     J.JO B = R.JOB
  3260         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  3261  
  3262         VD_l og_date :=  SYSDATE;
  3263         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3264                                      PD_job_l og_date =>  VD_log_da te,
  3265                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  3266                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  3267                                                                      || VN_job _number,1, 2000),
  3268                                      PD_date1  => VD_rec _group_dat e,
  3269                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3270  
  3271       END IF ;
  3272  
  3273     END IF;
  3274  
  3275   -- ******* ********** ********** ********** ********** ********** ********** ********
  3276   -- *
  3277   -- * Main  processing  loop
  3278   -- *
  3279   -- ******* ********** ********** ********** ********** ********** ********** ********
  3280  
  3281     VN_pass_ count := 0 ;
  3282     VN_updat e_count :=  0;
  3283     VD_proce ss_start_d ate := SYS DATE;
  3284  
  3285   -- ******* ********** ********** ********** ********** ********** ********** ********
  3286   -- * Remov e old proc ess log ro ws
  3287   -- ******* ********** ********** ********** ********** ********** ********** ********
  3288     BEGIN
  3289  
  3290       VD_log _date := S YSDATE;
  3291       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3292                                    PD_job_log _date => V D_log_date ,
  3293                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  3294                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  3295                                                                   | | VN_parm_ log_file_a ge
  3296                                                                   | | ' days o ld',1,2000 ),
  3297                                    PD_date1 = > VD_rec_g roup_date,
  3298                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3299  
  3300       DELETE
  3301       FROM       ADRMGT .Job_Proce ss_Logs
  3302       WHERE      Job_na me = CC_pr ocess_name
  3303       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  3304  
  3305       COMMIT ;
  3306  
  3307       VD_log _date := S YSDATE;
  3308       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3309                                    PD_job_log _date => V D_log_date ,
  3310                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  3311                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  3312                                                                   | | VN_parm_ log_file_a ge
  3313                                                                   | | ' days o ld',1,2000 ),
  3314                                    PD_date1 = > VD_rec_g roup_date,
  3315                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3316  
  3317  
  3318     EXCEPTIO N
  3319  
  3320       WHEN N O_DATA_FOU ND THEN
  3321  
  3322         NULL ;
  3323  
  3324       WHEN O THERS THEN
  3325  
  3326         VD_l og_date :=  SYSDATE;
  3327         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3328                                      PD_job_l og_date  = > VD_log_d ate,
  3329                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess logs .',1,60),
  3330                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  3331                                      PD_date1  => VD_rec _group_dat e,
  3332                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3333  
  3334     END;
  3335  
  3336   -- ******* ********** ********** ********** ********** ********** ********** ********
  3337   -- * Remov e old proc ess error  rows
  3338   -- ******* ********** ********** ********** ********** ********** ********** ********
  3339  
  3340     BEGIN
  3341  
  3342       VD_log _date := S YSDATE;
  3343       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3344                                    PD_job_log _date => V D_log_date ,
  3345                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  3346                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  3347                                                                   | | VN_parm_ log_file_a ge
  3348                                                                   | | ' days o ld',1,2000 ),
  3349                                    PD_date1 = > VD_rec_g roup_date,
  3350                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3351  
  3352       DELETE
  3353       FROM       ADRMGT .Job_Proce ss_Errs
  3354       WHERE      Job_na me = CC_pr ocess_name
  3355       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  3356  
  3357       COMMIT ;
  3358  
  3359       VD_log _date := S YSDATE;
  3360       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3361                                    PD_job_log _date => V D_log_date ,
  3362                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  3363                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  3364                                                                   | | VN_parm_ log_file_a ge
  3365                                                                   | | ' days o ld',1,2000 ),
  3366                                    PD_date1 = > VD_rec_g roup_date,
  3367                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3368  
  3369     EXCEPTIO N
  3370  
  3371       WHEN N O_DATA_FOU ND THEN
  3372  
  3373         NULL ;
  3374  
  3375       WHEN O THERS THEN
  3376  
  3377         VD_l og_date :=  SYSDATE;
  3378         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3379                                      PD_job_l og_date  = > VD_log_d ate,
  3380                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess erro rs.',1,60) ,
  3381                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  3382                                      PD_date1  => VD_rec _group_dat e,
  3383                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3384  
  3385     END;
  3386  
  3387   -- ******* ********** ********** ********** ********** ********** ********** ********
  3388   -- * Main  record cur sor logic
  3389   -- ******* ********** ********** ********** ********** ********** ********** ********
  3390  
  3391     BEGIN
  3392  
  3393       VN_max _log_id :=  0;
  3394       VN_pas s_count :=  0;
  3395       VN_upd ate_count  := 0;
  3396  
  3397       OPEN C _hl7_id;
  3398  
  3399       LOOP
  3400  
  3401         FETC H C_hl7_id
  3402         BULK  COLLECT I NTO T_hl7_ id
  3403         LIMI T VN_parm_ rows_to_pr ocess;
  3404  
  3405         EXIT  WHEN T_hl 7_id.COUNT  = 0;
  3406  
  3407         FORA LL I_hl7_i d IN T_hl7 _id.FIRST. .T_hl7_id. last
  3408           UP DATE    AD R.Hl7_tran saction_lo g
  3409           SE T       In ternal_err or_text =  NULL
  3410           WH ERE     Hl 7_transact ion_log_id  = T_hl7_i d(I_hl7_id );
  3411  
  3412         COMM IT;
  3413  
  3414         FOR  I_hl7_id I N T_hl7_id .FIRST..T_ hl7_id.las t LOOP
  3415  
  3416           IF  T_hl7_id( I_hl7_id)  > VN_max_l og_id THEN
  3417  
  3418              VN_max_log _id := T_h l7_id(I_hl 7_id);
  3419  
  3420           EN D IF;
  3421  
  3422         END  LOOP;
  3423  
  3424         VN_p ass_count  := VN_pass _count + 1 ;
  3425  
  3426         VN_u pdate_coun t := VN_up date_count  + T_hl7_i d.COUNT;
  3427  
  3428       END LO OP;
  3429  
  3430       CLOSE  C_hl7_id;
  3431  
  3432       BEGIN
  3433  
  3434         IF N VL(VN_max_ log_id,0)  <> 0 THEN
  3435  
  3436           UP DATE    AD RMGT.Adr_P arameter
  3437           SE T       Va lue = VN_m ax_log_id
  3438           WH ERE     Ap plication_ name = 'HL 7 NULL INT ERNAL_ERRO R_TEXT COL UMN'
  3439           AN D       Pa rameter_na me = 'LAST  PROCESSED  LOG ID';
  3440  
  3441           CO MMIT;
  3442  
  3443         ELSE
  3444  
  3445           VN _max_log_i d := VN_pa rm_last_lo g_id;
  3446  
  3447         END  IF;
  3448  
  3449       EXCEPT ION
  3450  
  3451         WHEN  OTHERS TH EN
  3452  
  3453           VD _log_date  := SYSDATE ;
  3454           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  3455                                        PD_job _log_date   => VD_log _date,
  3456                                        PC_job _status =>  SUBSTR('E RROR        - Unknown  error upd ating LAST  PROCESSED  LOG ID.', 1,60),
  3457                                        PC_job _log_messa ge => SUBS TR('Last p rocessed l og id: ' | | VN_max_l og_id
  3458                                                                        || '. '  || SQLERR M,1,2000),
  3459                                        PD_dat e1 => VD_r ec_group_d ate,
  3460                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  3461  
  3462           RE TURN;
  3463  
  3464       END;
  3465  
  3466   -- Process  completio n informat ion
  3467  
  3468       VD_log _date := S YSDATE;
  3469       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3470                                    PD_job_log _date => V D_log_date ,
  3471                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  3472                                    PD_date1 = > VD_rec_g roup_date,
  3473                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  3474                                    PN_numeric 2 => VN_pa ss_count,
  3475                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  3476  
  3477       VD_log _date := S YSDATE;
  3478       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3479                                    PD_job_log _date => V D_log_date ,
  3480                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  3481                                    PD_date1 = > VD_rec_g roup_date,
  3482                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  3483                                    PN_numeric 2 => VN_up date_count ,
  3484                                    PC_text2 = > SUBSTR(' Updated Re cord Count ',1,255));
  3485  
  3486       VD_log _date := S YSDATE;
  3487       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3488                                    PD_job_log _date => V D_log_date ,
  3489                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  3490                                    PD_date1 = > VD_rec_g roup_date,
  3491                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  3492                                    PN_numeric 2 => VN_ma x_log_id,
  3493                                    PC_text2 = > SUBSTR(' Last proce ssed log i d',1,255)) ;
  3494  
  3495       VD_pro cess_end_d ate := SYS DATE;
  3496       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  3497                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  3498                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  3499                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  3500                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  3501  
  3502       VD_log _date := S YSDATE;
  3503       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3504                                    PD_job_log _date => V D_log_date ,
  3505                                    PC_job_sta tus => SUB STR('SUCCE SS     - P rocessing  Completed' ,1,60),
  3506                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  3507                                    PD_date1 = > VD_rec_g roup_date,
  3508                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3509  
  3510     EXCEPTIO N
  3511  
  3512       WHEN O THERS THEN
  3513  
  3514         VD_l og_date :=  SYSDATE;
  3515         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3516                                      PD_job_l og_date  = > VD_log_d ate,
  3517                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror updat ing Intern al_error_t ext.',1,60 ),
  3518                                      PC_job_l og_message  => SUBSTR ('Cursor L oop Count:  ' || VN_p ass_count
  3519                                                                      || ' Upda ted Record  Count: '  || VN_upda te_count
  3520                                                                      || '. ' | | SQLERRM, 1,2000),
  3521                                      PD_date1  => VD_rec _group_dat e,
  3522                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3523  
  3524         RETU RN;
  3525  
  3526     END;
  3527  
  3528   EXCEPTION
  3529  
  3530     WHEN OTH ERS THEN
  3531  
  3532       ROLLBA CK;
  3533  
  3534       VD_log _date := S YSDATE;
  3535       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3536                                    PD_job_err or_date  = > VD_log_d ate,
  3537                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  3538                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Hl7_Txn_Lo g_Null_Err _Col_Sp.'
  3539                                                                  ||  SQLERRM,1 ,2000),
  3540                                    PD_date1 = > VD_rec_g roup_date,
  3541                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3542  
  3543       VD_log _date := S YSDATE;
  3544       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3545                                    PD_job_log _date => V D_log_date ,
  3546                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  3547                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  3548                                    PD_date1 = > VD_rec_g roup_date,
  3549                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3550  
  3551   END Hl7_Tx n_Log_Null _Err_Col_S p;
  3552   /
  3553   DROP PROCE DURE ADR.P ERSON_CHG_ LOG_CLEANU P_SP;
  3554  
  3555   CREATE OR  REPLACE PR OCEDURE AD R.Person_C hg_Log_Cle anup_Sp
  3556     (PB_run_ standalone
  3557        IN      BOOLEAN  DEFAULT FA LSE,
  3558      PB_allo w_rpt_inst
  3559        IN      BOOLEAN  DEFAULT FA LSE,
  3560      PN_rows _to_proces s
  3561        IN      NUMBER D EFAULT NUL L
  3562     )
  3563   IS
  3564  
  3565   -- ******* ********** ********** ********** ********** ********** ********** ********
  3566   -- * Proce dure: ADR. Person_Chg _Log_Clean up_Sp
  3567   -- *
  3568   -- *   Upd ate the AD R.Person_C hange_Log  table to r emove rows  where the
  3569   -- *   sub mission da te is olde r than the  days defi ned in the
  3570   -- *   ADR MGT.Adr_Pa rameter ta ble. Initi ally this  was set to  31 days.
  3571   -- *
  3572   -- * Param eters:
  3573   -- *
  3574   -- *  PB_r un_standal one   Igno re DBMS_JO B logic fo r checking  running j obs.
  3575   -- *                         Def ault: FALS E
  3576   -- *
  3577   -- *  PB_a llow_rpt_i nst   Allo w stored p rocedure t o be submi tted in th e
  3578   -- *                        DBMS _JOB queue  on the AD R reportin g database s
  3579   -- *                         Def ault: FALS E
  3580   -- *
  3581   -- ******* ********** ********** ********** ********** ********** ********** ********
  3582   --
  3583   -- ======= ========== ========== ========== ========== ========== ========== ========
  3584   -- Date         Autho r             Descrip tion
  3585   -- ======= ========== ========== ========== ========== ========== ========== ========
  3586   -- 06/23/2 010  Craig  Wood         Created  for CCR 1 175.
  3587   -- 10/13/2 014  Craig  Wood         CCR 215 2 - Fix ex ception ha ndler rout ine in
  3588   --                                              main p rocessing  loop to cl ose the
  3589   --                                              cursor  and write  to error  table
  3590   --                                              instea d of log t able. Also , exit
  3591   --                                              job if  too many  errors occ ur.
  3592   -- ======= ========== ========== ========== ========== ========== ========== ========
  3593  
  3594   -- CONSTAN TS
  3595  
  3596     CC_no                                   V ARCHAR2(1)  := 'N';
  3597     CC_parm_ applicatio n_name     CONSTANT V ARCHAR2(80 ) := 'PERS ON_CHG_LOG _CLEANUP_S P';
  3598     CC_parm_ log_file_a ge         CONSTANT V ARCHAR2(50 ) := 'OLDE ST LOG FIL E DAYS KEP T';
  3599     CC_parm_ rows_to_pr ocess      CONSTANT V ARCHAR2(50 ) := 'ROWS  TO PROCES S';
  3600     CC_parm_ submitted_ age        CONSTANT V ARCHAR2(50 ) := 'OLDE ST SUBMITT ED DATE KE PT';
  3601     CC_proce ss_name               CONSTANT V ARCHAR2(60 ) := 'Pers on_Change_ Log Cleanu p';
  3602     CC_sp_na me                    CONSTANT V ARCHAR2(35 ) := 'Pers on_Chg_Log _Cleanup_S p';
  3603     CC_yes                         CONSTANT V ARCHAR2(1)  := 'Y';
  3604  
  3605     CN_max_e rror_count            CONSTANT N UMBER := 5 00; -- CCR  2152
  3606  
  3607   -- VARIABL ES
  3608  
  3609     VB_allow _rpt_inst                      B OOLEAN :=  FALSE;
  3610     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  3611  
  3612     VC_allow _rpt_inst                      V ARCHAR2(5)  := NULL;
  3613     VC_insta nce_name                       V ARCHAR2(16 );
  3614     VC_proce ss_duratio n                   V ARCHAR2(25 );
  3615     VC_run_s tandalone                      V ARCHAR2(5)  := NULL;
  3616     VC_sql_s tatement                       V ARCHAR2(20 00);
  3617  
  3618     VD_log_d ate                            D ATE;
  3619     VD_proce ss_end_dat e                   D ATE;
  3620     VD_proce ss_start_d ate                 D ATE;
  3621     VD_rec_g roup_date                      D ATE;
  3622  
  3623     VN_error _count                         N UMBER := 0 ; -- CCR 2 152
  3624     VN_job_c ount                           N UMBER := 0 ;
  3625     VN_job_n umber                          N UMBER;
  3626     VN_parm_ log_file_a ge                  N UMBER;
  3627     VN_parm_ rows_to_pr ocess               N UMBER;
  3628     VN_parm_ submitted_ age                 N UMBER;
  3629     VN_pass_ count                          N UMBER := 0 ;
  3630     VN_rec_c ount                           N UMBER := 0 ;
  3631     VN_updat e_count                        N UMBER := 0 ;
  3632  
  3633   -- CURSORS
  3634  
  3635     CURSOR C _prsn_chg_ rec IS
  3636       SELECT     Person _change_lo g_id
  3637       FROM       ADR.Pe rson_Chang e_Log
  3638       WHERE      Submit ted_date <  SYSDATE -  VN_parm_s ubmitted_a ge
  3639       AND        ROWNUM  <= VN_par m_rows_to_ process;
  3640  
  3641   -- TYPES
  3642  
  3643     TYPE TT_ prsn_chg_i d IS
  3644       TABLE  OF ADR.Per son_Change _Log.Perso n_change_l og_id%TYPE ;
  3645  
  3646   -- MEMORY  TABLES
  3647  
  3648     T_prsn_c hg_id                          T T_prsn_chg _id;
  3649  
  3650   -- ******* ********** ********** ********** ********** ********** ********** *******
  3651   -- *
  3652   -- *  MAIN  PROCEDURE :
  3653   -- *
  3654   -- ******* ********** ********** ********** ********** ********** ********** *******
  3655  
  3656   BEGIN
  3657  
  3658     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  3659     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  3660  
  3661     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  3662     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  3663  
  3664     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  3665     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  3666  
  3667     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  3668     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  3669  
  3670     VD_rec_g roup_date  := TRUNC(S YSDATE);
  3671  
  3672     VD_log_d ate := SYS DATE;
  3673     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3674                                 PD _job_log_d ate => VD_ log_date,
  3675                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  3676                                 PD _date1 =>  VD_rec_gro up_date,
  3677                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3678  
  3679   -- ******* ********** ********** ********** ********** ********** ********** ********
  3680   -- *
  3681   -- * Valid ate input  parameters
  3682   -- *
  3683   -- ******* ********** ********** ********** ********** ********** ********** ********
  3684  
  3685   -- * Check  run stand alone flag
  3686  
  3687     IF PB_ru n_standalo ne IS NULL
  3688      OR NOT  PB_run_sta ndalone TH EN
  3689  
  3690       VB_run _standalon e := FALSE ;
  3691       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  3692  
  3693     ELSE
  3694  
  3695       VB_run _standalon e := TRUE;
  3696       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  3697  
  3698     END IF;
  3699  
  3700   -- * Check  run on re port insta nce flag
  3701  
  3702     IF PB_al low_rpt_in st IS NULL
  3703      OR NOT  PB_allow_r pt_inst TH EN
  3704  
  3705       VB_all ow_rpt_ins t := FALSE ;
  3706       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  3707  
  3708     ELSE
  3709  
  3710       VB_all ow_rpt_ins t := TRUE;
  3711       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  3712  
  3713     END IF;
  3714  
  3715   -- ******* ********** ********** ********** ********** ********** ********** ********
  3716   -- *
  3717   -- * Retri eve proces sing param eters
  3718   -- *
  3719   -- ******* ********** ********** ********** ********** ********** ********** ********
  3720  
  3721   -- ******* ********** ********** ********** ********** ********** ********** ********
  3722   -- * Proce ss Paramet er for OLD EST LOG FI LE DAYS KE PT
  3723   -- ******* ********** ********** ********** ********** ********** ********** ********
  3724  
  3725     BEGIN
  3726  
  3727       SELECT     Value
  3728       INTO       VN_par m_log_file _age
  3729       FROM       ADRMGT .Adr_Param eter
  3730       WHERE      Applic ation_name  = CC_parm _applicati on_name
  3731       AND        Parame ter_name =  CC_parm_l og_file_ag e;
  3732  
  3733       IF VN_ parm_log_f ile_age IS  NULL THEN
  3734  
  3735         VD_l og_date :=  SYSDATE;
  3736         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3737                                      PD_job_l og_date =>  VD_log_da te,
  3738                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  3739                                      PC_job_l og_message  => SUBSTR ('Paramete r '
  3740                                                                      || CC_par m_log_file _age
  3741                                                                      || 'is NU LL. Termin ating proc ess.',1,20 00),
  3742                                      PD_date1  => VD_rec _group_dat e,
  3743                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3744  
  3745         RETU RN;
  3746  
  3747       END IF ;
  3748  
  3749     EXCEPTIO N
  3750  
  3751       WHEN N O_DATA_FOU ND THEN
  3752  
  3753         VD_l og_date :=  SYSDATE;
  3754         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3755                                      PD_job_l og_date =>  VD_log_da te,
  3756                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  3757                                      PC_job_l og_message  => 'Param eter for '
  3758                                                              || CC_ parm_log_f ile_age
  3759                                                              || ' w as not fou nd. Termin ating proc ess.',
  3760                                      PD_date1  => VD_rec _group_dat e,
  3761                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3762  
  3763         RETU RN;
  3764  
  3765       WHEN O THERS THEN
  3766  
  3767         VD_l og_date :=  SYSDATE;
  3768         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3769                                      PD_job_l og_date =>  VD_log_da te,
  3770                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  3771                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  '
  3772                                                                      || CC_par m_log_file _age
  3773                                                                      || '. Ter minating p rocess. '
  3774                                                                      || SQLERR M,1,2000),
  3775                                      PD_date1  => VD_rec _group_dat e,
  3776                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3777  
  3778         RETU RN;
  3779  
  3780     END;
  3781  
  3782   -- ******* ********** ********** ********** ********** ********** ********** ********
  3783   -- * Proce ss Paramet er for OLD EST SUBMIT TED DATE K EPT
  3784   -- ******* ********** ********** ********** ********** ********** ********** ********
  3785  
  3786     BEGIN
  3787  
  3788       SELECT     Value
  3789       INTO       VN_par m_submitte d_age
  3790       FROM       ADRMGT .Adr_Param eter
  3791       WHERE      Applic ation_name  = CC_parm _applicati on_name
  3792       AND        Parame ter_name =  CC_parm_s ubmitted_a ge;
  3793  
  3794       IF VN_ parm_submi tted_age I S NULL THE N
  3795  
  3796         VD_l og_date :=  SYSDATE;
  3797         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3798                                      PD_job_l og_date =>  VD_log_da te,
  3799                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  3800                                      PC_job_l og_message  => SUBSTR ('Paramete r '
  3801                                                                      || CC_par m_submitte d_age
  3802                                                                      || 'is NU LL. Termin ating proc ess.',1,20 00),
  3803                                      PD_date1  => VD_rec _group_dat e,
  3804                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3805  
  3806         RETU RN;
  3807  
  3808       END IF ;
  3809  
  3810     EXCEPTIO N
  3811  
  3812       WHEN N O_DATA_FOU ND THEN
  3813  
  3814         VD_l og_date :=  SYSDATE;
  3815         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3816                                      PD_job_l og_date =>  VD_log_da te,
  3817                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  3818                                      PC_job_l og_message  => 'Param eter for '
  3819                                                              || CC_ parm_submi tted_age
  3820                                                              || ' w as not fou nd. Termin ating proc ess.',
  3821                                      PD_date1  => VD_rec _group_dat e,
  3822                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3823  
  3824         RETU RN;
  3825  
  3826       WHEN O THERS THEN
  3827  
  3828         VD_l og_date :=  SYSDATE;
  3829         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3830                                      PD_job_l og_date =>  VD_log_da te,
  3831                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  3832                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  '
  3833                                                                      || CC_par m_submitte d_age
  3834                                                                      || '. Ter minating p rocess. '
  3835                                                                      || SQLERR M,1,2000),
  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     END;
  3842  
  3843   -- ******* ********** ********** ********** ********** ********** ********** ********
  3844   -- * Proce ss Paramet er ROWS TO  PROCESS
  3845   -- ******* ********** ********** ********** ********** ********** ********** ********
  3846  
  3847     BEGIN
  3848  
  3849       SELECT     Value
  3850       INTO       VN_par m_rows_to_ process
  3851       FROM       ADRMGT .Adr_Param eter
  3852       WHERE      Applic ation_name  = CC_parm _applicati on_name
  3853       AND        Parame ter_name =  CC_parm_r ows_to_pro cess;
  3854  
  3855       IF VN_ parm_rows_ to_process  IS NULL T HEN
  3856  
  3857         VD_l og_date :=  SYSDATE;
  3858         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3859                                      PD_job_l og_date =>  VD_log_da te,
  3860                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  3861                                      PC_job_l og_message  => SUBSTR ('Paramete r '
  3862                                                                      || CC_par m_rows_to_ process
  3863                                                                      || 'is NU LL. Termin ating proc ess.',1,20 00),
  3864                                      PD_date1  => VD_rec _group_dat e,
  3865                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3866  
  3867         RETU RN;
  3868  
  3869       END IF ;
  3870  
  3871     EXCEPTIO N
  3872  
  3873       WHEN N O_DATA_FOU ND THEN
  3874  
  3875         VD_l og_date :=  SYSDATE;
  3876         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3877                                      PD_job_l og_date =>  VD_log_da te,
  3878                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  3879                                      PC_job_l og_message  => 'Param eter for '
  3880                                                              || CC_ parm_rows_ to_process
  3881                                                              || ' w as not fou nd. Termin ating proc ess.',
  3882                                      PD_date1  => VD_rec _group_dat e,
  3883                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3884  
  3885         RETU RN;
  3886  
  3887       WHEN O THERS THEN
  3888  
  3889         VD_l og_date :=  SYSDATE;
  3890         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3891                                      PD_job_l og_date =>  VD_log_da te,
  3892                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  3893                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  '
  3894                                                                      || CC_par m_rows_to_ process
  3895                                                                      || '. Ter minating p rocess. '
  3896                                                                      || SQLERR M,1,2000),
  3897                                      PD_date1  => VD_rec _group_dat e,
  3898                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3899  
  3900         RETU RN;
  3901  
  3902     END;
  3903  
  3904   -- ******* ********** ********** ********** ********** ********** ********** ********
  3905   -- *
  3906   -- * Write  out Param eter log m essages fo r submitte d job
  3907   -- *
  3908   -- ******* ********** ********** ********** ********** ********** ********** ********
  3909  
  3910   -- ******* ********** ********** ********** ********** ********** ********** ********
  3911   -- *  Job  Submission  Parameter s
  3912   -- ******* ********** ********** ********** ********** ********** ********** ********
  3913  
  3914     VD_log_d ate := SYS DATE;
  3915     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3916                                 PD _job_log_d ate => VD_ log_date,
  3917                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  3918                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  3919                                 PD _date1 =>  VD_rec_gro up_date,
  3920                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3921  
  3922     VD_log_d ate := SYS DATE;
  3923     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3924                                 PD _job_log_d ate => VD_ log_date,
  3925                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  3926                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  3927                                 PD _date1 =>  VD_rec_gro up_date,
  3928                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3929  
  3930     VD_log_d ate := SYS DATE;
  3931     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3932                                 PD _job_log_d ate => VD_ log_date,
  3933                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  3934                                 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),
  3935                                 PD _date1 =>  VD_rec_gro up_date,
  3936                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3937  
  3938   -- ******* ********** ********** ********** ********** ********** ********** ********
  3939   -- *  Job  Table Para meters
  3940   -- ******* ********** ********** ********** ********** ********** ********** ********
  3941  
  3942     VD_log_d ate := SYS DATE;
  3943     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3944                                 PD _job_log_d ate => VD_ log_date,
  3945                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  3946                                 PC _job_log_m essage =>  SUBSTR(' '  || CC_par m_log_file _age || ':  ' || VN_p arm_log_fi le_age,1,2 000),
  3947                                 PD _date1 =>  VD_rec_gro up_date,
  3948                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3949  
  3950     VD_log_d ate := SYS DATE;
  3951     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3952                                 PD _job_log_d ate => VD_ log_date,
  3953                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  3954                                 PC _job_log_m essage =>  SUBSTR(' '  || CC_par m_submitte d_age || ' : ' || VN_ parm_submi tted_age,1 ,2000),
  3955                                 PD _date1 =>  VD_rec_gro up_date,
  3956                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3957  
  3958     VD_log_d ate := SYS DATE;
  3959     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3960                                 PD _job_log_d ate => VD_ log_date,
  3961                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  3962                                 PC _job_log_m essage =>  SUBSTR(' '
  3963                                                                 ||  CC_parm_ro ws_to_proc ess
  3964                                                                 ||  ' (in each  loop): '
  3965                                                                 ||  TO_CHAR(VN _parm_rows _to_proces s),1,2000) ,
  3966                                 PD _date1 =>  VD_rec_gro up_date,
  3967                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3968  
  3969   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  3970  
  3971     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  3972  
  3973       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  3974  
  3975       VD_log _date := S YSDATE;
  3976       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3977                                    PD_job_log _date => V D_log_date ,
  3978                                    PC_job_sta tus => SUB STR('WARNI NG - Job t able param eters',1,6 0),
  3979                                    PC_job_log _message = > SUBSTR('  Processin g paramete r '
  3980                                                                   | | CC_parm_ rows_to_pr ocess
  3981                                                                   | | ' (in ea ch loop) h as been ov erridden.'
  3982                                                                   | | ' The ov erride val ue is: '
  3983                                                                   | | TO_CHAR( VN_parm_ro ws_to_proc ess),1,200 0),
  3984                                    PD_date1 = > VD_rec_g roup_date,
  3985                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3986  
  3987     END IF;
  3988  
  3989   -- ******* ********** ********** ********** ********** ********** ********** ********
  3990   -- *
  3991   -- * Check  to see if  process i s running  on a repor ting datab ase.
  3992   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  3993   -- *
  3994   -- ******* ********** ********** ********** ********** ********** ********** ********
  3995  
  3996     IF NOT V B_allow_rp t_inst THE N
  3997  
  3998       BEGIN
  3999  
  4000         VD_l og_date :=  SYSDATE;
  4001         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4002                                      PD_job_l og_date =>  VD_log_da te,
  4003                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  4004                                      PD_date1  => VD_rec _group_dat e,
  4005                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4006  
  4007         SELE CT    Inst ance_name
  4008         INTO       VC_i nstance_na me
  4009         FROM       V$in stance;
  4010  
  4011         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  4012  
  4013           VD _log_date  := SYSDATE ;
  4014           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  4015                                        PD_job _log_date  => VD_log_ date,
  4016                                        PC_job _status =>  SUBSTR('E RROR - Pro cessing Fa iled',1,60 ),
  4017                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  4018                                                                     || VC_inst ance_name
  4019                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  4020                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  4021                                        PD_dat e1 => VD_r ec_group_d ate,
  4022                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4023  
  4024           RE TURN;
  4025  
  4026         END  IF;
  4027  
  4028       EXCEPT ION
  4029  
  4030         WHEN  OTHERS TH EN
  4031  
  4032           VD _log_date  := SYSDATE ;
  4033           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  4034                                        PD_job _log_date  => VD_log_ date,
  4035                                        PC_job _status =>  SUBSTR('E RROR - Una ble to ret rieve inst ance name' ,1,60),
  4036                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  4037                                        PD_dat e1 => VD_r ec_group_d ate,
  4038                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4039  
  4040           RE TURN;
  4041  
  4042       END;
  4043  
  4044     END IF;
  4045  
  4046   -- ******* ********** ********** ********** ********** ********** ********** ********
  4047   -- *
  4048   -- * Check  to see if  the job h as already  run today
  4049   -- *  - If  running i n stand-al one mode,  don't chec k.
  4050   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  4051   -- *
  4052   -- ******* ********** ********** ********** ********** ********** ********** ********
  4053  
  4054     IF NOT P B_run_stan dalone THE N
  4055  
  4056       BEGIN
  4057  
  4058         VD_l og_date :=  SYSDATE;
  4059         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4060                                      PD_job_l og_date =>  VD_log_da te,
  4061                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  4062                                      PD_date1  => VD_rec _group_dat e,
  4063                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4064  
  4065         SELE CT    COUN T(*)
  4066         INTO       VN_r ec_count
  4067         FROM       ADRM GT.Job_Pro cess_Logs
  4068         WHER E     Job_ name = CC_ process_na me
  4069         AND        Date 1 = VD_rec _group_dat e
  4070         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  4071  
  4072         IF V N_rec_coun t > 0 THEN
  4073  
  4074           VD _log_date  := SYSDATE ;
  4075           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  4076                                        PD_job _log_date  => VD_log_ date,
  4077                                        PC_job _status =>  SUBSTR('W ARNING - T his date h as already  been proc essed',1,6 0),
  4078                                        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),
  4079                                        PD_dat e1 => VD_r ec_group_d ate,
  4080                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4081  
  4082           RE TURN;
  4083  
  4084         END  IF;
  4085  
  4086       EXCEPT ION
  4087  
  4088         WHEN  OTHERS TH EN
  4089  
  4090           VD _log_date  := SYSDATE ;
  4091           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  4092                                        PD_job _log_date  => VD_log_ date,
  4093                                        PC_job _status =>  SUBSTR('E RROR - Una ble to ver ify if job  has alrea dy run',1, 60),
  4094                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  4095                                        PD_dat e1 => VD_r ec_group_d ate,
  4096                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4097  
  4098           RE TURN;
  4099  
  4100       END;
  4101  
  4102     END IF;
  4103  
  4104   -- ******* ********** ********** ********** ********** ********** ********** ********
  4105   -- *
  4106   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  4107   -- *  - If  yes, then  end this  job.
  4108   -- *
  4109   -- ******* ********** ********** ********** ********** ********** ********** ********
  4110  
  4111     SELECT C OUNT(*)
  4112     INTO   V N_job_coun t
  4113     FROM   S YS.DBA_JOB S_RUNNING  R,
  4114            S YS.DBA_JOB S J
  4115     WHERE  J .JOB = R.J OB
  4116     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  4117  
  4118     IF VN_jo b_count >  1 THEN
  4119  
  4120       VD_log _date := S YSDATE;
  4121       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4122                                    PD_job_log _date => V D_log_date ,
  4123                                    PC_job_sta tus => SUB STR('WARNI NG - Check  for runni ng jobs',1 ,60),
  4124                                    PC_job_log _message = > SUBSTR(' There is a nother '
  4125                                                                || C C_sp_name
  4126                                                                || '  job runni ng.'
  4127                                                                || '  Exiting j ob without  running.' ,1,2000),
  4128                                    PD_date1 = > VD_rec_g roup_date,
  4129                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4130  
  4131       RETURN ;
  4132  
  4133     ELSE
  4134  
  4135       IF VB_ run_standa lone THEN
  4136  
  4137         VD_l og_date :=  SYSDATE;
  4138         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4139                                      PD_job_l og_date =>  VD_log_da te,
  4140                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  4141                                      PD_date1  => VD_rec _group_dat e,
  4142                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4143  
  4144       ELSE
  4145  
  4146         SELE CT    MAX( J.Job)
  4147         INTO       VN_j ob_number
  4148         FROM       SYS. DBA_JOBS_R UNNING R,
  4149                    SYS. DBA_JOBS J
  4150         WHER E     J.JO B = R.JOB
  4151         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  4152  
  4153         VD_l og_date :=  SYSDATE;
  4154         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4155                                      PD_job_l og_date =>  VD_log_da te,
  4156                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  4157                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  4158                                                                      || VN_job _number,1, 2000),
  4159                                      PD_date1  => VD_rec _group_dat e,
  4160                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4161  
  4162       END IF ;
  4163  
  4164     END IF;
  4165  
  4166   -- ******* ********** ********** ********** ********** ********** ********** ********
  4167   -- *
  4168   -- * Main  processing  loop
  4169   -- *
  4170   -- ******* ********** ********** ********** ********** ********** ********** ********
  4171  
  4172     VN_pass_ count := 0 ;
  4173     VN_updat e_count :=  0;
  4174     VD_proce ss_start_d ate := SYS DATE;
  4175  
  4176   -- ******* ********** ********** ********** ********** ********** ********** ********
  4177   -- * Remov e old proc ess log ro ws
  4178   -- ******* ********** ********** ********** ********** ********** ********** ********
  4179     BEGIN
  4180  
  4181       VD_log _date := S YSDATE;
  4182       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4183                                    PD_job_log _date => V D_log_date ,
  4184                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  4185                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  4186                                                                   | | VN_parm_ log_file_a ge
  4187                                                                   | | ' days o ld',1,2000 ),
  4188                                    PD_date1 = > VD_rec_g roup_date,
  4189                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4190  
  4191       DELETE
  4192       FROM       ADRMGT .Job_Proce ss_Logs
  4193       WHERE      Job_na me = CC_pr ocess_name
  4194       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  4195  
  4196       COMMIT ;
  4197  
  4198       VD_log _date := S YSDATE;
  4199       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4200                                    PD_job_log _date => V D_log_date ,
  4201                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  4202                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  4203                                                                   | | VN_parm_ log_file_a ge
  4204                                                                   | | ' days o ld',1,2000 ),
  4205                                    PD_date1 = > VD_rec_g roup_date,
  4206                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4207  
  4208  
  4209     EXCEPTIO N
  4210  
  4211       WHEN N O_DATA_FOU ND THEN
  4212  
  4213         NULL ;
  4214  
  4215       WHEN O THERS THEN
  4216  
  4217         VD_l og_date :=  SYSDATE;
  4218         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4219                                      PD_job_l og_date  = > VD_log_d ate,
  4220                                      PC_job_s tatus => S UBSTR('ERR OR - Unkno wn error r emoving ol d process  logs.',1,6 0),
  4221                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  4222                                      PD_date1  => VD_rec _group_dat e,
  4223                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4224  
  4225     END;
  4226  
  4227   -- ******* ********** ********** ********** ********** ********** ********** ********
  4228   -- * Remov e old proc ess error  rows
  4229   -- ******* ********** ********** ********** ********** ********** ********** ********
  4230  
  4231     BEGIN
  4232  
  4233       VD_log _date := S YSDATE;
  4234       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4235                                    PD_job_log _date => V D_log_date ,
  4236                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  4237                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  4238                                                                   | | VN_parm_ log_file_a ge
  4239                                                                   | | ' days o ld',1,2000 ),
  4240                                    PD_date1 = > VD_rec_g roup_date,
  4241                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4242  
  4243       DELETE
  4244       FROM       ADRMGT .Job_Proce ss_Errs
  4245       WHERE      Job_na me = CC_pr ocess_name
  4246       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  4247  
  4248       COMMIT ;
  4249  
  4250       VD_log _date := S YSDATE;
  4251       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4252                                    PD_job_log _date => V D_log_date ,
  4253                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  4254                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  4255                                                                   | | VN_parm_ log_file_a ge
  4256                                                                   | | ' days o ld',1,2000 ),
  4257                                    PD_date1 = > VD_rec_g roup_date,
  4258                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4259  
  4260     EXCEPTIO N
  4261  
  4262       WHEN N O_DATA_FOU ND THEN
  4263  
  4264         NULL ;
  4265  
  4266       WHEN O THERS THEN
  4267  
  4268         VD_l og_date :=  SYSDATE;
  4269         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4270                                      PD_job_l og_date  = > VD_log_d ate,
  4271                                      PC_job_s tatus => S UBSTR('ERR OR - Unkno wn error r emoving ol d process  errors.',1 ,60),
  4272                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  4273                                      PD_date1  => VD_rec _group_dat e,
  4274                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4275  
  4276     END;
  4277  
  4278   -- ******* ********** ********** ********** ********** ********** ********** ********
  4279   -- * Main  record cur sor logic
  4280   -- ******* ********** ********** ********** ********** ********** ********** ********
  4281  
  4282     VN_pass_ count := 0 ;
  4283     VN_updat e_count :=  0;
  4284  
  4285     LOOP
  4286  
  4287       BEGIN
  4288  
  4289         OPEN  C_prsn_ch g_rec;
  4290  
  4291         FETC H C_prsn_c hg_rec
  4292         BULK  COLLECT I NTO T_prsn _chg_id
  4293         LIMI T VN_parm_ rows_to_pr ocess;
  4294  
  4295         EXIT  WHEN T_pr sn_chg_id. COUNT = 0;
  4296  
  4297         FORA LL I_prsn_ chg_id IN  T_prsn_chg _id.FIRST. .T_prsn_ch g_id.last
  4298           DE LETE
  4299           FR OM      AD R.Person_C hange_Log
  4300           WH ERE     Pe rson_chang e_log_id =  T_prsn_ch g_id(I_prs n_chg_id);
  4301  
  4302         COMM IT;
  4303  
  4304         VN_p ass_count  := VN_pass _count + 1 ;
  4305  
  4306         VN_u pdate_coun t := VN_up date_count  + T_prsn_ chg_id.COU NT;
  4307  
  4308         CLOS E C_prsn_c hg_rec;
  4309  
  4310       EXCEPT ION
  4311  
  4312         WHEN  OTHERS TH EN
  4313  
  4314           VN _error_cou nt := VN_e rror_count  + 1;  --  CCR 2152
  4315  
  4316           IF  VN_error_ count >= C N_max_erro r_count TH EN  -- CCR  2152
  4317  
  4318              RETURN;  - - CCR 2152
  4319  
  4320           EL SE  -- CCR  2152
  4321  
  4322              IF C_prsn_ chg_rec%IS OPEN THEN   -- CCR 21 52
  4323  
  4324                CLOSE C_ prsn_chg_r ec;  -- CC R 2152
  4325  
  4326              END IF;  - - CCR 2152
  4327  
  4328              VD_log_dat e := SYSDA TE;
  4329  
  4330              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  4331                                          PD_j ob_error_d ate  => VD _log_date,
  4332                                          PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  4333                                          PC_j ob_error_m essage =>  SUBSTR('Un known erro r removing  person ch ange logs  - '
  4334                                                                         || SQL ERRM,1,200 0),
  4335                                          PD_d ate1 => VD _rec_group _date,
  4336                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));  --  CCR 2152
  4337  
  4338           EN D IF;  --  CCR 2152
  4339  
  4340       END;
  4341  
  4342     END LOOP ;
  4343  
  4344   -- ******* ********** ********** ********** ********** ********** ********** ********
  4345   -- * Proce ss complet ion inform ation
  4346   -- ******* ********** ********** ********** ********** ********** ********** ********
  4347  
  4348     BEGIN
  4349  
  4350       VD_log _date := S YSDATE;
  4351       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4352                                    PD_job_log _date => V D_log_date ,
  4353                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  4354                                    PD_date1 = > VD_rec_g roup_date,
  4355                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  4356                                    PN_numeric 2 => VN_pa ss_count,
  4357                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  4358  
  4359       VD_log _date := S YSDATE;
  4360       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4361                                    PD_job_log _date => V D_log_date ,
  4362                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  4363                                    PD_date1 = > VD_rec_g roup_date,
  4364                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  4365                                    PN_numeric 2 => VN_up date_count ,
  4366                                    PC_text2 = > SUBSTR(' Deleted Re cords Coun t',1,255)) ;
  4367  
  4368       VD_pro cess_end_d ate := SYS DATE;
  4369       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  4370                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  4371                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  4372                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  4373                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  4374  
  4375       VD_log _date := S YSDATE;
  4376       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4377                                    PD_job_log _date => V D_log_date ,
  4378                                    PC_job_sta tus => SUB STR('SUCCE SS - Proce ssing Comp leted',1,6 0),
  4379                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  4380                                    PD_date1 = > VD_rec_g roup_date,
  4381                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4382  
  4383     EXCEPTIO N
  4384  
  4385       WHEN O THERS THEN
  4386  
  4387         VD_l og_date :=  SYSDATE;
  4388         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4389                                      PD_job_l og_date  = > VD_log_d ate,
  4390                                      PC_job_s tatus => S UBSTR('ERR OR - Unkno wn error w riting com pletion in formation. ',1,60),
  4391                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  4392                                      PD_date1  => VD_rec _group_dat e,
  4393                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4394  
  4395         RETU RN;
  4396  
  4397     END;
  4398  
  4399   EXCEPTION
  4400  
  4401     WHEN OTH ERS THEN
  4402  
  4403       ROLLBA CK;
  4404  
  4405       VD_log _date := S YSDATE;
  4406       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4407                                    PD_job_err or_date  = > VD_log_d ate,
  4408                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  4409                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Person_Chg _Log_Clean up_Sp.'
  4410                                                                  ||  SQLERRM,1 ,2000),
  4411                                    PD_date1 = > VD_rec_g roup_date,
  4412                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4413  
  4414       VD_log _date := S YSDATE;
  4415       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4416                                    PD_job_log _date => V D_log_date ,
  4417                                    PC_job_sta tus => SUB STR('ERROR  - Unknown  processin g error',1 ,60),
  4418                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  4419                                    PD_date1 = > VD_rec_g roup_date,
  4420                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4421  
  4422   END Person _Chg_Log_C leanup_Sp;
  4423   /
  4424   DROP PROCE DURE ADR.A DR_DELETE_ ADDRESS_SP ;
  4425  
  4426   CREATE OR  REPLACE PR OCEDURE AD R.Adr_dele te_address _Sp
  4427     (PB_run_ standalone
  4428        IN      BOOLEAN  DEFAULT FA LSE,
  4429      PB_allo w_rpt_inst
  4430        IN      BOOLEAN  DEFAULT FA LSE
  4431     )
  4432   IS
  4433  
  4434   -- ******* ********** ********** ********** ********** ********** ********** ********
  4435   -- * Proce dure: Adr_ delete_add ress_Sp
  4436   -- *
  4437   -- *  Temp orary  Add ress table  bug fix t o be run n ightly.
  4438   -- *
  4439   -- *  - Se lects all  Address re cords wher e the INSU RANCE_ID S TD_ADDRESS TYPE_ID
  4440   -- *     i s NULL
  4441   -- *
  4442   -- *
  4443   -- * Param eters:
  4444   -- *
  4445   -- *  PB_r un_standal one   Igno re DBMS_JO B logic fo r checking  running j obs.
  4446   -- *                         Def ault: FALS E
  4447   -- *
  4448   -- *  PB_a llow_rpt_i nst   Allo w stored p rocedure t o be submi tted in th e
  4449   -- *                        DBMS _JOB queue  on the AD R reportin g database s
  4450   -- *                         Def ault: FALS E
  4451   -- *
  4452   -- ******* ********** ********** ********** ********** ********** ********** ********
  4453   --
  4454   -- ======= ========== ========== ========== ========== ========== ========== ========
  4455   -- Date         Autho r                             De scription
  4456   -- ======= ========== ========== ========== ========== ========== ========== ========
  4457   -- 11/30/2 010  Brend a Caningto n       Cr eated for  CCR 1252.
  4458  
  4459   --
  4460   -- ======= ========== ========== ========== ========== ========== ========== ========
  4461  
  4462   -- CONSTAN TS
  4463  
  4464  
  4465   -- VARIABL ES
  4466  
  4467     VB_allow _rpt_inst                      B OOLEAN :=  FALSE;
  4468     VB_error                                B OOLEAN :=  FALSE;
  4469     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  4470     VB_updat e_row                          B OOLEAN :=  FALSE;
  4471  
  4472     VC_allow _rpt_inst                      V ARCHAR2(5)  := NULL;
  4473     VC_insta nce_name                       V ARCHAR2(16 );
  4474     VC_proce ss_duratio n                   V ARCHAR2(25 );
  4475     VC_proce ss_name                        V ARCHAR2(60 ) := 'ADR  Delete Add ress Recor ds';
  4476     VC_run_s tandalone                      V ARCHAR2(5)  := NULL;
  4477  
  4478     VD_log_d ate                            D ATE;
  4479     VD_proce ss_end_dat e                   D ATE;
  4480     VD_proce ss_start_d ate                 D ATE;
  4481     VD_rec_g roup_date                      D ATE;
  4482  
  4483     VN_addr_ chg_src_ty pe_id               N UMBER := 0 ;
  4484     VN_job_c ount                           N UMBER := 0 ;
  4485     VN_job_n umber                          N UMBER := 0 ;
  4486     VN_inst_ id_upd_cou nt                  N UMBER := 0 ;
  4487     VN_error _recs_coun t                   N UMBER := 0 ;
  4488     VN_no_in st_id_coun t                   N UMBER := 0 ;
  4489     VN_rec_c ount                           N UMBER := 0 ;
  4490     VN_src_t ype_upd_co unt                 N UMBER := 0 ;
  4491     VN_std_i nstitution _id                 N UMBER := 0 ;
  4492     VN_total _recs_coun t                   N UMBER := 0 ;
  4493     sql_stmt                                v archar2(50 0);
  4494  
  4495   -- CURSORS
  4496  
  4497   CURSOR my_ del_record s  IS
  4498        SELEC T A.ADDRES S_ID
  4499        FROM       ADR.A ddress A
  4500       WHERE      A.STD_ ADDRESSTYP E_ID IS NU LL
  4501       AND
  4502                       A .INSURANCE _ID IS NUL L;
  4503  
  4504   -- ******* ********** ********** ********** ********** ********** ********** *******
  4505   -- *
  4506   -- *  MAIN  PROCEDURE :
  4507   -- *
  4508   -- *    AD R.Adr_Addr ess_Z05_Up date_Sp
  4509   -- *
  4510   -- ******* ********** ********** ********** ********** ********** ********** *******
  4511  
  4512   BEGIN
  4513  
  4514     VD_rec_g roup_date  := TRUNC(S YSDATE);
  4515  
  4516     VD_log_d ate := SYS DATE;
  4517     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  4518                                 PD _job_log_d ate => VD_ log_date,
  4519                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  4520                                 PD _date1 =>  VD_rec_gro up_date,
  4521                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4522  
  4523   -- ******* ********** ********** ********** ********** ********** ********** ********
  4524   -- *
  4525   -- * Valid ate input  parameters
  4526   -- *
  4527   -- ******* ********** ********** ********** ********** ********** ********** ********
  4528  
  4529   -- * Check  run stand alone flag
  4530  
  4531     IF PB_ru n_standalo ne IS NULL
  4532      OR NOT  PB_run_sta ndalone TH EN
  4533  
  4534       VB_run _standalon e := FALSE ;
  4535       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  4536  
  4537     ELSE
  4538  
  4539       VB_run _standalon e := TRUE;
  4540       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  4541  
  4542     END IF;
  4543  
  4544   -- * Check  run on re port insta nce flag
  4545  
  4546     IF PB_al low_rpt_in st IS NULL
  4547      OR NOT  PB_allow_r pt_inst TH EN
  4548  
  4549       VB_all ow_rpt_ins t := FALSE ;
  4550       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  4551  
  4552     ELSE
  4553  
  4554       VB_all ow_rpt_ins t := TRUE;
  4555       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  4556  
  4557     END IF;
  4558  
  4559     VD_log_d ate := SYS DATE;
  4560     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  4561                                 PD _job_log_d ate => VD_ log_date,
  4562                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cessing pa rameters f or this jo b',1,60),
  4563                                 PC _job_log_m essage =>  SUBSTR('Cu rrent job  parameters  - '
  4564                                                              || ' R un standal one: ' ||  VC_run_sta ndalone
  4565                                                              || ' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  4566                                 PD _date1 =>  VD_rec_gro up_date,
  4567                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4568  
  4569   -- ******* ********** ********** ********** ********** ********** ********** ********
  4570   -- *
  4571   -- * Check  to see if  process i s running  on a repor ting datab ase.
  4572   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  4573   -- *
  4574   -- ******* ********** ********** ********** ********** ********** ********** ********
  4575  
  4576     IF NOT V B_allow_rp t_inst THE N
  4577  
  4578       BEGIN
  4579  
  4580         VD_l og_date :=  SYSDATE;
  4581         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  4582                                      PD_job_l og_date =>  VD_log_da te,
  4583                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  4584                                      PD_date1  => VD_rec _group_dat e,
  4585                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4586  
  4587         SELE CT    Inst ance_name
  4588         INTO       VC_i nstance_na me
  4589         FROM       V$in stance;
  4590  
  4591         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  4592  
  4593           VD _log_date  := SYSDATE ;
  4594           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  4595                                        PD_job _log_date  => VD_log_ date,
  4596                                        PC_job _status =>  SUBSTR('W ARNING      - Process ing Failed ',1,60),
  4597                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  4598                                                                     || VC_inst ance_name
  4599                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  4600                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  4601                                        PD_dat e1 => VD_r ec_group_d ate,
  4602                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4603  
  4604           RE TURN;
  4605  
  4606         END  IF;
  4607  
  4608       EXCEPT ION
  4609  
  4610         WHEN  OTHERS TH EN
  4611  
  4612           VD _log_date  := SYSDATE ;
  4613           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  4614                                        PD_job _log_date  => VD_log_ date,
  4615                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  4616                                        PC_job _log_messa ge => SUBS TR('Termin ating scri pt.',1,200 0),
  4617                                        PD_dat e1 => VD_r ec_group_d ate,
  4618                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4619  
  4620           RE TURN;
  4621  
  4622       END;
  4623  
  4624     END IF;
  4625  
  4626   -- ******* ********** ********** ********** ********** ********** ********** ********
  4627   -- *
  4628   -- * Check  to see if  the job h as already  run today
  4629   -- *  - If  running i n stand-al one mode,  don't chec k.
  4630   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  4631   -- *
  4632   -- ******* ********** ********** ********** ********** ********** ********** ********
  4633  
  4634     IF NOT P B_run_stan dalone THE N
  4635  
  4636       BEGIN
  4637  
  4638         SELE CT    COUN T(*)
  4639         INTO       VN_r ec_count
  4640         FROM       ADRM GT.Job_Pro cess_Logs
  4641         WHER E     Job_ name = VC_ process_na me
  4642         AND        Date 1 = VD_rec _group_dat e
  4643         AND        Job_ status = ' SUCCESS      - Proces sing Compl eted';
  4644  
  4645         IF V N_rec_coun t > 0 THEN
  4646  
  4647           VD _log_date  := SYSDATE ;
  4648           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  4649                                        PD_job _log_date  => VD_log_ date,
  4650                                        PC_job _status =>  SUBSTR('I NFORMATION  - This da te has alr eady been  processed' ,1,60),
  4651                                        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),
  4652                                        PD_dat e1 => VD_r ec_group_d ate,
  4653                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4654  
  4655           RE TURN;
  4656  
  4657         END  IF;
  4658  
  4659       EXCEPT ION
  4660  
  4661         WHEN  OTHERS TH EN
  4662  
  4663           VD _log_date  := SYSDATE ;
  4664           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  4665                                        PD_job _log_date  => VD_log_ date,
  4666                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  4667                                        PC_job _log_messa ge => SUBS TR('Termin ating scri pt.',1,200 0),
  4668                                        PD_dat e1 => VD_r ec_group_d ate,
  4669                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4670  
  4671           RE TURN;
  4672  
  4673       END;
  4674  
  4675     END IF;
  4676  
  4677   -- ******* ********** ********** ********** ********** ********** ********** ********
  4678   -- *
  4679   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  4680   -- *  - If  yes, then  end this  job.
  4681   -- *
  4682   -- ******* ********** ********** ********** ********** ********** ********** ********
  4683  
  4684     SELECT C OUNT(*)
  4685     INTO   V N_job_coun t
  4686     FROM   S YS.DBA_JOB S_RUNNING  R,
  4687            S YS.DBA_JOB S J
  4688     WHERE  J .JOB = R.J OB
  4689     AND    U PPER(J.WHA T) LIKE '% ADR_DELETE _ADDRESS_S P%';
  4690  
  4691     IF VN_jo b_count >  1 THEN
  4692  
  4693       VD_log _date := S YSDATE;
  4694       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  4695                                    PD_job_log _date => V D_log_date ,
  4696                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  4697                                    PC_job_log _message = > SUBSTR(' There is a nother add ress Delet e job runn ing.'
  4698                                                                || '  Exiting j ob without  running.' ,1,2000),
  4699                                    PD_date1 = > VD_rec_g roup_date,
  4700                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4701  
  4702       RETURN ;
  4703  
  4704     ELSE
  4705  
  4706       IF VB_ run_standa lone THEN
  4707  
  4708         VD_l og_date :=  SYSDATE;
  4709         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  4710                                      PD_job_l og_date =>  VD_log_da te,
  4711                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  4712                                      PD_date1  => VD_rec _group_dat e,
  4713                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4714  
  4715       ELSE
  4716  
  4717         SELE CT    MAX( J.Job)
  4718         INTO       VN_j ob_number
  4719         FROM       SYS. DBA_JOBS_R UNNING R,
  4720                    SYS. DBA_JOBS J
  4721         WHER E     J.JO B = R.JOB
  4722         AND        UPPE R(J.WHAT)  LIKE '%ADR _DELETE_AD DRESS_SP%' ;
  4723  
  4724         VD_l og_date :=  SYSDATE;
  4725         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  4726                                      PD_job_l og_date =>  VD_log_da te,
  4727                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  4728                                      PD_date1  => VD_rec _group_dat e,
  4729                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4730  
  4731       END IF ;
  4732  
  4733     END IF;
  4734  
  4735   -- ******* ********** ********** ********** ********** ********** ********** ********
  4736   -- *
  4737   -- * Main  processing  loop
  4738   -- *
  4739   -- ******* ********** ********** ********** ********** ********** ********** ********
  4740  
  4741     VN_error _recs_coun t := 0;
  4742     VN_inst_ id_upd_cou nt := 0;
  4743     VN_no_in st_id_coun t := 0;
  4744     VN_src_t ype_upd_co unt := 0;
  4745     VN_total _recs_coun t := 0;
  4746  
  4747     VD_proce ss_start_d ate := SYS DATE;
  4748  
  4749   -- Remove  all proces s logs ove r 14 days  old
  4750  
  4751     BEGIN
  4752  
  4753       VD_log _date := S YSDATE;
  4754       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  4755                                    PD_job_log _date => V D_log_date ,
  4756                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  4757                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over 14  days old', 1,2000),
  4758                                    PD_date1 = > VD_rec_g roup_date,
  4759                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4760  
  4761       DELETE
  4762       FROM       ADRMGT .Job_Proce ss_Logs
  4763       WHERE      Job_na me = VC_pr ocess_name
  4764       AND        Date1  < TRUNC(SY SDATE) - 1 4;
  4765  
  4766       COMMIT ;
  4767  
  4768       VD_log _date := S YSDATE;
  4769       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  4770                                    PD_job_log _date => V D_log_date ,
  4771                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  4772                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over 14 d ays old',1 ,2000),
  4773                                    PD_date1 = > VD_rec_g roup_date,
  4774                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4775  
  4776  
  4777     EXCEPTIO N
  4778  
  4779       WHEN N O_DATA_FOU ND THEN
  4780  
  4781         NULL ;
  4782  
  4783       WHEN O THERS THEN
  4784  
  4785         VD_l og_date :=  SYSDATE;
  4786         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  4787                                      PD_job_e rror_date   => VD_log _date,
  4788                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  4789                                      PC_job_e rror_messa ge => SUBS TR('Unknow n error wh ile removi ng old pro cess logs.  '
  4790                                                                        || SQLE RRM,1,2000 ),
  4791                                      PD_date1  => VD_rec _group_dat e,
  4792                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4793  
  4794     END;
  4795  
  4796   -- Remove  all proces s errors o ver 14 day s old
  4797  
  4798     BEGIN
  4799  
  4800       VD_log _date := S YSDATE;
  4801       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  4802                                    PD_job_log _date => V D_log_date ,
  4803                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  4804                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over 1 4 days old ',1,2000),
  4805                                    PD_date1 = > VD_rec_g roup_date,
  4806                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4807  
  4808       DELETE
  4809       FROM       ADRMGT .Job_Proce ss_Errs
  4810       WHERE      Job_na me = VC_pr ocess_name
  4811       AND        Date1  < TRUNC(SY SDATE) - 1 4;
  4812  
  4813       COMMIT ;
  4814  
  4815       VD_log _date := S YSDATE;
  4816       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  4817                                    PD_job_log _date => V D_log_date ,
  4818                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  4819                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over 14  days old' ,1,2000),
  4820                                    PD_date1 = > VD_rec_g roup_date,
  4821                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4822  
  4823     EXCEPTIO N
  4824  
  4825       WHEN N O_DATA_FOU ND THEN
  4826  
  4827         NULL ;
  4828  
  4829       WHEN O THERS THEN
  4830  
  4831         VD_l og_date :=  SYSDATE;
  4832         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  4833                                      PD_job_e rror_date   => VD_log _date,
  4834                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  4835                                      PC_job_e rror_messa ge => SUBS TR('Unknow n error wh ile removi ng old pro cess error s. '
  4836                                                                        || SQLE RRM,1,2000 ),
  4837                                      PD_date1  => VD_rec _group_dat e,
  4838                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4839  
  4840     END;
  4841  
  4842   -- Main re cord curso r logic
  4843   BEGIN
  4844       FOR th is_del_rec ords in my _del_recor ds LOOP
  4845                sql_stmt  := 'DELET E     FROM       ADR. Address A  WHERE A.AD DRESS_ID =  ' || this _del_recor ds.ADDRESS _ID ;
  4846                 EXECUTE  IMMEDIATE  sql_stmt;
  4847                 COMMIT;
  4848              END LOOP;
  4849  
  4850  
  4851  
  4852           EX CEPTION
  4853           WH EN NO_DATA _FOUND THE N
  4854                 NULL;
  4855           WH EN OTHERS  THEN
  4856              VN_error_r ecs_count  := VN_erro r_recs_cou nt + 1;
  4857              ROLLBACK;
  4858              VD_log_dat e := SYSDA TE;
  4859              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  4860                                          PD_j ob_error_d ate  => VD _log_date,
  4861                                          PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  4862                                          PC_j ob_error_m essage =>  SUBSTR('Un known erro r while de leting fro m ADR.Addr ess row.'
  4863                                                                         || SQL ERRM,1,200 0),
  4864                                          PD_d ate1 => VD _rec_group _date,
  4865                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255)
  4866                                          );
  4867  
  4868         END;
  4869  
  4870  
  4871  
  4872   END Adr_de lete_addre ss_Sp;
  4873   /
  4874   DROP PROCE DURE ADR.W KF_CASE_H_ DELETE_SP;
  4875  
  4876   CREATE OR  REPLACE PR OCEDURE AD R.WKF_CASE _H_DELETE_ SP
  4877   IS
  4878  
  4879  
  4880  
  4881     CURSOR c _wkf  IS S ELECT WKF_ CASE_H.wkf _case_id
  4882          fro m ADR.wkf_ case_H
  4883         wher e WKF_CASE _H.transac tion_type_ code = 'D'
  4884       AND WK F_CASE_H.W KF_CASE_TY PE_ID = 16 16295;
  4885  
  4886     sql_stmt  string(51 2);
  4887     v_cnt_wk f number(2 0);
  4888     VD_log_d ate                            D ATE;
  4889     VD_rec_g roup_date                      D ATE;
  4890     VC_proce ss_name                        V ARCHAR2(60 ) := 'ADR  WKF_CASE_H  DELETE';
  4891     VN_error _recs_coun t                   N UMBER := 0 ;
  4892      BEGIN
  4893           se lect  coun t(wkf_case _id)
  4894           in to v_cnt_w kf
  4895           fr om wkf_cas e_H
  4896           wh ere transa ction_type _code = 'D '
  4897           AN D WKF_CASE _TYPE_ID =  1616295;
  4898          if  v_cnt_wkf  > 0 THEN
  4899                FOR this _sql in  c _wkf  LOOP
  4900                    sql_ stmt :=  ' DELETE FRO M ADR.WKF_ CASE_ASSIG NMENT_H  W HERE WKF_C ASE_ID = '  ||this_sq l.WKF_CASE _ID;
  4901                    EXEC UTE IMMEDI ATE sql_st mt;
  4902                    sql_ stmt :=  ' DELETE FRO M ADR.WKF_ CASE_COMME NTS_H  WHE RE WKF_CAS E_ID = ' | |this_sql. WKF_CASE_I D;
  4903                    EXEC UTE IMMEDI ATE sql_st mt;
  4904                    sql_ stmt :=  ' DELETE FRO M ADR.WKF_ CASE_STATU S_DETAIL_H    WHERE W KF_CASE_ID  = ' ||thi s_sql.WKF_ CASE_ID;
  4905                    EXEC UTE IMMEDI ATE sql_st mt;
  4906                    sql_ stmt :=  ' DELETE FRO M ADR.WKF_ MESSAGING_ CASE_H   W HERE WKF_C ASE_ID = '  ||this_sq l.WKF_CASE _ID;
  4907                    EXEC UTE IMMEDI ATE sql_st mt;
  4908                    sql_ stmt :=  ' DELETE FRO M ADR.WKF_ CASE_H   W HERE WKF_C ASE_ID = '  ||this_sq l.WKF_CASE _ID;
  4909                    EXEC UTE IMMEDI ATE sql_st mt;
  4910                   commi t;
  4911              END LOOP;
  4912         END  IF;
  4913         EXCE PTION
  4914           WH EN NO_DATA _FOUND THE N
  4915                 NULL;
  4916           WH EN OTHERS  THEN
  4917              VN_error_r ecs_count  := VN_erro r_recs_cou nt + 1;
  4918              ROLLBACK;
  4919              VD_log_dat e := SYSDA TE;
  4920              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  4921                                          PD_j ob_error_d ate  => VD _log_date,
  4922                                          PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  4923                                          PC_j ob_error_m essage =>  SUBSTR('Un known erro r while de leting fro m ADR.Addr ess row.'
  4924                                                                         || SQL ERRM,1,200 0),
  4925                                          PD_d ate1 => VD _rec_group _date,
  4926                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255)
  4927                                          );
  4928   END WKF_CA SE_H_DELET E_SP;
  4929   /
  4930   DROP PROCE DURE ADR.H L7_TXN_LOG _NULL_ERR_ COL_SP_05;
  4931  
  4932   CREATE OR  REPLACE PR OCEDURE AD R.Hl7_Txn_ Log_Null_E rr_Col_Sp_ 05 (
  4933      PB_run_ standalone     IN BOO LEAN DEFAU LT FALSE,
  4934      PB_allo w_rpt_inst     IN BOO LEAN DEFAU LT FALSE,
  4935      PN_rows _to_proces s   IN NUM BER DEFAUL T NULL)
  4936   IS
  4937      -- **** ********** ********** ********** ********** ********** ********** ********** *
  4938      -- * Pr ocedure: H l7_Txn_Log _Null_Erro r_Col
  4939      -- *
  4940      -- *    Update HL7  transcati ons to rem ove data f rom the in ternal_err or_text
  4941      -- *    column for  all rows  more than  6 months o ld.
  4942      -- *
  4943      -- * Pa rameters:
  4944      -- *
  4945      -- *  P B_run_stan dalone   I gnore DBMS _JOB logic  for check ing runnin g jobs.
  4946      -- *                          Default: F ALSE
  4947      -- *
  4948      -- *  P B_allow_rp t_inst   A llow store d procedur e to be su bmitted in  the
  4949      -- *                        D BMS_JOB qu eue on the  ADR repor ting datab ases
  4950      -- *                          Default: F ALSE
  4951      -- *
  4952      -- **** ********** ********** ********** ********** ********** ********** ********** *
  4953      --
  4954      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  4955      -- Date         Au thor             Desc ription
  4956      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  4957      -- 06/2 3/2010  Cr aig Wood         Crea ted for CC R 1100.
  4958      --
  4959      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  4960  
  4961      -- CONS TANTS
  4962  
  4963      CC_no                                  V ARCHAR2 (1 ) := 'N';
  4964      CC_parm _applicati on_name    CONSTANT V ARCHAR2 (8 0)
  4965         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  4966      CC_parm _hl7_err_t xt_age     CONSTANT V ARCHAR2 (5 0)
  4967                                                 := 'OLDE ST HL7 ERR OR TEXT DA YS' ;
  4968      CC_parm _last_hl7_ id         CONSTANT V ARCHAR2 (5 0)
  4969                                                 := 'LAST  HL7 ID PR OCESSED' ;
  4970      CC_parm _log_file_ age        CONSTANT V ARCHAR2 (5 0)
  4971                                                 := 'OLDE ST LOG FIL E DAYS' ;
  4972      CC_proc ess_name              CONSTANT V ARCHAR2 (6 0)
  4973         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  4974      CC_sp_n ame                   CONSTANT V ARCHAR2 (3 5)
  4975         := ' Hl7_Txn_Lo g_Null_Err _Col_Sp_'  || '05' ;
  4976      CC_yes                                 V ARCHAR2 (1 ) := 'Y';
  4977  
  4978      -- VARI ABLES
  4979  
  4980      VB_allo w_rpt_inst                     B OOLEAN :=  FALSE;
  4981      VB_run_ standalone                     B OOLEAN :=  FALSE;
  4982  
  4983      VC_allo w_rpt_inst                     V ARCHAR2 (5 ) := NULL;
  4984      VC_inst ance_name                      V ARCHAR2 (1 6);
  4985      VC_proc ess_durati on                  V ARCHAR2 (2 5);
  4986      VC_run_ standalone                     V ARCHAR2 (5 ) := NULL;
  4987      VC_sql_ statement                      V ARCHAR2 (2 000);
  4988      VC_para _name_last _proc_id            V ARCHAR2 (3 0):= 'P' | | '05' ||  ' LAST PRO CESSED LOG  ID';
  4989  
  4990     VD_log_d ate                            D ATE;
  4991     VD_proce ss_end_dat e                   D ATE;
  4992     VD_proce ss_start_d ate                 D ATE;
  4993     VD_rec_g roup_date                      D ATE;
  4994  
  4995     VN_job_c ount                           N UMBER := 0 ;
  4996     VN_job_n umber                          N UMBER;
  4997     VN_max_l og_id                          N UMBER := 0 ;
  4998     VN_parm_ hl7_err_tx t_age               N UMBER;
  4999     VN_parm_ log_file_a ge                  N UMBER;
  5000     VN_parm_ last_log_i d                   N UMBER := 0 ;
  5001     VN_parm_ rows_to_pr ocess               N UMBER;
  5002     VN_pass_ count                          N UMBER := 0 ;
  5003     VN_rec_c ount                           N UMBER := 0 ;
  5004     VN_updat e_count                        N UMBER := 0 ;
  5005  
  5006  
  5007   -- CURSORS
  5008  
  5009     CURSOR C _hl7_id IS
  5010       SELECT   /*+ para llel(4) */  Hl7_trans action_log _id
  5011       FROM       Hl7_tr ansaction_ log PARTIT ION (HL7_T RANSACTION _LOG_P05)
  5012       WHERE      Hl7_tr ansaction_ log_id > V N_parm_las t_log_id
  5013       AND        Record _created_d ate < TRUN C(SYSDATE)  - VN_parm _hl7_err_t xt_age
  5014       AND        Intern al_error_t ext IS NOT  NULL;
  5015  
  5016   -- TYPES
  5017  
  5018     TYPE TT_ hl7_id IS
  5019       TABLE  OF ADR.Hl7 _Transacti on_Log.Hl7 _transacti on_log_id% TYPE;
  5020  
  5021   -- MEMORY  TABLES
  5022  
  5023     T_hl7_id                                T T_hl7_id;
  5024  
  5025   -- ******* ********** ********** ********** ********** ********** ********** *******
  5026   -- *
  5027   -- *  MAIN  PROCEDURE :
  5028   -- *
  5029   -- ******* ********** ********** ********** ********** ********** ********** *******
  5030  
  5031   BEGIN
  5032  
  5033     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  5034     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5035  
  5036     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  5037     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5038  
  5039     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  5040     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5041  
  5042     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  5043     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5044  
  5045     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  QUERY PARA LLEL ' ||   2;
  5046     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5047  
  5048     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  DML PARALL EL ' || 2;
  5049     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5050  
  5051     VD_rec_g roup_date  := TRUNC(S YSDATE);
  5052  
  5053     VD_log_d ate := SYS DATE;
  5054     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  5055                                 PD _job_log_d ate => VD_ log_date,
  5056                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  5057                                 PD _date1 =>  VD_rec_gro up_date,
  5058                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  5059  
  5060   -- ******* ********** ********** ********** ********** ********** ********** ********
  5061   -- *
  5062   -- * Valid ate input  parameters
  5063   -- *
  5064   -- ******* ********** ********** ********** ********** ********** ********** ********
  5065  
  5066   -- * Check  run stand alone flag
  5067  
  5068     IF PB_ru n_standalo ne IS NULL
  5069      OR NOT  PB_run_sta ndalone TH EN
  5070  
  5071       VB_run _standalon e := FALSE ;
  5072       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  5073  
  5074     ELSE
  5075  
  5076       VB_run _standalon e := TRUE;
  5077       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  5078  
  5079     END IF;
  5080  
  5081   -- * Check  run on re port insta nce flag
  5082  
  5083     IF PB_al low_rpt_in st IS NULL
  5084      OR NOT  PB_allow_r pt_inst TH EN
  5085  
  5086       VB_all ow_rpt_ins t := FALSE ;
  5087       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  5088  
  5089     ELSE
  5090  
  5091       VB_all ow_rpt_ins t := TRUE;
  5092       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  5093  
  5094     END IF;
  5095  
  5096   -- ******* ********** ********** ********** ********** ********** ********** ********
  5097   -- *
  5098   -- * Retri eve proces sing param eters
  5099   -- *
  5100   -- ******* ********** ********** ********** ********** ********** ********** ********
  5101  
  5102   -- Process  Parameter  OLDEST HL 7 ERROR TE XT DAYS KE PT
  5103  
  5104     BEGIN
  5105  
  5106       SELECT     Value
  5107       INTO       VN_par m_hl7_err_ txt_age
  5108       FROM       ADRMGT .Adr_Param eter
  5109       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  5110       AND        Parame ter_name =  'OLDEST H L7 ERROR T EXT DAYS K EPT';
  5111  
  5112       IF VN_ parm_hl7_e rr_txt_age  IS NULL T HEN
  5113  
  5114         VD_l og_date :=  SYSDATE;
  5115         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5116                                      PD_job_l og_date =>  VD_log_da te,
  5117                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5118                                      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),
  5119                                      PD_date1  => VD_rec _group_dat e,
  5120                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5121  
  5122         RETU RN;
  5123  
  5124       END IF ;
  5125  
  5126     EXCEPTIO N
  5127  
  5128       WHEN N O_DATA_FOU ND THEN
  5129  
  5130         VD_l og_date :=  SYSDATE;
  5131         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5132                                      PD_job_l og_date =>  VD_log_da te,
  5133                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5134                                      PC_job_l og_message  => 'Param eter for O LDEST HL7  ERROR TEXT  DAYS KEPT  was not f ound. Term inating pr ocess.',
  5135                                      PD_date1  => VD_rec _group_dat e,
  5136                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5137  
  5138         RETU RN;
  5139  
  5140       WHEN O THERS THEN
  5141  
  5142         VD_l og_date :=  SYSDATE;
  5143         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5144                                      PD_job_l og_date =>  VD_log_da te,
  5145                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5146                                      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. '
  5147                                                                      || SQLERR M,1,2000),
  5148                                      PD_date1  => VD_rec _group_dat e,
  5149                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5150  
  5151         RETU RN;
  5152  
  5153     END;
  5154  
  5155   -- Process  Parameter  OLDEST LO G FILE DAY S KEPT
  5156  
  5157     BEGIN
  5158  
  5159       SELECT     Value
  5160       INTO       VN_par m_log_file _age
  5161       FROM       ADRMGT .Adr_Param eter
  5162       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  5163       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  5164  
  5165       IF VN_ parm_log_f ile_age IS  NULL THEN
  5166  
  5167         VD_l og_date :=  SYSDATE;
  5168         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5169                                      PD_job_l og_date =>  VD_log_da te,
  5170                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5171                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST L OG FILE DA YS KEPT is  NULL. Ter minating p rocess.',1 ,2000),
  5172                                      PD_date1  => VD_rec _group_dat e,
  5173                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5174  
  5175         RETU RN;
  5176  
  5177       END IF ;
  5178  
  5179     EXCEPTIO N
  5180  
  5181       WHEN N O_DATA_FOU ND THEN
  5182  
  5183         VD_l og_date :=  SYSDATE;
  5184         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5185                                      PD_job_l og_date =>  VD_log_da te,
  5186                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5187                                      PC_job_l og_message  => 'Param eter for O LDEST LOG  FILE DAYS  KEPT was n ot found.  Terminatin g process. ',
  5188                                      PD_date1  => VD_rec _group_dat e,
  5189                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5190  
  5191         RETU RN;
  5192  
  5193       WHEN O THERS THEN
  5194  
  5195         VD_l og_date :=  SYSDATE;
  5196         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5197                                      PD_job_l og_date =>  VD_log_da te,
  5198                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5199                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  OLDEST LO G FILE DAY S KEPT. Te rminating  process. '
  5200                                                                      || SQLERR M,1,2000),
  5201                                      PD_date1  => VD_rec _group_dat e,
  5202                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5203  
  5204         RETU RN;
  5205  
  5206     END;
  5207  
  5208   -- Process  Parameter  ROWS TO P ROCESS
  5209  
  5210     BEGIN
  5211  
  5212       SELECT     Value
  5213       INTO       VN_par m_rows_to_ process
  5214       FROM       ADRMGT .Adr_Param eter
  5215       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  5216       AND        Parame ter_name =  'ROWS TO  PROCESS';
  5217  
  5218       IF VN_ parm_rows_ to_process  IS NULL T HEN
  5219  
  5220         VD_l og_date :=  SYSDATE;
  5221         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5222                                      PD_job_l og_date =>  VD_log_da te,
  5223                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5224                                      PC_job_l og_message  => SUBSTR ('Paramete r ROWS TO  PROCESS is  NULL. Ter minating p rocess.',1 ,2000),
  5225                                      PD_date1  => VD_rec _group_dat e,
  5226                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5227  
  5228         RETU RN;
  5229  
  5230       END IF ;
  5231  
  5232     EXCEPTIO N
  5233  
  5234       WHEN N O_DATA_FOU ND THEN
  5235  
  5236         VD_l og_date :=  SYSDATE;
  5237         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5238                                      PD_job_l og_date =>  VD_log_da te,
  5239                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5240                                      PC_job_l og_message  => 'Param eter for R OWS TO PRO CESS was n ot found.  Terminatin g process. ',
  5241                                      PD_date1  => VD_rec _group_dat e,
  5242                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5243  
  5244         RETU RN;
  5245  
  5246       WHEN O THERS THEN
  5247  
  5248         VD_l og_date :=  SYSDATE;
  5249         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5250                                      PD_job_l og_date =>  VD_log_da te,
  5251                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5252                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ROWS TO P ROCESS. Te rminating  process. '
  5253                                                                      || SQLERR M,1,2000),
  5254                                      PD_date1  => VD_rec _group_dat e,
  5255                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5256  
  5257         RETU RN;
  5258  
  5259     END;
  5260  
  5261   -- Process  Parameter  LAST PROC ESSED LOG  ID
  5262  
  5263     BEGIN
  5264  
  5265       SELECT     Value
  5266       INTO       VN_par m_last_log _id
  5267       FROM       ADRMGT .Adr_Param eter
  5268       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  5269       AND        Parame ter_name =  VC_para_n ame_last_p roc_id;
  5270  
  5271       IF VN_ parm_last_ log_id IS  NULL THEN
  5272  
  5273         VD_l og_date :=  SYSDATE;
  5274         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5275                                      PD_job_l og_date =>  VD_log_da te,
  5276                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5277                                      PC_job_l og_message  => SUBSTR ('Paramete r ' || VC_ para_name_ last_proc_ id || ' is  NULL. Ter minating p rocess.',1 ,2000),
  5278                                      PD_date1  => VD_rec _group_dat e,
  5279                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5280  
  5281         RETU RN;
  5282  
  5283       END IF ;
  5284  
  5285     EXCEPTIO N
  5286  
  5287       WHEN N O_DATA_FOU ND THEN
  5288  
  5289         VD_l og_date :=  SYSDATE;
  5290         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5291                                      PD_job_l og_date =>  VD_log_da te,
  5292                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5293                                      PC_job_l og_message  => 'Param eter for '  || VC_par a_name_las t_proc_id  || ' was n ot found.  Terminatin g process. ',
  5294                                      PD_date1  => VD_rec _group_dat e,
  5295                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5296  
  5297         RETU RN;
  5298  
  5299       WHEN O THERS THEN
  5300  
  5301         VD_l og_date :=  SYSDATE;
  5302         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5303                                      PD_job_l og_date =>  VD_log_da te,
  5304                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5305                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ' || VC_p ara_name_l ast_proc_i d || '. Te rminating  process. '
  5306                                                                      || SQLERR M,1,2000),
  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     END;
  5313  
  5314   -- Write o ut Paramet er log mes sages for  submitted  job
  5315  
  5316     VD_log_d ate := SYS DATE;
  5317     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  5318                                 PD _job_log_d ate => VD_ log_date,
  5319                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  5320                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  5321                                 PD _date1 =>  VD_rec_gro up_date,
  5322                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  5323  
  5324     VD_log_d ate := SYS DATE;
  5325     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  5326                                 PD _job_log_d ate => VD_ log_date,
  5327                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  5328                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  5329                                 PD _date1 =>  VD_rec_gro up_date,
  5330                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  5331  
  5332     VD_log_d ate := SYS DATE;
  5333     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  5334                                 PD _job_log_d ate => VD_ log_date,
  5335                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  5336                                 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),
  5337                                 PD _date1 =>  VD_rec_gro up_date,
  5338                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  5339  
  5340  
  5341     VD_log_d ate := SYS DATE;
  5342     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  5343                                 PD _job_log_d ate => VD_ log_date,
  5344                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  5345                                 PC _job_log_m essage =>  SUBSTR(' O LDEST HL7  ERROR TEXT  DAYS KEPT : ' || VN_ parm_hl7_e rr_txt_age ,1,2000),
  5346                                 PD _date1 =>  VD_rec_gro up_date,
  5347                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  5348  
  5349     VD_log_d ate := SYS DATE;
  5350     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  5351                                 PD _job_log_d ate => VD_ log_date,
  5352                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  5353                                 PC _job_log_m essage =>  SUBSTR(' O LDEST LOG  FILE DAYS  KEPT: ' ||  VN_parm_l og_file_ag e,1,2000),
  5354                                 PD _date1 =>  VD_rec_gro up_date,
  5355                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  5356  
  5357     VD_log_d ate := SYS DATE;
  5358     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  5359                                 PD _job_log_d ate => VD_ log_date,
  5360                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  5361                                 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),
  5362                                 PD _date1 =>  VD_rec_gro up_date,
  5363                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  5364  
  5365     VD_log_d ate := SYS DATE;
  5366     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  5367                                 PD _job_log_d ate => VD_ log_date,
  5368                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  5369                                 PC _job_log_m essage =>  SUBSTR(' '  || VC_par a_name_las t_proc_id  || ': ' ||  NVL(TO_CH AR(VN_parm _last_log_ id),'NULL' ),1,2000),
  5370                                 PD _date1 =>  VD_rec_gro up_date,
  5371                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  5372  
  5373   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  5374  
  5375     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  5376  
  5377       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  5378  
  5379       VD_log _date := S YSDATE;
  5380       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5381                                    PD_job_log _date => V D_log_date ,
  5382                                    PC_job_sta tus => SUB STR('WARNI NG     - J ob table p arameters' ,1,60),
  5383                                    PC_job_log _message = > SUBSTR('  Processin g paramete r ROWS TO  PROCESS (i n each loo p) has bee n overridd en.'
  5384                                                              || ' T he overrid e value is : ' || NVL (TO_CHAR(V N_parm_row s_to_proce ss),'NULL' ),1,2000),
  5385                                    PD_date1 = > VD_rec_g roup_date,
  5386                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5387  
  5388     END IF;
  5389  
  5390   -- ******* ********** ********** ********** ********** ********** ********** ********
  5391   -- *
  5392   -- * Check  to see if  process i s running  on a repor ting datab ase.
  5393   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  5394   -- *
  5395   -- ******* ********** ********** ********** ********** ********** ********** ********
  5396  
  5397     IF NOT V B_allow_rp t_inst THE N
  5398  
  5399       BEGIN
  5400  
  5401         VD_l og_date :=  SYSDATE;
  5402         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5403                                      PD_job_l og_date =>  VD_log_da te,
  5404                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  5405                                      PD_date1  => VD_rec _group_dat e,
  5406                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5407  
  5408         SELE CT    Inst ance_name
  5409         INTO       VC_i nstance_na me
  5410         FROM       V$in stance;
  5411  
  5412         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  5413  
  5414           VD _log_date  := SYSDATE ;
  5415           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  5416                                        PD_job _log_date  => VD_log_ date,
  5417                                        PC_job _status =>  SUBSTR('E RROR        - Process ing Failed ',1,60),
  5418                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  5419                                                                     || VC_inst ance_name
  5420                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  5421                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  5422                                        PD_dat e1 => VD_r ec_group_d ate,
  5423                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  5424  
  5425           RE TURN;
  5426  
  5427         END  IF;
  5428  
  5429       EXCEPT ION
  5430  
  5431         WHEN  OTHERS TH EN
  5432  
  5433           VD _log_date  := SYSDATE ;
  5434           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  5435                                        PD_job _log_date  => VD_log_ date,
  5436                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  5437                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  5438                                        PD_dat e1 => VD_r ec_group_d ate,
  5439                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  5440  
  5441           RE TURN;
  5442  
  5443       END;
  5444  
  5445     END IF;
  5446  
  5447   -- ******* ********** ********** ********** ********** ********** ********** ********
  5448   -- *
  5449   -- * Check  to see if  the job h as already  run today
  5450   -- *  - If  running i n stand-al one mode,  don't chec k.
  5451   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  5452   -- *
  5453   -- ******* ********** ********** ********** ********** ********** ********** ********
  5454  
  5455     IF NOT P B_run_stan dalone THE N
  5456  
  5457       BEGIN
  5458  
  5459         VD_l og_date :=  SYSDATE;
  5460         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5461                                      PD_job_l og_date =>  VD_log_da te,
  5462                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  5463                                      PD_date1  => VD_rec _group_dat e,
  5464                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5465  
  5466         SELE CT    COUN T(*)
  5467         INTO       VN_r ec_count
  5468         FROM       ADRM GT.Job_Pro cess_Logs
  5469         WHER E     Job_ name = CC_ process_na me
  5470         AND        Date 1 = VD_rec _group_dat e
  5471         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  5472  
  5473         IF V N_rec_coun t > 0 THEN
  5474  
  5475           VD _log_date  := SYSDATE ;
  5476           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  5477                                        PD_job _log_date  => VD_log_ date,
  5478                                        PC_job _status =>  SUBSTR('W ARNING      - This da te has alr eady been  processed' ,1,60),
  5479                                        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),
  5480                                        PD_dat e1 => VD_r ec_group_d ate,
  5481                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  5482  
  5483           RE TURN;
  5484  
  5485         END  IF;
  5486  
  5487       EXCEPT ION
  5488  
  5489         WHEN  OTHERS TH EN
  5490  
  5491           VD _log_date  := SYSDATE ;
  5492           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  5493                                        PD_job _log_date  => VD_log_ date,
  5494                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  5495                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  5496                                        PD_dat e1 => VD_r ec_group_d ate,
  5497                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  5498  
  5499           RE TURN;
  5500  
  5501       END;
  5502  
  5503     END IF;
  5504  
  5505   -- ******* ********** ********** ********** ********** ********** ********** ********
  5506   -- *
  5507   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  5508   -- *  - If  yes, then  end this  job.
  5509   -- *
  5510   -- ******* ********** ********** ********** ********** ********** ********** ********
  5511  
  5512     SELECT C OUNT(*)
  5513     INTO   V N_job_coun t
  5514     FROM   S YS.DBA_JOB S_RUNNING  R,
  5515            S YS.DBA_JOB S J
  5516     WHERE  J .JOB = R.J OB
  5517     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  5518  
  5519     IF VN_jo b_count >  1 THEN
  5520  
  5521       VD_log _date := S YSDATE;
  5522       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5523                                    PD_job_log _date => V D_log_date ,
  5524                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  5525                                    PC_job_log _message = > SUBSTR(' There is a nother '
  5526                                                                || C C_sp_name
  5527                                                                || '  job runni ng.'
  5528                                                                || '  Exiting j ob without  running.' ,1,2000),
  5529                                    PD_date1 = > VD_rec_g roup_date,
  5530                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5531  
  5532       RETURN ;
  5533  
  5534     ELSE
  5535  
  5536       IF VB_ run_standa lone THEN
  5537  
  5538         VD_l og_date :=  SYSDATE;
  5539         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5540                                      PD_job_l og_date =>  VD_log_da te,
  5541                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  5542                                      PD_date1  => VD_rec _group_dat e,
  5543                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5544  
  5545       ELSE
  5546  
  5547         SELE CT    MAX( J.Job)
  5548         INTO       VN_j ob_number
  5549         FROM       SYS. DBA_JOBS_R UNNING R,
  5550                    SYS. DBA_JOBS J
  5551         WHER E     J.JO B = R.JOB
  5552         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  5553  
  5554         VD_l og_date :=  SYSDATE;
  5555         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5556                                      PD_job_l og_date =>  VD_log_da te,
  5557                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  5558                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  5559                                                                      || VN_job _number,1, 2000),
  5560                                      PD_date1  => VD_rec _group_dat e,
  5561                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5562  
  5563       END IF ;
  5564  
  5565     END IF;
  5566  
  5567   -- ******* ********** ********** ********** ********** ********** ********** ********
  5568   -- *
  5569   -- * Main  processing  loop
  5570   -- *
  5571   -- ******* ********** ********** ********** ********** ********** ********** ********
  5572  
  5573     VN_pass_ count := 0 ;
  5574     VN_updat e_count :=  0;
  5575     VD_proce ss_start_d ate := SYS DATE;
  5576  
  5577   -- ******* ********** ********** ********** ********** ********** ********** ********
  5578   -- * Remov e old proc ess log ro ws
  5579   -- ******* ********** ********** ********** ********** ********** ********** ********
  5580     BEGIN
  5581  
  5582       VD_log _date := S YSDATE;
  5583       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5584                                    PD_job_log _date => V D_log_date ,
  5585                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  5586                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  5587                                                                   | | VN_parm_ log_file_a ge
  5588                                                                   | | ' days o ld',1,2000 ),
  5589                                    PD_date1 = > VD_rec_g roup_date,
  5590                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5591  
  5592       DELETE
  5593       FROM       ADRMGT .Job_Proce ss_Logs
  5594       WHERE      Job_na me = CC_pr ocess_name
  5595       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  5596  
  5597       COMMIT ;
  5598  
  5599       VD_log _date := S YSDATE;
  5600       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5601                                    PD_job_log _date => V D_log_date ,
  5602                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  5603                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  5604                                                                   | | VN_parm_ log_file_a ge
  5605                                                                   | | ' days o ld',1,2000 ),
  5606                                    PD_date1 = > VD_rec_g roup_date,
  5607                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5608  
  5609  
  5610     EXCEPTIO N
  5611  
  5612       WHEN N O_DATA_FOU ND THEN
  5613  
  5614         NULL ;
  5615  
  5616       WHEN O THERS THEN
  5617  
  5618         VD_l og_date :=  SYSDATE;
  5619         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5620                                      PD_job_l og_date  = > VD_log_d ate,
  5621                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess logs .',1,60),
  5622                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  5623                                      PD_date1  => VD_rec _group_dat e,
  5624                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5625  
  5626     END;
  5627  
  5628   -- ******* ********** ********** ********** ********** ********** ********** ********
  5629   -- * Remov e old proc ess error  rows
  5630   -- ******* ********** ********** ********** ********** ********** ********** ********
  5631  
  5632     BEGIN
  5633  
  5634       VD_log _date := S YSDATE;
  5635       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5636                                    PD_job_log _date => V D_log_date ,
  5637                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  5638                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  5639                                                                   | | VN_parm_ log_file_a ge
  5640                                                                   | | ' days o ld',1,2000 ),
  5641                                    PD_date1 = > VD_rec_g roup_date,
  5642                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5643  
  5644       DELETE
  5645       FROM       ADRMGT .Job_Proce ss_Errs
  5646       WHERE      Job_na me = CC_pr ocess_name
  5647       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  5648  
  5649       COMMIT ;
  5650  
  5651       VD_log _date := S YSDATE;
  5652       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5653                                    PD_job_log _date => V D_log_date ,
  5654                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  5655                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  5656                                                                   | | VN_parm_ log_file_a ge
  5657                                                                   | | ' days o ld',1,2000 ),
  5658                                    PD_date1 = > VD_rec_g roup_date,
  5659                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5660  
  5661     EXCEPTIO N
  5662  
  5663       WHEN N O_DATA_FOU ND THEN
  5664  
  5665         NULL ;
  5666  
  5667       WHEN O THERS THEN
  5668  
  5669         VD_l og_date :=  SYSDATE;
  5670         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5671                                      PD_job_l og_date  = > VD_log_d ate,
  5672                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess erro rs.',1,60) ,
  5673                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  5674                                      PD_date1  => VD_rec _group_dat e,
  5675                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5676  
  5677     END;
  5678  
  5679   -- ******* ********** ********** ********** ********** ********** ********** ********
  5680   -- * Main  record cur sor logic
  5681   -- ******* ********** ********** ********** ********** ********** ********** ********
  5682  
  5683     BEGIN
  5684  
  5685       VN_max _log_id :=  0;
  5686       VN_pas s_count :=  0;
  5687       VN_upd ate_count  := 0;
  5688  
  5689       OPEN C _hl7_id;
  5690  
  5691       LOOP
  5692  
  5693         FETC H C_hl7_id
  5694         BULK  COLLECT I NTO T_hl7_ id
  5695         LIMI T VN_parm_ rows_to_pr ocess;
  5696  
  5697         EXIT  WHEN T_hl 7_id.COUNT  = 0;
  5698  
  5699         FORA LL I_hl7_i d IN T_hl7 _id.FIRST. .T_hl7_id. last
  5700           UP DATE    AD R.Hl7_tran saction_lo g
  5701           SE T       In ternal_err or_text =  NULL
  5702           WH ERE     Hl 7_transact ion_log_id  = T_hl7_i d(I_hl7_id );
  5703  
  5704         COMM IT;
  5705  
  5706         FOR  I_hl7_id I N T_hl7_id .FIRST..T_ hl7_id.las t LOOP
  5707  
  5708           IF  T_hl7_id( I_hl7_id)  > VN_max_l og_id THEN
  5709  
  5710              VN_max_log _id := T_h l7_id(I_hl 7_id);
  5711  
  5712           EN D IF;
  5713  
  5714         END  LOOP;
  5715  
  5716         VN_p ass_count  := VN_pass _count + 1 ;
  5717  
  5718         VN_u pdate_coun t := VN_up date_count  + T_hl7_i d.COUNT;
  5719  
  5720       END LO OP;
  5721  
  5722       CLOSE  C_hl7_id;
  5723  
  5724       BEGIN
  5725  
  5726         IF N VL(VN_max_ log_id,0)  <> 0 THEN
  5727  
  5728           UP DATE    AD RMGT.Adr_P arameter
  5729           SE T       Va lue = VN_m ax_log_id
  5730           WH ERE     Ap plication_ name = 'HL 7 NULL INT ERNAL_ERRO R_TEXT COL UMN'
  5731           AN D       Pa rameter_na me = VC_pa ra_name_la st_proc_id ;
  5732  
  5733           CO MMIT;
  5734  
  5735         ELSE
  5736  
  5737           VN _max_log_i d := VN_pa rm_last_lo g_id;
  5738  
  5739         END  IF;
  5740  
  5741       EXCEPT ION
  5742  
  5743         WHEN  OTHERS TH EN
  5744  
  5745           VD _log_date  := SYSDATE ;
  5746           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  5747                                        PD_job _log_date   => VD_log _date,
  5748                                        PC_job _status =>  SUBSTR('E RROR        - Unknown  error upd ating ' ||  VC_para_n ame_last_p roc_id ||  '.',1,60),
  5749                                        PC_job _log_messa ge => SUBS TR(VC_para _name_last _proc_id | | ': ' ||  VN_max_log _id
  5750                                                                        || '. '  || SQLERR M,1,2000),
  5751                                        PD_dat e1 => VD_r ec_group_d ate,
  5752                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  5753  
  5754           RE TURN;
  5755  
  5756       END;
  5757  
  5758   -- Process  completio n informat ion
  5759  
  5760       VD_log _date := S YSDATE;
  5761       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5762                                    PD_job_log _date => V D_log_date ,
  5763                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  5764                                    PD_date1 = > VD_rec_g roup_date,
  5765                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  5766                                    PN_numeric 2 => VN_pa ss_count,
  5767                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  5768  
  5769       VD_log _date := S YSDATE;
  5770       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5771                                    PD_job_log _date => V D_log_date ,
  5772                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  5773                                    PD_date1 = > VD_rec_g roup_date,
  5774                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  5775                                    PN_numeric 2 => VN_up date_count ,
  5776                                    PC_text2 = > SUBSTR(' Updated Re cord Count ',1,255));
  5777  
  5778       VD_log _date := S YSDATE;
  5779       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5780                                    PD_job_log _date => V D_log_date ,
  5781                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  5782                                    PD_date1 = > VD_rec_g roup_date,
  5783                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  5784                                    PN_numeric 2 => VN_ma x_log_id,
  5785                                    PC_text2 = > SUBSTR(' Last proce ssed log i d',1,255)) ;
  5786  
  5787       VD_pro cess_end_d ate := SYS DATE;
  5788       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  5789                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  5790                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  5791                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  5792                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  5793  
  5794       VD_log _date := S YSDATE;
  5795       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5796                                    PD_job_log _date => V D_log_date ,
  5797                                    PC_job_sta tus => SUB STR('SUCCE SS     - P rocessing  Completed' ,1,60),
  5798                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  5799                                    PD_date1 = > VD_rec_g roup_date,
  5800                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5801  
  5802     EXCEPTIO N
  5803  
  5804       WHEN O THERS THEN
  5805  
  5806         VD_l og_date :=  SYSDATE;
  5807         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5808                                      PD_job_l og_date  = > VD_log_d ate,
  5809                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror updat ing Intern al_error_t ext.',1,60 ),
  5810                                      PC_job_l og_message  => SUBSTR ('Cursor L oop Count:  ' || VN_p ass_count
  5811                                                                      || ' Upda ted Record  Count: '  || VN_upda te_count
  5812                                                                      || '. ' | | SQLERRM, 1,2000),
  5813                                      PD_date1  => VD_rec _group_dat e,
  5814                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5815  
  5816         RETU RN;
  5817  
  5818     END;
  5819  
  5820   EXCEPTION
  5821  
  5822     WHEN OTH ERS THEN
  5823  
  5824       ROLLBA CK;
  5825  
  5826       VD_log _date := S YSDATE;
  5827       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5828                                    PD_job_err or_date  = > VD_log_d ate,
  5829                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  5830                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Hl7_Txn_Lo g_Null_Err _Col_Sp.'
  5831                                                                  ||  SQLERRM,1 ,2000),
  5832                                    PD_date1 = > VD_rec_g roup_date,
  5833                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5834  
  5835       VD_log _date := S YSDATE;
  5836       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5837                                    PD_job_log _date => V D_log_date ,
  5838                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  5839                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  5840                                    PD_date1 = > VD_rec_g roup_date,
  5841                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5842  
  5843   END Hl7_Tx n_Log_Null _Err_Col_S p_05;
  5844   /
  5845   DROP PROCE DURE ADR.H L7_TXN_LOG _NULL_ERR_ COL_SP_06;
  5846  
  5847   CREATE OR  REPLACE PR OCEDURE AD R.Hl7_Txn_ Log_Null_E rr_Col_Sp_ 06 (
  5848      PB_run_ standalone     IN BOO LEAN DEFAU LT FALSE,
  5849      PB_allo w_rpt_inst     IN BOO LEAN DEFAU LT FALSE,
  5850      PN_rows _to_proces s   IN NUM BER DEFAUL T NULL)
  5851   IS
  5852      -- **** ********** ********** ********** ********** ********** ********** ********** *
  5853      -- * Pr ocedure: H l7_Txn_Log _Null_Erro r_Col
  5854      -- *
  5855      -- *    Update HL7  transcati ons to rem ove data f rom the in ternal_err or_text
  5856      -- *    column for  all rows  more than  6 months o ld.
  5857      -- *
  5858      -- * Pa rameters:
  5859      -- *
  5860      -- *  P B_run_stan dalone   I gnore DBMS _JOB logic  for check ing runnin g jobs.
  5861      -- *                          Default: F ALSE
  5862      -- *
  5863      -- *  P B_allow_rp t_inst   A llow store d procedur e to be su bmitted in  the
  5864      -- *                        D BMS_JOB qu eue on the  ADR repor ting datab ases
  5865      -- *                          Default: F ALSE
  5866      -- *
  5867      -- **** ********** ********** ********** ********** ********** ********** ********** *
  5868      --
  5869      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  5870      -- Date         Au thor             Desc ription
  5871      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  5872      -- 06/2 3/2010  Cr aig Wood         Crea ted for CC R 1100.
  5873      --
  5874      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  5875  
  5876      -- CONS TANTS
  5877  
  5878      CC_no                                  V ARCHAR2 (1 ) := 'N';
  5879      CC_parm _applicati on_name    CONSTANT V ARCHAR2 (8 0)
  5880         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  5881      CC_parm _hl7_err_t xt_age     CONSTANT V ARCHAR2 (5 0)
  5882                                                 := 'OLDE ST HL7 ERR OR TEXT DA YS' ;
  5883      CC_parm _last_hl7_ id         CONSTANT V ARCHAR2 (5 0)
  5884                                                 := 'LAST  HL7 ID PR OCESSED' ;
  5885      CC_parm _log_file_ age        CONSTANT V ARCHAR2 (5 0)
  5886                                                 := 'OLDE ST LOG FIL E DAYS' ;
  5887      CC_proc ess_name              CONSTANT V ARCHAR2 (6 0)
  5888         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  5889      CC_sp_n ame                   CONSTANT V ARCHAR2 (3 5)
  5890         := ' Hl7_Txn_Lo g_Null_Err _Col_Sp_'  || '06' ;
  5891      CC_yes                                 V ARCHAR2 (1 ) := 'Y';
  5892  
  5893      -- VARI ABLES
  5894  
  5895      VB_allo w_rpt_inst                     B OOLEAN :=  FALSE;
  5896      VB_run_ standalone                     B OOLEAN :=  FALSE;
  5897  
  5898      VC_allo w_rpt_inst                     V ARCHAR2 (5 ) := NULL;
  5899      VC_inst ance_name                      V ARCHAR2 (1 6);
  5900      VC_proc ess_durati on                  V ARCHAR2 (2 5);
  5901      VC_run_ standalone                     V ARCHAR2 (5 ) := NULL;
  5902      VC_sql_ statement                      V ARCHAR2 (2 000);
  5903      VC_para _name_last _proc_id            V ARCHAR2 (3 0):= 'P' | | '06' ||  ' LAST PRO CESSED LOG  ID';
  5904  
  5905     VD_log_d ate                            D ATE;
  5906     VD_proce ss_end_dat e                   D ATE;
  5907     VD_proce ss_start_d ate                 D ATE;
  5908     VD_rec_g roup_date                      D ATE;
  5909  
  5910     VN_job_c ount                           N UMBER := 0 ;
  5911     VN_job_n umber                          N UMBER;
  5912     VN_max_l og_id                          N UMBER := 0 ;
  5913     VN_parm_ hl7_err_tx t_age               N UMBER;
  5914     VN_parm_ log_file_a ge                  N UMBER;
  5915     VN_parm_ last_log_i d                   N UMBER := 0 ;
  5916     VN_parm_ rows_to_pr ocess               N UMBER;
  5917     VN_pass_ count                          N UMBER := 0 ;
  5918     VN_rec_c ount                           N UMBER := 0 ;
  5919     VN_updat e_count                        N UMBER := 0 ;
  5920  
  5921  
  5922   -- CURSORS
  5923  
  5924     CURSOR C _hl7_id IS
  5925       SELECT   /*+ para llel(4) */  Hl7_trans action_log _id
  5926       FROM       Hl7_tr ansaction_ log PARTIT ION (HL7_T RANSACTION _LOG_P06)
  5927       WHERE      Hl7_tr ansaction_ log_id > V N_parm_las t_log_id
  5928       AND        Record _created_d ate < TRUN C(SYSDATE)  - VN_parm _hl7_err_t xt_age
  5929       AND        Intern al_error_t ext IS NOT  NULL;
  5930  
  5931   -- TYPES
  5932  
  5933     TYPE TT_ hl7_id IS
  5934       TABLE  OF ADR.Hl7 _Transacti on_Log.Hl7 _transacti on_log_id% TYPE;
  5935  
  5936   -- MEMORY  TABLES
  5937  
  5938     T_hl7_id                                T T_hl7_id;
  5939  
  5940   -- ******* ********** ********** ********** ********** ********** ********** *******
  5941   -- *
  5942   -- *  MAIN  PROCEDURE :
  5943   -- *
  5944   -- ******* ********** ********** ********** ********** ********** ********** *******
  5945  
  5946   BEGIN
  5947  
  5948     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  5949     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5950  
  5951     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  5952     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5953  
  5954     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  5955     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5956  
  5957     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  5958     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5959  
  5960     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  QUERY PARA LLEL ' ||   2;
  5961     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5962  
  5963     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  DML PARALL EL ' || 2;
  5964     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5965  
  5966     VD_rec_g roup_date  := TRUNC(S YSDATE);
  5967  
  5968     VD_log_d ate := SYS DATE;
  5969     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  5970                                 PD _job_log_d ate => VD_ log_date,
  5971                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  5972                                 PD _date1 =>  VD_rec_gro up_date,
  5973                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  5974  
  5975   -- ******* ********** ********** ********** ********** ********** ********** ********
  5976   -- *
  5977   -- * Valid ate input  parameters
  5978   -- *
  5979   -- ******* ********** ********** ********** ********** ********** ********** ********
  5980  
  5981   -- * Check  run stand alone flag
  5982  
  5983     IF PB_ru n_standalo ne IS NULL
  5984      OR NOT  PB_run_sta ndalone TH EN
  5985  
  5986       VB_run _standalon e := FALSE ;
  5987       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  5988  
  5989     ELSE
  5990  
  5991       VB_run _standalon e := TRUE;
  5992       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  5993  
  5994     END IF;
  5995  
  5996   -- * Check  run on re port insta nce flag
  5997  
  5998     IF PB_al low_rpt_in st IS NULL
  5999      OR NOT  PB_allow_r pt_inst TH EN
  6000  
  6001       VB_all ow_rpt_ins t := FALSE ;
  6002       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  6003  
  6004     ELSE
  6005  
  6006       VB_all ow_rpt_ins t := TRUE;
  6007       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  6008  
  6009     END IF;
  6010  
  6011   -- ******* ********** ********** ********** ********** ********** ********** ********
  6012   -- *
  6013   -- * Retri eve proces sing param eters
  6014   -- *
  6015   -- ******* ********** ********** ********** ********** ********** ********** ********
  6016  
  6017   -- Process  Parameter  OLDEST HL 7 ERROR TE XT DAYS KE PT
  6018  
  6019     BEGIN
  6020  
  6021       SELECT     Value
  6022       INTO       VN_par m_hl7_err_ txt_age
  6023       FROM       ADRMGT .Adr_Param eter
  6024       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  6025       AND        Parame ter_name =  'OLDEST H L7 ERROR T EXT DAYS K EPT';
  6026  
  6027       IF VN_ parm_hl7_e rr_txt_age  IS NULL T HEN
  6028  
  6029         VD_l og_date :=  SYSDATE;
  6030         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6031                                      PD_job_l og_date =>  VD_log_da te,
  6032                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6033                                      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),
  6034                                      PD_date1  => VD_rec _group_dat e,
  6035                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6036  
  6037         RETU RN;
  6038  
  6039       END IF ;
  6040  
  6041     EXCEPTIO N
  6042  
  6043       WHEN N O_DATA_FOU ND THEN
  6044  
  6045         VD_l og_date :=  SYSDATE;
  6046         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6047                                      PD_job_l og_date =>  VD_log_da te,
  6048                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6049                                      PC_job_l og_message  => 'Param eter for O LDEST HL7  ERROR TEXT  DAYS KEPT  was not f ound. Term inating pr ocess.',
  6050                                      PD_date1  => VD_rec _group_dat e,
  6051                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6052  
  6053         RETU RN;
  6054  
  6055       WHEN O THERS THEN
  6056  
  6057         VD_l og_date :=  SYSDATE;
  6058         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6059                                      PD_job_l og_date =>  VD_log_da te,
  6060                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6061                                      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. '
  6062                                                                      || SQLERR M,1,2000),
  6063                                      PD_date1  => VD_rec _group_dat e,
  6064                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6065  
  6066         RETU RN;
  6067  
  6068     END;
  6069  
  6070   -- Process  Parameter  OLDEST LO G FILE DAY S KEPT
  6071  
  6072     BEGIN
  6073  
  6074       SELECT     Value
  6075       INTO       VN_par m_log_file _age
  6076       FROM       ADRMGT .Adr_Param eter
  6077       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  6078       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  6079  
  6080       IF VN_ parm_log_f ile_age IS  NULL THEN
  6081  
  6082         VD_l og_date :=  SYSDATE;
  6083         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6084                                      PD_job_l og_date =>  VD_log_da te,
  6085                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6086                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST L OG FILE DA YS KEPT is  NULL. Ter minating p rocess.',1 ,2000),
  6087                                      PD_date1  => VD_rec _group_dat e,
  6088                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6089  
  6090         RETU RN;
  6091  
  6092       END IF ;
  6093  
  6094     EXCEPTIO N
  6095  
  6096       WHEN N O_DATA_FOU ND THEN
  6097  
  6098         VD_l og_date :=  SYSDATE;
  6099         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6100                                      PD_job_l og_date =>  VD_log_da te,
  6101                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6102                                      PC_job_l og_message  => 'Param eter for O LDEST LOG  FILE DAYS  KEPT was n ot found.  Terminatin g process. ',
  6103                                      PD_date1  => VD_rec _group_dat e,
  6104                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6105  
  6106         RETU RN;
  6107  
  6108       WHEN O THERS THEN
  6109  
  6110         VD_l og_date :=  SYSDATE;
  6111         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6112                                      PD_job_l og_date =>  VD_log_da te,
  6113                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6114                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  OLDEST LO G FILE DAY S KEPT. Te rminating  process. '
  6115                                                                      || SQLERR M,1,2000),
  6116                                      PD_date1  => VD_rec _group_dat e,
  6117                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6118  
  6119         RETU RN;
  6120  
  6121     END;
  6122  
  6123   -- Process  Parameter  ROWS TO P ROCESS
  6124  
  6125     BEGIN
  6126  
  6127       SELECT     Value
  6128       INTO       VN_par m_rows_to_ process
  6129       FROM       ADRMGT .Adr_Param eter
  6130       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  6131       AND        Parame ter_name =  'ROWS TO  PROCESS';
  6132  
  6133       IF VN_ parm_rows_ to_process  IS NULL T HEN
  6134  
  6135         VD_l og_date :=  SYSDATE;
  6136         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6137                                      PD_job_l og_date =>  VD_log_da te,
  6138                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6139                                      PC_job_l og_message  => SUBSTR ('Paramete r ROWS TO  PROCESS is  NULL. Ter minating p rocess.',1 ,2000),
  6140                                      PD_date1  => VD_rec _group_dat e,
  6141                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6142  
  6143         RETU RN;
  6144  
  6145       END IF ;
  6146  
  6147     EXCEPTIO N
  6148  
  6149       WHEN N O_DATA_FOU ND THEN
  6150  
  6151         VD_l og_date :=  SYSDATE;
  6152         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6153                                      PD_job_l og_date =>  VD_log_da te,
  6154                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6155                                      PC_job_l og_message  => 'Param eter for R OWS TO PRO CESS was n ot found.  Terminatin g process. ',
  6156                                      PD_date1  => VD_rec _group_dat e,
  6157                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6158  
  6159         RETU RN;
  6160  
  6161       WHEN O THERS THEN
  6162  
  6163         VD_l og_date :=  SYSDATE;
  6164         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6165                                      PD_job_l og_date =>  VD_log_da te,
  6166                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6167                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ROWS TO P ROCESS. Te rminating  process. '
  6168                                                                      || SQLERR M,1,2000),
  6169                                      PD_date1  => VD_rec _group_dat e,
  6170                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6171  
  6172         RETU RN;
  6173  
  6174     END;
  6175  
  6176   -- Process  Parameter  LAST PROC ESSED LOG  ID
  6177  
  6178     BEGIN
  6179  
  6180       SELECT     Value
  6181       INTO       VN_par m_last_log _id
  6182       FROM       ADRMGT .Adr_Param eter
  6183       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  6184       AND        Parame ter_name =  VC_para_n ame_last_p roc_id;
  6185  
  6186       IF VN_ parm_last_ log_id IS  NULL THEN
  6187  
  6188         VD_l og_date :=  SYSDATE;
  6189         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6190                                      PD_job_l og_date =>  VD_log_da te,
  6191                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6192                                      PC_job_l og_message  => SUBSTR ('Paramete r ' || VC_ para_name_ last_proc_ id || ' is  NULL. Ter minating p rocess.',1 ,2000),
  6193                                      PD_date1  => VD_rec _group_dat e,
  6194                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6195  
  6196         RETU RN;
  6197  
  6198       END IF ;
  6199  
  6200     EXCEPTIO N
  6201  
  6202       WHEN N O_DATA_FOU ND THEN
  6203  
  6204         VD_l og_date :=  SYSDATE;
  6205         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6206                                      PD_job_l og_date =>  VD_log_da te,
  6207                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6208                                      PC_job_l og_message  => 'Param eter for '  || VC_par a_name_las t_proc_id  || ' was n ot found.  Terminatin g process. ',
  6209                                      PD_date1  => VD_rec _group_dat e,
  6210                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6211  
  6212         RETU RN;
  6213  
  6214       WHEN O THERS THEN
  6215  
  6216         VD_l og_date :=  SYSDATE;
  6217         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6218                                      PD_job_l og_date =>  VD_log_da te,
  6219                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6220                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ' || VC_p ara_name_l ast_proc_i d || '. Te rminating  process. '
  6221                                                                      || SQLERR M,1,2000),
  6222                                      PD_date1  => VD_rec _group_dat e,
  6223                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6224  
  6225         RETU RN;
  6226  
  6227     END;
  6228  
  6229   -- Write o ut Paramet er log mes sages for  submitted  job
  6230  
  6231     VD_log_d ate := SYS DATE;
  6232     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  6233                                 PD _job_log_d ate => VD_ log_date,
  6234                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  6235                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  6236                                 PD _date1 =>  VD_rec_gro up_date,
  6237                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  6238  
  6239     VD_log_d ate := SYS DATE;
  6240     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  6241                                 PD _job_log_d ate => VD_ log_date,
  6242                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  6243                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  6244                                 PD _date1 =>  VD_rec_gro up_date,
  6245                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  6246  
  6247     VD_log_d ate := SYS DATE;
  6248     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  6249                                 PD _job_log_d ate => VD_ log_date,
  6250                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  6251                                 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),
  6252                                 PD _date1 =>  VD_rec_gro up_date,
  6253                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  6254  
  6255  
  6256     VD_log_d ate := SYS DATE;
  6257     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  6258                                 PD _job_log_d ate => VD_ log_date,
  6259                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  6260                                 PC _job_log_m essage =>  SUBSTR(' O LDEST HL7  ERROR TEXT  DAYS KEPT : ' || VN_ parm_hl7_e rr_txt_age ,1,2000),
  6261                                 PD _date1 =>  VD_rec_gro up_date,
  6262                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  6263  
  6264     VD_log_d ate := SYS DATE;
  6265     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  6266                                 PD _job_log_d ate => VD_ log_date,
  6267                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  6268                                 PC _job_log_m essage =>  SUBSTR(' O LDEST LOG  FILE DAYS  KEPT: ' ||  VN_parm_l og_file_ag e,1,2000),
  6269                                 PD _date1 =>  VD_rec_gro up_date,
  6270                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  6271  
  6272     VD_log_d ate := SYS DATE;
  6273     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  6274                                 PD _job_log_d ate => VD_ log_date,
  6275                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  6276                                 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),
  6277                                 PD _date1 =>  VD_rec_gro up_date,
  6278                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  6279  
  6280     VD_log_d ate := SYS DATE;
  6281     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  6282                                 PD _job_log_d ate => VD_ log_date,
  6283                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  6284                                 PC _job_log_m essage =>  SUBSTR(' '  || VC_par a_name_las t_proc_id  || ': ' ||  NVL(TO_CH AR(VN_parm _last_log_ id),'NULL' ),1,2000),
  6285                                 PD _date1 =>  VD_rec_gro up_date,
  6286                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  6287  
  6288   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  6289  
  6290     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  6291  
  6292       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  6293  
  6294       VD_log _date := S YSDATE;
  6295       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6296                                    PD_job_log _date => V D_log_date ,
  6297                                    PC_job_sta tus => SUB STR('WARNI NG     - J ob table p arameters' ,1,60),
  6298                                    PC_job_log _message = > SUBSTR('  Processin g paramete r ROWS TO  PROCESS (i n each loo p) has bee n overridd en.'
  6299                                                              || ' T he overrid e value is : ' || NVL (TO_CHAR(V N_parm_row s_to_proce ss),'NULL' ),1,2000),
  6300                                    PD_date1 = > VD_rec_g roup_date,
  6301                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  6302  
  6303     END IF;
  6304  
  6305   -- ******* ********** ********** ********** ********** ********** ********** ********
  6306   -- *
  6307   -- * Check  to see if  process i s running  on a repor ting datab ase.
  6308   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  6309   -- *
  6310   -- ******* ********** ********** ********** ********** ********** ********** ********
  6311  
  6312     IF NOT V B_allow_rp t_inst THE N
  6313  
  6314       BEGIN
  6315  
  6316         VD_l og_date :=  SYSDATE;
  6317         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6318                                      PD_job_l og_date =>  VD_log_da te,
  6319                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  6320                                      PD_date1  => VD_rec _group_dat e,
  6321                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6322  
  6323         SELE CT    Inst ance_name
  6324         INTO       VC_i nstance_na me
  6325         FROM       V$in stance;
  6326  
  6327         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  6328  
  6329           VD _log_date  := SYSDATE ;
  6330           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  6331                                        PD_job _log_date  => VD_log_ date,
  6332                                        PC_job _status =>  SUBSTR('E RROR        - Process ing Failed ',1,60),
  6333                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  6334                                                                     || VC_inst ance_name
  6335                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  6336                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  6337                                        PD_dat e1 => VD_r ec_group_d ate,
  6338                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  6339  
  6340           RE TURN;
  6341  
  6342         END  IF;
  6343  
  6344       EXCEPT ION
  6345  
  6346         WHEN  OTHERS TH EN
  6347  
  6348           VD _log_date  := SYSDATE ;
  6349           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  6350                                        PD_job _log_date  => VD_log_ date,
  6351                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  6352                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  6353                                        PD_dat e1 => VD_r ec_group_d ate,
  6354                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  6355  
  6356           RE TURN;
  6357  
  6358       END;
  6359  
  6360     END IF;
  6361  
  6362   -- ******* ********** ********** ********** ********** ********** ********** ********
  6363   -- *
  6364   -- * Check  to see if  the job h as already  run today
  6365   -- *  - If  running i n stand-al one mode,  don't chec k.
  6366   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  6367   -- *
  6368   -- ******* ********** ********** ********** ********** ********** ********** ********
  6369  
  6370     IF NOT P B_run_stan dalone THE N
  6371  
  6372       BEGIN
  6373  
  6374         VD_l og_date :=  SYSDATE;
  6375         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6376                                      PD_job_l og_date =>  VD_log_da te,
  6377                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  6378                                      PD_date1  => VD_rec _group_dat e,
  6379                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6380  
  6381         SELE CT    COUN T(*)
  6382         INTO       VN_r ec_count
  6383         FROM       ADRM GT.Job_Pro cess_Logs
  6384         WHER E     Job_ name = CC_ process_na me
  6385         AND        Date 1 = VD_rec _group_dat e
  6386         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  6387  
  6388         IF V N_rec_coun t > 0 THEN
  6389  
  6390           VD _log_date  := SYSDATE ;
  6391           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  6392                                        PD_job _log_date  => VD_log_ date,
  6393                                        PC_job _status =>  SUBSTR('W ARNING      - This da te has alr eady been  processed' ,1,60),
  6394                                        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),
  6395                                        PD_dat e1 => VD_r ec_group_d ate,
  6396                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  6397  
  6398           RE TURN;
  6399  
  6400         END  IF;
  6401  
  6402       EXCEPT ION
  6403  
  6404         WHEN  OTHERS TH EN
  6405  
  6406           VD _log_date  := SYSDATE ;
  6407           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  6408                                        PD_job _log_date  => VD_log_ date,
  6409                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  6410                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  6411                                        PD_dat e1 => VD_r ec_group_d ate,
  6412                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  6413  
  6414           RE TURN;
  6415  
  6416       END;
  6417  
  6418     END IF;
  6419  
  6420   -- ******* ********** ********** ********** ********** ********** ********** ********
  6421   -- *
  6422   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  6423   -- *  - If  yes, then  end this  job.
  6424   -- *
  6425   -- ******* ********** ********** ********** ********** ********** ********** ********
  6426  
  6427     SELECT C OUNT(*)
  6428     INTO   V N_job_coun t
  6429     FROM   S YS.DBA_JOB S_RUNNING  R,
  6430            S YS.DBA_JOB S J
  6431     WHERE  J .JOB = R.J OB
  6432     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  6433  
  6434     IF VN_jo b_count >  1 THEN
  6435  
  6436       VD_log _date := S YSDATE;
  6437       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6438                                    PD_job_log _date => V D_log_date ,
  6439                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  6440                                    PC_job_log _message = > SUBSTR(' There is a nother '
  6441                                                                || C C_sp_name
  6442                                                                || '  job runni ng.'
  6443                                                                || '  Exiting j ob without  running.' ,1,2000),
  6444                                    PD_date1 = > VD_rec_g roup_date,
  6445                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  6446  
  6447       RETURN ;
  6448  
  6449     ELSE
  6450  
  6451       IF VB_ run_standa lone THEN
  6452  
  6453         VD_l og_date :=  SYSDATE;
  6454         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6455                                      PD_job_l og_date =>  VD_log_da te,
  6456                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  6457                                      PD_date1  => VD_rec _group_dat e,
  6458                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6459  
  6460       ELSE
  6461  
  6462         SELE CT    MAX( J.Job)
  6463         INTO       VN_j ob_number
  6464         FROM       SYS. DBA_JOBS_R UNNING R,
  6465                    SYS. DBA_JOBS J
  6466         WHER E     J.JO B = R.JOB
  6467         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  6468  
  6469         VD_l og_date :=  SYSDATE;
  6470         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6471                                      PD_job_l og_date =>  VD_log_da te,
  6472                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  6473                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  6474                                                                      || VN_job _number,1, 2000),
  6475                                      PD_date1  => VD_rec _group_dat e,
  6476                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6477  
  6478       END IF ;
  6479  
  6480     END IF;
  6481  
  6482   -- ******* ********** ********** ********** ********** ********** ********** ********
  6483   -- *
  6484   -- * Main  processing  loop
  6485   -- *
  6486   -- ******* ********** ********** ********** ********** ********** ********** ********
  6487  
  6488     VN_pass_ count := 0 ;
  6489     VN_updat e_count :=  0;
  6490     VD_proce ss_start_d ate := SYS DATE;
  6491  
  6492   -- ******* ********** ********** ********** ********** ********** ********** ********
  6493   -- * Remov e old proc ess log ro ws
  6494   -- ******* ********** ********** ********** ********** ********** ********** ********
  6495     BEGIN
  6496  
  6497       VD_log _date := S YSDATE;
  6498       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6499                                    PD_job_log _date => V D_log_date ,
  6500                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  6501                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  6502                                                                   | | VN_parm_ log_file_a ge
  6503                                                                   | | ' days o ld',1,2000 ),
  6504                                    PD_date1 = > VD_rec_g roup_date,
  6505                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  6506  
  6507       DELETE
  6508       FROM       ADRMGT .Job_Proce ss_Logs
  6509       WHERE      Job_na me = CC_pr ocess_name
  6510       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  6511  
  6512       COMMIT ;
  6513  
  6514       VD_log _date := S YSDATE;
  6515       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6516                                    PD_job_log _date => V D_log_date ,
  6517                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  6518                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  6519                                                                   | | VN_parm_ log_file_a ge
  6520                                                                   | | ' days o ld',1,2000 ),
  6521                                    PD_date1 = > VD_rec_g roup_date,
  6522                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  6523  
  6524  
  6525     EXCEPTIO N
  6526  
  6527       WHEN N O_DATA_FOU ND THEN
  6528  
  6529         NULL ;
  6530  
  6531       WHEN O THERS THEN
  6532  
  6533         VD_l og_date :=  SYSDATE;
  6534         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6535                                      PD_job_l og_date  = > VD_log_d ate,
  6536                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess logs .',1,60),
  6537                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  6538                                      PD_date1  => VD_rec _group_dat e,
  6539                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6540  
  6541     END;
  6542  
  6543   -- ******* ********** ********** ********** ********** ********** ********** ********
  6544   -- * Remov e old proc ess error  rows
  6545   -- ******* ********** ********** ********** ********** ********** ********** ********
  6546  
  6547     BEGIN
  6548  
  6549       VD_log _date := S YSDATE;
  6550       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6551                                    PD_job_log _date => V D_log_date ,
  6552                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  6553                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  6554                                                                   | | VN_parm_ log_file_a ge
  6555                                                                   | | ' days o ld',1,2000 ),
  6556                                    PD_date1 = > VD_rec_g roup_date,
  6557                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  6558  
  6559       DELETE
  6560       FROM       ADRMGT .Job_Proce ss_Errs
  6561       WHERE      Job_na me = CC_pr ocess_name
  6562       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  6563  
  6564       COMMIT ;
  6565  
  6566       VD_log _date := S YSDATE;
  6567       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6568                                    PD_job_log _date => V D_log_date ,
  6569                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  6570                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  6571                                                                   | | VN_parm_ log_file_a ge
  6572                                                                   | | ' days o ld',1,2000 ),
  6573                                    PD_date1 = > VD_rec_g roup_date,
  6574                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  6575  
  6576     EXCEPTIO N
  6577  
  6578       WHEN N O_DATA_FOU ND THEN
  6579  
  6580         NULL ;
  6581  
  6582       WHEN O THERS THEN
  6583  
  6584         VD_l og_date :=  SYSDATE;
  6585         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6586                                      PD_job_l og_date  = > VD_log_d ate,
  6587                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess erro rs.',1,60) ,
  6588                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  6589                                      PD_date1  => VD_rec _group_dat e,
  6590                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6591  
  6592     END;
  6593  
  6594   -- ******* ********** ********** ********** ********** ********** ********** ********
  6595   -- * Main  record cur sor logic
  6596   -- ******* ********** ********** ********** ********** ********** ********** ********
  6597  
  6598     BEGIN
  6599  
  6600       VN_max _log_id :=  0;
  6601       VN_pas s_count :=  0;
  6602       VN_upd ate_count  := 0;
  6603  
  6604       OPEN C _hl7_id;
  6605  
  6606       LOOP
  6607  
  6608         FETC H C_hl7_id
  6609         BULK  COLLECT I NTO T_hl7_ id
  6610         LIMI T VN_parm_ rows_to_pr ocess;
  6611  
  6612         EXIT  WHEN T_hl 7_id.COUNT  = 0;
  6613  
  6614         FORA LL I_hl7_i d IN T_hl7 _id.FIRST. .T_hl7_id. last
  6615           UP DATE    AD R.Hl7_tran saction_lo g
  6616           SE T       In ternal_err or_text =  NULL
  6617           WH ERE     Hl 7_transact ion_log_id  = T_hl7_i d(I_hl7_id );
  6618  
  6619         COMM IT;
  6620  
  6621         FOR  I_hl7_id I N T_hl7_id .FIRST..T_ hl7_id.las t LOOP
  6622  
  6623           IF  T_hl7_id( I_hl7_id)  > VN_max_l og_id THEN
  6624  
  6625              VN_max_log _id := T_h l7_id(I_hl 7_id);
  6626  
  6627           EN D IF;
  6628  
  6629         END  LOOP;
  6630  
  6631         VN_p ass_count  := VN_pass _count + 1 ;
  6632  
  6633         VN_u pdate_coun t := VN_up date_count  + T_hl7_i d.COUNT;
  6634  
  6635       END LO OP;
  6636  
  6637       CLOSE  C_hl7_id;
  6638  
  6639       BEGIN
  6640  
  6641         IF N VL(VN_max_ log_id,0)  <> 0 THEN
  6642  
  6643           UP DATE    AD RMGT.Adr_P arameter
  6644           SE T       Va lue = VN_m ax_log_id
  6645           WH ERE     Ap plication_ name = 'HL 7 NULL INT ERNAL_ERRO R_TEXT COL UMN'
  6646           AN D       Pa rameter_na me = VC_pa ra_name_la st_proc_id ;
  6647  
  6648           CO MMIT;
  6649  
  6650         ELSE
  6651  
  6652           VN _max_log_i d := VN_pa rm_last_lo g_id;
  6653  
  6654         END  IF;
  6655  
  6656       EXCEPT ION
  6657  
  6658         WHEN  OTHERS TH EN
  6659  
  6660           VD _log_date  := SYSDATE ;
  6661           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  6662                                        PD_job _log_date   => VD_log _date,
  6663                                        PC_job _status =>  SUBSTR('E RROR        - Unknown  error upd ating ' ||  VC_para_n ame_last_p roc_id ||  '.',1,60),
  6664                                        PC_job _log_messa ge => SUBS TR(VC_para _name_last _proc_id | | ': ' ||  VN_max_log _id
  6665                                                                        || '. '  || SQLERR M,1,2000),
  6666                                        PD_dat e1 => VD_r ec_group_d ate,
  6667                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  6668  
  6669           RE TURN;
  6670  
  6671       END;
  6672  
  6673   -- Process  completio n informat ion
  6674  
  6675       VD_log _date := S YSDATE;
  6676       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6677                                    PD_job_log _date => V D_log_date ,
  6678                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  6679                                    PD_date1 = > VD_rec_g roup_date,
  6680                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  6681                                    PN_numeric 2 => VN_pa ss_count,
  6682                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  6683  
  6684       VD_log _date := S YSDATE;
  6685       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6686                                    PD_job_log _date => V D_log_date ,
  6687                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  6688                                    PD_date1 = > VD_rec_g roup_date,
  6689                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  6690                                    PN_numeric 2 => VN_up date_count ,
  6691                                    PC_text2 = > SUBSTR(' Updated Re cord Count ',1,255));
  6692  
  6693       VD_log _date := S YSDATE;
  6694       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6695                                    PD_job_log _date => V D_log_date ,
  6696                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  6697                                    PD_date1 = > VD_rec_g roup_date,
  6698                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  6699                                    PN_numeric 2 => VN_ma x_log_id,
  6700                                    PC_text2 = > SUBSTR(' Last proce ssed log i d',1,255)) ;
  6701  
  6702       VD_pro cess_end_d ate := SYS DATE;
  6703       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  6704                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  6705                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  6706                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  6707                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  6708  
  6709       VD_log _date := S YSDATE;
  6710       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6711                                    PD_job_log _date => V D_log_date ,
  6712                                    PC_job_sta tus => SUB STR('SUCCE SS     - P rocessing  Completed' ,1,60),
  6713                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  6714                                    PD_date1 = > VD_rec_g roup_date,
  6715                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  6716  
  6717     EXCEPTIO N
  6718  
  6719       WHEN O THERS THEN
  6720  
  6721         VD_l og_date :=  SYSDATE;
  6722         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6723                                      PD_job_l og_date  = > VD_log_d ate,
  6724                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror updat ing Intern al_error_t ext.',1,60 ),
  6725                                      PC_job_l og_message  => SUBSTR ('Cursor L oop Count:  ' || VN_p ass_count
  6726                                                                      || ' Upda ted Record  Count: '  || VN_upda te_count
  6727                                                                      || '. ' | | SQLERRM, 1,2000),
  6728                                      PD_date1  => VD_rec _group_dat e,
  6729                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6730  
  6731         RETU RN;
  6732  
  6733     END;
  6734  
  6735   EXCEPTION
  6736  
  6737     WHEN OTH ERS THEN
  6738  
  6739       ROLLBA CK;
  6740  
  6741       VD_log _date := S YSDATE;
  6742       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6743                                    PD_job_err or_date  = > VD_log_d ate,
  6744                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  6745                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Hl7_Txn_Lo g_Null_Err _Col_Sp.'
  6746                                                                  ||  SQLERRM,1 ,2000),
  6747                                    PD_date1 = > VD_rec_g roup_date,
  6748                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  6749  
  6750       VD_log _date := S YSDATE;
  6751       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6752                                    PD_job_log _date => V D_log_date ,
  6753                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  6754                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  6755                                    PD_date1 = > VD_rec_g roup_date,
  6756                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  6757  
  6758   END Hl7_Tx n_Log_Null _Err_Col_S p_06;
  6759   /
  6760   DROP PROCE DURE ADR.H L7_TXN_LOG _NULL_ERR_ COL_SP_01;
  6761  
  6762   CREATE OR  REPLACE PR OCEDURE AD R.Hl7_Txn_ Log_Null_E rr_Col_Sp_ 01 (
  6763      PB_run_ standalone     IN BOO LEAN DEFAU LT FALSE,
  6764      PB_allo w_rpt_inst     IN BOO LEAN DEFAU LT FALSE,
  6765      PN_rows _to_proces s   IN NUM BER DEFAUL T NULL)
  6766   IS
  6767      -- **** ********** ********** ********** ********** ********** ********** ********** *
  6768      -- * Pr ocedure: H l7_Txn_Log _Null_Erro r_Col
  6769      -- *
  6770      -- *    Update HL7  transcati ons to rem ove data f rom the in ternal_err or_text
  6771      -- *    column for  all rows  more than  6 months o ld.
  6772      -- *
  6773      -- * Pa rameters:
  6774      -- *
  6775      -- *  P B_run_stan dalone   I gnore DBMS _JOB logic  for check ing runnin g jobs.
  6776      -- *                          Default: F ALSE
  6777      -- *
  6778      -- *  P B_allow_rp t_inst   A llow store d procedur e to be su bmitted in  the
  6779      -- *                        D BMS_JOB qu eue on the  ADR repor ting datab ases
  6780      -- *                          Default: F ALSE
  6781      -- *
  6782      -- **** ********** ********** ********** ********** ********** ********** ********** *
  6783      --
  6784      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  6785      -- Date         Au thor             Desc ription
  6786      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  6787      -- 06/2 3/2010  Cr aig Wood         Crea ted for CC R 1100.
  6788      --
  6789      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  6790  
  6791      -- CONS TANTS
  6792  
  6793      CC_no                                  V ARCHAR2 (1 ) := 'N';
  6794      CC_parm _applicati on_name    CONSTANT V ARCHAR2 (8 0)
  6795         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  6796      CC_parm _hl7_err_t xt_age     CONSTANT V ARCHAR2 (5 0)
  6797                                                 := 'OLDE ST HL7 ERR OR TEXT DA YS' ;
  6798      CC_parm _last_hl7_ id         CONSTANT V ARCHAR2 (5 0)
  6799                                                 := 'LAST  HL7 ID PR OCESSED' ;
  6800      CC_parm _log_file_ age        CONSTANT V ARCHAR2 (5 0)
  6801                                                 := 'OLDE ST LOG FIL E DAYS' ;
  6802      CC_proc ess_name              CONSTANT V ARCHAR2 (6 0)
  6803         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  6804      CC_sp_n ame                   CONSTANT V ARCHAR2 (3 5)
  6805         := ' Hl7_Txn_Lo g_Null_Err _Col_Sp_'  || '01' ;
  6806      CC_yes                                 V ARCHAR2 (1 ) := 'Y';
  6807  
  6808      -- VARI ABLES
  6809  
  6810      VB_allo w_rpt_inst                     B OOLEAN :=  FALSE;
  6811      VB_run_ standalone                     B OOLEAN :=  FALSE;
  6812  
  6813      VC_allo w_rpt_inst                     V ARCHAR2 (5 ) := NULL;
  6814      VC_inst ance_name                      V ARCHAR2 (1 6);
  6815      VC_proc ess_durati on                  V ARCHAR2 (2 5);
  6816      VC_run_ standalone                     V ARCHAR2 (5 ) := NULL;
  6817      VC_sql_ statement                      V ARCHAR2 (2 000);
  6818      VC_para _name_last _proc_id            V ARCHAR2 (3 0):= 'P' | | '01' ||  ' LAST PRO CESSED LOG  ID';
  6819  
  6820     VD_log_d ate                            D ATE;
  6821     VD_proce ss_end_dat e                   D ATE;
  6822     VD_proce ss_start_d ate                 D ATE;
  6823     VD_rec_g roup_date                      D ATE;
  6824  
  6825     VN_job_c ount                           N UMBER := 0 ;
  6826     VN_job_n umber                          N UMBER;
  6827     VN_max_l og_id                          N UMBER := 0 ;
  6828     VN_parm_ hl7_err_tx t_age               N UMBER;
  6829     VN_parm_ log_file_a ge                  N UMBER;
  6830     VN_parm_ last_log_i d                   N UMBER := 0 ;
  6831     VN_parm_ rows_to_pr ocess               N UMBER;
  6832     VN_pass_ count                          N UMBER := 0 ;
  6833     VN_rec_c ount                           N UMBER := 0 ;
  6834     VN_updat e_count                        N UMBER := 0 ;
  6835  
  6836  
  6837   -- CURSORS
  6838  
  6839     CURSOR C _hl7_id IS
  6840       SELECT   /*+ para llel(4) */  Hl7_trans action_log _id
  6841       FROM       Hl7_tr ansaction_ log PARTIT ION (HL7_T RANSACTION _LOG_P01)
  6842       WHERE      Hl7_tr ansaction_ log_id > V N_parm_las t_log_id
  6843       AND        Record _created_d ate < TRUN C(SYSDATE)  - VN_parm _hl7_err_t xt_age
  6844       AND        Intern al_error_t ext IS NOT  NULL;
  6845  
  6846   -- TYPES
  6847  
  6848     TYPE TT_ hl7_id IS
  6849       TABLE  OF ADR.Hl7 _Transacti on_Log.Hl7 _transacti on_log_id% TYPE;
  6850  
  6851   -- MEMORY  TABLES
  6852  
  6853     T_hl7_id                                T T_hl7_id;
  6854  
  6855   -- ******* ********** ********** ********** ********** ********** ********** *******
  6856   -- *
  6857   -- *  MAIN  PROCEDURE :
  6858   -- *
  6859   -- ******* ********** ********** ********** ********** ********** ********** *******
  6860  
  6861   BEGIN
  6862  
  6863     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  6864     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  6865  
  6866     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  6867     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  6868  
  6869     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  6870     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  6871  
  6872     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  6873     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  6874  
  6875     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  QUERY PARA LLEL ' ||   2;
  6876     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  6877  
  6878     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  DML PARALL EL ' || 2;
  6879     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  6880  
  6881     VD_rec_g roup_date  := TRUNC(S YSDATE);
  6882  
  6883     VD_log_d ate := SYS DATE;
  6884     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  6885                                 PD _job_log_d ate => VD_ log_date,
  6886                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  6887                                 PD _date1 =>  VD_rec_gro up_date,
  6888                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  6889  
  6890   -- ******* ********** ********** ********** ********** ********** ********** ********
  6891   -- *
  6892   -- * Valid ate input  parameters
  6893   -- *
  6894   -- ******* ********** ********** ********** ********** ********** ********** ********
  6895  
  6896   -- * Check  run stand alone flag
  6897  
  6898     IF PB_ru n_standalo ne IS NULL
  6899      OR NOT  PB_run_sta ndalone TH EN
  6900  
  6901       VB_run _standalon e := FALSE ;
  6902       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  6903  
  6904     ELSE
  6905  
  6906       VB_run _standalon e := TRUE;
  6907       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  6908  
  6909     END IF;
  6910  
  6911   -- * Check  run on re port insta nce flag
  6912  
  6913     IF PB_al low_rpt_in st IS NULL
  6914      OR NOT  PB_allow_r pt_inst TH EN
  6915  
  6916       VB_all ow_rpt_ins t := FALSE ;
  6917       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  6918  
  6919     ELSE
  6920  
  6921       VB_all ow_rpt_ins t := TRUE;
  6922       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  6923  
  6924     END IF;
  6925  
  6926   -- ******* ********** ********** ********** ********** ********** ********** ********
  6927   -- *
  6928   -- * Retri eve proces sing param eters
  6929   -- *
  6930   -- ******* ********** ********** ********** ********** ********** ********** ********
  6931  
  6932   -- Process  Parameter  OLDEST HL 7 ERROR TE XT DAYS KE PT
  6933  
  6934     BEGIN
  6935  
  6936       SELECT     Value
  6937       INTO       VN_par m_hl7_err_ txt_age
  6938       FROM       ADRMGT .Adr_Param eter
  6939       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  6940       AND        Parame ter_name =  'OLDEST H L7 ERROR T EXT DAYS K EPT';
  6941  
  6942       IF VN_ parm_hl7_e rr_txt_age  IS NULL T HEN
  6943  
  6944         VD_l og_date :=  SYSDATE;
  6945         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6946                                      PD_job_l og_date =>  VD_log_da te,
  6947                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6948                                      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),
  6949                                      PD_date1  => VD_rec _group_dat e,
  6950                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6951  
  6952         RETU RN;
  6953  
  6954       END IF ;
  6955  
  6956     EXCEPTIO N
  6957  
  6958       WHEN N O_DATA_FOU ND THEN
  6959  
  6960         VD_l og_date :=  SYSDATE;
  6961         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6962                                      PD_job_l og_date =>  VD_log_da te,
  6963                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6964                                      PC_job_l og_message  => 'Param eter for O LDEST HL7  ERROR TEXT  DAYS KEPT  was not f ound. Term inating pr ocess.',
  6965                                      PD_date1  => VD_rec _group_dat e,
  6966                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6967  
  6968         RETU RN;
  6969  
  6970       WHEN O THERS THEN
  6971  
  6972         VD_l og_date :=  SYSDATE;
  6973         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6974                                      PD_job_l og_date =>  VD_log_da te,
  6975                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6976                                      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. '
  6977                                                                      || SQLERR M,1,2000),
  6978                                      PD_date1  => VD_rec _group_dat e,
  6979                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6980  
  6981         RETU RN;
  6982  
  6983     END;
  6984  
  6985   -- Process  Parameter  OLDEST LO G FILE DAY S KEPT
  6986  
  6987     BEGIN
  6988  
  6989       SELECT     Value
  6990       INTO       VN_par m_log_file _age
  6991       FROM       ADRMGT .Adr_Param eter
  6992       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  6993       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  6994  
  6995       IF VN_ parm_log_f ile_age IS  NULL THEN
  6996  
  6997         VD_l og_date :=  SYSDATE;
  6998         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6999                                      PD_job_l og_date =>  VD_log_da te,
  7000                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7001                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST L OG FILE DA YS KEPT is  NULL. Ter minating p rocess.',1 ,2000),
  7002                                      PD_date1  => VD_rec _group_dat e,
  7003                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7004  
  7005         RETU RN;
  7006  
  7007       END IF ;
  7008  
  7009     EXCEPTIO N
  7010  
  7011       WHEN N O_DATA_FOU ND THEN
  7012  
  7013         VD_l og_date :=  SYSDATE;
  7014         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7015                                      PD_job_l og_date =>  VD_log_da te,
  7016                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7017                                      PC_job_l og_message  => 'Param eter for O LDEST LOG  FILE DAYS  KEPT was n ot found.  Terminatin g process. ',
  7018                                      PD_date1  => VD_rec _group_dat e,
  7019                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7020  
  7021         RETU RN;
  7022  
  7023       WHEN O THERS THEN
  7024  
  7025         VD_l og_date :=  SYSDATE;
  7026         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7027                                      PD_job_l og_date =>  VD_log_da te,
  7028                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7029                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  OLDEST LO G FILE DAY S KEPT. Te rminating  process. '
  7030                                                                      || SQLERR M,1,2000),
  7031                                      PD_date1  => VD_rec _group_dat e,
  7032                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7033  
  7034         RETU RN;
  7035  
  7036     END;
  7037  
  7038   -- Process  Parameter  ROWS TO P ROCESS
  7039  
  7040     BEGIN
  7041  
  7042       SELECT     Value
  7043       INTO       VN_par m_rows_to_ process
  7044       FROM       ADRMGT .Adr_Param eter
  7045       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  7046       AND        Parame ter_name =  'ROWS TO  PROCESS';
  7047  
  7048       IF VN_ parm_rows_ to_process  IS NULL T HEN
  7049  
  7050         VD_l og_date :=  SYSDATE;
  7051         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7052                                      PD_job_l og_date =>  VD_log_da te,
  7053                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7054                                      PC_job_l og_message  => SUBSTR ('Paramete r ROWS TO  PROCESS is  NULL. Ter minating p rocess.',1 ,2000),
  7055                                      PD_date1  => VD_rec _group_dat e,
  7056                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7057  
  7058         RETU RN;
  7059  
  7060       END IF ;
  7061  
  7062     EXCEPTIO N
  7063  
  7064       WHEN N O_DATA_FOU ND THEN
  7065  
  7066         VD_l og_date :=  SYSDATE;
  7067         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7068                                      PD_job_l og_date =>  VD_log_da te,
  7069                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7070                                      PC_job_l og_message  => 'Param eter for R OWS TO PRO CESS was n ot found.  Terminatin g process. ',
  7071                                      PD_date1  => VD_rec _group_dat e,
  7072                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7073  
  7074         RETU RN;
  7075  
  7076       WHEN O THERS THEN
  7077  
  7078         VD_l og_date :=  SYSDATE;
  7079         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7080                                      PD_job_l og_date =>  VD_log_da te,
  7081                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7082                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ROWS TO P ROCESS. Te rminating  process. '
  7083                                                                      || SQLERR M,1,2000),
  7084                                      PD_date1  => VD_rec _group_dat e,
  7085                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7086  
  7087         RETU RN;
  7088  
  7089     END;
  7090  
  7091   -- Process  Parameter  LAST PROC ESSED LOG  ID
  7092  
  7093     BEGIN
  7094  
  7095       SELECT     Value
  7096       INTO       VN_par m_last_log _id
  7097       FROM       ADRMGT .Adr_Param eter
  7098       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  7099       AND        Parame ter_name =  VC_para_n ame_last_p roc_id;
  7100  
  7101       IF VN_ parm_last_ log_id IS  NULL THEN
  7102  
  7103         VD_l og_date :=  SYSDATE;
  7104         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7105                                      PD_job_l og_date =>  VD_log_da te,
  7106                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7107                                      PC_job_l og_message  => SUBSTR ('Paramete r ' || VC_ para_name_ last_proc_ id || ' is  NULL. Ter minating p rocess.',1 ,2000),
  7108                                      PD_date1  => VD_rec _group_dat e,
  7109                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7110  
  7111         RETU RN;
  7112  
  7113       END IF ;
  7114  
  7115     EXCEPTIO N
  7116  
  7117       WHEN N O_DATA_FOU ND THEN
  7118  
  7119         VD_l og_date :=  SYSDATE;
  7120         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7121                                      PD_job_l og_date =>  VD_log_da te,
  7122                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7123                                      PC_job_l og_message  => 'Param eter for '  || VC_par a_name_las t_proc_id  || ' was n ot found.  Terminatin g process. ',
  7124                                      PD_date1  => VD_rec _group_dat e,
  7125                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7126  
  7127         RETU RN;
  7128  
  7129       WHEN O THERS THEN
  7130  
  7131         VD_l og_date :=  SYSDATE;
  7132         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7133                                      PD_job_l og_date =>  VD_log_da te,
  7134                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7135                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ' || VC_p ara_name_l ast_proc_i d || '. Te rminating  process. '
  7136                                                                      || SQLERR M,1,2000),
  7137                                      PD_date1  => VD_rec _group_dat e,
  7138                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7139  
  7140         RETU RN;
  7141  
  7142     END;
  7143  
  7144   -- Write o ut Paramet er log mes sages for  submitted  job
  7145  
  7146     VD_log_d ate := SYS DATE;
  7147     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  7148                                 PD _job_log_d ate => VD_ log_date,
  7149                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  7150                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  7151                                 PD _date1 =>  VD_rec_gro up_date,
  7152                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  7153  
  7154     VD_log_d ate := SYS DATE;
  7155     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  7156                                 PD _job_log_d ate => VD_ log_date,
  7157                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  7158                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  7159                                 PD _date1 =>  VD_rec_gro up_date,
  7160                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  7161  
  7162     VD_log_d ate := SYS DATE;
  7163     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  7164                                 PD _job_log_d ate => VD_ log_date,
  7165                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  7166                                 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),
  7167                                 PD _date1 =>  VD_rec_gro up_date,
  7168                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  7169  
  7170  
  7171     VD_log_d ate := SYS DATE;
  7172     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  7173                                 PD _job_log_d ate => VD_ log_date,
  7174                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  7175                                 PC _job_log_m essage =>  SUBSTR(' O LDEST HL7  ERROR TEXT  DAYS KEPT : ' || VN_ parm_hl7_e rr_txt_age ,1,2000),
  7176                                 PD _date1 =>  VD_rec_gro up_date,
  7177                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  7178  
  7179     VD_log_d ate := SYS DATE;
  7180     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  7181                                 PD _job_log_d ate => VD_ log_date,
  7182                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  7183                                 PC _job_log_m essage =>  SUBSTR(' O LDEST LOG  FILE DAYS  KEPT: ' ||  VN_parm_l og_file_ag e,1,2000),
  7184                                 PD _date1 =>  VD_rec_gro up_date,
  7185                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  7186  
  7187     VD_log_d ate := SYS DATE;
  7188     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  7189                                 PD _job_log_d ate => VD_ log_date,
  7190                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  7191                                 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),
  7192                                 PD _date1 =>  VD_rec_gro up_date,
  7193                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  7194  
  7195     VD_log_d ate := SYS DATE;
  7196     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  7197                                 PD _job_log_d ate => VD_ log_date,
  7198                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  7199                                 PC _job_log_m essage =>  SUBSTR(' '  || VC_par a_name_las t_proc_id  || ': ' ||  NVL(TO_CH AR(VN_parm _last_log_ id),'NULL' ),1,2000),
  7200                                 PD _date1 =>  VD_rec_gro up_date,
  7201                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  7202  
  7203   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  7204  
  7205     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  7206  
  7207       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  7208  
  7209       VD_log _date := S YSDATE;
  7210       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7211                                    PD_job_log _date => V D_log_date ,
  7212                                    PC_job_sta tus => SUB STR('WARNI NG     - J ob table p arameters' ,1,60),
  7213                                    PC_job_log _message = > SUBSTR('  Processin g paramete r ROWS TO  PROCESS (i n each loo p) has bee n overridd en.'
  7214                                                              || ' T he overrid e value is : ' || NVL (TO_CHAR(V N_parm_row s_to_proce ss),'NULL' ),1,2000),
  7215                                    PD_date1 = > VD_rec_g roup_date,
  7216                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  7217  
  7218     END IF;
  7219  
  7220   -- ******* ********** ********** ********** ********** ********** ********** ********
  7221   -- *
  7222   -- * Check  to see if  process i s running  on a repor ting datab ase.
  7223   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  7224   -- *
  7225   -- ******* ********** ********** ********** ********** ********** ********** ********
  7226  
  7227     IF NOT V B_allow_rp t_inst THE N
  7228  
  7229       BEGIN
  7230  
  7231         VD_l og_date :=  SYSDATE;
  7232         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7233                                      PD_job_l og_date =>  VD_log_da te,
  7234                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  7235                                      PD_date1  => VD_rec _group_dat e,
  7236                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7237  
  7238         SELE CT    Inst ance_name
  7239         INTO       VC_i nstance_na me
  7240         FROM       V$in stance;
  7241  
  7242         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  7243  
  7244           VD _log_date  := SYSDATE ;
  7245           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  7246                                        PD_job _log_date  => VD_log_ date,
  7247                                        PC_job _status =>  SUBSTR('E RROR        - Process ing Failed ',1,60),
  7248                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  7249                                                                     || VC_inst ance_name
  7250                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  7251                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  7252                                        PD_dat e1 => VD_r ec_group_d ate,
  7253                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  7254  
  7255           RE TURN;
  7256  
  7257         END  IF;
  7258  
  7259       EXCEPT ION
  7260  
  7261         WHEN  OTHERS TH EN
  7262  
  7263           VD _log_date  := SYSDATE ;
  7264           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  7265                                        PD_job _log_date  => VD_log_ date,
  7266                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  7267                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  7268                                        PD_dat e1 => VD_r ec_group_d ate,
  7269                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  7270  
  7271           RE TURN;
  7272  
  7273       END;
  7274  
  7275     END IF;
  7276  
  7277   -- ******* ********** ********** ********** ********** ********** ********** ********
  7278   -- *
  7279   -- * Check  to see if  the job h as already  run today
  7280   -- *  - If  running i n stand-al one mode,  don't chec k.
  7281   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  7282   -- *
  7283   -- ******* ********** ********** ********** ********** ********** ********** ********
  7284  
  7285     IF NOT P B_run_stan dalone THE N
  7286  
  7287       BEGIN
  7288  
  7289         VD_l og_date :=  SYSDATE;
  7290         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7291                                      PD_job_l og_date =>  VD_log_da te,
  7292                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  7293                                      PD_date1  => VD_rec _group_dat e,
  7294                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7295  
  7296         SELE CT    COUN T(*)
  7297         INTO       VN_r ec_count
  7298         FROM       ADRM GT.Job_Pro cess_Logs
  7299         WHER E     Job_ name = CC_ process_na me
  7300         AND        Date 1 = VD_rec _group_dat e
  7301         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  7302  
  7303         IF V N_rec_coun t > 0 THEN
  7304  
  7305           VD _log_date  := SYSDATE ;
  7306           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  7307                                        PD_job _log_date  => VD_log_ date,
  7308                                        PC_job _status =>  SUBSTR('W ARNING      - This da te has alr eady been  processed' ,1,60),
  7309                                        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),
  7310                                        PD_dat e1 => VD_r ec_group_d ate,
  7311                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  7312  
  7313           RE TURN;
  7314  
  7315         END  IF;
  7316  
  7317       EXCEPT ION
  7318  
  7319         WHEN  OTHERS TH EN
  7320  
  7321           VD _log_date  := SYSDATE ;
  7322           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  7323                                        PD_job _log_date  => VD_log_ date,
  7324                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  7325                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  7326                                        PD_dat e1 => VD_r ec_group_d ate,
  7327                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  7328  
  7329           RE TURN;
  7330  
  7331       END;
  7332  
  7333     END IF;
  7334  
  7335   -- ******* ********** ********** ********** ********** ********** ********** ********
  7336   -- *
  7337   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  7338   -- *  - If  yes, then  end this  job.
  7339   -- *
  7340   -- ******* ********** ********** ********** ********** ********** ********** ********
  7341  
  7342     SELECT C OUNT(*)
  7343     INTO   V N_job_coun t
  7344     FROM   S YS.DBA_JOB S_RUNNING  R,
  7345            S YS.DBA_JOB S J
  7346     WHERE  J .JOB = R.J OB
  7347     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  7348  
  7349     IF VN_jo b_count >  1 THEN
  7350  
  7351       VD_log _date := S YSDATE;
  7352       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7353                                    PD_job_log _date => V D_log_date ,
  7354                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  7355                                    PC_job_log _message = > SUBSTR(' There is a nother '
  7356                                                                || C C_sp_name
  7357                                                                || '  job runni ng.'
  7358                                                                || '  Exiting j ob without  running.' ,1,2000),
  7359                                    PD_date1 = > VD_rec_g roup_date,
  7360                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  7361  
  7362       RETURN ;
  7363  
  7364     ELSE
  7365  
  7366       IF VB_ run_standa lone THEN
  7367  
  7368         VD_l og_date :=  SYSDATE;
  7369         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7370                                      PD_job_l og_date =>  VD_log_da te,
  7371                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  7372                                      PD_date1  => VD_rec _group_dat e,
  7373                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7374  
  7375       ELSE
  7376  
  7377         SELE CT    MAX( J.Job)
  7378         INTO       VN_j ob_number
  7379         FROM       SYS. DBA_JOBS_R UNNING R,
  7380                    SYS. DBA_JOBS J
  7381         WHER E     J.JO B = R.JOB
  7382         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  7383  
  7384         VD_l og_date :=  SYSDATE;
  7385         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7386                                      PD_job_l og_date =>  VD_log_da te,
  7387                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  7388                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  7389                                                                      || VN_job _number,1, 2000),
  7390                                      PD_date1  => VD_rec _group_dat e,
  7391                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7392  
  7393       END IF ;
  7394  
  7395     END IF;
  7396  
  7397   -- ******* ********** ********** ********** ********** ********** ********** ********
  7398   -- *
  7399   -- * Main  processing  loop
  7400   -- *
  7401   -- ******* ********** ********** ********** ********** ********** ********** ********
  7402  
  7403     VN_pass_ count := 0 ;
  7404     VN_updat e_count :=  0;
  7405     VD_proce ss_start_d ate := SYS DATE;
  7406  
  7407   -- ******* ********** ********** ********** ********** ********** ********** ********
  7408   -- * Remov e old proc ess log ro ws
  7409   -- ******* ********** ********** ********** ********** ********** ********** ********
  7410     BEGIN
  7411  
  7412       VD_log _date := S YSDATE;
  7413       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7414                                    PD_job_log _date => V D_log_date ,
  7415                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  7416                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  7417                                                                   | | VN_parm_ log_file_a ge
  7418                                                                   | | ' days o ld',1,2000 ),
  7419                                    PD_date1 = > VD_rec_g roup_date,
  7420                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  7421  
  7422       DELETE
  7423       FROM       ADRMGT .Job_Proce ss_Logs
  7424       WHERE      Job_na me = CC_pr ocess_name
  7425       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  7426  
  7427       COMMIT ;
  7428  
  7429       VD_log _date := S YSDATE;
  7430       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7431                                    PD_job_log _date => V D_log_date ,
  7432                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  7433                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  7434                                                                   | | VN_parm_ log_file_a ge
  7435                                                                   | | ' days o ld',1,2000 ),
  7436                                    PD_date1 = > VD_rec_g roup_date,
  7437                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  7438  
  7439  
  7440     EXCEPTIO N
  7441  
  7442       WHEN N O_DATA_FOU ND THEN
  7443  
  7444         NULL ;
  7445  
  7446       WHEN O THERS THEN
  7447  
  7448         VD_l og_date :=  SYSDATE;
  7449         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7450                                      PD_job_l og_date  = > VD_log_d ate,
  7451                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess logs .',1,60),
  7452                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  7453                                      PD_date1  => VD_rec _group_dat e,
  7454                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7455  
  7456     END;
  7457  
  7458   -- ******* ********** ********** ********** ********** ********** ********** ********
  7459   -- * Remov e old proc ess error  rows
  7460   -- ******* ********** ********** ********** ********** ********** ********** ********
  7461  
  7462     BEGIN
  7463  
  7464       VD_log _date := S YSDATE;
  7465       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7466                                    PD_job_log _date => V D_log_date ,
  7467                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  7468                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  7469                                                                   | | VN_parm_ log_file_a ge
  7470                                                                   | | ' days o ld',1,2000 ),
  7471                                    PD_date1 = > VD_rec_g roup_date,
  7472                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  7473  
  7474       DELETE
  7475       FROM       ADRMGT .Job_Proce ss_Errs
  7476       WHERE      Job_na me = CC_pr ocess_name
  7477       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  7478  
  7479       COMMIT ;
  7480  
  7481       VD_log _date := S YSDATE;
  7482       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7483                                    PD_job_log _date => V D_log_date ,
  7484                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  7485                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  7486                                                                   | | VN_parm_ log_file_a ge
  7487                                                                   | | ' days o ld',1,2000 ),
  7488                                    PD_date1 = > VD_rec_g roup_date,
  7489                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  7490  
  7491     EXCEPTIO N
  7492  
  7493       WHEN N O_DATA_FOU ND THEN
  7494  
  7495         NULL ;
  7496  
  7497       WHEN O THERS THEN
  7498  
  7499         VD_l og_date :=  SYSDATE;
  7500         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7501                                      PD_job_l og_date  = > VD_log_d ate,
  7502                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess erro rs.',1,60) ,
  7503                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  7504                                      PD_date1  => VD_rec _group_dat e,
  7505                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7506  
  7507     END;
  7508  
  7509   -- ******* ********** ********** ********** ********** ********** ********** ********
  7510   -- * Main  record cur sor logic
  7511   -- ******* ********** ********** ********** ********** ********** ********** ********
  7512  
  7513     BEGIN
  7514  
  7515       VN_max _log_id :=  0;
  7516       VN_pas s_count :=  0;
  7517       VN_upd ate_count  := 0;
  7518  
  7519       OPEN C _hl7_id;
  7520  
  7521       LOOP
  7522  
  7523         FETC H C_hl7_id
  7524         BULK  COLLECT I NTO T_hl7_ id
  7525         LIMI T VN_parm_ rows_to_pr ocess;
  7526  
  7527         EXIT  WHEN T_hl 7_id.COUNT  = 0;
  7528  
  7529         FORA LL I_hl7_i d IN T_hl7 _id.FIRST. .T_hl7_id. last
  7530           UP DATE    AD R.Hl7_tran saction_lo g
  7531           SE T       In ternal_err or_text =  NULL
  7532           WH ERE     Hl 7_transact ion_log_id  = T_hl7_i d(I_hl7_id );
  7533  
  7534         COMM IT;
  7535  
  7536         FOR  I_hl7_id I N T_hl7_id .FIRST..T_ hl7_id.las t LOOP
  7537  
  7538           IF  T_hl7_id( I_hl7_id)  > VN_max_l og_id THEN
  7539  
  7540              VN_max_log _id := T_h l7_id(I_hl 7_id);
  7541  
  7542           EN D IF;
  7543  
  7544         END  LOOP;
  7545  
  7546         VN_p ass_count  := VN_pass _count + 1 ;
  7547  
  7548         VN_u pdate_coun t := VN_up date_count  + T_hl7_i d.COUNT;
  7549  
  7550       END LO OP;
  7551  
  7552       CLOSE  C_hl7_id;
  7553  
  7554       BEGIN
  7555  
  7556         IF N VL(VN_max_ log_id,0)  <> 0 THEN
  7557  
  7558           UP DATE    AD RMGT.Adr_P arameter
  7559           SE T       Va lue = VN_m ax_log_id
  7560           WH ERE     Ap plication_ name = 'HL 7 NULL INT ERNAL_ERRO R_TEXT COL UMN'
  7561           AN D       Pa rameter_na me = VC_pa ra_name_la st_proc_id ;
  7562  
  7563           CO MMIT;
  7564  
  7565         ELSE
  7566  
  7567           VN _max_log_i d := VN_pa rm_last_lo g_id;
  7568  
  7569         END  IF;
  7570  
  7571       EXCEPT ION
  7572  
  7573         WHEN  OTHERS TH EN
  7574  
  7575           VD _log_date  := SYSDATE ;
  7576           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  7577                                        PD_job _log_date   => VD_log _date,
  7578                                        PC_job _status =>  SUBSTR('E RROR        - Unknown  error upd ating ' ||  VC_para_n ame_last_p roc_id ||  '.',1,60),
  7579                                        PC_job _log_messa ge => SUBS TR(VC_para _name_last _proc_id | | ': ' ||  VN_max_log _id
  7580                                                                        || '. '  || SQLERR M,1,2000),
  7581                                        PD_dat e1 => VD_r ec_group_d ate,
  7582                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  7583  
  7584           RE TURN;
  7585  
  7586       END;
  7587  
  7588   -- Process  completio n informat ion
  7589  
  7590       VD_log _date := S YSDATE;
  7591       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7592                                    PD_job_log _date => V D_log_date ,
  7593                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  7594                                    PD_date1 = > VD_rec_g roup_date,
  7595                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  7596                                    PN_numeric 2 => VN_pa ss_count,
  7597                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  7598  
  7599       VD_log _date := S YSDATE;
  7600       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7601                                    PD_job_log _date => V D_log_date ,
  7602                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  7603                                    PD_date1 = > VD_rec_g roup_date,
  7604                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  7605                                    PN_numeric 2 => VN_up date_count ,
  7606                                    PC_text2 = > SUBSTR(' Updated Re cord Count ',1,255));
  7607  
  7608       VD_log _date := S YSDATE;
  7609       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7610                                    PD_job_log _date => V D_log_date ,
  7611                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  7612                                    PD_date1 = > VD_rec_g roup_date,
  7613                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  7614                                    PN_numeric 2 => VN_ma x_log_id,
  7615                                    PC_text2 = > SUBSTR(' Last proce ssed log i d',1,255)) ;
  7616  
  7617       VD_pro cess_end_d ate := SYS DATE;
  7618       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  7619                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  7620                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  7621                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  7622                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  7623  
  7624       VD_log _date := S YSDATE;
  7625       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7626                                    PD_job_log _date => V D_log_date ,
  7627                                    PC_job_sta tus => SUB STR('SUCCE SS     - P rocessing  Completed' ,1,60),
  7628                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  7629                                    PD_date1 = > VD_rec_g roup_date,
  7630                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  7631  
  7632     EXCEPTIO N
  7633  
  7634       WHEN O THERS THEN
  7635  
  7636         VD_l og_date :=  SYSDATE;
  7637         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7638                                      PD_job_l og_date  = > VD_log_d ate,
  7639                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror updat ing Intern al_error_t ext.',1,60 ),
  7640                                      PC_job_l og_message  => SUBSTR ('Cursor L oop Count:  ' || VN_p ass_count
  7641                                                                      || ' Upda ted Record  Count: '  || VN_upda te_count
  7642                                                                      || '. ' | | SQLERRM, 1,2000),
  7643                                      PD_date1  => VD_rec _group_dat e,
  7644                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7645  
  7646         RETU RN;
  7647  
  7648     END;
  7649  
  7650   EXCEPTION
  7651  
  7652     WHEN OTH ERS THEN
  7653  
  7654       ROLLBA CK;
  7655  
  7656       VD_log _date := S YSDATE;
  7657       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7658                                    PD_job_err or_date  = > VD_log_d ate,
  7659                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  7660                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Hl7_Txn_Lo g_Null_Err _Col_Sp.'
  7661                                                                  ||  SQLERRM,1 ,2000),
  7662                                    PD_date1 = > VD_rec_g roup_date,
  7663                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  7664  
  7665       VD_log _date := S YSDATE;
  7666       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7667                                    PD_job_log _date => V D_log_date ,
  7668                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  7669                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  7670                                    PD_date1 = > VD_rec_g roup_date,
  7671                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  7672  
  7673   END Hl7_Tx n_Log_Null _Err_Col_S p_01;
  7674   /
  7675   DROP PROCE DURE ADR.H L7_TXN_LOG _NULL_ERR_ COL_SP_07;
  7676  
  7677   CREATE OR  REPLACE PR OCEDURE AD R.Hl7_Txn_ Log_Null_E rr_Col_Sp_ 07 (
  7678      PB_run_ standalone     IN BOO LEAN DEFAU LT FALSE,
  7679      PB_allo w_rpt_inst     IN BOO LEAN DEFAU LT FALSE,
  7680      PN_rows _to_proces s   IN NUM BER DEFAUL T NULL)
  7681   IS
  7682      -- **** ********** ********** ********** ********** ********** ********** ********** *
  7683      -- * Pr ocedure: H l7_Txn_Log _Null_Erro r_Col
  7684      -- *
  7685      -- *    Update HL7  transcati ons to rem ove data f rom the in ternal_err or_text
  7686      -- *    column for  all rows  more than  6 months o ld.
  7687      -- *
  7688      -- * Pa rameters:
  7689      -- *
  7690      -- *  P B_run_stan dalone   I gnore DBMS _JOB logic  for check ing runnin g jobs.
  7691      -- *                          Default: F ALSE
  7692      -- *
  7693      -- *  P B_allow_rp t_inst   A llow store d procedur e to be su bmitted in  the
  7694      -- *                        D BMS_JOB qu eue on the  ADR repor ting datab ases
  7695      -- *                          Default: F ALSE
  7696      -- *
  7697      -- **** ********** ********** ********** ********** ********** ********** ********** *
  7698      --
  7699      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  7700      -- Date         Au thor             Desc ription
  7701      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  7702      -- 06/2 3/2010  Cr aig Wood         Crea ted for CC R 1100.
  7703      --
  7704      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  7705  
  7706      -- CONS TANTS
  7707  
  7708      CC_no                                  V ARCHAR2 (1 ) := 'N';
  7709      CC_parm _applicati on_name    CONSTANT V ARCHAR2 (8 0)
  7710         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  7711      CC_parm _hl7_err_t xt_age     CONSTANT V ARCHAR2 (5 0)
  7712                                                 := 'OLDE ST HL7 ERR OR TEXT DA YS' ;
  7713      CC_parm _last_hl7_ id         CONSTANT V ARCHAR2 (5 0)
  7714                                                 := 'LAST  HL7 ID PR OCESSED' ;
  7715      CC_parm _log_file_ age        CONSTANT V ARCHAR2 (5 0)
  7716                                                 := 'OLDE ST LOG FIL E DAYS' ;
  7717      CC_proc ess_name              CONSTANT V ARCHAR2 (6 0)
  7718         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  7719      CC_sp_n ame                   CONSTANT V ARCHAR2 (3 5)
  7720         := ' Hl7_Txn_Lo g_Null_Err _Col_Sp_'  || '07' ;
  7721      CC_yes                                 V ARCHAR2 (1 ) := 'Y';
  7722  
  7723      -- VARI ABLES
  7724  
  7725      VB_allo w_rpt_inst                     B OOLEAN :=  FALSE;
  7726      VB_run_ standalone                     B OOLEAN :=  FALSE;
  7727  
  7728      VC_allo w_rpt_inst                     V ARCHAR2 (5 ) := NULL;
  7729      VC_inst ance_name                      V ARCHAR2 (1 6);
  7730      VC_proc ess_durati on                  V ARCHAR2 (2 5);
  7731      VC_run_ standalone                     V ARCHAR2 (5 ) := NULL;
  7732      VC_sql_ statement                      V ARCHAR2 (2 000);
  7733      VC_para _name_last _proc_id            V ARCHAR2 (3 0):= 'P' | | '07' ||  ' LAST PRO CESSED LOG  ID';
  7734  
  7735     VD_log_d ate                            D ATE;
  7736     VD_proce ss_end_dat e                   D ATE;
  7737     VD_proce ss_start_d ate                 D ATE;
  7738     VD_rec_g roup_date                      D ATE;
  7739  
  7740     VN_job_c ount                           N UMBER := 0 ;
  7741     VN_job_n umber                          N UMBER;
  7742     VN_max_l og_id                          N UMBER := 0 ;
  7743     VN_parm_ hl7_err_tx t_age               N UMBER;
  7744     VN_parm_ log_file_a ge                  N UMBER;
  7745     VN_parm_ last_log_i d                   N UMBER := 0 ;
  7746     VN_parm_ rows_to_pr ocess               N UMBER;
  7747     VN_pass_ count                          N UMBER := 0 ;
  7748     VN_rec_c ount                           N UMBER := 0 ;
  7749     VN_updat e_count                        N UMBER := 0 ;
  7750  
  7751  
  7752   -- CURSORS
  7753  
  7754     CURSOR C _hl7_id IS
  7755       SELECT   /*+ para llel(4) */  Hl7_trans action_log _id
  7756       FROM       Hl7_tr ansaction_ log PARTIT ION (HL7_T RANSACTION _LOG_P07)
  7757       WHERE      Hl7_tr ansaction_ log_id > V N_parm_las t_log_id
  7758       AND        Record _created_d ate < TRUN C(SYSDATE)  - VN_parm _hl7_err_t xt_age
  7759       AND        Intern al_error_t ext IS NOT  NULL;
  7760  
  7761   -- TYPES
  7762  
  7763     TYPE TT_ hl7_id IS
  7764       TABLE  OF ADR.Hl7 _Transacti on_Log.Hl7 _transacti on_log_id% TYPE;
  7765  
  7766   -- MEMORY  TABLES
  7767  
  7768     T_hl7_id                                T T_hl7_id;
  7769  
  7770   -- ******* ********** ********** ********** ********** ********** ********** *******
  7771   -- *
  7772   -- *  MAIN  PROCEDURE :
  7773   -- *
  7774   -- ******* ********** ********** ********** ********** ********** ********** *******
  7775  
  7776   BEGIN
  7777  
  7778     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  7779     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  7780  
  7781     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  7782     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  7783  
  7784     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  7785     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  7786  
  7787     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  7788     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  7789  
  7790     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  QUERY PARA LLEL ' ||   2;
  7791     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  7792  
  7793     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  DML PARALL EL ' || 2;
  7794     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  7795  
  7796     VD_rec_g roup_date  := TRUNC(S YSDATE);
  7797  
  7798     VD_log_d ate := SYS DATE;
  7799     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  7800                                 PD _job_log_d ate => VD_ log_date,
  7801                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  7802                                 PD _date1 =>  VD_rec_gro up_date,
  7803                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  7804  
  7805   -- ******* ********** ********** ********** ********** ********** ********** ********
  7806   -- *
  7807   -- * Valid ate input  parameters
  7808   -- *
  7809   -- ******* ********** ********** ********** ********** ********** ********** ********
  7810  
  7811   -- * Check  run stand alone flag
  7812  
  7813     IF PB_ru n_standalo ne IS NULL
  7814      OR NOT  PB_run_sta ndalone TH EN
  7815  
  7816       VB_run _standalon e := FALSE ;
  7817       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  7818  
  7819     ELSE
  7820  
  7821       VB_run _standalon e := TRUE;
  7822       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  7823  
  7824     END IF;
  7825  
  7826   -- * Check  run on re port insta nce flag
  7827  
  7828     IF PB_al low_rpt_in st IS NULL
  7829      OR NOT  PB_allow_r pt_inst TH EN
  7830  
  7831       VB_all ow_rpt_ins t := FALSE ;
  7832       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  7833  
  7834     ELSE
  7835  
  7836       VB_all ow_rpt_ins t := TRUE;
  7837       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  7838  
  7839     END IF;
  7840  
  7841   -- ******* ********** ********** ********** ********** ********** ********** ********
  7842   -- *
  7843   -- * Retri eve proces sing param eters
  7844   -- *
  7845   -- ******* ********** ********** ********** ********** ********** ********** ********
  7846  
  7847   -- Process  Parameter  OLDEST HL 7 ERROR TE XT DAYS KE PT
  7848  
  7849     BEGIN
  7850  
  7851       SELECT     Value
  7852       INTO       VN_par m_hl7_err_ txt_age
  7853       FROM       ADRMGT .Adr_Param eter
  7854       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  7855       AND        Parame ter_name =  'OLDEST H L7 ERROR T EXT DAYS K EPT';
  7856  
  7857       IF VN_ parm_hl7_e rr_txt_age  IS NULL T HEN
  7858  
  7859         VD_l og_date :=  SYSDATE;
  7860         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7861                                      PD_job_l og_date =>  VD_log_da te,
  7862                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7863                                      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),
  7864                                      PD_date1  => VD_rec _group_dat e,
  7865                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7866  
  7867         RETU RN;
  7868  
  7869       END IF ;
  7870  
  7871     EXCEPTIO N
  7872  
  7873       WHEN N O_DATA_FOU ND THEN
  7874  
  7875         VD_l og_date :=  SYSDATE;
  7876         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7877                                      PD_job_l og_date =>  VD_log_da te,
  7878                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7879                                      PC_job_l og_message  => 'Param eter for O LDEST HL7  ERROR TEXT  DAYS KEPT  was not f ound. Term inating pr ocess.',
  7880                                      PD_date1  => VD_rec _group_dat e,
  7881                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7882  
  7883         RETU RN;
  7884  
  7885       WHEN O THERS THEN
  7886  
  7887         VD_l og_date :=  SYSDATE;
  7888         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7889                                      PD_job_l og_date =>  VD_log_da te,
  7890                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7891                                      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. '
  7892                                                                      || SQLERR M,1,2000),
  7893                                      PD_date1  => VD_rec _group_dat e,
  7894                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7895  
  7896         RETU RN;
  7897  
  7898     END;
  7899  
  7900   -- Process  Parameter  OLDEST LO G FILE DAY S KEPT
  7901  
  7902     BEGIN
  7903  
  7904       SELECT     Value
  7905       INTO       VN_par m_log_file _age
  7906       FROM       ADRMGT .Adr_Param eter
  7907       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  7908       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  7909  
  7910       IF VN_ parm_log_f ile_age IS  NULL THEN
  7911  
  7912         VD_l og_date :=  SYSDATE;
  7913         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7914                                      PD_job_l og_date =>  VD_log_da te,
  7915                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7916                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST L OG FILE DA YS KEPT is  NULL. Ter minating p rocess.',1 ,2000),
  7917                                      PD_date1  => VD_rec _group_dat e,
  7918                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7919  
  7920         RETU RN;
  7921  
  7922       END IF ;
  7923  
  7924     EXCEPTIO N
  7925  
  7926       WHEN N O_DATA_FOU ND THEN
  7927  
  7928         VD_l og_date :=  SYSDATE;
  7929         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7930                                      PD_job_l og_date =>  VD_log_da te,
  7931                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7932                                      PC_job_l og_message  => 'Param eter for O LDEST LOG  FILE DAYS  KEPT was n ot found.  Terminatin g process. ',
  7933                                      PD_date1  => VD_rec _group_dat e,
  7934                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7935  
  7936         RETU RN;
  7937  
  7938       WHEN O THERS THEN
  7939  
  7940         VD_l og_date :=  SYSDATE;
  7941         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7942                                      PD_job_l og_date =>  VD_log_da te,
  7943                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7944                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  OLDEST LO G FILE DAY S KEPT. Te rminating  process. '
  7945                                                                      || SQLERR M,1,2000),
  7946                                      PD_date1  => VD_rec _group_dat e,
  7947                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7948  
  7949         RETU RN;
  7950  
  7951     END;
  7952  
  7953   -- Process  Parameter  ROWS TO P ROCESS
  7954  
  7955     BEGIN
  7956  
  7957       SELECT     Value
  7958       INTO       VN_par m_rows_to_ process
  7959       FROM       ADRMGT .Adr_Param eter
  7960       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  7961       AND        Parame ter_name =  'ROWS TO  PROCESS';
  7962  
  7963       IF VN_ parm_rows_ to_process  IS NULL T HEN
  7964  
  7965         VD_l og_date :=  SYSDATE;
  7966         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7967                                      PD_job_l og_date =>  VD_log_da te,
  7968                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7969                                      PC_job_l og_message  => SUBSTR ('Paramete r ROWS TO  PROCESS is  NULL. Ter minating p rocess.',1 ,2000),
  7970                                      PD_date1  => VD_rec _group_dat e,
  7971                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7972  
  7973         RETU RN;
  7974  
  7975       END IF ;
  7976  
  7977     EXCEPTIO N
  7978  
  7979       WHEN N O_DATA_FOU ND THEN
  7980  
  7981         VD_l og_date :=  SYSDATE;
  7982         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7983                                      PD_job_l og_date =>  VD_log_da te,
  7984                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7985                                      PC_job_l og_message  => 'Param eter for R OWS TO PRO CESS was n ot found.  Terminatin g process. ',
  7986                                      PD_date1  => VD_rec _group_dat e,
  7987                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7988  
  7989         RETU RN;
  7990  
  7991       WHEN O THERS THEN
  7992  
  7993         VD_l og_date :=  SYSDATE;
  7994         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7995                                      PD_job_l og_date =>  VD_log_da te,
  7996                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7997                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ROWS TO P ROCESS. Te rminating  process. '
  7998                                                                      || SQLERR M,1,2000),
  7999                                      PD_date1  => VD_rec _group_dat e,
  8000                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8001  
  8002         RETU RN;
  8003  
  8004     END;
  8005  
  8006   -- Process  Parameter  LAST PROC ESSED LOG  ID
  8007  
  8008     BEGIN
  8009  
  8010       SELECT     Value
  8011       INTO       VN_par m_last_log _id
  8012       FROM       ADRMGT .Adr_Param eter
  8013       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  8014       AND        Parame ter_name =  VC_para_n ame_last_p roc_id;
  8015  
  8016       IF VN_ parm_last_ log_id IS  NULL THEN
  8017  
  8018         VD_l og_date :=  SYSDATE;
  8019         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8020                                      PD_job_l og_date =>  VD_log_da te,
  8021                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8022                                      PC_job_l og_message  => SUBSTR ('Paramete r ' || VC_ para_name_ last_proc_ id || ' is  NULL. Ter minating p rocess.',1 ,2000),
  8023                                      PD_date1  => VD_rec _group_dat e,
  8024                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8025  
  8026         RETU RN;
  8027  
  8028       END IF ;
  8029  
  8030     EXCEPTIO N
  8031  
  8032       WHEN N O_DATA_FOU ND THEN
  8033  
  8034         VD_l og_date :=  SYSDATE;
  8035         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8036                                      PD_job_l og_date =>  VD_log_da te,
  8037                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8038                                      PC_job_l og_message  => 'Param eter for '  || VC_par a_name_las t_proc_id  || ' was n ot found.  Terminatin g process. ',
  8039                                      PD_date1  => VD_rec _group_dat e,
  8040                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8041  
  8042         RETU RN;
  8043  
  8044       WHEN O THERS THEN
  8045  
  8046         VD_l og_date :=  SYSDATE;
  8047         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8048                                      PD_job_l og_date =>  VD_log_da te,
  8049                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8050                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ' || VC_p ara_name_l ast_proc_i d || '. Te rminating  process. '
  8051                                                                      || SQLERR M,1,2000),
  8052                                      PD_date1  => VD_rec _group_dat e,
  8053                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8054  
  8055         RETU RN;
  8056  
  8057     END;
  8058  
  8059   -- Write o ut Paramet er log mes sages for  submitted  job
  8060  
  8061     VD_log_d ate := SYS DATE;
  8062     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  8063                                 PD _job_log_d ate => VD_ log_date,
  8064                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  8065                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  8066                                 PD _date1 =>  VD_rec_gro up_date,
  8067                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  8068  
  8069     VD_log_d ate := SYS DATE;
  8070     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  8071                                 PD _job_log_d ate => VD_ log_date,
  8072                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  8073                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  8074                                 PD _date1 =>  VD_rec_gro up_date,
  8075                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  8076  
  8077     VD_log_d ate := SYS DATE;
  8078     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  8079                                 PD _job_log_d ate => VD_ log_date,
  8080                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  8081                                 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),
  8082                                 PD _date1 =>  VD_rec_gro up_date,
  8083                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  8084  
  8085  
  8086     VD_log_d ate := SYS DATE;
  8087     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  8088                                 PD _job_log_d ate => VD_ log_date,
  8089                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  8090                                 PC _job_log_m essage =>  SUBSTR(' O LDEST HL7  ERROR TEXT  DAYS KEPT : ' || VN_ parm_hl7_e rr_txt_age ,1,2000),
  8091                                 PD _date1 =>  VD_rec_gro up_date,
  8092                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  8093  
  8094     VD_log_d ate := SYS DATE;
  8095     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  8096                                 PD _job_log_d ate => VD_ log_date,
  8097                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  8098                                 PC _job_log_m essage =>  SUBSTR(' O LDEST LOG  FILE DAYS  KEPT: ' ||  VN_parm_l og_file_ag e,1,2000),
  8099                                 PD _date1 =>  VD_rec_gro up_date,
  8100                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  8101  
  8102     VD_log_d ate := SYS DATE;
  8103     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  8104                                 PD _job_log_d ate => VD_ log_date,
  8105                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  8106                                 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),
  8107                                 PD _date1 =>  VD_rec_gro up_date,
  8108                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  8109  
  8110     VD_log_d ate := SYS DATE;
  8111     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  8112                                 PD _job_log_d ate => VD_ log_date,
  8113                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  8114                                 PC _job_log_m essage =>  SUBSTR(' '  || VC_par a_name_las t_proc_id  || ': ' ||  NVL(TO_CH AR(VN_parm _last_log_ id),'NULL' ),1,2000),
  8115                                 PD _date1 =>  VD_rec_gro up_date,
  8116                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  8117  
  8118   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  8119  
  8120     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  8121  
  8122       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  8123  
  8124       VD_log _date := S YSDATE;
  8125       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8126                                    PD_job_log _date => V D_log_date ,
  8127                                    PC_job_sta tus => SUB STR('WARNI NG     - J ob table p arameters' ,1,60),
  8128                                    PC_job_log _message = > SUBSTR('  Processin g paramete r ROWS TO  PROCESS (i n each loo p) has bee n overridd en.'
  8129                                                              || ' T he overrid e value is : ' || NVL (TO_CHAR(V N_parm_row s_to_proce ss),'NULL' ),1,2000),
  8130                                    PD_date1 = > VD_rec_g roup_date,
  8131                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  8132  
  8133     END IF;
  8134  
  8135   -- ******* ********** ********** ********** ********** ********** ********** ********
  8136   -- *
  8137   -- * Check  to see if  process i s running  on a repor ting datab ase.
  8138   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  8139   -- *
  8140   -- ******* ********** ********** ********** ********** ********** ********** ********
  8141  
  8142     IF NOT V B_allow_rp t_inst THE N
  8143  
  8144       BEGIN
  8145  
  8146         VD_l og_date :=  SYSDATE;
  8147         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8148                                      PD_job_l og_date =>  VD_log_da te,
  8149                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  8150                                      PD_date1  => VD_rec _group_dat e,
  8151                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8152  
  8153         SELE CT    Inst ance_name
  8154         INTO       VC_i nstance_na me
  8155         FROM       V$in stance;
  8156  
  8157         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  8158  
  8159           VD _log_date  := SYSDATE ;
  8160           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  8161                                        PD_job _log_date  => VD_log_ date,
  8162                                        PC_job _status =>  SUBSTR('E RROR        - Process ing Failed ',1,60),
  8163                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  8164                                                                     || VC_inst ance_name
  8165                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  8166                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  8167                                        PD_dat e1 => VD_r ec_group_d ate,
  8168                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  8169  
  8170           RE TURN;
  8171  
  8172         END  IF;
  8173  
  8174       EXCEPT ION
  8175  
  8176         WHEN  OTHERS TH EN
  8177  
  8178           VD _log_date  := SYSDATE ;
  8179           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  8180                                        PD_job _log_date  => VD_log_ date,
  8181                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  8182                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  8183                                        PD_dat e1 => VD_r ec_group_d ate,
  8184                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  8185  
  8186           RE TURN;
  8187  
  8188       END;
  8189  
  8190     END IF;
  8191  
  8192   -- ******* ********** ********** ********** ********** ********** ********** ********
  8193   -- *
  8194   -- * Check  to see if  the job h as already  run today
  8195   -- *  - If  running i n stand-al one mode,  don't chec k.
  8196   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  8197   -- *
  8198   -- ******* ********** ********** ********** ********** ********** ********** ********
  8199  
  8200     IF NOT P B_run_stan dalone THE N
  8201  
  8202       BEGIN
  8203  
  8204         VD_l og_date :=  SYSDATE;
  8205         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8206                                      PD_job_l og_date =>  VD_log_da te,
  8207                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  8208                                      PD_date1  => VD_rec _group_dat e,
  8209                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8210  
  8211         SELE CT    COUN T(*)
  8212         INTO       VN_r ec_count
  8213         FROM       ADRM GT.Job_Pro cess_Logs
  8214         WHER E     Job_ name = CC_ process_na me
  8215         AND        Date 1 = VD_rec _group_dat e
  8216         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  8217  
  8218         IF V N_rec_coun t > 0 THEN
  8219  
  8220           VD _log_date  := SYSDATE ;
  8221           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  8222                                        PD_job _log_date  => VD_log_ date,
  8223                                        PC_job _status =>  SUBSTR('W ARNING      - This da te has alr eady been  processed' ,1,60),
  8224                                        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),
  8225                                        PD_dat e1 => VD_r ec_group_d ate,
  8226                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  8227  
  8228           RE TURN;
  8229  
  8230         END  IF;
  8231  
  8232       EXCEPT ION
  8233  
  8234         WHEN  OTHERS TH EN
  8235  
  8236           VD _log_date  := SYSDATE ;
  8237           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  8238                                        PD_job _log_date  => VD_log_ date,
  8239                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  8240                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  8241                                        PD_dat e1 => VD_r ec_group_d ate,
  8242                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  8243  
  8244           RE TURN;
  8245  
  8246       END;
  8247  
  8248     END IF;
  8249  
  8250   -- ******* ********** ********** ********** ********** ********** ********** ********
  8251   -- *
  8252   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  8253   -- *  - If  yes, then  end this  job.
  8254   -- *
  8255   -- ******* ********** ********** ********** ********** ********** ********** ********
  8256  
  8257     SELECT C OUNT(*)
  8258     INTO   V N_job_coun t
  8259     FROM   S YS.DBA_JOB S_RUNNING  R,
  8260            S YS.DBA_JOB S J
  8261     WHERE  J .JOB = R.J OB
  8262     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  8263  
  8264     IF VN_jo b_count >  1 THEN
  8265  
  8266       VD_log _date := S YSDATE;
  8267       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8268                                    PD_job_log _date => V D_log_date ,
  8269                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  8270                                    PC_job_log _message = > SUBSTR(' There is a nother '
  8271                                                                || C C_sp_name
  8272                                                                || '  job runni ng.'
  8273                                                                || '  Exiting j ob without  running.' ,1,2000),
  8274                                    PD_date1 = > VD_rec_g roup_date,
  8275                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  8276  
  8277       RETURN ;
  8278  
  8279     ELSE
  8280  
  8281       IF VB_ run_standa lone THEN
  8282  
  8283         VD_l og_date :=  SYSDATE;
  8284         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8285                                      PD_job_l og_date =>  VD_log_da te,
  8286                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  8287                                      PD_date1  => VD_rec _group_dat e,
  8288                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8289  
  8290       ELSE
  8291  
  8292         SELE CT    MAX( J.Job)
  8293         INTO       VN_j ob_number
  8294         FROM       SYS. DBA_JOBS_R UNNING R,
  8295                    SYS. DBA_JOBS J
  8296         WHER E     J.JO B = R.JOB
  8297         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  8298  
  8299         VD_l og_date :=  SYSDATE;
  8300         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8301                                      PD_job_l og_date =>  VD_log_da te,
  8302                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  8303                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  8304                                                                      || VN_job _number,1, 2000),
  8305                                      PD_date1  => VD_rec _group_dat e,
  8306                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8307  
  8308       END IF ;
  8309  
  8310     END IF;
  8311  
  8312   -- ******* ********** ********** ********** ********** ********** ********** ********
  8313   -- *
  8314   -- * Main  processing  loop
  8315   -- *
  8316   -- ******* ********** ********** ********** ********** ********** ********** ********
  8317  
  8318     VN_pass_ count := 0 ;
  8319     VN_updat e_count :=  0;
  8320     VD_proce ss_start_d ate := SYS DATE;
  8321  
  8322   -- ******* ********** ********** ********** ********** ********** ********** ********
  8323   -- * Remov e old proc ess log ro ws
  8324   -- ******* ********** ********** ********** ********** ********** ********** ********
  8325     BEGIN
  8326  
  8327       VD_log _date := S YSDATE;
  8328       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8329                                    PD_job_log _date => V D_log_date ,
  8330                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  8331                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  8332                                                                   | | VN_parm_ log_file_a ge
  8333                                                                   | | ' days o ld',1,2000 ),
  8334                                    PD_date1 = > VD_rec_g roup_date,
  8335                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  8336  
  8337       DELETE
  8338       FROM       ADRMGT .Job_Proce ss_Logs
  8339       WHERE      Job_na me = CC_pr ocess_name
  8340       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  8341  
  8342       COMMIT ;
  8343  
  8344       VD_log _date := S YSDATE;
  8345       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8346                                    PD_job_log _date => V D_log_date ,
  8347                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  8348                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  8349                                                                   | | VN_parm_ log_file_a ge
  8350                                                                   | | ' days o ld',1,2000 ),
  8351                                    PD_date1 = > VD_rec_g roup_date,
  8352                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  8353  
  8354  
  8355     EXCEPTIO N
  8356  
  8357       WHEN N O_DATA_FOU ND THEN
  8358  
  8359         NULL ;
  8360  
  8361       WHEN O THERS THEN
  8362  
  8363         VD_l og_date :=  SYSDATE;
  8364         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8365                                      PD_job_l og_date  = > VD_log_d ate,
  8366                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess logs .',1,60),
  8367                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  8368                                      PD_date1  => VD_rec _group_dat e,
  8369                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8370  
  8371     END;
  8372  
  8373   -- ******* ********** ********** ********** ********** ********** ********** ********
  8374   -- * Remov e old proc ess error  rows
  8375   -- ******* ********** ********** ********** ********** ********** ********** ********
  8376  
  8377     BEGIN
  8378  
  8379       VD_log _date := S YSDATE;
  8380       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8381                                    PD_job_log _date => V D_log_date ,
  8382                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  8383                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  8384                                                                   | | VN_parm_ log_file_a ge
  8385                                                                   | | ' days o ld',1,2000 ),
  8386                                    PD_date1 = > VD_rec_g roup_date,
  8387                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  8388  
  8389       DELETE
  8390       FROM       ADRMGT .Job_Proce ss_Errs
  8391       WHERE      Job_na me = CC_pr ocess_name
  8392       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  8393  
  8394       COMMIT ;
  8395  
  8396       VD_log _date := S YSDATE;
  8397       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8398                                    PD_job_log _date => V D_log_date ,
  8399                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  8400                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  8401                                                                   | | VN_parm_ log_file_a ge
  8402                                                                   | | ' days o ld',1,2000 ),
  8403                                    PD_date1 = > VD_rec_g roup_date,
  8404                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  8405  
  8406     EXCEPTIO N
  8407  
  8408       WHEN N O_DATA_FOU ND THEN
  8409  
  8410         NULL ;
  8411  
  8412       WHEN O THERS THEN
  8413  
  8414         VD_l og_date :=  SYSDATE;
  8415         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8416                                      PD_job_l og_date  = > VD_log_d ate,
  8417                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess erro rs.',1,60) ,
  8418                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  8419                                      PD_date1  => VD_rec _group_dat e,
  8420                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8421  
  8422     END;
  8423  
  8424   -- ******* ********** ********** ********** ********** ********** ********** ********
  8425   -- * Main  record cur sor logic
  8426   -- ******* ********** ********** ********** ********** ********** ********** ********
  8427  
  8428     BEGIN
  8429  
  8430       VN_max _log_id :=  0;
  8431       VN_pas s_count :=  0;
  8432       VN_upd ate_count  := 0;
  8433  
  8434       OPEN C _hl7_id;
  8435  
  8436       LOOP
  8437  
  8438         FETC H C_hl7_id
  8439         BULK  COLLECT I NTO T_hl7_ id
  8440         LIMI T VN_parm_ rows_to_pr ocess;
  8441  
  8442         EXIT  WHEN T_hl 7_id.COUNT  = 0;
  8443  
  8444         FORA LL I_hl7_i d IN T_hl7 _id.FIRST. .T_hl7_id. last
  8445           UP DATE    AD R.Hl7_tran saction_lo g
  8446           SE T       In ternal_err or_text =  NULL
  8447           WH ERE     Hl 7_transact ion_log_id  = T_hl7_i d(I_hl7_id );
  8448  
  8449         COMM IT;
  8450  
  8451         FOR  I_hl7_id I N T_hl7_id .FIRST..T_ hl7_id.las t LOOP
  8452  
  8453           IF  T_hl7_id( I_hl7_id)  > VN_max_l og_id THEN
  8454  
  8455              VN_max_log _id := T_h l7_id(I_hl 7_id);
  8456  
  8457           EN D IF;
  8458  
  8459         END  LOOP;
  8460  
  8461         VN_p ass_count  := VN_pass _count + 1 ;
  8462  
  8463         VN_u pdate_coun t := VN_up date_count  + T_hl7_i d.COUNT;
  8464  
  8465       END LO OP;
  8466  
  8467       CLOSE  C_hl7_id;
  8468  
  8469       BEGIN
  8470  
  8471         IF N VL(VN_max_ log_id,0)  <> 0 THEN
  8472  
  8473           UP DATE    AD RMGT.Adr_P arameter
  8474           SE T       Va lue = VN_m ax_log_id
  8475           WH ERE     Ap plication_ name = 'HL 7 NULL INT ERNAL_ERRO R_TEXT COL UMN'
  8476           AN D       Pa rameter_na me = VC_pa ra_name_la st_proc_id ;
  8477  
  8478           CO MMIT;
  8479  
  8480         ELSE
  8481  
  8482           VN _max_log_i d := VN_pa rm_last_lo g_id;
  8483  
  8484         END  IF;
  8485  
  8486       EXCEPT ION
  8487  
  8488         WHEN  OTHERS TH EN
  8489  
  8490           VD _log_date  := SYSDATE ;
  8491           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  8492                                        PD_job _log_date   => VD_log _date,
  8493                                        PC_job _status =>  SUBSTR('E RROR        - Unknown  error upd ating ' ||  VC_para_n ame_last_p roc_id ||  '.',1,60),
  8494                                        PC_job _log_messa ge => SUBS TR(VC_para _name_last _proc_id | | ': ' ||  VN_max_log _id
  8495                                                                        || '. '  || SQLERR M,1,2000),
  8496                                        PD_dat e1 => VD_r ec_group_d ate,
  8497                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  8498  
  8499           RE TURN;
  8500  
  8501       END;
  8502  
  8503   -- Process  completio n informat ion
  8504  
  8505       VD_log _date := S YSDATE;
  8506       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8507                                    PD_job_log _date => V D_log_date ,
  8508                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  8509                                    PD_date1 = > VD_rec_g roup_date,
  8510                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  8511                                    PN_numeric 2 => VN_pa ss_count,
  8512                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  8513  
  8514       VD_log _date := S YSDATE;
  8515       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8516                                    PD_job_log _date => V D_log_date ,
  8517                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  8518                                    PD_date1 = > VD_rec_g roup_date,
  8519                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  8520                                    PN_numeric 2 => VN_up date_count ,
  8521                                    PC_text2 = > SUBSTR(' Updated Re cord Count ',1,255));
  8522  
  8523       VD_log _date := S YSDATE;
  8524       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8525                                    PD_job_log _date => V D_log_date ,
  8526                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  8527                                    PD_date1 = > VD_rec_g roup_date,
  8528                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  8529                                    PN_numeric 2 => VN_ma x_log_id,
  8530                                    PC_text2 = > SUBSTR(' Last proce ssed log i d',1,255)) ;
  8531  
  8532       VD_pro cess_end_d ate := SYS DATE;
  8533       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  8534                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  8535                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  8536                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  8537                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  8538  
  8539       VD_log _date := S YSDATE;
  8540       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8541                                    PD_job_log _date => V D_log_date ,
  8542                                    PC_job_sta tus => SUB STR('SUCCE SS     - P rocessing  Completed' ,1,60),
  8543                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  8544                                    PD_date1 = > VD_rec_g roup_date,
  8545                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  8546  
  8547     EXCEPTIO N
  8548  
  8549       WHEN O THERS THEN
  8550  
  8551         VD_l og_date :=  SYSDATE;
  8552         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8553                                      PD_job_l og_date  = > VD_log_d ate,
  8554                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror updat ing Intern al_error_t ext.',1,60 ),
  8555                                      PC_job_l og_message  => SUBSTR ('Cursor L oop Count:  ' || VN_p ass_count
  8556                                                                      || ' Upda ted Record  Count: '  || VN_upda te_count
  8557                                                                      || '. ' | | SQLERRM, 1,2000),
  8558                                      PD_date1  => VD_rec _group_dat e,
  8559                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8560  
  8561         RETU RN;
  8562  
  8563     END;
  8564  
  8565   EXCEPTION
  8566  
  8567     WHEN OTH ERS THEN
  8568  
  8569       ROLLBA CK;
  8570  
  8571       VD_log _date := S YSDATE;
  8572       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8573                                    PD_job_err or_date  = > VD_log_d ate,
  8574                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  8575                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Hl7_Txn_Lo g_Null_Err _Col_Sp.'
  8576                                                                  ||  SQLERRM,1 ,2000),
  8577                                    PD_date1 = > VD_rec_g roup_date,
  8578                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  8579  
  8580       VD_log _date := S YSDATE;
  8581       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8582                                    PD_job_log _date => V D_log_date ,
  8583                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  8584                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  8585                                    PD_date1 = > VD_rec_g roup_date,
  8586                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  8587  
  8588   END Hl7_Tx n_Log_Null _Err_Col_S p_07;
  8589   /
  8590   DROP PROCE DURE ADR.H L7_TXN_LOG _NULL_ERR_ COL_SP_02;
  8591  
  8592   CREATE OR  REPLACE PR OCEDURE AD R.Hl7_Txn_ Log_Null_E rr_Col_Sp_ 02 (
  8593      PB_run_ standalone     IN BOO LEAN DEFAU LT FALSE,
  8594      PB_allo w_rpt_inst     IN BOO LEAN DEFAU LT FALSE,
  8595      PN_rows _to_proces s   IN NUM BER DEFAUL T NULL)
  8596   IS
  8597      -- **** ********** ********** ********** ********** ********** ********** ********** *
  8598      -- * Pr ocedure: H l7_Txn_Log _Null_Erro r_Col
  8599      -- *
  8600      -- *    Update HL7  transcati ons to rem ove data f rom the in ternal_err or_text
  8601      -- *    column for  all rows  more than  6 months o ld.
  8602      -- *
  8603      -- * Pa rameters:
  8604      -- *
  8605      -- *  P B_run_stan dalone   I gnore DBMS _JOB logic  for check ing runnin g jobs.
  8606      -- *                          Default: F ALSE
  8607      -- *
  8608      -- *  P B_allow_rp t_inst   A llow store d procedur e to be su bmitted in  the
  8609      -- *                        D BMS_JOB qu eue on the  ADR repor ting datab ases
  8610      -- *                          Default: F ALSE
  8611      -- *
  8612      -- **** ********** ********** ********** ********** ********** ********** ********** *
  8613      --
  8614      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  8615      -- Date         Au thor             Desc ription
  8616      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  8617      -- 06/2 3/2010  Cr aig Wood         Crea ted for CC R 1100.
  8618      --
  8619      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  8620  
  8621      -- CONS TANTS
  8622  
  8623      CC_no                                  V ARCHAR2 (1 ) := 'N';
  8624      CC_parm _applicati on_name    CONSTANT V ARCHAR2 (8 0)
  8625         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  8626      CC_parm _hl7_err_t xt_age     CONSTANT V ARCHAR2 (5 0)
  8627                                                 := 'OLDE ST HL7 ERR OR TEXT DA YS' ;
  8628      CC_parm _last_hl7_ id         CONSTANT V ARCHAR2 (5 0)
  8629                                                 := 'LAST  HL7 ID PR OCESSED' ;
  8630      CC_parm _log_file_ age        CONSTANT V ARCHAR2 (5 0)
  8631                                                 := 'OLDE ST LOG FIL E DAYS' ;
  8632      CC_proc ess_name              CONSTANT V ARCHAR2 (6 0)
  8633         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  8634      CC_sp_n ame                   CONSTANT V ARCHAR2 (3 5)
  8635         := ' Hl7_Txn_Lo g_Null_Err _Col_Sp_'  || '02' ;
  8636      CC_yes                                 V ARCHAR2 (1 ) := 'Y';
  8637  
  8638      -- VARI ABLES
  8639  
  8640      VB_allo w_rpt_inst                     B OOLEAN :=  FALSE;
  8641      VB_run_ standalone                     B OOLEAN :=  FALSE;
  8642  
  8643      VC_allo w_rpt_inst                     V ARCHAR2 (5 ) := NULL;
  8644      VC_inst ance_name                      V ARCHAR2 (1 6);
  8645      VC_proc ess_durati on                  V ARCHAR2 (2 5);
  8646      VC_run_ standalone                     V ARCHAR2 (5 ) := NULL;
  8647      VC_sql_ statement                      V ARCHAR2 (2 000);
  8648      VC_para _name_last _proc_id            V ARCHAR2 (3 0):= 'P' | | '02' ||  ' LAST PRO CESSED LOG  ID';
  8649  
  8650     VD_log_d ate                            D ATE;
  8651     VD_proce ss_end_dat e                   D ATE;
  8652     VD_proce ss_start_d ate                 D ATE;
  8653     VD_rec_g roup_date                      D ATE;
  8654  
  8655     VN_job_c ount                           N UMBER := 0 ;
  8656     VN_job_n umber                          N UMBER;
  8657     VN_max_l og_id                          N UMBER := 0 ;
  8658     VN_parm_ hl7_err_tx t_age               N UMBER;
  8659     VN_parm_ log_file_a ge                  N UMBER;
  8660     VN_parm_ last_log_i d                   N UMBER := 0 ;
  8661     VN_parm_ rows_to_pr ocess               N UMBER;
  8662     VN_pass_ count                          N UMBER := 0 ;
  8663     VN_rec_c ount                           N UMBER := 0 ;
  8664     VN_updat e_count                        N UMBER := 0 ;
  8665  
  8666  
  8667   -- CURSORS
  8668  
  8669     CURSOR C _hl7_id IS
  8670       SELECT   /*+ para llel(4) */  Hl7_trans action_log _id
  8671       FROM       Hl7_tr ansaction_ log PARTIT ION (HL7_T RANSACTION _LOG_P02)
  8672       WHERE      Hl7_tr ansaction_ log_id > V N_parm_las t_log_id
  8673       AND        Record _created_d ate < TRUN C(SYSDATE)  - VN_parm _hl7_err_t xt_age
  8674       AND        Intern al_error_t ext IS NOT  NULL;
  8675  
  8676   -- TYPES
  8677  
  8678     TYPE TT_ hl7_id IS
  8679       TABLE  OF ADR.Hl7 _Transacti on_Log.Hl7 _transacti on_log_id% TYPE;
  8680  
  8681   -- MEMORY  TABLES
  8682  
  8683     T_hl7_id                                T T_hl7_id;
  8684  
  8685   -- ******* ********** ********** ********** ********** ********** ********** *******
  8686   -- *
  8687   -- *  MAIN  PROCEDURE :
  8688   -- *
  8689   -- ******* ********** ********** ********** ********** ********** ********** *******
  8690  
  8691   BEGIN
  8692  
  8693     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  8694     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  8695  
  8696     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  8697     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  8698  
  8699     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  8700     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  8701  
  8702     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  8703     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  8704  
  8705     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  QUERY PARA LLEL ' ||   2;
  8706     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  8707  
  8708     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  DML PARALL EL ' || 2;
  8709     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  8710  
  8711     VD_rec_g roup_date  := TRUNC(S YSDATE);
  8712  
  8713     VD_log_d ate := SYS DATE;
  8714     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  8715                                 PD _job_log_d ate => VD_ log_date,
  8716                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  8717                                 PD _date1 =>  VD_rec_gro up_date,
  8718                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  8719  
  8720   -- ******* ********** ********** ********** ********** ********** ********** ********
  8721   -- *
  8722   -- * Valid ate input  parameters
  8723   -- *
  8724   -- ******* ********** ********** ********** ********** ********** ********** ********
  8725  
  8726   -- * Check  run stand alone flag
  8727  
  8728     IF PB_ru n_standalo ne IS NULL
  8729      OR NOT  PB_run_sta ndalone TH EN
  8730  
  8731       VB_run _standalon e := FALSE ;
  8732       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  8733  
  8734     ELSE
  8735  
  8736       VB_run _standalon e := TRUE;
  8737       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  8738  
  8739     END IF;
  8740  
  8741   -- * Check  run on re port insta nce flag
  8742  
  8743     IF PB_al low_rpt_in st IS NULL
  8744      OR NOT  PB_allow_r pt_inst TH EN
  8745  
  8746       VB_all ow_rpt_ins t := FALSE ;
  8747       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  8748  
  8749     ELSE
  8750  
  8751       VB_all ow_rpt_ins t := TRUE;
  8752       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  8753  
  8754     END IF;
  8755  
  8756   -- ******* ********** ********** ********** ********** ********** ********** ********
  8757   -- *
  8758   -- * Retri eve proces sing param eters
  8759   -- *
  8760   -- ******* ********** ********** ********** ********** ********** ********** ********
  8761  
  8762   -- Process  Parameter  OLDEST HL 7 ERROR TE XT DAYS KE PT
  8763  
  8764     BEGIN
  8765  
  8766       SELECT     Value
  8767       INTO       VN_par m_hl7_err_ txt_age
  8768       FROM       ADRMGT .Adr_Param eter
  8769       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  8770       AND        Parame ter_name =  'OLDEST H L7 ERROR T EXT DAYS K EPT';
  8771  
  8772       IF VN_ parm_hl7_e rr_txt_age  IS NULL T HEN
  8773  
  8774         VD_l og_date :=  SYSDATE;
  8775         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8776                                      PD_job_l og_date =>  VD_log_da te,
  8777                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8778                                      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),
  8779                                      PD_date1  => VD_rec _group_dat e,
  8780                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8781  
  8782         RETU RN;
  8783  
  8784       END IF ;
  8785  
  8786     EXCEPTIO N
  8787  
  8788       WHEN N O_DATA_FOU ND THEN
  8789  
  8790         VD_l og_date :=  SYSDATE;
  8791         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8792                                      PD_job_l og_date =>  VD_log_da te,
  8793                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8794                                      PC_job_l og_message  => 'Param eter for O LDEST HL7  ERROR TEXT  DAYS KEPT  was not f ound. Term inating pr ocess.',
  8795                                      PD_date1  => VD_rec _group_dat e,
  8796                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8797  
  8798         RETU RN;
  8799  
  8800       WHEN O THERS THEN
  8801  
  8802         VD_l og_date :=  SYSDATE;
  8803         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8804                                      PD_job_l og_date =>  VD_log_da te,
  8805                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8806                                      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. '
  8807                                                                      || SQLERR M,1,2000),
  8808                                      PD_date1  => VD_rec _group_dat e,
  8809                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8810  
  8811         RETU RN;
  8812  
  8813     END;
  8814  
  8815   -- Process  Parameter  OLDEST LO G FILE DAY S KEPT
  8816  
  8817     BEGIN
  8818  
  8819       SELECT     Value
  8820       INTO       VN_par m_log_file _age
  8821       FROM       ADRMGT .Adr_Param eter
  8822       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  8823       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  8824  
  8825       IF VN_ parm_log_f ile_age IS  NULL THEN
  8826  
  8827         VD_l og_date :=  SYSDATE;
  8828         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8829                                      PD_job_l og_date =>  VD_log_da te,
  8830                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8831                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST L OG FILE DA YS KEPT is  NULL. Ter minating p rocess.',1 ,2000),
  8832                                      PD_date1  => VD_rec _group_dat e,
  8833                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8834  
  8835         RETU RN;
  8836  
  8837       END IF ;
  8838  
  8839     EXCEPTIO N
  8840  
  8841       WHEN N O_DATA_FOU ND THEN
  8842  
  8843         VD_l og_date :=  SYSDATE;
  8844         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8845                                      PD_job_l og_date =>  VD_log_da te,
  8846                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8847                                      PC_job_l og_message  => 'Param eter for O LDEST LOG  FILE DAYS  KEPT was n ot found.  Terminatin g process. ',
  8848                                      PD_date1  => VD_rec _group_dat e,
  8849                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8850  
  8851         RETU RN;
  8852  
  8853       WHEN O THERS THEN
  8854  
  8855         VD_l og_date :=  SYSDATE;
  8856         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8857                                      PD_job_l og_date =>  VD_log_da te,
  8858                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8859                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  OLDEST LO G FILE DAY S KEPT. Te rminating  process. '
  8860                                                                      || SQLERR M,1,2000),
  8861                                      PD_date1  => VD_rec _group_dat e,
  8862                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8863  
  8864         RETU RN;
  8865  
  8866     END;
  8867  
  8868   -- Process  Parameter  ROWS TO P ROCESS
  8869  
  8870     BEGIN
  8871  
  8872       SELECT     Value
  8873       INTO       VN_par m_rows_to_ process
  8874       FROM       ADRMGT .Adr_Param eter
  8875       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  8876       AND        Parame ter_name =  'ROWS TO  PROCESS';
  8877  
  8878       IF VN_ parm_rows_ to_process  IS NULL T HEN
  8879  
  8880         VD_l og_date :=  SYSDATE;
  8881         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8882                                      PD_job_l og_date =>  VD_log_da te,
  8883                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8884                                      PC_job_l og_message  => SUBSTR ('Paramete r ROWS TO  PROCESS is  NULL. Ter minating p rocess.',1 ,2000),
  8885                                      PD_date1  => VD_rec _group_dat e,
  8886                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8887  
  8888         RETU RN;
  8889  
  8890       END IF ;
  8891  
  8892     EXCEPTIO N
  8893  
  8894       WHEN N O_DATA_FOU ND THEN
  8895  
  8896         VD_l og_date :=  SYSDATE;
  8897         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8898                                      PD_job_l og_date =>  VD_log_da te,
  8899                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8900                                      PC_job_l og_message  => 'Param eter for R OWS TO PRO CESS was n ot found.  Terminatin g process. ',
  8901                                      PD_date1  => VD_rec _group_dat e,
  8902                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8903  
  8904         RETU RN;
  8905  
  8906       WHEN O THERS THEN
  8907  
  8908         VD_l og_date :=  SYSDATE;
  8909         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8910                                      PD_job_l og_date =>  VD_log_da te,
  8911                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8912                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ROWS TO P ROCESS. Te rminating  process. '
  8913                                                                      || SQLERR M,1,2000),
  8914                                      PD_date1  => VD_rec _group_dat e,
  8915                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8916  
  8917         RETU RN;
  8918  
  8919     END;
  8920  
  8921   -- Process  Parameter  LAST PROC ESSED LOG  ID
  8922  
  8923     BEGIN
  8924  
  8925       SELECT     Value
  8926       INTO       VN_par m_last_log _id
  8927       FROM       ADRMGT .Adr_Param eter
  8928       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  8929       AND        Parame ter_name =  VC_para_n ame_last_p roc_id;
  8930  
  8931       IF VN_ parm_last_ log_id IS  NULL THEN
  8932  
  8933         VD_l og_date :=  SYSDATE;
  8934         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8935                                      PD_job_l og_date =>  VD_log_da te,
  8936                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8937                                      PC_job_l og_message  => SUBSTR ('Paramete r ' || VC_ para_name_ last_proc_ id || ' is  NULL. Ter minating p rocess.',1 ,2000),
  8938                                      PD_date1  => VD_rec _group_dat e,
  8939                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8940  
  8941         RETU RN;
  8942  
  8943       END IF ;
  8944  
  8945     EXCEPTIO N
  8946  
  8947       WHEN N O_DATA_FOU ND THEN
  8948  
  8949         VD_l og_date :=  SYSDATE;
  8950         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8951                                      PD_job_l og_date =>  VD_log_da te,
  8952                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8953                                      PC_job_l og_message  => 'Param eter for '  || VC_par a_name_las t_proc_id  || ' was n ot found.  Terminatin g process. ',
  8954                                      PD_date1  => VD_rec _group_dat e,
  8955                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8956  
  8957         RETU RN;
  8958  
  8959       WHEN O THERS THEN
  8960  
  8961         VD_l og_date :=  SYSDATE;
  8962         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8963                                      PD_job_l og_date =>  VD_log_da te,
  8964                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8965                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ' || VC_p ara_name_l ast_proc_i d || '. Te rminating  process. '
  8966                                                                      || SQLERR M,1,2000),
  8967                                      PD_date1  => VD_rec _group_dat e,
  8968                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8969  
  8970         RETU RN;
  8971  
  8972     END;
  8973  
  8974   -- Write o ut Paramet er log mes sages for  submitted  job
  8975  
  8976     VD_log_d ate := SYS DATE;
  8977     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  8978                                 PD _job_log_d ate => VD_ log_date,
  8979                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  8980                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  8981                                 PD _date1 =>  VD_rec_gro up_date,
  8982                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  8983  
  8984     VD_log_d ate := SYS DATE;
  8985     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  8986                                 PD _job_log_d ate => VD_ log_date,
  8987                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  8988                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  8989                                 PD _date1 =>  VD_rec_gro up_date,
  8990                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  8991  
  8992     VD_log_d ate := SYS DATE;
  8993     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  8994                                 PD _job_log_d ate => VD_ log_date,
  8995                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  8996                                 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),
  8997                                 PD _date1 =>  VD_rec_gro up_date,
  8998                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  8999  
  9000  
  9001     VD_log_d ate := SYS DATE;
  9002     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9003                                 PD _job_log_d ate => VD_ log_date,
  9004                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  9005                                 PC _job_log_m essage =>  SUBSTR(' O LDEST HL7  ERROR TEXT  DAYS KEPT : ' || VN_ parm_hl7_e rr_txt_age ,1,2000),
  9006                                 PD _date1 =>  VD_rec_gro up_date,
  9007                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9008  
  9009     VD_log_d ate := SYS DATE;
  9010     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9011                                 PD _job_log_d ate => VD_ log_date,
  9012                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  9013                                 PC _job_log_m essage =>  SUBSTR(' O LDEST LOG  FILE DAYS  KEPT: ' ||  VN_parm_l og_file_ag e,1,2000),
  9014                                 PD _date1 =>  VD_rec_gro up_date,
  9015                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9016  
  9017     VD_log_d ate := SYS DATE;
  9018     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9019                                 PD _job_log_d ate => VD_ log_date,
  9020                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  9021                                 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),
  9022                                 PD _date1 =>  VD_rec_gro up_date,
  9023                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9024  
  9025     VD_log_d ate := SYS DATE;
  9026     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9027                                 PD _job_log_d ate => VD_ log_date,
  9028                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  9029                                 PC _job_log_m essage =>  SUBSTR(' '  || VC_par a_name_las t_proc_id  || ': ' ||  NVL(TO_CH AR(VN_parm _last_log_ id),'NULL' ),1,2000),
  9030                                 PD _date1 =>  VD_rec_gro up_date,
  9031                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9032  
  9033   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  9034  
  9035     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  9036  
  9037       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  9038  
  9039       VD_log _date := S YSDATE;
  9040       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9041                                    PD_job_log _date => V D_log_date ,
  9042                                    PC_job_sta tus => SUB STR('WARNI NG     - J ob table p arameters' ,1,60),
  9043                                    PC_job_log _message = > SUBSTR('  Processin g paramete r ROWS TO  PROCESS (i n each loo p) has bee n overridd en.'
  9044                                                              || ' T he overrid e value is : ' || NVL (TO_CHAR(V N_parm_row s_to_proce ss),'NULL' ),1,2000),
  9045                                    PD_date1 = > VD_rec_g roup_date,
  9046                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  9047  
  9048     END IF;
  9049  
  9050   -- ******* ********** ********** ********** ********** ********** ********** ********
  9051   -- *
  9052   -- * Check  to see if  process i s running  on a repor ting datab ase.
  9053   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  9054   -- *
  9055   -- ******* ********** ********** ********** ********** ********** ********** ********
  9056  
  9057     IF NOT V B_allow_rp t_inst THE N
  9058  
  9059       BEGIN
  9060  
  9061         VD_l og_date :=  SYSDATE;
  9062         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9063                                      PD_job_l og_date =>  VD_log_da te,
  9064                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  9065                                      PD_date1  => VD_rec _group_dat e,
  9066                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9067  
  9068         SELE CT    Inst ance_name
  9069         INTO       VC_i nstance_na me
  9070         FROM       V$in stance;
  9071  
  9072         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  9073  
  9074           VD _log_date  := SYSDATE ;
  9075           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  9076                                        PD_job _log_date  => VD_log_ date,
  9077                                        PC_job _status =>  SUBSTR('E RROR        - Process ing Failed ',1,60),
  9078                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  9079                                                                     || VC_inst ance_name
  9080                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  9081                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  9082                                        PD_dat e1 => VD_r ec_group_d ate,
  9083                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  9084  
  9085           RE TURN;
  9086  
  9087         END  IF;
  9088  
  9089       EXCEPT ION
  9090  
  9091         WHEN  OTHERS TH EN
  9092  
  9093           VD _log_date  := SYSDATE ;
  9094           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  9095                                        PD_job _log_date  => VD_log_ date,
  9096                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  9097                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  9098                                        PD_dat e1 => VD_r ec_group_d ate,
  9099                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  9100  
  9101           RE TURN;
  9102  
  9103       END;
  9104  
  9105     END IF;
  9106  
  9107   -- ******* ********** ********** ********** ********** ********** ********** ********
  9108   -- *
  9109   -- * Check  to see if  the job h as already  run today
  9110   -- *  - If  running i n stand-al one mode,  don't chec k.
  9111   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  9112   -- *
  9113   -- ******* ********** ********** ********** ********** ********** ********** ********
  9114  
  9115     IF NOT P B_run_stan dalone THE N
  9116  
  9117       BEGIN
  9118  
  9119         VD_l og_date :=  SYSDATE;
  9120         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9121                                      PD_job_l og_date =>  VD_log_da te,
  9122                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  9123                                      PD_date1  => VD_rec _group_dat e,
  9124                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9125  
  9126         SELE CT    COUN T(*)
  9127         INTO       VN_r ec_count
  9128         FROM       ADRM GT.Job_Pro cess_Logs
  9129         WHER E     Job_ name = CC_ process_na me
  9130         AND        Date 1 = VD_rec _group_dat e
  9131         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  9132  
  9133         IF V N_rec_coun t > 0 THEN
  9134  
  9135           VD _log_date  := SYSDATE ;
  9136           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  9137                                        PD_job _log_date  => VD_log_ date,
  9138                                        PC_job _status =>  SUBSTR('W ARNING      - This da te has alr eady been  processed' ,1,60),
  9139                                        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),
  9140                                        PD_dat e1 => VD_r ec_group_d ate,
  9141                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  9142  
  9143           RE TURN;
  9144  
  9145         END  IF;
  9146  
  9147       EXCEPT ION
  9148  
  9149         WHEN  OTHERS TH EN
  9150  
  9151           VD _log_date  := SYSDATE ;
  9152           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  9153                                        PD_job _log_date  => VD_log_ date,
  9154                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  9155                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  9156                                        PD_dat e1 => VD_r ec_group_d ate,
  9157                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  9158  
  9159           RE TURN;
  9160  
  9161       END;
  9162  
  9163     END IF;
  9164  
  9165   -- ******* ********** ********** ********** ********** ********** ********** ********
  9166   -- *
  9167   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  9168   -- *  - If  yes, then  end this  job.
  9169   -- *
  9170   -- ******* ********** ********** ********** ********** ********** ********** ********
  9171  
  9172     SELECT C OUNT(*)
  9173     INTO   V N_job_coun t
  9174     FROM   S YS.DBA_JOB S_RUNNING  R,
  9175            S YS.DBA_JOB S J
  9176     WHERE  J .JOB = R.J OB
  9177     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  9178  
  9179     IF VN_jo b_count >  1 THEN
  9180  
  9181       VD_log _date := S YSDATE;
  9182       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9183                                    PD_job_log _date => V D_log_date ,
  9184                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  9185                                    PC_job_log _message = > SUBSTR(' There is a nother '
  9186                                                                || C C_sp_name
  9187                                                                || '  job runni ng.'
  9188                                                                || '  Exiting j ob without  running.' ,1,2000),
  9189                                    PD_date1 = > VD_rec_g roup_date,
  9190                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  9191  
  9192       RETURN ;
  9193  
  9194     ELSE
  9195  
  9196       IF VB_ run_standa lone THEN
  9197  
  9198         VD_l og_date :=  SYSDATE;
  9199         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9200                                      PD_job_l og_date =>  VD_log_da te,
  9201                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  9202                                      PD_date1  => VD_rec _group_dat e,
  9203                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9204  
  9205       ELSE
  9206  
  9207         SELE CT    MAX( J.Job)
  9208         INTO       VN_j ob_number
  9209         FROM       SYS. DBA_JOBS_R UNNING R,
  9210                    SYS. DBA_JOBS J
  9211         WHER E     J.JO B = R.JOB
  9212         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  9213  
  9214         VD_l og_date :=  SYSDATE;
  9215         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9216                                      PD_job_l og_date =>  VD_log_da te,
  9217                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  9218                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  9219                                                                      || VN_job _number,1, 2000),
  9220                                      PD_date1  => VD_rec _group_dat e,
  9221                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9222  
  9223       END IF ;
  9224  
  9225     END IF;
  9226  
  9227   -- ******* ********** ********** ********** ********** ********** ********** ********
  9228   -- *
  9229   -- * Main  processing  loop
  9230   -- *
  9231   -- ******* ********** ********** ********** ********** ********** ********** ********
  9232  
  9233     VN_pass_ count := 0 ;
  9234     VN_updat e_count :=  0;
  9235     VD_proce ss_start_d ate := SYS DATE;
  9236  
  9237   -- ******* ********** ********** ********** ********** ********** ********** ********
  9238   -- * Remov e old proc ess log ro ws
  9239   -- ******* ********** ********** ********** ********** ********** ********** ********
  9240     BEGIN
  9241  
  9242       VD_log _date := S YSDATE;
  9243       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9244                                    PD_job_log _date => V D_log_date ,
  9245                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  9246                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  9247                                                                   | | VN_parm_ log_file_a ge
  9248                                                                   | | ' days o ld',1,2000 ),
  9249                                    PD_date1 = > VD_rec_g roup_date,
  9250                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  9251  
  9252       DELETE
  9253       FROM       ADRMGT .Job_Proce ss_Logs
  9254       WHERE      Job_na me = CC_pr ocess_name
  9255       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  9256  
  9257       COMMIT ;
  9258  
  9259       VD_log _date := S YSDATE;
  9260       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9261                                    PD_job_log _date => V D_log_date ,
  9262                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  9263                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  9264                                                                   | | VN_parm_ log_file_a ge
  9265                                                                   | | ' days o ld',1,2000 ),
  9266                                    PD_date1 = > VD_rec_g roup_date,
  9267                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  9268  
  9269  
  9270     EXCEPTIO N
  9271  
  9272       WHEN N O_DATA_FOU ND THEN
  9273  
  9274         NULL ;
  9275  
  9276       WHEN O THERS THEN
  9277  
  9278         VD_l og_date :=  SYSDATE;
  9279         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9280                                      PD_job_l og_date  = > VD_log_d ate,
  9281                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess logs .',1,60),
  9282                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  9283                                      PD_date1  => VD_rec _group_dat e,
  9284                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9285  
  9286     END;
  9287  
  9288   -- ******* ********** ********** ********** ********** ********** ********** ********
  9289   -- * Remov e old proc ess error  rows
  9290   -- ******* ********** ********** ********** ********** ********** ********** ********
  9291  
  9292     BEGIN
  9293  
  9294       VD_log _date := S YSDATE;
  9295       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9296                                    PD_job_log _date => V D_log_date ,
  9297                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  9298                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  9299                                                                   | | VN_parm_ log_file_a ge
  9300                                                                   | | ' days o ld',1,2000 ),
  9301                                    PD_date1 = > VD_rec_g roup_date,
  9302                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  9303  
  9304       DELETE
  9305       FROM       ADRMGT .Job_Proce ss_Errs
  9306       WHERE      Job_na me = CC_pr ocess_name
  9307       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  9308  
  9309       COMMIT ;
  9310  
  9311       VD_log _date := S YSDATE;
  9312       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9313                                    PD_job_log _date => V D_log_date ,
  9314                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  9315                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  9316                                                                   | | VN_parm_ log_file_a ge
  9317                                                                   | | ' days o ld',1,2000 ),
  9318                                    PD_date1 = > VD_rec_g roup_date,
  9319                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  9320  
  9321     EXCEPTIO N
  9322  
  9323       WHEN N O_DATA_FOU ND THEN
  9324  
  9325         NULL ;
  9326  
  9327       WHEN O THERS THEN
  9328  
  9329         VD_l og_date :=  SYSDATE;
  9330         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9331                                      PD_job_l og_date  = > VD_log_d ate,
  9332                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess erro rs.',1,60) ,
  9333                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  9334                                      PD_date1  => VD_rec _group_dat e,
  9335                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9336  
  9337     END;
  9338  
  9339   -- ******* ********** ********** ********** ********** ********** ********** ********
  9340   -- * Main  record cur sor logic
  9341   -- ******* ********** ********** ********** ********** ********** ********** ********
  9342  
  9343     BEGIN
  9344  
  9345       VN_max _log_id :=  0;
  9346       VN_pas s_count :=  0;
  9347       VN_upd ate_count  := 0;
  9348  
  9349       OPEN C _hl7_id;
  9350  
  9351       LOOP
  9352  
  9353         FETC H C_hl7_id
  9354         BULK  COLLECT I NTO T_hl7_ id
  9355         LIMI T VN_parm_ rows_to_pr ocess;
  9356  
  9357         EXIT  WHEN T_hl 7_id.COUNT  = 0;
  9358  
  9359         FORA LL I_hl7_i d IN T_hl7 _id.FIRST. .T_hl7_id. last
  9360           UP DATE    AD R.Hl7_tran saction_lo g
  9361           SE T       In ternal_err or_text =  NULL
  9362           WH ERE     Hl 7_transact ion_log_id  = T_hl7_i d(I_hl7_id );
  9363  
  9364         COMM IT;
  9365  
  9366         FOR  I_hl7_id I N T_hl7_id .FIRST..T_ hl7_id.las t LOOP
  9367  
  9368           IF  T_hl7_id( I_hl7_id)  > VN_max_l og_id THEN
  9369  
  9370              VN_max_log _id := T_h l7_id(I_hl 7_id);
  9371  
  9372           EN D IF;
  9373  
  9374         END  LOOP;
  9375  
  9376         VN_p ass_count  := VN_pass _count + 1 ;
  9377  
  9378         VN_u pdate_coun t := VN_up date_count  + T_hl7_i d.COUNT;
  9379  
  9380       END LO OP;
  9381  
  9382       CLOSE  C_hl7_id;
  9383  
  9384       BEGIN
  9385  
  9386         IF N VL(VN_max_ log_id,0)  <> 0 THEN
  9387  
  9388           UP DATE    AD RMGT.Adr_P arameter
  9389           SE T       Va lue = VN_m ax_log_id
  9390           WH ERE     Ap plication_ name = 'HL 7 NULL INT ERNAL_ERRO R_TEXT COL UMN'
  9391           AN D       Pa rameter_na me = VC_pa ra_name_la st_proc_id ;
  9392  
  9393           CO MMIT;
  9394  
  9395         ELSE
  9396  
  9397           VN _max_log_i d := VN_pa rm_last_lo g_id;
  9398  
  9399         END  IF;
  9400  
  9401       EXCEPT ION
  9402  
  9403         WHEN  OTHERS TH EN
  9404  
  9405           VD _log_date  := SYSDATE ;
  9406           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  9407                                        PD_job _log_date   => VD_log _date,
  9408                                        PC_job _status =>  SUBSTR('E RROR        - Unknown  error upd ating ' ||  VC_para_n ame_last_p roc_id ||  '.',1,60),
  9409                                        PC_job _log_messa ge => SUBS TR(VC_para _name_last _proc_id | | ': ' ||  VN_max_log _id
  9410                                                                        || '. '  || SQLERR M,1,2000),
  9411                                        PD_dat e1 => VD_r ec_group_d ate,
  9412                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  9413  
  9414           RE TURN;
  9415  
  9416       END;
  9417  
  9418   -- Process  completio n informat ion
  9419  
  9420       VD_log _date := S YSDATE;
  9421       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9422                                    PD_job_log _date => V D_log_date ,
  9423                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  9424                                    PD_date1 = > VD_rec_g roup_date,
  9425                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  9426                                    PN_numeric 2 => VN_pa ss_count,
  9427                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  9428  
  9429       VD_log _date := S YSDATE;
  9430       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9431                                    PD_job_log _date => V D_log_date ,
  9432                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  9433                                    PD_date1 = > VD_rec_g roup_date,
  9434                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  9435                                    PN_numeric 2 => VN_up date_count ,
  9436                                    PC_text2 = > SUBSTR(' Updated Re cord Count ',1,255));
  9437  
  9438       VD_log _date := S YSDATE;
  9439       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9440                                    PD_job_log _date => V D_log_date ,
  9441                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  9442                                    PD_date1 = > VD_rec_g roup_date,
  9443                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  9444                                    PN_numeric 2 => VN_ma x_log_id,
  9445                                    PC_text2 = > SUBSTR(' Last proce ssed log i d',1,255)) ;
  9446  
  9447       VD_pro cess_end_d ate := SYS DATE;
  9448       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  9449                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  9450                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  9451                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  9452                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  9453  
  9454       VD_log _date := S YSDATE;
  9455       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9456                                    PD_job_log _date => V D_log_date ,
  9457                                    PC_job_sta tus => SUB STR('SUCCE SS     - P rocessing  Completed' ,1,60),
  9458                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  9459                                    PD_date1 = > VD_rec_g roup_date,
  9460                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  9461  
  9462     EXCEPTIO N
  9463  
  9464       WHEN O THERS THEN
  9465  
  9466         VD_l og_date :=  SYSDATE;
  9467         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9468                                      PD_job_l og_date  = > VD_log_d ate,
  9469                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror updat ing Intern al_error_t ext.',1,60 ),
  9470                                      PC_job_l og_message  => SUBSTR ('Cursor L oop Count:  ' || VN_p ass_count
  9471                                                                      || ' Upda ted Record  Count: '  || VN_upda te_count
  9472                                                                      || '. ' | | SQLERRM, 1,2000),
  9473                                      PD_date1  => VD_rec _group_dat e,
  9474                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9475  
  9476         RETU RN;
  9477  
  9478     END;
  9479  
  9480   EXCEPTION
  9481  
  9482     WHEN OTH ERS THEN
  9483  
  9484       ROLLBA CK;
  9485  
  9486       VD_log _date := S YSDATE;
  9487       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9488                                    PD_job_err or_date  = > VD_log_d ate,
  9489                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  9490                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Hl7_Txn_Lo g_Null_Err _Col_Sp.'
  9491                                                                  ||  SQLERRM,1 ,2000),
  9492                                    PD_date1 = > VD_rec_g roup_date,
  9493                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  9494  
  9495       VD_log _date := S YSDATE;
  9496       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9497                                    PD_job_log _date => V D_log_date ,
  9498                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  9499                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  9500                                    PD_date1 = > VD_rec_g roup_date,
  9501                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  9502  
  9503   END Hl7_Tx n_Log_Null _Err_Col_S p_02;
  9504   /
  9505   DROP PROCE DURE ADR.H L7_TXN_LOG _NULL_ERR_ COL_SP_03;
  9506  
  9507   CREATE OR  REPLACE PR OCEDURE AD R.Hl7_Txn_ Log_Null_E rr_Col_Sp_ 03 (
  9508      PB_run_ standalone     IN BOO LEAN DEFAU LT FALSE,
  9509      PB_allo w_rpt_inst     IN BOO LEAN DEFAU LT FALSE,
  9510      PN_rows _to_proces s   IN NUM BER DEFAUL T NULL)
  9511   IS
  9512      -- **** ********** ********** ********** ********** ********** ********** ********** *
  9513      -- * Pr ocedure: H l7_Txn_Log _Null_Erro r_Col
  9514      -- *
  9515      -- *    Update HL7  transcati ons to rem ove data f rom the in ternal_err or_text
  9516      -- *    column for  all rows  more than  6 months o ld.
  9517      -- *
  9518      -- * Pa rameters:
  9519      -- *
  9520      -- *  P B_run_stan dalone   I gnore DBMS _JOB logic  for check ing runnin g jobs.
  9521      -- *                          Default: F ALSE
  9522      -- *
  9523      -- *  P B_allow_rp t_inst   A llow store d procedur e to be su bmitted in  the
  9524      -- *                        D BMS_JOB qu eue on the  ADR repor ting datab ases
  9525      -- *                          Default: F ALSE
  9526      -- *
  9527      -- **** ********** ********** ********** ********** ********** ********** ********** *
  9528      --
  9529      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  9530      -- Date         Au thor             Desc ription
  9531      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  9532      -- 06/2 3/2010  Cr aig Wood         Crea ted for CC R 1100.
  9533      --
  9534      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  9535  
  9536      -- CONS TANTS
  9537  
  9538      CC_no                                  V ARCHAR2 (1 ) := 'N';
  9539      CC_parm _applicati on_name    CONSTANT V ARCHAR2 (8 0)
  9540         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  9541      CC_parm _hl7_err_t xt_age     CONSTANT V ARCHAR2 (5 0)
  9542                                                 := 'OLDE ST HL7 ERR OR TEXT DA YS' ;
  9543      CC_parm _last_hl7_ id         CONSTANT V ARCHAR2 (5 0)
  9544                                                 := 'LAST  HL7 ID PR OCESSED' ;
  9545      CC_parm _log_file_ age        CONSTANT V ARCHAR2 (5 0)
  9546                                                 := 'OLDE ST LOG FIL E DAYS' ;
  9547      CC_proc ess_name              CONSTANT V ARCHAR2 (6 0)
  9548         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  9549      CC_sp_n ame                   CONSTANT V ARCHAR2 (3 5)
  9550         := ' Hl7_Txn_Lo g_Null_Err _Col_Sp_'  || '03' ;
  9551      CC_yes                                 V ARCHAR2 (1 ) := 'Y';
  9552  
  9553      -- VARI ABLES
  9554  
  9555      VB_allo w_rpt_inst                     B OOLEAN :=  FALSE;
  9556      VB_run_ standalone                     B OOLEAN :=  FALSE;
  9557  
  9558      VC_allo w_rpt_inst                     V ARCHAR2 (5 ) := NULL;
  9559      VC_inst ance_name                      V ARCHAR2 (1 6);
  9560      VC_proc ess_durati on                  V ARCHAR2 (2 5);
  9561      VC_run_ standalone                     V ARCHAR2 (5 ) := NULL;
  9562      VC_sql_ statement                      V ARCHAR2 (2 000);
  9563      VC_para _name_last _proc_id            V ARCHAR2 (3 0):= 'P' | | '03' ||  ' LAST PRO CESSED LOG  ID';
  9564  
  9565     VD_log_d ate                            D ATE;
  9566     VD_proce ss_end_dat e                   D ATE;
  9567     VD_proce ss_start_d ate                 D ATE;
  9568     VD_rec_g roup_date                      D ATE;
  9569  
  9570     VN_job_c ount                           N UMBER := 0 ;
  9571     VN_job_n umber                          N UMBER;
  9572     VN_max_l og_id                          N UMBER := 0 ;
  9573     VN_parm_ hl7_err_tx t_age               N UMBER;
  9574     VN_parm_ log_file_a ge                  N UMBER;
  9575     VN_parm_ last_log_i d                   N UMBER := 0 ;
  9576     VN_parm_ rows_to_pr ocess               N UMBER;
  9577     VN_pass_ count                          N UMBER := 0 ;
  9578     VN_rec_c ount                           N UMBER := 0 ;
  9579     VN_updat e_count                        N UMBER := 0 ;
  9580  
  9581  
  9582   -- CURSORS
  9583  
  9584     CURSOR C _hl7_id IS
  9585       SELECT   /*+ para llel(4) */  Hl7_trans action_log _id
  9586       FROM       Hl7_tr ansaction_ log PARTIT ION (HL7_T RANSACTION _LOG_P03)
  9587       WHERE      Hl7_tr ansaction_ log_id > V N_parm_las t_log_id
  9588       AND        Record _created_d ate < TRUN C(SYSDATE)  - VN_parm _hl7_err_t xt_age
  9589       AND        Intern al_error_t ext IS NOT  NULL;
  9590  
  9591   -- TYPES
  9592  
  9593     TYPE TT_ hl7_id IS
  9594       TABLE  OF ADR.Hl7 _Transacti on_Log.Hl7 _transacti on_log_id% TYPE;
  9595  
  9596   -- MEMORY  TABLES
  9597  
  9598     T_hl7_id                                T T_hl7_id;
  9599  
  9600   -- ******* ********** ********** ********** ********** ********** ********** *******
  9601   -- *
  9602   -- *  MAIN  PROCEDURE :
  9603   -- *
  9604   -- ******* ********** ********** ********** ********** ********** ********** *******
  9605  
  9606   BEGIN
  9607  
  9608     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  9609     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  9610  
  9611     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  9612     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  9613  
  9614     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  9615     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  9616  
  9617     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  9618     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  9619  
  9620     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  QUERY PARA LLEL ' ||   2;
  9621     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  9622  
  9623     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  DML PARALL EL ' || 2;
  9624     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  9625  
  9626     VD_rec_g roup_date  := TRUNC(S YSDATE);
  9627  
  9628     VD_log_d ate := SYS DATE;
  9629     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9630                                 PD _job_log_d ate => VD_ log_date,
  9631                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  9632                                 PD _date1 =>  VD_rec_gro up_date,
  9633                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9634  
  9635   -- ******* ********** ********** ********** ********** ********** ********** ********
  9636   -- *
  9637   -- * Valid ate input  parameters
  9638   -- *
  9639   -- ******* ********** ********** ********** ********** ********** ********** ********
  9640  
  9641   -- * Check  run stand alone flag
  9642  
  9643     IF PB_ru n_standalo ne IS NULL
  9644      OR NOT  PB_run_sta ndalone TH EN
  9645  
  9646       VB_run _standalon e := FALSE ;
  9647       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  9648  
  9649     ELSE
  9650  
  9651       VB_run _standalon e := TRUE;
  9652       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  9653  
  9654     END IF;
  9655  
  9656   -- * Check  run on re port insta nce flag
  9657  
  9658     IF PB_al low_rpt_in st IS NULL
  9659      OR NOT  PB_allow_r pt_inst TH EN
  9660  
  9661       VB_all ow_rpt_ins t := FALSE ;
  9662       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  9663  
  9664     ELSE
  9665  
  9666       VB_all ow_rpt_ins t := TRUE;
  9667       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  9668  
  9669     END IF;
  9670  
  9671   -- ******* ********** ********** ********** ********** ********** ********** ********
  9672   -- *
  9673   -- * Retri eve proces sing param eters
  9674   -- *
  9675   -- ******* ********** ********** ********** ********** ********** ********** ********
  9676  
  9677   -- Process  Parameter  OLDEST HL 7 ERROR TE XT DAYS KE PT
  9678  
  9679     BEGIN
  9680  
  9681       SELECT     Value
  9682       INTO       VN_par m_hl7_err_ txt_age
  9683       FROM       ADRMGT .Adr_Param eter
  9684       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  9685       AND        Parame ter_name =  'OLDEST H L7 ERROR T EXT DAYS K EPT';
  9686  
  9687       IF VN_ parm_hl7_e rr_txt_age  IS NULL T HEN
  9688  
  9689         VD_l og_date :=  SYSDATE;
  9690         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9691                                      PD_job_l og_date =>  VD_log_da te,
  9692                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9693                                      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),
  9694                                      PD_date1  => VD_rec _group_dat e,
  9695                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9696  
  9697         RETU RN;
  9698  
  9699       END IF ;
  9700  
  9701     EXCEPTIO N
  9702  
  9703       WHEN N O_DATA_FOU ND THEN
  9704  
  9705         VD_l og_date :=  SYSDATE;
  9706         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9707                                      PD_job_l og_date =>  VD_log_da te,
  9708                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9709                                      PC_job_l og_message  => 'Param eter for O LDEST HL7  ERROR TEXT  DAYS KEPT  was not f ound. Term inating pr ocess.',
  9710                                      PD_date1  => VD_rec _group_dat e,
  9711                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9712  
  9713         RETU RN;
  9714  
  9715       WHEN O THERS THEN
  9716  
  9717         VD_l og_date :=  SYSDATE;
  9718         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9719                                      PD_job_l og_date =>  VD_log_da te,
  9720                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9721                                      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. '
  9722                                                                      || SQLERR M,1,2000),
  9723                                      PD_date1  => VD_rec _group_dat e,
  9724                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9725  
  9726         RETU RN;
  9727  
  9728     END;
  9729  
  9730   -- Process  Parameter  OLDEST LO G FILE DAY S KEPT
  9731  
  9732     BEGIN
  9733  
  9734       SELECT     Value
  9735       INTO       VN_par m_log_file _age
  9736       FROM       ADRMGT .Adr_Param eter
  9737       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  9738       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  9739  
  9740       IF VN_ parm_log_f ile_age IS  NULL THEN
  9741  
  9742         VD_l og_date :=  SYSDATE;
  9743         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9744                                      PD_job_l og_date =>  VD_log_da te,
  9745                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9746                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST L OG FILE DA YS KEPT is  NULL. Ter minating p rocess.',1 ,2000),
  9747                                      PD_date1  => VD_rec _group_dat e,
  9748                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9749  
  9750         RETU RN;
  9751  
  9752       END IF ;
  9753  
  9754     EXCEPTIO N
  9755  
  9756       WHEN N O_DATA_FOU ND THEN
  9757  
  9758         VD_l og_date :=  SYSDATE;
  9759         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9760                                      PD_job_l og_date =>  VD_log_da te,
  9761                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9762                                      PC_job_l og_message  => 'Param eter for O LDEST LOG  FILE DAYS  KEPT was n ot found.  Terminatin g process. ',
  9763                                      PD_date1  => VD_rec _group_dat e,
  9764                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9765  
  9766         RETU RN;
  9767  
  9768       WHEN O THERS THEN
  9769  
  9770         VD_l og_date :=  SYSDATE;
  9771         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9772                                      PD_job_l og_date =>  VD_log_da te,
  9773                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9774                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  OLDEST LO G FILE DAY S KEPT. Te rminating  process. '
  9775                                                                      || SQLERR M,1,2000),
  9776                                      PD_date1  => VD_rec _group_dat e,
  9777                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9778  
  9779         RETU RN;
  9780  
  9781     END;
  9782  
  9783   -- Process  Parameter  ROWS TO P ROCESS
  9784  
  9785     BEGIN
  9786  
  9787       SELECT     Value
  9788       INTO       VN_par m_rows_to_ process
  9789       FROM       ADRMGT .Adr_Param eter
  9790       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  9791       AND        Parame ter_name =  'ROWS TO  PROCESS';
  9792  
  9793       IF VN_ parm_rows_ to_process  IS NULL T HEN
  9794  
  9795         VD_l og_date :=  SYSDATE;
  9796         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9797                                      PD_job_l og_date =>  VD_log_da te,
  9798                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9799                                      PC_job_l og_message  => SUBSTR ('Paramete r ROWS TO  PROCESS is  NULL. Ter minating p rocess.',1 ,2000),
  9800                                      PD_date1  => VD_rec _group_dat e,
  9801                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9802  
  9803         RETU RN;
  9804  
  9805       END IF ;
  9806  
  9807     EXCEPTIO N
  9808  
  9809       WHEN N O_DATA_FOU ND THEN
  9810  
  9811         VD_l og_date :=  SYSDATE;
  9812         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9813                                      PD_job_l og_date =>  VD_log_da te,
  9814                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9815                                      PC_job_l og_message  => 'Param eter for R OWS TO PRO CESS was n ot found.  Terminatin g process. ',
  9816                                      PD_date1  => VD_rec _group_dat e,
  9817                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9818  
  9819         RETU RN;
  9820  
  9821       WHEN O THERS THEN
  9822  
  9823         VD_l og_date :=  SYSDATE;
  9824         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9825                                      PD_job_l og_date =>  VD_log_da te,
  9826                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9827                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ROWS TO P ROCESS. Te rminating  process. '
  9828                                                                      || SQLERR M,1,2000),
  9829                                      PD_date1  => VD_rec _group_dat e,
  9830                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9831  
  9832         RETU RN;
  9833  
  9834     END;
  9835  
  9836   -- Process  Parameter  LAST PROC ESSED LOG  ID
  9837  
  9838     BEGIN
  9839  
  9840       SELECT     Value
  9841       INTO       VN_par m_last_log _id
  9842       FROM       ADRMGT .Adr_Param eter
  9843       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  9844       AND        Parame ter_name =  VC_para_n ame_last_p roc_id;
  9845  
  9846       IF VN_ parm_last_ log_id IS  NULL THEN
  9847  
  9848         VD_l og_date :=  SYSDATE;
  9849         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9850                                      PD_job_l og_date =>  VD_log_da te,
  9851                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9852                                      PC_job_l og_message  => SUBSTR ('Paramete r ' || VC_ para_name_ last_proc_ id || ' is  NULL. Ter minating p rocess.',1 ,2000),
  9853                                      PD_date1  => VD_rec _group_dat e,
  9854                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9855  
  9856         RETU RN;
  9857  
  9858       END IF ;
  9859  
  9860     EXCEPTIO N
  9861  
  9862       WHEN N O_DATA_FOU ND THEN
  9863  
  9864         VD_l og_date :=  SYSDATE;
  9865         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9866                                      PD_job_l og_date =>  VD_log_da te,
  9867                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9868                                      PC_job_l og_message  => 'Param eter for '  || VC_par a_name_las t_proc_id  || ' was n ot found.  Terminatin g process. ',
  9869                                      PD_date1  => VD_rec _group_dat e,
  9870                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9871  
  9872         RETU RN;
  9873  
  9874       WHEN O THERS THEN
  9875  
  9876         VD_l og_date :=  SYSDATE;
  9877         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9878                                      PD_job_l og_date =>  VD_log_da te,
  9879                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9880                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ' || VC_p ara_name_l ast_proc_i d || '. Te rminating  process. '
  9881                                                                      || SQLERR M,1,2000),
  9882                                      PD_date1  => VD_rec _group_dat e,
  9883                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9884  
  9885         RETU RN;
  9886  
  9887     END;
  9888  
  9889   -- Write o ut Paramet er log mes sages for  submitted  job
  9890  
  9891     VD_log_d ate := SYS DATE;
  9892     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9893                                 PD _job_log_d ate => VD_ log_date,
  9894                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  9895                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  9896                                 PD _date1 =>  VD_rec_gro up_date,
  9897                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9898  
  9899     VD_log_d ate := SYS DATE;
  9900     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9901                                 PD _job_log_d ate => VD_ log_date,
  9902                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  9903                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  9904                                 PD _date1 =>  VD_rec_gro up_date,
  9905                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9906  
  9907     VD_log_d ate := SYS DATE;
  9908     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9909                                 PD _job_log_d ate => VD_ log_date,
  9910                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  9911                                 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),
  9912                                 PD _date1 =>  VD_rec_gro up_date,
  9913                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9914  
  9915  
  9916     VD_log_d ate := SYS DATE;
  9917     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9918                                 PD _job_log_d ate => VD_ log_date,
  9919                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  9920                                 PC _job_log_m essage =>  SUBSTR(' O LDEST HL7  ERROR TEXT  DAYS KEPT : ' || VN_ parm_hl7_e rr_txt_age ,1,2000),
  9921                                 PD _date1 =>  VD_rec_gro up_date,
  9922                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9923  
  9924     VD_log_d ate := SYS DATE;
  9925     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9926                                 PD _job_log_d ate => VD_ log_date,
  9927                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  9928                                 PC _job_log_m essage =>  SUBSTR(' O LDEST LOG  FILE DAYS  KEPT: ' ||  VN_parm_l og_file_ag e,1,2000),
  9929                                 PD _date1 =>  VD_rec_gro up_date,
  9930                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9931  
  9932     VD_log_d ate := SYS DATE;
  9933     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9934                                 PD _job_log_d ate => VD_ log_date,
  9935                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  9936                                 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),
  9937                                 PD _date1 =>  VD_rec_gro up_date,
  9938                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9939  
  9940     VD_log_d ate := SYS DATE;
  9941     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9942                                 PD _job_log_d ate => VD_ log_date,
  9943                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  9944                                 PC _job_log_m essage =>  SUBSTR(' '  || VC_par a_name_las t_proc_id  || ': ' ||  NVL(TO_CH AR(VN_parm _last_log_ id),'NULL' ),1,2000),
  9945                                 PD _date1 =>  VD_rec_gro up_date,
  9946                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9947  
  9948   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  9949  
  9950     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  9951  
  9952       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  9953  
  9954       VD_log _date := S YSDATE;
  9955       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9956                                    PD_job_log _date => V D_log_date ,
  9957                                    PC_job_sta tus => SUB STR('WARNI NG     - J ob table p arameters' ,1,60),
  9958                                    PC_job_log _message = > SUBSTR('  Processin g paramete r ROWS TO  PROCESS (i n each loo p) has bee n overridd en.'
  9959                                                              || ' T he overrid e value is : ' || NVL (TO_CHAR(V N_parm_row s_to_proce ss),'NULL' ),1,2000),
  9960                                    PD_date1 = > VD_rec_g roup_date,
  9961                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  9962  
  9963     END IF;
  9964  
  9965   -- ******* ********** ********** ********** ********** ********** ********** ********
  9966   -- *
  9967   -- * Check  to see if  process i s running  on a repor ting datab ase.
  9968   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  9969   -- *
  9970   -- ******* ********** ********** ********** ********** ********** ********** ********
  9971  
  9972     IF NOT V B_allow_rp t_inst THE N
  9973  
  9974       BEGIN
  9975  
  9976         VD_l og_date :=  SYSDATE;
  9977         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9978                                      PD_job_l og_date =>  VD_log_da te,
  9979                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  9980                                      PD_date1  => VD_rec _group_dat e,
  9981                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9982  
  9983         SELE CT    Inst ance_name
  9984         INTO       VC_i nstance_na me
  9985         FROM       V$in stance;
  9986  
  9987         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  9988  
  9989           VD _log_date  := SYSDATE ;
  9990           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  9991                                        PD_job _log_date  => VD_log_ date,
  9992                                        PC_job _status =>  SUBSTR('E RROR        - Process ing Failed ',1,60),
  9993                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  9994                                                                     || VC_inst ance_name
  9995                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  9996                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  9997                                        PD_dat e1 => VD_r ec_group_d ate,
  9998                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  9999  
  10000           RE TURN;
  10001  
  10002         END  IF;
  10003  
  10004       EXCEPT ION
  10005  
  10006         WHEN  OTHERS TH EN
  10007  
  10008           VD _log_date  := SYSDATE ;
  10009           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  10010                                        PD_job _log_date  => VD_log_ date,
  10011                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  10012                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  10013                                        PD_dat e1 => VD_r ec_group_d ate,
  10014                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  10015  
  10016           RE TURN;
  10017  
  10018       END;
  10019  
  10020     END IF;
  10021  
  10022   -- ******* ********** ********** ********** ********** ********** ********** ********
  10023   -- *
  10024   -- * Check  to see if  the job h as already  run today
  10025   -- *  - If  running i n stand-al one mode,  don't chec k.
  10026   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  10027   -- *
  10028   -- ******* ********** ********** ********** ********** ********** ********** ********
  10029  
  10030     IF NOT P B_run_stan dalone THE N
  10031  
  10032       BEGIN
  10033  
  10034         VD_l og_date :=  SYSDATE;
  10035         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10036                                      PD_job_l og_date =>  VD_log_da te,
  10037                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  10038                                      PD_date1  => VD_rec _group_dat e,
  10039                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10040  
  10041         SELE CT    COUN T(*)
  10042         INTO       VN_r ec_count
  10043         FROM       ADRM GT.Job_Pro cess_Logs
  10044         WHER E     Job_ name = CC_ process_na me
  10045         AND        Date 1 = VD_rec _group_dat e
  10046         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  10047  
  10048         IF V N_rec_coun t > 0 THEN
  10049  
  10050           VD _log_date  := SYSDATE ;
  10051           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  10052                                        PD_job _log_date  => VD_log_ date,
  10053                                        PC_job _status =>  SUBSTR('W ARNING      - This da te has alr eady been  processed' ,1,60),
  10054                                        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),
  10055                                        PD_dat e1 => VD_r ec_group_d ate,
  10056                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  10057  
  10058           RE TURN;
  10059  
  10060         END  IF;
  10061  
  10062       EXCEPT ION
  10063  
  10064         WHEN  OTHERS TH EN
  10065  
  10066           VD _log_date  := SYSDATE ;
  10067           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  10068                                        PD_job _log_date  => VD_log_ date,
  10069                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  10070                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  10071                                        PD_dat e1 => VD_r ec_group_d ate,
  10072                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  10073  
  10074           RE TURN;
  10075  
  10076       END;
  10077  
  10078     END IF;
  10079  
  10080   -- ******* ********** ********** ********** ********** ********** ********** ********
  10081   -- *
  10082   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  10083   -- *  - If  yes, then  end this  job.
  10084   -- *
  10085   -- ******* ********** ********** ********** ********** ********** ********** ********
  10086  
  10087     SELECT C OUNT(*)
  10088     INTO   V N_job_coun t
  10089     FROM   S YS.DBA_JOB S_RUNNING  R,
  10090            S YS.DBA_JOB S J
  10091     WHERE  J .JOB = R.J OB
  10092     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  10093  
  10094     IF VN_jo b_count >  1 THEN
  10095  
  10096       VD_log _date := S YSDATE;
  10097       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10098                                    PD_job_log _date => V D_log_date ,
  10099                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  10100                                    PC_job_log _message = > SUBSTR(' There is a nother '
  10101                                                                || C C_sp_name
  10102                                                                || '  job runni ng.'
  10103                                                                || '  Exiting j ob without  running.' ,1,2000),
  10104                                    PD_date1 = > VD_rec_g roup_date,
  10105                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  10106  
  10107       RETURN ;
  10108  
  10109     ELSE
  10110  
  10111       IF VB_ run_standa lone THEN
  10112  
  10113         VD_l og_date :=  SYSDATE;
  10114         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10115                                      PD_job_l og_date =>  VD_log_da te,
  10116                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  10117                                      PD_date1  => VD_rec _group_dat e,
  10118                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10119  
  10120       ELSE
  10121  
  10122         SELE CT    MAX( J.Job)
  10123         INTO       VN_j ob_number
  10124         FROM       SYS. DBA_JOBS_R UNNING R,
  10125                    SYS. DBA_JOBS J
  10126         WHER E     J.JO B = R.JOB
  10127         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  10128  
  10129         VD_l og_date :=  SYSDATE;
  10130         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10131                                      PD_job_l og_date =>  VD_log_da te,
  10132                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  10133                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  10134                                                                      || VN_job _number,1, 2000),
  10135                                      PD_date1  => VD_rec _group_dat e,
  10136                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10137  
  10138       END IF ;
  10139  
  10140     END IF;
  10141  
  10142   -- ******* ********** ********** ********** ********** ********** ********** ********
  10143   -- *
  10144   -- * Main  processing  loop
  10145   -- *
  10146   -- ******* ********** ********** ********** ********** ********** ********** ********
  10147  
  10148     VN_pass_ count := 0 ;
  10149     VN_updat e_count :=  0;
  10150     VD_proce ss_start_d ate := SYS DATE;
  10151  
  10152   -- ******* ********** ********** ********** ********** ********** ********** ********
  10153   -- * Remov e old proc ess log ro ws
  10154   -- ******* ********** ********** ********** ********** ********** ********** ********
  10155     BEGIN
  10156  
  10157       VD_log _date := S YSDATE;
  10158       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10159                                    PD_job_log _date => V D_log_date ,
  10160                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  10161                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  10162                                                                   | | VN_parm_ log_file_a ge
  10163                                                                   | | ' days o ld',1,2000 ),
  10164                                    PD_date1 = > VD_rec_g roup_date,
  10165                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  10166  
  10167       DELETE
  10168       FROM       ADRMGT .Job_Proce ss_Logs
  10169       WHERE      Job_na me = CC_pr ocess_name
  10170       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  10171  
  10172       COMMIT ;
  10173  
  10174       VD_log _date := S YSDATE;
  10175       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10176                                    PD_job_log _date => V D_log_date ,
  10177                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  10178                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  10179                                                                   | | VN_parm_ log_file_a ge
  10180                                                                   | | ' days o ld',1,2000 ),
  10181                                    PD_date1 = > VD_rec_g roup_date,
  10182                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  10183  
  10184  
  10185     EXCEPTIO N
  10186  
  10187       WHEN N O_DATA_FOU ND THEN
  10188  
  10189         NULL ;
  10190  
  10191       WHEN O THERS THEN
  10192  
  10193         VD_l og_date :=  SYSDATE;
  10194         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10195                                      PD_job_l og_date  = > VD_log_d ate,
  10196                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess logs .',1,60),
  10197                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  10198                                      PD_date1  => VD_rec _group_dat e,
  10199                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10200  
  10201     END;
  10202  
  10203   -- ******* ********** ********** ********** ********** ********** ********** ********
  10204   -- * Remov e old proc ess error  rows
  10205   -- ******* ********** ********** ********** ********** ********** ********** ********
  10206  
  10207     BEGIN
  10208  
  10209       VD_log _date := S YSDATE;
  10210       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10211                                    PD_job_log _date => V D_log_date ,
  10212                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  10213                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  10214                                                                   | | VN_parm_ log_file_a ge
  10215                                                                   | | ' days o ld',1,2000 ),
  10216                                    PD_date1 = > VD_rec_g roup_date,
  10217                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  10218  
  10219       DELETE
  10220       FROM       ADRMGT .Job_Proce ss_Errs
  10221       WHERE      Job_na me = CC_pr ocess_name
  10222       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  10223  
  10224       COMMIT ;
  10225  
  10226       VD_log _date := S YSDATE;
  10227       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10228                                    PD_job_log _date => V D_log_date ,
  10229                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  10230                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  10231                                                                   | | VN_parm_ log_file_a ge
  10232                                                                   | | ' days o ld',1,2000 ),
  10233                                    PD_date1 = > VD_rec_g roup_date,
  10234                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  10235  
  10236     EXCEPTIO N
  10237  
  10238       WHEN N O_DATA_FOU ND THEN
  10239  
  10240         NULL ;
  10241  
  10242       WHEN O THERS THEN
  10243  
  10244         VD_l og_date :=  SYSDATE;
  10245         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10246                                      PD_job_l og_date  = > VD_log_d ate,
  10247                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess erro rs.',1,60) ,
  10248                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  10249                                      PD_date1  => VD_rec _group_dat e,
  10250                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10251  
  10252     END;
  10253  
  10254   -- ******* ********** ********** ********** ********** ********** ********** ********
  10255   -- * Main  record cur sor logic
  10256   -- ******* ********** ********** ********** ********** ********** ********** ********
  10257  
  10258     BEGIN
  10259  
  10260       VN_max _log_id :=  0;
  10261       VN_pas s_count :=  0;
  10262       VN_upd ate_count  := 0;
  10263  
  10264       OPEN C _hl7_id;
  10265  
  10266       LOOP
  10267  
  10268         FETC H C_hl7_id
  10269         BULK  COLLECT I NTO T_hl7_ id
  10270         LIMI T VN_parm_ rows_to_pr ocess;
  10271  
  10272         EXIT  WHEN T_hl 7_id.COUNT  = 0;
  10273  
  10274         FORA LL I_hl7_i d IN T_hl7 _id.FIRST. .T_hl7_id. last
  10275           UP DATE    AD R.Hl7_tran saction_lo g
  10276           SE T       In ternal_err or_text =  NULL
  10277           WH ERE     Hl 7_transact ion_log_id  = T_hl7_i d(I_hl7_id );
  10278  
  10279         COMM IT;
  10280  
  10281         FOR  I_hl7_id I N T_hl7_id .FIRST..T_ hl7_id.las t LOOP
  10282  
  10283           IF  T_hl7_id( I_hl7_id)  > VN_max_l og_id THEN
  10284  
  10285              VN_max_log _id := T_h l7_id(I_hl 7_id);
  10286  
  10287           EN D IF;
  10288  
  10289         END  LOOP;
  10290  
  10291         VN_p ass_count  := VN_pass _count + 1 ;
  10292  
  10293         VN_u pdate_coun t := VN_up date_count  + T_hl7_i d.COUNT;
  10294  
  10295       END LO OP;
  10296  
  10297       CLOSE  C_hl7_id;
  10298  
  10299       BEGIN
  10300  
  10301         IF N VL(VN_max_ log_id,0)  <> 0 THEN
  10302  
  10303           UP DATE    AD RMGT.Adr_P arameter
  10304           SE T       Va lue = VN_m ax_log_id
  10305           WH ERE     Ap plication_ name = 'HL 7 NULL INT ERNAL_ERRO R_TEXT COL UMN'
  10306           AN D       Pa rameter_na me = VC_pa ra_name_la st_proc_id ;
  10307  
  10308           CO MMIT;
  10309  
  10310         ELSE
  10311  
  10312           VN _max_log_i d := VN_pa rm_last_lo g_id;
  10313  
  10314         END  IF;
  10315  
  10316       EXCEPT ION
  10317  
  10318         WHEN  OTHERS TH EN
  10319  
  10320           VD _log_date  := SYSDATE ;
  10321           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  10322                                        PD_job _log_date   => VD_log _date,
  10323                                        PC_job _status =>  SUBSTR('E RROR        - Unknown  error upd ating ' ||  VC_para_n ame_last_p roc_id ||  '.',1,60),
  10324                                        PC_job _log_messa ge => SUBS TR(VC_para _name_last _proc_id | | ': ' ||  VN_max_log _id
  10325                                                                        || '. '  || SQLERR M,1,2000),
  10326                                        PD_dat e1 => VD_r ec_group_d ate,
  10327                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  10328  
  10329           RE TURN;
  10330  
  10331       END;
  10332  
  10333   -- Process  completio n informat ion
  10334  
  10335       VD_log _date := S YSDATE;
  10336       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10337                                    PD_job_log _date => V D_log_date ,
  10338                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  10339                                    PD_date1 = > VD_rec_g roup_date,
  10340                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  10341                                    PN_numeric 2 => VN_pa ss_count,
  10342                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  10343  
  10344       VD_log _date := S YSDATE;
  10345       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10346                                    PD_job_log _date => V D_log_date ,
  10347                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  10348                                    PD_date1 = > VD_rec_g roup_date,
  10349                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  10350                                    PN_numeric 2 => VN_up date_count ,
  10351                                    PC_text2 = > SUBSTR(' Updated Re cord Count ',1,255));
  10352  
  10353       VD_log _date := S YSDATE;
  10354       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10355                                    PD_job_log _date => V D_log_date ,
  10356                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  10357                                    PD_date1 = > VD_rec_g roup_date,
  10358                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  10359                                    PN_numeric 2 => VN_ma x_log_id,
  10360                                    PC_text2 = > SUBSTR(' Last proce ssed log i d',1,255)) ;
  10361  
  10362       VD_pro cess_end_d ate := SYS DATE;
  10363       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  10364                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  10365                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  10366                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  10367                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  10368  
  10369       VD_log _date := S YSDATE;
  10370       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10371                                    PD_job_log _date => V D_log_date ,
  10372                                    PC_job_sta tus => SUB STR('SUCCE SS     - P rocessing  Completed' ,1,60),
  10373                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  10374                                    PD_date1 = > VD_rec_g roup_date,
  10375                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  10376  
  10377     EXCEPTIO N
  10378  
  10379       WHEN O THERS THEN
  10380  
  10381         VD_l og_date :=  SYSDATE;
  10382         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10383                                      PD_job_l og_date  = > VD_log_d ate,
  10384                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror updat ing Intern al_error_t ext.',1,60 ),
  10385                                      PC_job_l og_message  => SUBSTR ('Cursor L oop Count:  ' || VN_p ass_count
  10386                                                                      || ' Upda ted Record  Count: '  || VN_upda te_count
  10387                                                                      || '. ' | | SQLERRM, 1,2000),
  10388                                      PD_date1  => VD_rec _group_dat e,
  10389                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10390  
  10391         RETU RN;
  10392  
  10393     END;
  10394  
  10395   EXCEPTION
  10396  
  10397     WHEN OTH ERS THEN
  10398  
  10399       ROLLBA CK;
  10400  
  10401       VD_log _date := S YSDATE;
  10402       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10403                                    PD_job_err or_date  = > VD_log_d ate,
  10404                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  10405                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Hl7_Txn_Lo g_Null_Err _Col_Sp.'
  10406                                                                  ||  SQLERRM,1 ,2000),
  10407                                    PD_date1 = > VD_rec_g roup_date,
  10408                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  10409  
  10410       VD_log _date := S YSDATE;
  10411       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10412                                    PD_job_log _date => V D_log_date ,
  10413                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  10414                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  10415                                    PD_date1 = > VD_rec_g roup_date,
  10416                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  10417  
  10418   END Hl7_Tx n_Log_Null _Err_Col_S p_03;
  10419   /
  10420   DROP PROCE DURE ADR.H L7_TXN_LOG _NULL_ERR_ COL_SP_04;
  10421  
  10422   CREATE OR  REPLACE PR OCEDURE AD R.Hl7_Txn_ Log_Null_E rr_Col_Sp_ 04 (
  10423      PB_run_ standalone     IN BOO LEAN DEFAU LT FALSE,
  10424      PB_allo w_rpt_inst     IN BOO LEAN DEFAU LT FALSE,
  10425      PN_rows _to_proces s   IN NUM BER DEFAUL T NULL)
  10426   IS
  10427      -- **** ********** ********** ********** ********** ********** ********** ********** *
  10428      -- * Pr ocedure: H l7_Txn_Log _Null_Erro r_Col
  10429      -- *
  10430      -- *    Update HL7  transcati ons to rem ove data f rom the in ternal_err or_text
  10431      -- *    column for  all rows  more than  6 months o ld.
  10432      -- *
  10433      -- * Pa rameters:
  10434      -- *
  10435      -- *  P B_run_stan dalone   I gnore DBMS _JOB logic  for check ing runnin g jobs.
  10436      -- *                          Default: F ALSE
  10437      -- *
  10438      -- *  P B_allow_rp t_inst   A llow store d procedur e to be su bmitted in  the
  10439      -- *                        D BMS_JOB qu eue on the  ADR repor ting datab ases
  10440      -- *                          Default: F ALSE
  10441      -- *
  10442      -- **** ********** ********** ********** ********** ********** ********** ********** *
  10443      --
  10444      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  10445      -- Date         Au thor             Desc ription
  10446      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  10447      -- 06/2 3/2010  Cr aig Wood         Crea ted for CC R 1100.
  10448      --
  10449      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  10450  
  10451      -- CONS TANTS
  10452  
  10453      CC_no                                  V ARCHAR2 (1 ) := 'N';
  10454      CC_parm _applicati on_name    CONSTANT V ARCHAR2 (8 0)
  10455         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  10456      CC_parm _hl7_err_t xt_age     CONSTANT V ARCHAR2 (5 0)
  10457                                                 := 'OLDE ST HL7 ERR OR TEXT DA YS' ;
  10458      CC_parm _last_hl7_ id         CONSTANT V ARCHAR2 (5 0)
  10459                                                 := 'LAST  HL7 ID PR OCESSED' ;
  10460      CC_parm _log_file_ age        CONSTANT V ARCHAR2 (5 0)
  10461                                                 := 'OLDE ST LOG FIL E DAYS' ;
  10462      CC_proc ess_name              CONSTANT V ARCHAR2 (6 0)
  10463         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  10464      CC_sp_n ame                   CONSTANT V ARCHAR2 (3 5)
  10465         := ' Hl7_Txn_Lo g_Null_Err _Col_Sp_'  || '04' ;
  10466      CC_yes                                 V ARCHAR2 (1 ) := 'Y';
  10467  
  10468      -- VARI ABLES
  10469  
  10470      VB_allo w_rpt_inst                     B OOLEAN :=  FALSE;
  10471      VB_run_ standalone                     B OOLEAN :=  FALSE;
  10472  
  10473      VC_allo w_rpt_inst                     V ARCHAR2 (5 ) := NULL;
  10474      VC_inst ance_name                      V ARCHAR2 (1 6);
  10475      VC_proc ess_durati on                  V ARCHAR2 (2 5);
  10476      VC_run_ standalone                     V ARCHAR2 (5 ) := NULL;
  10477      VC_sql_ statement                      V ARCHAR2 (2 000);
  10478      VC_para _name_last _proc_id            V ARCHAR2 (3 0):= 'P' | | '04' ||  ' LAST PRO CESSED LOG  ID';
  10479  
  10480     VD_log_d ate                            D ATE;
  10481     VD_proce ss_end_dat e                   D ATE;
  10482     VD_proce ss_start_d ate                 D ATE;
  10483     VD_rec_g roup_date                      D ATE;
  10484  
  10485     VN_job_c ount                           N UMBER := 0 ;
  10486     VN_job_n umber                          N UMBER;
  10487     VN_max_l og_id                          N UMBER := 0 ;
  10488     VN_parm_ hl7_err_tx t_age               N UMBER;
  10489     VN_parm_ log_file_a ge                  N UMBER;
  10490     VN_parm_ last_log_i d                   N UMBER := 0 ;
  10491     VN_parm_ rows_to_pr ocess               N UMBER;
  10492     VN_pass_ count                          N UMBER := 0 ;
  10493     VN_rec_c ount                           N UMBER := 0 ;
  10494     VN_updat e_count                        N UMBER := 0 ;
  10495  
  10496  
  10497   -- CURSORS
  10498  
  10499     CURSOR C _hl7_id IS
  10500       SELECT   /*+ para llel(4) */  Hl7_trans action_log _id
  10501       FROM       Hl7_tr ansaction_ log PARTIT ION (HL7_T RANSACTION _LOG_P04)
  10502       WHERE      Hl7_tr ansaction_ log_id > V N_parm_las t_log_id
  10503       AND        Record _created_d ate < TRUN C(SYSDATE)  - VN_parm _hl7_err_t xt_age
  10504       AND        Intern al_error_t ext IS NOT  NULL;
  10505  
  10506   -- TYPES
  10507  
  10508     TYPE TT_ hl7_id IS
  10509       TABLE  OF ADR.Hl7 _Transacti on_Log.Hl7 _transacti on_log_id% TYPE;
  10510  
  10511   -- MEMORY  TABLES
  10512  
  10513     T_hl7_id                                T T_hl7_id;
  10514  
  10515   -- ******* ********** ********** ********** ********** ********** ********** *******
  10516   -- *
  10517   -- *  MAIN  PROCEDURE :
  10518   -- *
  10519   -- ******* ********** ********** ********** ********** ********** ********** *******
  10520  
  10521   BEGIN
  10522  
  10523     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  10524     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  10525  
  10526     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  10527     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  10528  
  10529     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  10530     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  10531  
  10532     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  10533     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  10534  
  10535     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  QUERY PARA LLEL ' ||   2;
  10536     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  10537  
  10538     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  DML PARALL EL ' || 2;
  10539     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  10540  
  10541     VD_rec_g roup_date  := TRUNC(S YSDATE);
  10542  
  10543     VD_log_d ate := SYS DATE;
  10544     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  10545                                 PD _job_log_d ate => VD_ log_date,
  10546                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  10547                                 PD _date1 =>  VD_rec_gro up_date,
  10548                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  10549  
  10550   -- ******* ********** ********** ********** ********** ********** ********** ********
  10551   -- *
  10552   -- * Valid ate input  parameters
  10553   -- *
  10554   -- ******* ********** ********** ********** ********** ********** ********** ********
  10555  
  10556   -- * Check  run stand alone flag
  10557  
  10558     IF PB_ru n_standalo ne IS NULL
  10559      OR NOT  PB_run_sta ndalone TH EN
  10560  
  10561       VB_run _standalon e := FALSE ;
  10562       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  10563  
  10564     ELSE
  10565  
  10566       VB_run _standalon e := TRUE;
  10567       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  10568  
  10569     END IF;
  10570  
  10571   -- * Check  run on re port insta nce flag
  10572  
  10573     IF PB_al low_rpt_in st IS NULL
  10574      OR NOT  PB_allow_r pt_inst TH EN
  10575  
  10576       VB_all ow_rpt_ins t := FALSE ;
  10577       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  10578  
  10579     ELSE
  10580  
  10581       VB_all ow_rpt_ins t := TRUE;
  10582       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  10583  
  10584     END IF;
  10585  
  10586   -- ******* ********** ********** ********** ********** ********** ********** ********
  10587   -- *
  10588   -- * Retri eve proces sing param eters
  10589   -- *
  10590   -- ******* ********** ********** ********** ********** ********** ********** ********
  10591  
  10592   -- Process  Parameter  OLDEST HL 7 ERROR TE XT DAYS KE PT
  10593  
  10594     BEGIN
  10595  
  10596       SELECT     Value
  10597       INTO       VN_par m_hl7_err_ txt_age
  10598       FROM       ADRMGT .Adr_Param eter
  10599       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  10600       AND        Parame ter_name =  'OLDEST H L7 ERROR T EXT DAYS K EPT';
  10601  
  10602       IF VN_ parm_hl7_e rr_txt_age  IS NULL T HEN
  10603  
  10604         VD_l og_date :=  SYSDATE;
  10605         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10606                                      PD_job_l og_date =>  VD_log_da te,
  10607                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10608                                      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),
  10609                                      PD_date1  => VD_rec _group_dat e,
  10610                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10611  
  10612         RETU RN;
  10613  
  10614       END IF ;
  10615  
  10616     EXCEPTIO N
  10617  
  10618       WHEN N O_DATA_FOU ND THEN
  10619  
  10620         VD_l og_date :=  SYSDATE;
  10621         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10622                                      PD_job_l og_date =>  VD_log_da te,
  10623                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10624                                      PC_job_l og_message  => 'Param eter for O LDEST HL7  ERROR TEXT  DAYS KEPT  was not f ound. Term inating pr ocess.',
  10625                                      PD_date1  => VD_rec _group_dat e,
  10626                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10627  
  10628         RETU RN;
  10629  
  10630       WHEN O THERS THEN
  10631  
  10632         VD_l og_date :=  SYSDATE;
  10633         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10634                                      PD_job_l og_date =>  VD_log_da te,
  10635                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10636                                      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. '
  10637                                                                      || SQLERR M,1,2000),
  10638                                      PD_date1  => VD_rec _group_dat e,
  10639                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10640  
  10641         RETU RN;
  10642  
  10643     END;
  10644  
  10645   -- Process  Parameter  OLDEST LO G FILE DAY S KEPT
  10646  
  10647     BEGIN
  10648  
  10649       SELECT     Value
  10650       INTO       VN_par m_log_file _age
  10651       FROM       ADRMGT .Adr_Param eter
  10652       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  10653       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  10654  
  10655       IF VN_ parm_log_f ile_age IS  NULL THEN
  10656  
  10657         VD_l og_date :=  SYSDATE;
  10658         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10659                                      PD_job_l og_date =>  VD_log_da te,
  10660                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10661                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST L OG FILE DA YS KEPT is  NULL. Ter minating p rocess.',1 ,2000),
  10662                                      PD_date1  => VD_rec _group_dat e,
  10663                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10664  
  10665         RETU RN;
  10666  
  10667       END IF ;
  10668  
  10669     EXCEPTIO N
  10670  
  10671       WHEN N O_DATA_FOU ND THEN
  10672  
  10673         VD_l og_date :=  SYSDATE;
  10674         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10675                                      PD_job_l og_date =>  VD_log_da te,
  10676                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10677                                      PC_job_l og_message  => 'Param eter for O LDEST LOG  FILE DAYS  KEPT was n ot found.  Terminatin g process. ',
  10678                                      PD_date1  => VD_rec _group_dat e,
  10679                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10680  
  10681         RETU RN;
  10682  
  10683       WHEN O THERS THEN
  10684  
  10685         VD_l og_date :=  SYSDATE;
  10686         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10687                                      PD_job_l og_date =>  VD_log_da te,
  10688                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10689                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  OLDEST LO G FILE DAY S KEPT. Te rminating  process. '
  10690                                                                      || SQLERR M,1,2000),
  10691                                      PD_date1  => VD_rec _group_dat e,
  10692                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10693  
  10694         RETU RN;
  10695  
  10696     END;
  10697  
  10698   -- Process  Parameter  ROWS TO P ROCESS
  10699  
  10700     BEGIN
  10701  
  10702       SELECT     Value
  10703       INTO       VN_par m_rows_to_ process
  10704       FROM       ADRMGT .Adr_Param eter
  10705       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  10706       AND        Parame ter_name =  'ROWS TO  PROCESS';
  10707  
  10708       IF VN_ parm_rows_ to_process  IS NULL T HEN
  10709  
  10710         VD_l og_date :=  SYSDATE;
  10711         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10712                                      PD_job_l og_date =>  VD_log_da te,
  10713                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10714                                      PC_job_l og_message  => SUBSTR ('Paramete r ROWS TO  PROCESS is  NULL. Ter minating p rocess.',1 ,2000),
  10715                                      PD_date1  => VD_rec _group_dat e,
  10716                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10717  
  10718         RETU RN;
  10719  
  10720       END IF ;
  10721  
  10722     EXCEPTIO N
  10723  
  10724       WHEN N O_DATA_FOU ND THEN
  10725  
  10726         VD_l og_date :=  SYSDATE;
  10727         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10728                                      PD_job_l og_date =>  VD_log_da te,
  10729                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10730                                      PC_job_l og_message  => 'Param eter for R OWS TO PRO CESS was n ot found.  Terminatin g process. ',
  10731                                      PD_date1  => VD_rec _group_dat e,
  10732                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10733  
  10734         RETU RN;
  10735  
  10736       WHEN O THERS THEN
  10737  
  10738         VD_l og_date :=  SYSDATE;
  10739         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10740                                      PD_job_l og_date =>  VD_log_da te,
  10741                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10742                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ROWS TO P ROCESS. Te rminating  process. '
  10743                                                                      || SQLERR M,1,2000),
  10744                                      PD_date1  => VD_rec _group_dat e,
  10745                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10746  
  10747         RETU RN;
  10748  
  10749     END;
  10750  
  10751   -- Process  Parameter  LAST PROC ESSED LOG  ID
  10752  
  10753     BEGIN
  10754  
  10755       SELECT     Value
  10756       INTO       VN_par m_last_log _id
  10757       FROM       ADRMGT .Adr_Param eter
  10758       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  10759       AND        Parame ter_name =  VC_para_n ame_last_p roc_id;
  10760  
  10761       IF VN_ parm_last_ log_id IS  NULL THEN
  10762  
  10763         VD_l og_date :=  SYSDATE;
  10764         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10765                                      PD_job_l og_date =>  VD_log_da te,
  10766                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10767                                      PC_job_l og_message  => SUBSTR ('Paramete r ' || VC_ para_name_ last_proc_ id || ' is  NULL. Ter minating p rocess.',1 ,2000),
  10768                                      PD_date1  => VD_rec _group_dat e,
  10769                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10770  
  10771         RETU RN;
  10772  
  10773       END IF ;
  10774  
  10775     EXCEPTIO N
  10776  
  10777       WHEN N O_DATA_FOU ND THEN
  10778  
  10779         VD_l og_date :=  SYSDATE;
  10780         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10781                                      PD_job_l og_date =>  VD_log_da te,
  10782                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10783                                      PC_job_l og_message  => 'Param eter for '  || VC_par a_name_las t_proc_id  || ' was n ot found.  Terminatin g process. ',
  10784                                      PD_date1  => VD_rec _group_dat e,
  10785                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10786  
  10787         RETU RN;
  10788  
  10789       WHEN O THERS THEN
  10790  
  10791         VD_l og_date :=  SYSDATE;
  10792         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10793                                      PD_job_l og_date =>  VD_log_da te,
  10794                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10795                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ' || VC_p ara_name_l ast_proc_i d || '. Te rminating  process. '
  10796                                                                      || SQLERR M,1,2000),
  10797                                      PD_date1  => VD_rec _group_dat e,
  10798                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10799  
  10800         RETU RN;
  10801  
  10802     END;
  10803  
  10804   -- Write o ut Paramet er log mes sages for  submitted  job
  10805  
  10806     VD_log_d ate := SYS DATE;
  10807     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  10808                                 PD _job_log_d ate => VD_ log_date,
  10809                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  10810                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  10811                                 PD _date1 =>  VD_rec_gro up_date,
  10812                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  10813  
  10814     VD_log_d ate := SYS DATE;
  10815     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  10816                                 PD _job_log_d ate => VD_ log_date,
  10817                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  10818                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  10819                                 PD _date1 =>  VD_rec_gro up_date,
  10820                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  10821  
  10822     VD_log_d ate := SYS DATE;
  10823     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  10824                                 PD _job_log_d ate => VD_ log_date,
  10825                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  10826                                 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),
  10827                                 PD _date1 =>  VD_rec_gro up_date,
  10828                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  10829  
  10830  
  10831     VD_log_d ate := SYS DATE;
  10832     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  10833                                 PD _job_log_d ate => VD_ log_date,
  10834                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  10835                                 PC _job_log_m essage =>  SUBSTR(' O LDEST HL7  ERROR TEXT  DAYS KEPT : ' || VN_ parm_hl7_e rr_txt_age ,1,2000),
  10836                                 PD _date1 =>  VD_rec_gro up_date,
  10837                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  10838  
  10839     VD_log_d ate := SYS DATE;
  10840     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  10841                                 PD _job_log_d ate => VD_ log_date,
  10842                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  10843                                 PC _job_log_m essage =>  SUBSTR(' O LDEST LOG  FILE DAYS  KEPT: ' ||  VN_parm_l og_file_ag e,1,2000),
  10844                                 PD _date1 =>  VD_rec_gro up_date,
  10845                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  10846  
  10847     VD_log_d ate := SYS DATE;
  10848     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  10849                                 PD _job_log_d ate => VD_ log_date,
  10850                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  10851                                 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),
  10852                                 PD _date1 =>  VD_rec_gro up_date,
  10853                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  10854  
  10855     VD_log_d ate := SYS DATE;
  10856     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  10857                                 PD _job_log_d ate => VD_ log_date,
  10858                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  10859                                 PC _job_log_m essage =>  SUBSTR(' '  || VC_par a_name_las t_proc_id  || ': ' ||  NVL(TO_CH AR(VN_parm _last_log_ id),'NULL' ),1,2000),
  10860                                 PD _date1 =>  VD_rec_gro up_date,
  10861                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  10862  
  10863   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  10864  
  10865     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  10866  
  10867       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  10868  
  10869       VD_log _date := S YSDATE;
  10870       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10871                                    PD_job_log _date => V D_log_date ,
  10872                                    PC_job_sta tus => SUB STR('WARNI NG     - J ob table p arameters' ,1,60),
  10873                                    PC_job_log _message = > SUBSTR('  Processin g paramete r ROWS TO  PROCESS (i n each loo p) has bee n overridd en.'
  10874                                                              || ' T he overrid e value is : ' || NVL (TO_CHAR(V N_parm_row s_to_proce ss),'NULL' ),1,2000),
  10875                                    PD_date1 = > VD_rec_g roup_date,
  10876                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  10877  
  10878     END IF;
  10879  
  10880   -- ******* ********** ********** ********** ********** ********** ********** ********
  10881   -- *
  10882   -- * Check  to see if  process i s running  on a repor ting datab ase.
  10883   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  10884   -- *
  10885   -- ******* ********** ********** ********** ********** ********** ********** ********
  10886  
  10887     IF NOT V B_allow_rp t_inst THE N
  10888  
  10889       BEGIN
  10890  
  10891         VD_l og_date :=  SYSDATE;
  10892         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10893                                      PD_job_l og_date =>  VD_log_da te,
  10894                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  10895                                      PD_date1  => VD_rec _group_dat e,
  10896                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10897  
  10898         SELE CT    Inst ance_name
  10899         INTO       VC_i nstance_na me
  10900         FROM       V$in stance;
  10901  
  10902         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  10903  
  10904           VD _log_date  := SYSDATE ;
  10905           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  10906                                        PD_job _log_date  => VD_log_ date,
  10907                                        PC_job _status =>  SUBSTR('E RROR        - Process ing Failed ',1,60),
  10908                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  10909                                                                     || VC_inst ance_name
  10910                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  10911                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  10912                                        PD_dat e1 => VD_r ec_group_d ate,
  10913                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  10914  
  10915           RE TURN;
  10916  
  10917         END  IF;
  10918  
  10919       EXCEPT ION
  10920  
  10921         WHEN  OTHERS TH EN
  10922  
  10923           VD _log_date  := SYSDATE ;
  10924           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  10925                                        PD_job _log_date  => VD_log_ date,
  10926                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  10927                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  10928                                        PD_dat e1 => VD_r ec_group_d ate,
  10929                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  10930  
  10931           RE TURN;
  10932  
  10933       END;
  10934  
  10935     END IF;
  10936  
  10937   -- ******* ********** ********** ********** ********** ********** ********** ********
  10938   -- *
  10939   -- * Check  to see if  the job h as already  run today
  10940   -- *  - If  running i n stand-al one mode,  don't chec k.
  10941   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  10942   -- *
  10943   -- ******* ********** ********** ********** ********** ********** ********** ********
  10944  
  10945     IF NOT P B_run_stan dalone THE N
  10946  
  10947       BEGIN
  10948  
  10949         VD_l og_date :=  SYSDATE;
  10950         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10951                                      PD_job_l og_date =>  VD_log_da te,
  10952                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  10953                                      PD_date1  => VD_rec _group_dat e,
  10954                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10955  
  10956         SELE CT    COUN T(*)
  10957         INTO       VN_r ec_count
  10958         FROM       ADRM GT.Job_Pro cess_Logs
  10959         WHER E     Job_ name = CC_ process_na me
  10960         AND        Date 1 = VD_rec _group_dat e
  10961         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  10962  
  10963         IF V N_rec_coun t > 0 THEN
  10964  
  10965           VD _log_date  := SYSDATE ;
  10966           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  10967                                        PD_job _log_date  => VD_log_ date,
  10968                                        PC_job _status =>  SUBSTR('W ARNING      - This da te has alr eady been  processed' ,1,60),
  10969                                        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),
  10970                                        PD_dat e1 => VD_r ec_group_d ate,
  10971                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  10972  
  10973           RE TURN;
  10974  
  10975         END  IF;
  10976  
  10977       EXCEPT ION
  10978  
  10979         WHEN  OTHERS TH EN
  10980  
  10981           VD _log_date  := SYSDATE ;
  10982           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  10983                                        PD_job _log_date  => VD_log_ date,
  10984                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  10985                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  10986                                        PD_dat e1 => VD_r ec_group_d ate,
  10987                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  10988  
  10989           RE TURN;
  10990  
  10991       END;
  10992  
  10993     END IF;
  10994  
  10995   -- ******* ********** ********** ********** ********** ********** ********** ********
  10996   -- *
  10997   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  10998   -- *  - If  yes, then  end this  job.
  10999   -- *
  11000   -- ******* ********** ********** ********** ********** ********** ********** ********
  11001  
  11002     SELECT C OUNT(*)
  11003     INTO   V N_job_coun t
  11004     FROM   S YS.DBA_JOB S_RUNNING  R,
  11005            S YS.DBA_JOB S J
  11006     WHERE  J .JOB = R.J OB
  11007     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  11008  
  11009     IF VN_jo b_count >  1 THEN
  11010  
  11011       VD_log _date := S YSDATE;
  11012       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11013                                    PD_job_log _date => V D_log_date ,
  11014                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  11015                                    PC_job_log _message = > SUBSTR(' There is a nother '
  11016                                                                || C C_sp_name
  11017                                                                || '  job runni ng.'
  11018                                                                || '  Exiting j ob without  running.' ,1,2000),
  11019                                    PD_date1 = > VD_rec_g roup_date,
  11020                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  11021  
  11022       RETURN ;
  11023  
  11024     ELSE
  11025  
  11026       IF VB_ run_standa lone THEN
  11027  
  11028         VD_l og_date :=  SYSDATE;
  11029         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11030                                      PD_job_l og_date =>  VD_log_da te,
  11031                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  11032                                      PD_date1  => VD_rec _group_dat e,
  11033                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11034  
  11035       ELSE
  11036  
  11037         SELE CT    MAX( J.Job)
  11038         INTO       VN_j ob_number
  11039         FROM       SYS. DBA_JOBS_R UNNING R,
  11040                    SYS. DBA_JOBS J
  11041         WHER E     J.JO B = R.JOB
  11042         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  11043  
  11044         VD_l og_date :=  SYSDATE;
  11045         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11046                                      PD_job_l og_date =>  VD_log_da te,
  11047                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  11048                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  11049                                                                      || VN_job _number,1, 2000),
  11050                                      PD_date1  => VD_rec _group_dat e,
  11051                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11052  
  11053       END IF ;
  11054  
  11055     END IF;
  11056  
  11057   -- ******* ********** ********** ********** ********** ********** ********** ********
  11058   -- *
  11059   -- * Main  processing  loop
  11060   -- *
  11061   -- ******* ********** ********** ********** ********** ********** ********** ********
  11062  
  11063     VN_pass_ count := 0 ;
  11064     VN_updat e_count :=  0;
  11065     VD_proce ss_start_d ate := SYS DATE;
  11066  
  11067   -- ******* ********** ********** ********** ********** ********** ********** ********
  11068   -- * Remov e old proc ess log ro ws
  11069   -- ******* ********** ********** ********** ********** ********** ********** ********
  11070     BEGIN
  11071  
  11072       VD_log _date := S YSDATE;
  11073       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11074                                    PD_job_log _date => V D_log_date ,
  11075                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  11076                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  11077                                                                   | | VN_parm_ log_file_a ge
  11078                                                                   | | ' days o ld',1,2000 ),
  11079                                    PD_date1 = > VD_rec_g roup_date,
  11080                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  11081  
  11082       DELETE
  11083       FROM       ADRMGT .Job_Proce ss_Logs
  11084       WHERE      Job_na me = CC_pr ocess_name
  11085       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  11086  
  11087       COMMIT ;
  11088  
  11089       VD_log _date := S YSDATE;
  11090       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11091                                    PD_job_log _date => V D_log_date ,
  11092                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  11093                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  11094                                                                   | | VN_parm_ log_file_a ge
  11095                                                                   | | ' days o ld',1,2000 ),
  11096                                    PD_date1 = > VD_rec_g roup_date,
  11097                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  11098  
  11099  
  11100     EXCEPTIO N
  11101  
  11102       WHEN N O_DATA_FOU ND THEN
  11103  
  11104         NULL ;
  11105  
  11106       WHEN O THERS THEN
  11107  
  11108         VD_l og_date :=  SYSDATE;
  11109         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11110                                      PD_job_l og_date  = > VD_log_d ate,
  11111                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess logs .',1,60),
  11112                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  11113                                      PD_date1  => VD_rec _group_dat e,
  11114                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11115  
  11116     END;
  11117  
  11118   -- ******* ********** ********** ********** ********** ********** ********** ********
  11119   -- * Remov e old proc ess error  rows
  11120   -- ******* ********** ********** ********** ********** ********** ********** ********
  11121  
  11122     BEGIN
  11123  
  11124       VD_log _date := S YSDATE;
  11125       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11126                                    PD_job_log _date => V D_log_date ,
  11127                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  11128                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  11129                                                                   | | VN_parm_ log_file_a ge
  11130                                                                   | | ' days o ld',1,2000 ),
  11131                                    PD_date1 = > VD_rec_g roup_date,
  11132                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  11133  
  11134       DELETE
  11135       FROM       ADRMGT .Job_Proce ss_Errs
  11136       WHERE      Job_na me = CC_pr ocess_name
  11137       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  11138  
  11139       COMMIT ;
  11140  
  11141       VD_log _date := S YSDATE;
  11142       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11143                                    PD_job_log _date => V D_log_date ,
  11144                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  11145                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  11146                                                                   | | VN_parm_ log_file_a ge
  11147                                                                   | | ' days o ld',1,2000 ),
  11148                                    PD_date1 = > VD_rec_g roup_date,
  11149                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  11150  
  11151     EXCEPTIO N
  11152  
  11153       WHEN N O_DATA_FOU ND THEN
  11154  
  11155         NULL ;
  11156  
  11157       WHEN O THERS THEN
  11158  
  11159         VD_l og_date :=  SYSDATE;
  11160         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11161                                      PD_job_l og_date  = > VD_log_d ate,
  11162                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess erro rs.',1,60) ,
  11163                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  11164                                      PD_date1  => VD_rec _group_dat e,
  11165                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11166  
  11167     END;
  11168  
  11169   -- ******* ********** ********** ********** ********** ********** ********** ********
  11170   -- * Main  record cur sor logic
  11171   -- ******* ********** ********** ********** ********** ********** ********** ********
  11172  
  11173     BEGIN
  11174  
  11175       VN_max _log_id :=  0;
  11176       VN_pas s_count :=  0;
  11177       VN_upd ate_count  := 0;
  11178  
  11179       OPEN C _hl7_id;
  11180  
  11181       LOOP
  11182  
  11183         FETC H C_hl7_id
  11184         BULK  COLLECT I NTO T_hl7_ id
  11185         LIMI T VN_parm_ rows_to_pr ocess;
  11186  
  11187         EXIT  WHEN T_hl 7_id.COUNT  = 0;
  11188  
  11189         FORA LL I_hl7_i d IN T_hl7 _id.FIRST. .T_hl7_id. last
  11190           UP DATE    AD R.Hl7_tran saction_lo g
  11191           SE T       In ternal_err or_text =  NULL
  11192           WH ERE     Hl 7_transact ion_log_id  = T_hl7_i d(I_hl7_id );
  11193  
  11194         COMM IT;
  11195  
  11196         FOR  I_hl7_id I N T_hl7_id .FIRST..T_ hl7_id.las t LOOP
  11197  
  11198           IF  T_hl7_id( I_hl7_id)  > VN_max_l og_id THEN
  11199  
  11200              VN_max_log _id := T_h l7_id(I_hl 7_id);
  11201  
  11202           EN D IF;
  11203  
  11204         END  LOOP;
  11205  
  11206         VN_p ass_count  := VN_pass _count + 1 ;
  11207  
  11208         VN_u pdate_coun t := VN_up date_count  + T_hl7_i d.COUNT;
  11209  
  11210       END LO OP;
  11211  
  11212       CLOSE  C_hl7_id;
  11213  
  11214       BEGIN
  11215  
  11216         IF N VL(VN_max_ log_id,0)  <> 0 THEN
  11217  
  11218           UP DATE    AD RMGT.Adr_P arameter
  11219           SE T       Va lue = VN_m ax_log_id
  11220           WH ERE     Ap plication_ name = 'HL 7 NULL INT ERNAL_ERRO R_TEXT COL UMN'
  11221           AN D       Pa rameter_na me = VC_pa ra_name_la st_proc_id ;
  11222  
  11223           CO MMIT;
  11224  
  11225         ELSE
  11226  
  11227           VN _max_log_i d := VN_pa rm_last_lo g_id;
  11228  
  11229         END  IF;
  11230  
  11231       EXCEPT ION
  11232  
  11233         WHEN  OTHERS TH EN
  11234  
  11235           VD _log_date  := SYSDATE ;
  11236           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  11237                                        PD_job _log_date   => VD_log _date,
  11238                                        PC_job _status =>  SUBSTR('E RROR        - Unknown  error upd ating ' ||  VC_para_n ame_last_p roc_id ||  '.',1,60),
  11239                                        PC_job _log_messa ge => SUBS TR(VC_para _name_last _proc_id | | ': ' ||  VN_max_log _id
  11240                                                                        || '. '  || SQLERR M,1,2000),
  11241                                        PD_dat e1 => VD_r ec_group_d ate,
  11242                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  11243  
  11244           RE TURN;
  11245  
  11246       END;
  11247  
  11248   -- Process  completio n informat ion
  11249  
  11250       VD_log _date := S YSDATE;
  11251       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11252                                    PD_job_log _date => V D_log_date ,
  11253                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  11254                                    PD_date1 = > VD_rec_g roup_date,
  11255                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  11256                                    PN_numeric 2 => VN_pa ss_count,
  11257                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  11258  
  11259       VD_log _date := S YSDATE;
  11260       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11261                                    PD_job_log _date => V D_log_date ,
  11262                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  11263                                    PD_date1 = > VD_rec_g roup_date,
  11264                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  11265                                    PN_numeric 2 => VN_up date_count ,
  11266                                    PC_text2 = > SUBSTR(' Updated Re cord Count ',1,255));
  11267  
  11268       VD_log _date := S YSDATE;
  11269       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11270                                    PD_job_log _date => V D_log_date ,
  11271                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  11272                                    PD_date1 = > VD_rec_g roup_date,
  11273                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  11274                                    PN_numeric 2 => VN_ma x_log_id,
  11275                                    PC_text2 = > SUBSTR(' Last proce ssed log i d',1,255)) ;
  11276  
  11277       VD_pro cess_end_d ate := SYS DATE;
  11278       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  11279                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  11280                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  11281                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  11282                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  11283  
  11284       VD_log _date := S YSDATE;
  11285       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11286                                    PD_job_log _date => V D_log_date ,
  11287                                    PC_job_sta tus => SUB STR('SUCCE SS     - P rocessing  Completed' ,1,60),
  11288                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  11289                                    PD_date1 = > VD_rec_g roup_date,
  11290                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  11291  
  11292     EXCEPTIO N
  11293  
  11294       WHEN O THERS THEN
  11295  
  11296         VD_l og_date :=  SYSDATE;
  11297         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11298                                      PD_job_l og_date  = > VD_log_d ate,
  11299                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror updat ing Intern al_error_t ext.',1,60 ),
  11300                                      PC_job_l og_message  => SUBSTR ('Cursor L oop Count:  ' || VN_p ass_count
  11301                                                                      || ' Upda ted Record  Count: '  || VN_upda te_count
  11302                                                                      || '. ' | | SQLERRM, 1,2000),
  11303                                      PD_date1  => VD_rec _group_dat e,
  11304                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11305  
  11306         RETU RN;
  11307  
  11308     END;
  11309  
  11310   EXCEPTION
  11311  
  11312     WHEN OTH ERS THEN
  11313  
  11314       ROLLBA CK;
  11315  
  11316       VD_log _date := S YSDATE;
  11317       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11318                                    PD_job_err or_date  = > VD_log_d ate,
  11319                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  11320                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Hl7_Txn_Lo g_Null_Err _Col_Sp.'
  11321                                                                  ||  SQLERRM,1 ,2000),
  11322                                    PD_date1 = > VD_rec_g roup_date,
  11323                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  11324  
  11325       VD_log _date := S YSDATE;
  11326       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11327                                    PD_job_log _date => V D_log_date ,
  11328                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  11329                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  11330                                    PD_date1 = > VD_rec_g roup_date,
  11331                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  11332  
  11333   END Hl7_Tx n_Log_Null _Err_Col_S p_04;
  11334   /
  11335   DROP PROCE DURE ADR.H L7_TXN_LOG _NULL_ERR_ COL_SP_08;
  11336  
  11337   CREATE OR  REPLACE PR OCEDURE AD R.Hl7_Txn_ Log_Null_E rr_Col_Sp_ 08 (
  11338      PB_run_ standalone     IN BOO LEAN DEFAU LT FALSE,
  11339      PB_allo w_rpt_inst     IN BOO LEAN DEFAU LT FALSE,
  11340      PN_rows _to_proces s   IN NUM BER DEFAUL T NULL)
  11341   IS
  11342      -- **** ********** ********** ********** ********** ********** ********** ********** *
  11343      -- * Pr ocedure: H l7_Txn_Log _Null_Erro r_Col
  11344      -- *
  11345      -- *    Update HL7  transcati ons to rem ove data f rom the in ternal_err or_text
  11346      -- *    column for  all rows  more than  6 months o ld.
  11347      -- *
  11348      -- * Pa rameters:
  11349      -- *
  11350      -- *  P B_run_stan dalone   I gnore DBMS _JOB logic  for check ing runnin g jobs.
  11351      -- *                          Default: F ALSE
  11352      -- *
  11353      -- *  P B_allow_rp t_inst   A llow store d procedur e to be su bmitted in  the
  11354      -- *                        D BMS_JOB qu eue on the  ADR repor ting datab ases
  11355      -- *                          Default: F ALSE
  11356      -- *
  11357      -- **** ********** ********** ********** ********** ********** ********** ********** *
  11358      --
  11359      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  11360      -- Date         Au thor             Desc ription
  11361      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  11362      -- 06/2 3/2010  Cr aig Wood         Crea ted for CC R 1100.
  11363      --
  11364      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  11365  
  11366      -- CONS TANTS
  11367  
  11368      CC_no                                  V ARCHAR2 (1 ) := 'N';
  11369      CC_parm _applicati on_name    CONSTANT V ARCHAR2 (8 0)
  11370         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  11371      CC_parm _hl7_err_t xt_age     CONSTANT V ARCHAR2 (5 0)
  11372                                                 := 'OLDE ST HL7 ERR OR TEXT DA YS' ;
  11373      CC_parm _last_hl7_ id         CONSTANT V ARCHAR2 (5 0)
  11374                                                 := 'LAST  HL7 ID PR OCESSED' ;
  11375      CC_parm _log_file_ age        CONSTANT V ARCHAR2 (5 0)
  11376                                                 := 'OLDE ST LOG FIL E DAYS' ;
  11377      CC_proc ess_name              CONSTANT V ARCHAR2 (6 0)
  11378         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  11379      CC_sp_n ame                   CONSTANT V ARCHAR2 (3 5)
  11380         := ' Hl7_Txn_Lo g_Null_Err _Col_Sp_'  || '08' ;
  11381      CC_yes                                 V ARCHAR2 (1 ) := 'Y';
  11382  
  11383      -- VARI ABLES
  11384  
  11385      VB_allo w_rpt_inst                     B OOLEAN :=  FALSE;
  11386      VB_run_ standalone                     B OOLEAN :=  FALSE;
  11387  
  11388      VC_allo w_rpt_inst                     V ARCHAR2 (5 ) := NULL;
  11389      VC_inst ance_name                      V ARCHAR2 (1 6);
  11390      VC_proc ess_durati on                  V ARCHAR2 (2 5);
  11391      VC_run_ standalone                     V ARCHAR2 (5 ) := NULL;
  11392      VC_sql_ statement                      V ARCHAR2 (2 000);
  11393      VC_para _name_last _proc_id            V ARCHAR2 (3 0):= 'P' | | '08' ||  ' LAST PRO CESSED LOG  ID';
  11394  
  11395     VD_log_d ate                            D ATE;
  11396     VD_proce ss_end_dat e                   D ATE;
  11397     VD_proce ss_start_d ate                 D ATE;
  11398     VD_rec_g roup_date                      D ATE;
  11399  
  11400     VN_job_c ount                           N UMBER := 0 ;
  11401     VN_job_n umber                          N UMBER;
  11402     VN_max_l og_id                          N UMBER := 0 ;
  11403     VN_parm_ hl7_err_tx t_age               N UMBER;
  11404     VN_parm_ log_file_a ge                  N UMBER;
  11405     VN_parm_ last_log_i d                   N UMBER := 0 ;
  11406     VN_parm_ rows_to_pr ocess               N UMBER;
  11407     VN_pass_ count                          N UMBER := 0 ;
  11408     VN_rec_c ount                           N UMBER := 0 ;
  11409     VN_updat e_count                        N UMBER := 0 ;
  11410  
  11411  
  11412   -- CURSORS
  11413  
  11414     CURSOR C _hl7_id IS
  11415       SELECT   /*+ para llel(4) */  Hl7_trans action_log _id
  11416       FROM       Hl7_tr ansaction_ log PARTIT ION (HL7_T RANSACTION _LOG_P08)
  11417       WHERE      Hl7_tr ansaction_ log_id > V N_parm_las t_log_id
  11418       AND        Record _created_d ate < TRUN C(SYSDATE)  - VN_parm _hl7_err_t xt_age
  11419       AND        Intern al_error_t ext IS NOT  NULL;
  11420  
  11421   -- TYPES
  11422  
  11423     TYPE TT_ hl7_id IS
  11424       TABLE  OF ADR.Hl7 _Transacti on_Log.Hl7 _transacti on_log_id% TYPE;
  11425  
  11426   -- MEMORY  TABLES
  11427  
  11428     T_hl7_id                                T T_hl7_id;
  11429  
  11430   -- ******* ********** ********** ********** ********** ********** ********** *******
  11431   -- *
  11432   -- *  MAIN  PROCEDURE :
  11433   -- *
  11434   -- ******* ********** ********** ********** ********** ********** ********** *******
  11435  
  11436   BEGIN
  11437  
  11438     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  11439     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  11440  
  11441     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  11442     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  11443  
  11444     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  11445     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  11446  
  11447     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  11448     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  11449  
  11450     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  QUERY PARA LLEL ' ||   2;
  11451     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  11452  
  11453     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  DML PARALL EL ' || 2;
  11454     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  11455  
  11456     VD_rec_g roup_date  := TRUNC(S YSDATE);
  11457  
  11458     VD_log_d ate := SYS DATE;
  11459     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  11460                                 PD _job_log_d ate => VD_ log_date,
  11461                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  11462                                 PD _date1 =>  VD_rec_gro up_date,
  11463                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  11464  
  11465   -- ******* ********** ********** ********** ********** ********** ********** ********
  11466   -- *
  11467   -- * Valid ate input  parameters
  11468   -- *
  11469   -- ******* ********** ********** ********** ********** ********** ********** ********
  11470  
  11471   -- * Check  run stand alone flag
  11472  
  11473     IF PB_ru n_standalo ne IS NULL
  11474      OR NOT  PB_run_sta ndalone TH EN
  11475  
  11476       VB_run _standalon e := FALSE ;
  11477       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  11478  
  11479     ELSE
  11480  
  11481       VB_run _standalon e := TRUE;
  11482       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  11483  
  11484     END IF;
  11485  
  11486   -- * Check  run on re port insta nce flag
  11487  
  11488     IF PB_al low_rpt_in st IS NULL
  11489      OR NOT  PB_allow_r pt_inst TH EN
  11490  
  11491       VB_all ow_rpt_ins t := FALSE ;
  11492       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  11493  
  11494     ELSE
  11495  
  11496       VB_all ow_rpt_ins t := TRUE;
  11497       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  11498  
  11499     END IF;
  11500  
  11501   -- ******* ********** ********** ********** ********** ********** ********** ********
  11502   -- *
  11503   -- * Retri eve proces sing param eters
  11504   -- *
  11505   -- ******* ********** ********** ********** ********** ********** ********** ********
  11506  
  11507   -- Process  Parameter  OLDEST HL 7 ERROR TE XT DAYS KE PT
  11508  
  11509     BEGIN
  11510  
  11511       SELECT     Value
  11512       INTO       VN_par m_hl7_err_ txt_age
  11513       FROM       ADRMGT .Adr_Param eter
  11514       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  11515       AND        Parame ter_name =  'OLDEST H L7 ERROR T EXT DAYS K EPT';
  11516  
  11517       IF VN_ parm_hl7_e rr_txt_age  IS NULL T HEN
  11518  
  11519         VD_l og_date :=  SYSDATE;
  11520         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11521                                      PD_job_l og_date =>  VD_log_da te,
  11522                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  11523                                      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),
  11524                                      PD_date1  => VD_rec _group_dat e,
  11525                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11526  
  11527         RETU RN;
  11528  
  11529       END IF ;
  11530  
  11531     EXCEPTIO N
  11532  
  11533       WHEN N O_DATA_FOU ND THEN
  11534  
  11535         VD_l og_date :=  SYSDATE;
  11536         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11537                                      PD_job_l og_date =>  VD_log_da te,
  11538                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  11539                                      PC_job_l og_message  => 'Param eter for O LDEST HL7  ERROR TEXT  DAYS KEPT  was not f ound. Term inating pr ocess.',
  11540                                      PD_date1  => VD_rec _group_dat e,
  11541                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11542  
  11543         RETU RN;
  11544  
  11545       WHEN O THERS THEN
  11546  
  11547         VD_l og_date :=  SYSDATE;
  11548         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11549                                      PD_job_l og_date =>  VD_log_da te,
  11550                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  11551                                      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. '
  11552                                                                      || SQLERR M,1,2000),
  11553                                      PD_date1  => VD_rec _group_dat e,
  11554                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11555  
  11556         RETU RN;
  11557  
  11558     END;
  11559  
  11560   -- Process  Parameter  OLDEST LO G FILE DAY S KEPT
  11561  
  11562     BEGIN
  11563  
  11564       SELECT     Value
  11565       INTO       VN_par m_log_file _age
  11566       FROM       ADRMGT .Adr_Param eter
  11567       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  11568       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  11569  
  11570       IF VN_ parm_log_f ile_age IS  NULL THEN
  11571  
  11572         VD_l og_date :=  SYSDATE;
  11573         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11574                                      PD_job_l og_date =>  VD_log_da te,
  11575                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  11576                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST L OG FILE DA YS KEPT is  NULL. Ter minating p rocess.',1 ,2000),
  11577                                      PD_date1  => VD_rec _group_dat e,
  11578                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11579  
  11580         RETU RN;
  11581  
  11582       END IF ;
  11583  
  11584     EXCEPTIO N
  11585  
  11586       WHEN N O_DATA_FOU ND THEN
  11587  
  11588         VD_l og_date :=  SYSDATE;
  11589         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11590                                      PD_job_l og_date =>  VD_log_da te,
  11591                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  11592                                      PC_job_l og_message  => 'Param eter for O LDEST LOG  FILE DAYS  KEPT was n ot found.  Terminatin g process. ',
  11593                                      PD_date1  => VD_rec _group_dat e,
  11594                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11595  
  11596         RETU RN;
  11597  
  11598       WHEN O THERS THEN
  11599  
  11600         VD_l og_date :=  SYSDATE;
  11601         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11602                                      PD_job_l og_date =>  VD_log_da te,
  11603                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  11604                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  OLDEST LO G FILE DAY S KEPT. Te rminating  process. '
  11605                                                                      || SQLERR M,1,2000),
  11606                                      PD_date1  => VD_rec _group_dat e,
  11607                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11608  
  11609         RETU RN;
  11610  
  11611     END;
  11612  
  11613   -- Process  Parameter  ROWS TO P ROCESS
  11614  
  11615     BEGIN
  11616  
  11617       SELECT     Value
  11618       INTO       VN_par m_rows_to_ process
  11619       FROM       ADRMGT .Adr_Param eter
  11620       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  11621       AND        Parame ter_name =  'ROWS TO  PROCESS';
  11622  
  11623       IF VN_ parm_rows_ to_process  IS NULL T HEN
  11624  
  11625         VD_l og_date :=  SYSDATE;
  11626         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11627                                      PD_job_l og_date =>  VD_log_da te,
  11628                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  11629                                      PC_job_l og_message  => SUBSTR ('Paramete r ROWS TO  PROCESS is  NULL. Ter minating p rocess.',1 ,2000),
  11630                                      PD_date1  => VD_rec _group_dat e,
  11631                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11632  
  11633         RETU RN;
  11634  
  11635       END IF ;
  11636  
  11637     EXCEPTIO N
  11638  
  11639       WHEN N O_DATA_FOU ND THEN
  11640  
  11641         VD_l og_date :=  SYSDATE;
  11642         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11643                                      PD_job_l og_date =>  VD_log_da te,
  11644                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  11645                                      PC_job_l og_message  => 'Param eter for R OWS TO PRO CESS was n ot found.  Terminatin g process. ',
  11646                                      PD_date1  => VD_rec _group_dat e,
  11647                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11648  
  11649         RETU RN;
  11650  
  11651       WHEN O THERS THEN
  11652  
  11653         VD_l og_date :=  SYSDATE;
  11654         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11655                                      PD_job_l og_date =>  VD_log_da te,
  11656                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  11657                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ROWS TO P ROCESS. Te rminating  process. '
  11658                                                                      || SQLERR M,1,2000),
  11659                                      PD_date1  => VD_rec _group_dat e,
  11660                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11661  
  11662         RETU RN;
  11663  
  11664     END;
  11665  
  11666   -- Process  Parameter  LAST PROC ESSED LOG  ID
  11667  
  11668     BEGIN
  11669  
  11670       SELECT     Value
  11671       INTO       VN_par m_last_log _id
  11672       FROM       ADRMGT .Adr_Param eter
  11673       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  11674       AND        Parame ter_name =  VC_para_n ame_last_p roc_id;
  11675  
  11676       IF VN_ parm_last_ log_id IS  NULL THEN
  11677  
  11678         VD_l og_date :=  SYSDATE;
  11679         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11680                                      PD_job_l og_date =>  VD_log_da te,
  11681                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  11682                                      PC_job_l og_message  => SUBSTR ('Paramete r ' || VC_ para_name_ last_proc_ id || ' is  NULL. Ter minating p rocess.',1 ,2000),
  11683                                      PD_date1  => VD_rec _group_dat e,
  11684                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11685  
  11686         RETU RN;
  11687  
  11688       END IF ;
  11689  
  11690     EXCEPTIO N
  11691  
  11692       WHEN N O_DATA_FOU ND THEN
  11693  
  11694         VD_l og_date :=  SYSDATE;
  11695         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11696                                      PD_job_l og_date =>  VD_log_da te,
  11697                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  11698                                      PC_job_l og_message  => 'Param eter for '  || VC_par a_name_las t_proc_id  || ' was n ot found.  Terminatin g process. ',
  11699                                      PD_date1  => VD_rec _group_dat e,
  11700                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11701  
  11702         RETU RN;
  11703  
  11704       WHEN O THERS THEN
  11705  
  11706         VD_l og_date :=  SYSDATE;
  11707         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11708                                      PD_job_l og_date =>  VD_log_da te,
  11709                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  11710                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ' || VC_p ara_name_l ast_proc_i d || '. Te rminating  process. '
  11711                                                                      || SQLERR M,1,2000),
  11712                                      PD_date1  => VD_rec _group_dat e,
  11713                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11714  
  11715         RETU RN;
  11716  
  11717     END;
  11718  
  11719   -- Write o ut Paramet er log mes sages for  submitted  job
  11720  
  11721     VD_log_d ate := SYS DATE;
  11722     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  11723                                 PD _job_log_d ate => VD_ log_date,
  11724                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  11725                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  11726                                 PD _date1 =>  VD_rec_gro up_date,
  11727                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  11728  
  11729     VD_log_d ate := SYS DATE;
  11730     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  11731                                 PD _job_log_d ate => VD_ log_date,
  11732                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  11733                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  11734                                 PD _date1 =>  VD_rec_gro up_date,
  11735                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  11736  
  11737     VD_log_d ate := SYS DATE;
  11738     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  11739                                 PD _job_log_d ate => VD_ log_date,
  11740                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  11741                                 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),
  11742                                 PD _date1 =>  VD_rec_gro up_date,
  11743                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  11744  
  11745  
  11746     VD_log_d ate := SYS DATE;
  11747     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  11748                                 PD _job_log_d ate => VD_ log_date,
  11749                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  11750                                 PC _job_log_m essage =>  SUBSTR(' O LDEST HL7  ERROR TEXT  DAYS KEPT : ' || VN_ parm_hl7_e rr_txt_age ,1,2000),
  11751                                 PD _date1 =>  VD_rec_gro up_date,
  11752                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  11753  
  11754     VD_log_d ate := SYS DATE;
  11755     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  11756                                 PD _job_log_d ate => VD_ log_date,
  11757                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  11758                                 PC _job_log_m essage =>  SUBSTR(' O LDEST LOG  FILE DAYS  KEPT: ' ||  VN_parm_l og_file_ag e,1,2000),
  11759                                 PD _date1 =>  VD_rec_gro up_date,
  11760                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  11761  
  11762     VD_log_d ate := SYS DATE;
  11763     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  11764                                 PD _job_log_d ate => VD_ log_date,
  11765                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  11766                                 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),
  11767                                 PD _date1 =>  VD_rec_gro up_date,
  11768                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  11769  
  11770     VD_log_d ate := SYS DATE;
  11771     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  11772                                 PD _job_log_d ate => VD_ log_date,
  11773                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  11774                                 PC _job_log_m essage =>  SUBSTR(' '  || VC_par a_name_las t_proc_id  || ': ' ||  NVL(TO_CH AR(VN_parm _last_log_ id),'NULL' ),1,2000),
  11775                                 PD _date1 =>  VD_rec_gro up_date,
  11776                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  11777  
  11778   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  11779  
  11780     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  11781  
  11782       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  11783  
  11784       VD_log _date := S YSDATE;
  11785       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11786                                    PD_job_log _date => V D_log_date ,
  11787                                    PC_job_sta tus => SUB STR('WARNI NG     - J ob table p arameters' ,1,60),
  11788                                    PC_job_log _message = > SUBSTR('  Processin g paramete r ROWS TO  PROCESS (i n each loo p) has bee n overridd en.'
  11789                                                              || ' T he overrid e value is : ' || NVL (TO_CHAR(V N_parm_row s_to_proce ss),'NULL' ),1,2000),
  11790                                    PD_date1 = > VD_rec_g roup_date,
  11791                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  11792  
  11793     END IF;
  11794  
  11795   -- ******* ********** ********** ********** ********** ********** ********** ********
  11796   -- *
  11797   -- * Check  to see if  process i s running  on a repor ting datab ase.
  11798   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  11799   -- *
  11800   -- ******* ********** ********** ********** ********** ********** ********** ********
  11801  
  11802     IF NOT V B_allow_rp t_inst THE N
  11803  
  11804       BEGIN
  11805  
  11806         VD_l og_date :=  SYSDATE;
  11807         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11808                                      PD_job_l og_date =>  VD_log_da te,
  11809                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  11810                                      PD_date1  => VD_rec _group_dat e,
  11811                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11812  
  11813         SELE CT    Inst ance_name
  11814         INTO       VC_i nstance_na me
  11815         FROM       V$in stance;
  11816  
  11817         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  11818  
  11819           VD _log_date  := SYSDATE ;
  11820           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  11821                                        PD_job _log_date  => VD_log_ date,
  11822                                        PC_job _status =>  SUBSTR('E RROR        - Process ing Failed ',1,60),
  11823                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  11824                                                                     || VC_inst ance_name
  11825                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  11826                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  11827                                        PD_dat e1 => VD_r ec_group_d ate,
  11828                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  11829  
  11830           RE TURN;
  11831  
  11832         END  IF;
  11833  
  11834       EXCEPT ION
  11835  
  11836         WHEN  OTHERS TH EN
  11837  
  11838           VD _log_date  := SYSDATE ;
  11839           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  11840                                        PD_job _log_date  => VD_log_ date,
  11841                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  11842                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  11843                                        PD_dat e1 => VD_r ec_group_d ate,
  11844                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  11845  
  11846           RE TURN;
  11847  
  11848       END;
  11849  
  11850     END IF;
  11851  
  11852   -- ******* ********** ********** ********** ********** ********** ********** ********
  11853   -- *
  11854   -- * Check  to see if  the job h as already  run today
  11855   -- *  - If  running i n stand-al one mode,  don't chec k.
  11856   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  11857   -- *
  11858   -- ******* ********** ********** ********** ********** ********** ********** ********
  11859  
  11860     IF NOT P B_run_stan dalone THE N
  11861  
  11862       BEGIN
  11863  
  11864         VD_l og_date :=  SYSDATE;
  11865         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11866                                      PD_job_l og_date =>  VD_log_da te,
  11867                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  11868                                      PD_date1  => VD_rec _group_dat e,
  11869                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11870  
  11871         SELE CT    COUN T(*)
  11872         INTO       VN_r ec_count
  11873         FROM       ADRM GT.Job_Pro cess_Logs
  11874         WHER E     Job_ name = CC_ process_na me
  11875         AND        Date 1 = VD_rec _group_dat e
  11876         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  11877  
  11878         IF V N_rec_coun t > 0 THEN
  11879  
  11880           VD _log_date  := SYSDATE ;
  11881           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  11882                                        PD_job _log_date  => VD_log_ date,
  11883                                        PC_job _status =>  SUBSTR('W ARNING      - This da te has alr eady been  processed' ,1,60),
  11884                                        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),
  11885                                        PD_dat e1 => VD_r ec_group_d ate,
  11886                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  11887  
  11888           RE TURN;
  11889  
  11890         END  IF;
  11891  
  11892       EXCEPT ION
  11893  
  11894         WHEN  OTHERS TH EN
  11895  
  11896           VD _log_date  := SYSDATE ;
  11897           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  11898                                        PD_job _log_date  => VD_log_ date,
  11899                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  11900                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  11901                                        PD_dat e1 => VD_r ec_group_d ate,
  11902                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  11903  
  11904           RE TURN;
  11905  
  11906       END;
  11907  
  11908     END IF;
  11909  
  11910   -- ******* ********** ********** ********** ********** ********** ********** ********
  11911   -- *
  11912   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  11913   -- *  - If  yes, then  end this  job.
  11914   -- *
  11915   -- ******* ********** ********** ********** ********** ********** ********** ********
  11916  
  11917     SELECT C OUNT(*)
  11918     INTO   V N_job_coun t
  11919     FROM   S YS.DBA_JOB S_RUNNING  R,
  11920            S YS.DBA_JOB S J
  11921     WHERE  J .JOB = R.J OB
  11922     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  11923  
  11924     IF VN_jo b_count >  1 THEN
  11925  
  11926       VD_log _date := S YSDATE;
  11927       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11928                                    PD_job_log _date => V D_log_date ,
  11929                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  11930                                    PC_job_log _message = > SUBSTR(' There is a nother '
  11931                                                                || C C_sp_name
  11932                                                                || '  job runni ng.'
  11933                                                                || '  Exiting j ob without  running.' ,1,2000),
  11934                                    PD_date1 = > VD_rec_g roup_date,
  11935                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  11936  
  11937       RETURN ;
  11938  
  11939     ELSE
  11940  
  11941       IF VB_ run_standa lone THEN
  11942  
  11943         VD_l og_date :=  SYSDATE;
  11944         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11945                                      PD_job_l og_date =>  VD_log_da te,
  11946                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  11947                                      PD_date1  => VD_rec _group_dat e,
  11948                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11949  
  11950       ELSE
  11951  
  11952         SELE CT    MAX( J.Job)
  11953         INTO       VN_j ob_number
  11954         FROM       SYS. DBA_JOBS_R UNNING R,
  11955                    SYS. DBA_JOBS J
  11956         WHER E     J.JO B = R.JOB
  11957         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  11958  
  11959         VD_l og_date :=  SYSDATE;
  11960         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11961                                      PD_job_l og_date =>  VD_log_da te,
  11962                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  11963                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  11964                                                                      || VN_job _number,1, 2000),
  11965                                      PD_date1  => VD_rec _group_dat e,
  11966                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11967  
  11968       END IF ;
  11969  
  11970     END IF;
  11971  
  11972   -- ******* ********** ********** ********** ********** ********** ********** ********
  11973   -- *
  11974   -- * Main  processing  loop
  11975   -- *
  11976   -- ******* ********** ********** ********** ********** ********** ********** ********
  11977  
  11978     VN_pass_ count := 0 ;
  11979     VN_updat e_count :=  0;
  11980     VD_proce ss_start_d ate := SYS DATE;
  11981  
  11982   -- ******* ********** ********** ********** ********** ********** ********** ********
  11983   -- * Remov e old proc ess log ro ws
  11984   -- ******* ********** ********** ********** ********** ********** ********** ********
  11985     BEGIN
  11986  
  11987       VD_log _date := S YSDATE;
  11988       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11989                                    PD_job_log _date => V D_log_date ,
  11990                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  11991                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  11992                                                                   | | VN_parm_ log_file_a ge
  11993                                                                   | | ' days o ld',1,2000 ),
  11994                                    PD_date1 = > VD_rec_g roup_date,
  11995                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  11996  
  11997       DELETE
  11998       FROM       ADRMGT .Job_Proce ss_Logs
  11999       WHERE      Job_na me = CC_pr ocess_name
  12000       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  12001  
  12002       COMMIT ;
  12003  
  12004       VD_log _date := S YSDATE;
  12005       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  12006                                    PD_job_log _date => V D_log_date ,
  12007                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  12008                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  12009                                                                   | | VN_parm_ log_file_a ge
  12010                                                                   | | ' days o ld',1,2000 ),
  12011                                    PD_date1 = > VD_rec_g roup_date,
  12012                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  12013  
  12014  
  12015     EXCEPTIO N
  12016  
  12017       WHEN N O_DATA_FOU ND THEN
  12018  
  12019         NULL ;
  12020  
  12021       WHEN O THERS THEN
  12022  
  12023         VD_l og_date :=  SYSDATE;
  12024         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  12025                                      PD_job_l og_date  = > VD_log_d ate,
  12026                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess logs .',1,60),
  12027                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  12028                                      PD_date1  => VD_rec _group_dat e,
  12029                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  12030  
  12031     END;
  12032  
  12033   -- ******* ********** ********** ********** ********** ********** ********** ********
  12034   -- * Remov e old proc ess error  rows
  12035   -- ******* ********** ********** ********** ********** ********** ********** ********
  12036  
  12037     BEGIN
  12038  
  12039       VD_log _date := S YSDATE;
  12040       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  12041                                    PD_job_log _date => V D_log_date ,
  12042                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  12043                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  12044                                                                   | | VN_parm_ log_file_a ge
  12045                                                                   | | ' days o ld',1,2000 ),
  12046                                    PD_date1 = > VD_rec_g roup_date,
  12047                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  12048  
  12049       DELETE
  12050       FROM       ADRMGT .Job_Proce ss_Errs
  12051       WHERE      Job_na me = CC_pr ocess_name
  12052       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  12053  
  12054       COMMIT ;
  12055  
  12056       VD_log _date := S YSDATE;
  12057       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  12058                                    PD_job_log _date => V D_log_date ,
  12059                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  12060                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  12061                                                                   | | VN_parm_ log_file_a ge
  12062                                                                   | | ' days o ld',1,2000 ),
  12063                                    PD_date1 = > VD_rec_g roup_date,
  12064                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  12065  
  12066     EXCEPTIO N
  12067  
  12068       WHEN N O_DATA_FOU ND THEN
  12069  
  12070         NULL ;
  12071  
  12072       WHEN O THERS THEN
  12073  
  12074         VD_l og_date :=  SYSDATE;
  12075         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  12076                                      PD_job_l og_date  = > VD_log_d ate,
  12077                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess erro rs.',1,60) ,
  12078                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  12079                                      PD_date1  => VD_rec _group_dat e,
  12080                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  12081  
  12082     END;
  12083  
  12084   -- ******* ********** ********** ********** ********** ********** ********** ********
  12085   -- * Main  record cur sor logic
  12086   -- ******* ********** ********** ********** ********** ********** ********** ********
  12087  
  12088     BEGIN
  12089  
  12090       VN_max _log_id :=  0;
  12091       VN_pas s_count :=  0;
  12092       VN_upd ate_count  := 0;
  12093  
  12094       OPEN C _hl7_id;
  12095  
  12096       LOOP
  12097  
  12098         FETC H C_hl7_id
  12099         BULK  COLLECT I NTO T_hl7_ id
  12100         LIMI T VN_parm_ rows_to_pr ocess;
  12101  
  12102         EXIT  WHEN T_hl 7_id.COUNT  = 0;
  12103  
  12104         FORA LL I_hl7_i d IN T_hl7 _id.FIRST. .T_hl7_id. last
  12105           UP DATE    AD R.Hl7_tran saction_lo g
  12106           SE T       In ternal_err or_text =  NULL
  12107           WH ERE     Hl 7_transact ion_log_id  = T_hl7_i d(I_hl7_id );
  12108  
  12109         COMM IT;
  12110  
  12111         FOR  I_hl7_id I N T_hl7_id .FIRST..T_ hl7_id.las t LOOP
  12112  
  12113           IF  T_hl7_id( I_hl7_id)  > VN_max_l og_id THEN
  12114  
  12115              VN_max_log _id := T_h l7_id(I_hl 7_id);
  12116  
  12117           EN D IF;
  12118  
  12119         END  LOOP;
  12120  
  12121         VN_p ass_count  := VN_pass _count + 1 ;
  12122  
  12123         VN_u pdate_coun t := VN_up date_count  + T_hl7_i d.COUNT;
  12124  
  12125       END LO OP;
  12126  
  12127       CLOSE  C_hl7_id;
  12128  
  12129       BEGIN
  12130  
  12131         IF N VL(VN_max_ log_id,0)  <> 0 THEN
  12132  
  12133           UP DATE    AD RMGT.Adr_P arameter
  12134           SE T       Va lue = VN_m ax_log_id
  12135           WH ERE     Ap plication_ name = 'HL 7 NULL INT ERNAL_ERRO R_TEXT COL UMN'
  12136           AN D       Pa rameter_na me = VC_pa ra_name_la st_proc_id ;
  12137  
  12138           CO MMIT;
  12139  
  12140         ELSE
  12141  
  12142           VN _max_log_i d := VN_pa rm_last_lo g_id;
  12143  
  12144         END  IF;
  12145  
  12146       EXCEPT ION
  12147  
  12148         WHEN  OTHERS TH EN
  12149  
  12150           VD _log_date  := SYSDATE ;
  12151           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  12152                                        PD_job _log_date   => VD_log _date,
  12153                                        PC_job _status =>  SUBSTR('E RROR        - Unknown  error upd ating ' ||  VC_para_n ame_last_p roc_id ||  '.',1,60),
  12154                                        PC_job _log_messa ge => SUBS TR(VC_para _name_last _proc_id | | ': ' ||  VN_max_log _id
  12155                                                                        || '. '  || SQLERR M,1,2000),
  12156                                        PD_dat e1 => VD_r ec_group_d ate,
  12157                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  12158  
  12159           RE TURN;
  12160  
  12161       END;
  12162  
  12163   -- Process  completio n informat ion
  12164  
  12165       VD_log _date := S YSDATE;
  12166       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  12167                                    PD_job_log _date => V D_log_date ,
  12168                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  12169                                    PD_date1 = > VD_rec_g roup_date,
  12170                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  12171                                    PN_numeric 2 => VN_pa ss_count,
  12172                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  12173  
  12174       VD_log _date := S YSDATE;
  12175       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  12176                                    PD_job_log _date => V D_log_date ,
  12177                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  12178                                    PD_date1 = > VD_rec_g roup_date,
  12179                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  12180                                    PN_numeric 2 => VN_up date_count ,
  12181                                    PC_text2 = > SUBSTR(' Updated Re cord Count ',1,255));
  12182  
  12183       VD_log _date := S YSDATE;
  12184       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  12185                                    PD_job_log _date => V D_log_date ,
  12186                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  12187                                    PD_date1 = > VD_rec_g roup_date,
  12188                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  12189                                    PN_numeric 2 => VN_ma x_log_id,
  12190                                    PC_text2 = > SUBSTR(' Last proce ssed log i d',1,255)) ;
  12191  
  12192       VD_pro cess_end_d ate := SYS DATE;
  12193       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  12194                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  12195                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  12196                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  12197                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  12198  
  12199       VD_log _date := S YSDATE;
  12200       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  12201                                    PD_job_log _date => V D_log_date ,
  12202                                    PC_job_sta tus => SUB STR('SUCCE SS     - P rocessing  Completed' ,1,60),
  12203                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  12204                                    PD_date1 = > VD_rec_g roup_date,
  12205                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  12206  
  12207     EXCEPTIO N
  12208  
  12209       WHEN O THERS THEN
  12210  
  12211         VD_l og_date :=  SYSDATE;
  12212         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  12213                                      PD_job_l og_date  = > VD_log_d ate,
  12214                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror updat ing Intern al_error_t ext.',1,60 ),
  12215                                      PC_job_l og_message  => SUBSTR ('Cursor L oop Count:  ' || VN_p ass_count
  12216                                                                      || ' Upda ted Record  Count: '  || VN_upda te_count
  12217                                                                      || '. ' | | SQLERRM, 1,2000),
  12218                                      PD_date1  => VD_rec _group_dat e,
  12219                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  12220  
  12221         RETU RN;
  12222  
  12223     END;
  12224  
  12225   EXCEPTION
  12226  
  12227     WHEN OTH ERS THEN
  12228  
  12229       ROLLBA CK;
  12230  
  12231       VD_log _date := S YSDATE;
  12232       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  12233                                    PD_job_err or_date  = > VD_log_d ate,
  12234                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  12235                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Hl7_Txn_Lo g_Null_Err _Col_Sp.'
  12236                                                                  ||  SQLERRM,1 ,2000),
  12237                                    PD_date1 = > VD_rec_g roup_date,
  12238                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  12239  
  12240       VD_log _date := S YSDATE;
  12241       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  12242                                    PD_job_log _date => V D_log_date ,
  12243                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  12244                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  12245                                    PD_date1 = > VD_rec_g roup_date,
  12246                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  12247  
  12248   END Hl7_Tx n_Log_Null _Err_Col_S p_08;
  12249   /
  12250   DROP PROCE DURE ADR.C LEAN_SSN_F RM_ADDR;
  12251  
  12252   CREATE OR  REPLACE PR OCEDURE AD R.CLEAN_SS N_FRM_ADDR  IS
  12253      v_rec_c nt   INTEG ER;
  12254   BEGIN
  12255      ADRMGT. Job_Proces s_Log_Sp ( PC_job_nam e           => SUBSTR  ('CLEAN_S SN_FRM_ADD R', 1, 60) ,
  12256                                    PD_job_log _date       => SYSDAT E,
  12257                                    PC_job_sta tus         => 'STG-B EGIN',
  12258                                    PC_JOB_LOG _MESSAGE    => SUBSTR  (' Starti ng to proc ess', 1, 6 0));
  12259  
  12260      INSERT  INTO ADR.S TG_ADDRESS _SSN_CLEAN UP (ADDRES S_ID,
  12261                                                   ADDRES S_LINE1,
  12262                                                   ADDRES S_LINE2,
  12263                                                   ADDRES S_LINE3,
  12264                                                   CITY,
  12265                                                   SSN)
  12266         SELE CT address _id,
  12267                 address _line1,
  12268                 address _line2,
  12269                 address _line3,
  12270                 city,
  12271                 PERSON_ TRAITS.ssn
  12272           FR OM address , person,  adr.PERSON _TRAITS
  12273          WHE RE     add ress.perso n_id = per son.person _id
  12274                 AND per son.vpid_v alue = PER SON_TRAITS .vpid_valu e
  12275                 AND (    (INSTR (
  12276                              REGEX P_REPLACE  (address_l ine1,
  12277                                                '([[:alph a:]]|[[:sp ace:]]|[[: punct:]])* ',
  12278                                                ''),
  12279                              PERSO N_TRAITS.s sn) > 0)
  12280                      OR  (INSTR (
  12281                              REGEX P_REPLACE  (address_l ine2,
  12282                                                '([[:alph a:]]|[[:sp ace:]]|[[: punct:]])* ',
  12283                                                ''),
  12284                              PERSO N_TRAITS.s sn) > 0)
  12285                      OR  (INSTR (
  12286                              REGEX P_REPLACE  (address_l ine3,
  12287                                                '([[:alph a:]]|[[:sp ace:]]|[[: punct:]])* ',
  12288                                                ''),
  12289                              PERSO N_TRAITS.s sn) > 0)
  12290                      OR  (INSTR (
  12291                              REGEX P_REPLACE  (city, '([ [:alpha:]] |[[:space: ]]|[[:punc t:]])*', ' '),
  12292                              PERSO N_TRAITS.s sn) > 0));
  12293  
  12294      v_rec_c nt := SQL% ROWCOUNT;
  12295      COMMIT;
  12296  
  12297      ADRMGT. Job_Proces s_Log_Sp (
  12298         PC_j ob_name           =>  SUBSTR ('C LEAN_SSN_F RM_ADDR',  1, 60),
  12299         PD_j ob_log_dat e      =>  SYSDATE,
  12300         PC_j ob_status         =>  'STG-COMPL ETE',
  12301         PC_J OB_LOG_MES SAGE   =>  SUBSTR (
  12302                                         'STAG E record_c ount : '
  12303                                      || v_rec _cnt
  12304                                      || ' Com pleted col lecting AD DRESS_IDs' ,
  12305                                      1,
  12306                                      60));
  12307  
  12308      UPDATE  address tg t
  12309         SET  (address_l ine1,
  12310               address_l ine2,
  12311               address_l ine3,
  12312               city) =
  12313                 (SELECT  CASE
  12314                             WHEN ( INSTR (
  12315                                       REGEXP_ REPLACE (a ddress_lin e1,
  12316                                                        ' ([[:alpha: ]]|[[:spac e:]]|[[:pu nct:]])*',
  12317                                                        ' '),
  12318                                       ssn) >  0) THEN
  12319                                NUL L
  12320                             ELSE
  12321                                add ress_line1
  12322                          END
  12323                             addres s_line1_re p,
  12324                          CASE
  12325                             WHEN ( INSTR (
  12326                                       REGEXP_ REPLACE (a ddress_lin e2,
  12327                                                        ' ([[:alpha: ]]|[[:spac e:]]|[[:pu nct:]])*',
  12328                                                        ' '),
  12329                                       ssn) >  0) THEN
  12330                                NUL L
  12331                             ELSE
  12332                                add ress_line2
  12333                          END
  12334                             addres s_line2_re p,
  12335                          CASE
  12336                             WHEN ( INSTR (
  12337                                       REGEXP_ REPLACE (a ddress_lin e3,
  12338                                                        ' ([[:alpha: ]]|[[:spac e:]]|[[:pu nct:]])*',
  12339                                                        ' '),
  12340                                       ssn) >  0) THEN
  12341                                NUL L
  12342                             ELSE
  12343                                add ress_line3
  12344                          END
  12345                             addres s_line3_re p,
  12346                          CASE
  12347                             WHEN ( INSTR (
  12348                                       REGEXP_ REPLACE (c ity,
  12349                                                        ' ([[:alpha: ]]|[[:spac e:]]|[[:pu nct:]])*',
  12350                                                        ' '),
  12351                                       ssn) >  0) THEN
  12352                                NUL L
  12353                             ELSE
  12354                                cit y
  12355                          END
  12356                             city_r ep
  12357                    FROM  STG_ADDRE SS_SSN_CLE ANUP src
  12358                   WHERE  src.addre ss_id = tg t.address_ id),
  12359              record_mod ified_by =  '581393',
  12360              record_mod ified_date  = SYSDATE ,
  12361              record_mod ified_coun t = record _modified_ count + 1
  12362       WHERE  EXISTS
  12363                 (SELECT  1
  12364                    FROM  STG_ADDRE SS_SSN_CLE ANUP src
  12365                   WHERE  src.addre ss_id = tg t.address_ id);
  12366  
  12367      v_rec_c nt := SQL% ROWCOUNT;
  12368      COMMIT;
  12369  
  12370      ADRMGT. Job_Proces s_Log_Sp (
  12371         PC_j ob_name           =>  SUBSTR ('C LEAN_SSN_F RM_ADDR',  1, 60),
  12372         PD_j ob_log_dat e      =>  SYSDATE,
  12373         PC_j ob_status         =>  'COMPLETE' ,
  12374         PC_J OB_LOG_MES SAGE   =>  SUBSTR (
  12375                                         'Upda ted record _count : '
  12376                                      || v_rec _cnt
  12377                                      || ' Sta rting to p rocess',
  12378                                      1,
  12379                                      60));
  12380   EXCEPTION
  12381      WHEN NO _DATA_FOUN D THEN
  12382         ADRM GT.Job_Pro cess_Log_S p (
  12383            P C_job_name            => SUBSTR  ('CLEAN_SS N_FRM_ADDR ', 1, 60),
  12384            P D_job_log_ date       => SYSDATE ,
  12385            P C_job_stat us         => 'WARN',
  12386            P C_JOB_LOG_ MESSAGE    => SUBSTR  ('Nothing  to remove;  no record  FOUND', 1 , 60));
  12387      WHEN OT HERS THEN
  12388         ADRM GT.Job_Pro cess_Log_S p (
  12389            P C_job_name            => SUBSTR  ('CLEAN_SS N_FRM_ADDR ', 1, 60),
  12390            P D_job_log_ date       => SYSDATE ,
  12391            P C_job_stat us         => 'FAILED ',
  12392            P C_JOB_LOG_ MESSAGE    => SUBSTR  (
  12393                                            DB MS_UTILITY .FORMAT_CA LL_STACK
  12394                                         || DB MS_UTILITY .format_er ror_stack
  12395                                         || DB MS_UTILITY .format_er ror_backtr ace,
  12396                                         1,
  12397                                         60));
  12398   END CLEAN_ SSN_FRM_AD DR;
  12399   /
  12400  
  12401  
  12402   CREATE OR  REPLACE PU BLIC SYNON YM CLEAN_S SN_FRM_ADD R FOR ADR. CLEAN_SSN_ FRM_ADDR;
  12403   DROP PROCE DURE ADR.U PD_QRTZTRG _CLOCK_ST_ TIME_SP;
  12404  
  12405   CREATE OR  REPLACE PR OCEDURE AD R.UPD_QRTZ TRG_CLOCK_ ST_TIME_SP  (
  12406      p_in_nu m_days        IN         NUMBER,
  12407      p_in_nu m_hours       IN         NUMBER,
  12408      p_in_vp id            IN         VARCHAR 2,
  12409      p_in_tr igger_nm      IN         VARCHAR 2,
  12410      p_out_n um_updated    OUT NUM BER,
  12411      p_out_e rr_msg        OUT   V ARCHAR2)
  12412   IS
  12413  
  12414      -- **** ********** ********** ********** ********** ********** ********** ********** ********** *****
  12415      -- * Pr ocedure: U PD_QRTZTRG _CLOCK_ST_ TIME_SP
  12416      -- *
  12417      -- *
  12418      -- *  D escription : - This p rocedure w ill be use  to update  the start  time of a ny clock t rigger
  12419      -- *                              in QRT Z_TRIGGER  table to m ature the  clock. Thi s procedur e will inv oke by
  12420      -- *                             clockTr iggerBatch Process fo r non prod uciton DBs .
  12421      -- * Pa rameters:
  12422      -- *
  12423      -- *  p i_in_num_d ays           Day whe n trigger  is going t o expire.
  12424      -- *  p i_in_num_h ours         Hours wh en trigger  is going  to fire. I t counts h ours from  midnight.
  12425      -- *  p i_in_vpid                        VPID_VALUE  - for whi ch trigger  time will  change.
  12426      -- *  p i_in_Trigg er_nm          Name o f the trig ger.
  12427      -- *  p _out_num_u pdated   N umber of r ows update d
  12428      -- *  p _out_err_m sg              Error  message/I nfo messag e
  12429      -- *
  12430      -- Crea ted Date            C reated By
  12431      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  12432      -- 04/2 5/2017                Mita Panda
  12433      --
  12434      --***** ********** ********** ********** ********** ********** ********** ********** ********** ***
  12435      --- loc al variabl es
  12436      v_vpid                        PERSON.VPI D_VALUE%TY PE;
  12437      v_start _time            NUMB ER;
  12438      v_perso n_id            NUMBE R;
  12439      v_trigg er_name      QRTZ_TRI GGERS.TRIG GER_NAME%T YPE;
  12440      v_new_s tart_time    NUMBER;
  12441      v_new_d ate             VARCH AR2 (60);
  12442      e_no_da ta_found     EXCEPTIO N;
  12443   BEGIN
  12444      BEGIN
  12445         SELE CT person_ id
  12446           IN TO v_perso n_id
  12447           FR OM person
  12448          WHE RE vpid_va lue = p_in _vpid;
  12449  
  12450      EXCEPTI ON
  12451         WHEN  NO_DATA_F OUND
  12452         THEN
  12453  
  12454            - -DBMS_OUTP UT.PUT_LIN E('This VP ID does no t exists i n Person t able' );
  12455            R AISE e_no_ data_found ;
  12456      END;
  12457  
  12458  
  12459      --- Set  the trigg er name
  12460  
  12461      v_trigg er_name :=  v_person_ id || p_in _trigger_n m;
  12462  
  12463      --Set t he trigger  start tim e
  12464      v_start _time :=
  12465           (   TRUNC (SY SDATE + p_ in_num_day s)
  12466            +  p_in_num_ hours / 24
  12467            -  TO_DATE ( '01011970' , 'DDMMYYY Y'))
  12468            *  60
  12469           *  60
  12470           *  24
  12471           *  1000;
  12472  
  12473      UPDATE  qrtz_trigg ers
  12474         SET  START_TIME  = v_start _time, NEX T_FIRE_TIM E = v_star t_time
  12475       WHERE  trigger_na me = v_tri gger_name;
  12476  
  12477      p_out_n um_updated  := SQL%RO WCOUNT;
  12478  
  12479  
  12480      SELECT  start_time ,
  12481              TO_CHAR (
  12482                   TO_DA TE ('1970- 01-01', 'y yyy-mm-dd  hh:mi:ss')
  12483                 + (star t_TIME / 8 6400000),
  12484                 'yyyy-m m-dd hh24: mi:ss am')
  12485        INTO  v_new_star t_time, v_ new_date
  12486        FROM  QRTZ_TRIGG ERS
  12487       WHERE  trigger_na me = v_tri gger_name;
  12488  
  12489      --DBMS_ OUTPUT.PUT _LINE(' TR IGGER NEW_ DATE_TIME: - '||v_new _date||',  NEW_START_ TIME:-'||v _new_start _time);
  12490  
  12491      p_out_e rr_msg :=
  12492            ' No errors,  For VPID: - '
  12493         || p _in_vpid
  12494         || ' , For Trig ger:-'
  12495         || v _trigger_n ame
  12496         || '  the NEW_D ATE_TIME:-  '
  12497         || v _new_date;
  12498      COMMIT;
  12499  
  12500   EXCEPTION
  12501  
  12502      WHEN e_ no_data_fo und
  12503      THEN
  12504         p_ou t_err_msg  := 'This V PID does n ot exists  in Person  table';
  12505         p_ou t_num_upda ted := 0;
  12506      WHEN NO _DATA_FOUN D
  12507  
  12508      THEN
  12509         ---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.');
  12510         p_ou t_num_upda ted := 0;
  12511         p_ou t_err_msg  :=
  12512            ' No trigger  found for  this VPID  in QRTZ_T RIGGERS ta ble.';
  12513      WHEN OT HERS
  12514      THEN
  12515         --   DBMS_OUTPU T.PUT_LINE (sqlcode|| substr(sql errm,1,100 ));
  12516  
  12517         p_ou t_num_upda ted := 0;
  12518         p_ou t_err_msg  := SQLCODE  || SUBSTR  (SQLERRM,  1, 100);
  12519   END UPD_QR TZTRG_CLOC K_ST_TIME_ SP;
  12520   /
  12521  
  12522  
  12523   CREATE OR  REPLACE PU BLIC SYNON YM UPD_QRT ZTRG_CLOCK _ST_TIME_S P FOR ADR. UPD_QRTZTR G_CLOCK_ST _TIME_SP;
  12524  
  12525  
  12526   GRANT EXEC UTE ON ADR .UPD_QRTZT RG_CLOCK_S T_TIME_SP  TO EEUSR;
  12527   DROP PROCE DURE ADR.A CTIVEAGG_T RACKER_PRO C;
  12528  
  12529   CREATE OR  REPLACE PR OCEDURE AD R.ACTIVEAG G_TRACKER_ PROC
  12530   IS
  12531      gc_sche ma_owner_n ame         VARCHAR2  (20) := 'A DR';
  12532      v_parti tion_high_ val_date    DATE;
  12533      v_sql                          VARCHAR2  (2000);
  12534      v_cut_o ff_date                INTEGER : = 6;
  12535      v_CURRE NT_ACTIVE_ DATE        DATE;
  12536      v_PREVI OUS_ACTIVE _DATE       DATE;
  12537   BEGIN
  12538      SELECT  CURRENT_AC TIVE_DATE,  PREVIOUS_ ACTIVE_DAT E
  12539        INTO  v_CURRENT_ ACTIVE_DAT E, v_PREVI OUS_ACTIVE _DATE
  12540        FROM  ADR.ACTIVE AGG_TRACKE R
  12541       WHERE  LOADING_ST ATUS = 'YE S';
  12542  
  12543      ADRMGT. Job_Proces s_Log_Sp ( PC_job_nam e           => SUBSTR  ('ACTIVEA GG_TRACKER _AUR_TRGR' , 1, 60),
  12544                                    PD_job_log _date       => SYSDAT E,
  12545                                    PC_job_sta tus         => 'SUCCE SS',
  12546                                    PC_JOB_LOG _MESSAGE    => SUBSTR  (   'v_CU RRENT_ACTI VE_DATE :  '
  12547                                                                       || v_CUR RENT_ACTIV E_DATE
  12548                                                                       || ' v_P REVIOUS_AC TIVE_DATE:  '
  12549                                                                       || v_PRE VIOUS_ACTI VE_DATE,
  12550                                                                       1,
  12551                                                                       60));
  12552  
  12553      FOR r I N (SELECT  table_name ,
  12554                         partition_ name,
  12555                         high_value ,
  12556                         interval
  12557                   FROM  user_tab_p artitions
  12558                  WHERE  UPPER (tab le_name) =  ('ACTIVEA GG'))
  12559      LOOP
  12560         EXEC UTE IMMEDI ATE
  12561                'SELECT  '
  12562            | | r.high_v alue
  12563            | | ' from d ual'
  12564            I NTO v_part ition_high _val_date;
  12565  
  12566         IF      (TRUNC  (v_partiti on_high_va l_date) <  TRUNC (v_C URRENT_ACT IVE_DATE -  v_cut_off _date))
  12567            A ND TRUNC ( v_partitio n_high_val _date) <>  TRUNC (v_P REVIOUS_AC TIVE_DATE)
  12568         THEN
  12569            I F r.interv al = 'NO'
  12570            T HEN
  12571                v_sql :=
  12572                      'A LTER TABLE  '
  12573                   || gc _schema_ow ner_name
  12574                   || '. '
  12575                   || r. table_name
  12576                   || '  TRUNCATE P ARTITION '
  12577                   || r. partition_ name;
  12578  
  12579                ADRMGT.J ob_Process _Log_Sp (P C_job_name            => SUBSTR  ('ACTIVEAG G_TRACKER_ AUR_TRGR',  1, 60),
  12580                                             P D_job_log_ date       => SYSDATE ,
  12581                                             P C_job_stat us         => 'SUCCES S',
  12582                                             P C_JOB_LOG_ MESSAGE    => SUBSTR  (   v_sql
  12583                                                                                 || ' '
  12584                                                                                 || v_part ition_high _val_date,
  12585                                                                                 1,
  12586                                                                                 60));
  12587  
  12588                EXECUTE  IMMEDIATE  v_sql;
  12589            E LSE
  12590                v_sql :=
  12591                      'A LTER TABLE  '
  12592                   || gc _schema_ow ner_name
  12593                   || '. '
  12594                   || r. table_name
  12595                   || '  DROP PARTI TION '
  12596                   || r. partition_ name;
  12597  
  12598                ADRMGT.J ob_Process _Log_Sp (P C_job_name            => SUBSTR  ('ACTIVEAG G_TRACKER_ AUR_TRGR',  1, 60),
  12599                                             P D_job_log_ date       => SYSDATE ,
  12600                                             P C_job_stat us         => 'SUCCES S',
  12601                                             P C_JOB_LOG_ MESSAGE    => SUBSTR  (   v_sql
  12602                                                                                 || ' '
  12603                                                                                 || v_part ition_high _val_date,
  12604                                                                                 1,
  12605                                                                                 60));
  12606  
  12607                EXECUTE  IMMEDIATE  v_sql;
  12608            E ND IF;
  12609         END  IF;
  12610      END LOO P;
  12611   EXCEPTION
  12612      WHEN NO _DATA_FOUN D
  12613      THEN
  12614         ADRM GT.Job_Pro cess_Log_S p (
  12615            P C_job_name            => SUBSTR  ('ACTIVEAG G_TRACKER_ AUR_TRGR',  1, 60),
  12616            P D_job_log_ date       => SYSDATE ,
  12617            P C_job_stat us         => 'SUCCES S',
  12618            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) );
  12619      WHEN OT HERS
  12620      THEN
  12621         ADRM GT.Job_Pro cess_Log_S p (PC_job_ name           => SUB STR ('ACTI VEAGG_TRAC KER_AUR_TR GR', 1, 60 ),
  12622                                       PD_job_ log_date       => SYS DATE,
  12623                                       PC_job_ status         => 'PA RTITION DR OP FAILED' ,
  12624                                       PC_JOB_ LOG_MESSAG E   => SUB STR (   DB MS_UTILITY .FORMAT_CA LL_STACK
  12625                                                                          || DB MS_UTILITY .format_er ror_stack
  12626                                                                          || DB MS_UTILITY .format_er ror_backtr ace,
  12627                                                                          1,
  12628                                                                          60));
  12629   END ACTIVE AGG_TRACKE R_PROC;
  12630   /
  12631   DROP PROCE DURE ADR.B ATCH_ACA_P ROCESSED_S P;
  12632  
  12633   CREATE OR  REPLACE PR OCEDURE AD R.BATCH_AC A_PROCESSE D_SP
  12634   AS
  12635      VF_FILE _HANDLE UT L_FILE.FIL E_TYPE;
  12636  
  12637      VC_log_ step           VARCHA R2(500);
  12638      gc_job_ name           VARCHA R2(30) :=  'BATCH_ACA _PROCESSED _JOB';
  12639  
  12640      CC_BATC H_ACA_TOPR OCESS_DIR    VARCHAR2 (30):= 'BA TCH_ACA_TO PROCESS_DI R';
  12641      CC_BATC H_ACA_LOG_ DIR          VARCHAR2 (30):= 'BA TCH_ACA_LO G_DIR';
  12642  
  12643      VC_file _name          VARCHA R2(30):= ' cms_addres s_file.txt ';
  12644      VC_log_ file_name      VARCHA R2(30):= ' cms_addres s_file.log ';
  12645  
  12646      VN_rows _count_id1     NUMBER  := 0;
  12647      VN_rows _count_id2     NUMBER  := 0;
  12648      VN_elap sed_time       NUMBER  := 0;
  12649      VN_temp                NUMBER  := 0;
  12650  
  12651      time_a      INTEGE R;
  12652      time_b      INTEGE R;
  12653      time_c      INTEGE R;
  12654      time_d      INTEGE R;
  12655  
  12656      gc_inte ration         NUMBER := 0;
  12657      vn_fetc h_lim          NUMBER := 10000;
  12658      VN_rowc nt_fetched     NUMBER  := 0;
  12659      vn_tota l_rows_tob e_processe d NUMBER:=  0;
  12660  
  12661      VN_EXCE PTION_CNT      NUMBER  ;
  12662      VC_erro r_msg          VARCHA R2(5000);
  12663  
  12664      TYPE ID _RECORD IS  RECORD (
  12665          COR RESPONDENC E_NUM    V ARCHAR2(30 ),
  12666          COR RESPONDENC E_ID1    N UMBER,
  12667          COR RESPONDENC E_ID2    N UMBER
  12668        );
  12669  
  12670      TYPE ID _REC_TAB I S TABLE OF  ID_RECORD  INDEX BY  BINARY_INT EGER;
  12671        ID_RE CORD_TAB I D_REC_TAB;
  12672  
  12673      CURSOR  corres_id_ C IS
  12674         SELE CT corresp ondence_nu m,
  12675           CA SE INSTR(c orresponde nce_num,'- ')
  12676           WH EN 0 THEN
  12677              TO_NUMBER( correspond ence_num)
  12678           WH EN 1 THEN
  12679                 TO_NUMB ER('1')
  12680           EL SE
  12681                    TO_N UMBER(SUBS TR(corresp ondence_nu m,1, INSTR (correspon dence_num, '-')-1))
  12682          END  corresp_i d1 ,
  12683          CAS E INSTR(co rresponden ce_num,'-' )
  12684            W HEN
  12685                LENGTH(c orresponde nce_num) T HEN
  12686                     TO_ NUMBER('1' )
  12687              ELSE
  12688                   TO_NU MBER(SUBST R(correspo ndence_num , INSTR(co rresponden ce_num,'-' )+1))
  12689          END  corresp_i d2
  12690        FROM  ADR.ACA_MA IL_RESPONS E_EXT;
  12691  
  12692   BEGIN
  12693  
  12694       VF_FIL E_HANDLE : = UTL_FILE .fopen('BA TCH_ACA_TO PROCESS_DI R',VC_file _name,'R') ;
  12695       IF UTL _FILE.IS_O PEN(VF_FIL E_HANDLE)  THEN
  12696  
  12697            U TL_FILE.FC LOSE(VF_FI LE_HANDLE) ;
  12698  
  12699       END IF ;
  12700  
  12701       EXECUT E IMMEDIAT E 'ALTER S ESSION SET  PARALLEL_ FORCE_LOCA L=TRUE';
  12702  
  12703       SELECT  COUNT(1)
  12704          INT O vn_total _rows_tobe _processed
  12705       FROM A DR.ACA_MAI L_RESPONSE _EXT;
  12706  
  12707       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'));
  12708       time_a  := dbms_u tility.get _time;
  12709  
  12710  
  12711       VC_log _step := ' BULK LOAD  BEGINS';
  12712  
  12713       -- === ========== ========== ========== ========== ========== ===
  12714       --
  12715       -- Beg in Bulk Co llect Fetc h
  12716       --
  12717       -- === ========== ========== ========== ========== ========== ===
  12718       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => gc_jo b_name,
  12719                                      PD_job_l og_date =>  SYSDATE,
  12720                                      PC_job_s tatus => ' INFORMATIO N - Proces s Initiati on',
  12721                                      PC_job_l og_message  => gc_job _name||' S tarted',
  12722                                      pc_text1  => 'Total  Rows From  File '||  vn_total_r ows_tobe_p rocessed | |' - BULK  LIMIT: '||  vn_fetch_ lim,
  12723                                      PD_date1  => SYSDAT E
  12724            ) ;
  12725  
  12726       OPEN c orres_id_C ;
  12727       LOOP
  12728  
  12729          FET CH corres_ id_C BULK  COLLECT IN TO ID_RECO RD_TAB LIM IT vn_fetc h_lim;
  12730          EXI T WHEN ID_ RECORD_TAB .COUNT = 0 ;
  12731          gc_ interation  := gc_int eration +  1;
  12732  
  12733          VC_ log_step : = 'Process  ID1 - Ite ration# '| |gc_intera tion;
  12734  
  12735          VN_ rowcnt_fet ched := VN _rowcnt_fe tched + ID _RECORD_TA B.COUNT;
  12736  
  12737          tim e_b := dbm s_utility. get_time;
  12738  
  12739          FOR ALL indx I N ID_RECOR D_TAB.FIRS T.. ID_REC ORD_TAB.LA ST SAVE EX CEPTIONS
  12740              UPDATE ADR .correspon dence
  12741              SET corres pondence_s tatus_id =  8,
  12742              correspond ence_statu s_date  =  SYSDATE,
  12743               record_mo dified_by         = ' 557606',
  12744              record_mod ified_date         =  SYSDATE,
  12745              record_mod ified_coun t       =  record_mod ified_coun t +1
  12746              WHERE corr espondence _id = ID_R ECORD_TAB( indx).CORR ESPONDENCE _ID1;
  12747  
  12748            V C_log_step  := 'Row C ounts ID1  - Iteratio n# '||gc_i nteration;
  12749  
  12750           FO R I IN 1.. ID_RECORD_ TAB.COUNT  LOOP
  12751               VN_rows_c ount_id1:=  VN_rows_c ount_id1 +  SQL%BULK_ ROWCOUNT(i );
  12752           EN D LOOP;
  12753  
  12754           CO MMIT;
  12755  
  12756           VC _log_step  := 'Proces s ID2 - It eration# ' ||gc_inter ation;
  12757           FO RALL indx  IN ID_RECO RD_TAB.FIR ST.. ID_RE CORD_TAB.L AST SAVE E XCEPTIONS
  12758                    UPDA TE ADR.cor respondenc e
  12759                    SET  correspond ence_statu s_id = 8,
  12760                    corr espondence _status_da te = SYSDA TE,
  12761                    reco rd_modifie d_by = '55 7606',
  12762                    reco rd_modifie d_date = S YSDATE,
  12763                    reco rd_modifie d_count =  record_mod ified_coun t +1
  12764               WHERE cor respondenc e_id = ID_ RECORD_TAB (indx).COR RESPONDENC E_ID2;
  12765  
  12766           VC _log_step  := 'Row Co unts ID2 -  Iteration # '||gc_in teration;
  12767  
  12768           FO R I IN 1.. ID_RECORD_ TAB.COUNT  LOOP
  12769               VN_rows_c ount_id2:=  VN_rows_c ount_id2 +  SQL%BULK_ ROWCOUNT(i );
  12770           EN D LOOP;
  12771  
  12772           CO MMIT;
  12773  
  12774           ti me_c := db ms_utility .get_time;
  12775           VN _elapsed_t ime := ROU ND((time_c  - time_b) /100/60,2) ;
  12776  
  12777           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');
  12778  
  12779           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => g c_job_name ,
  12780                                         PD_jo b_log_date  => SYSDAT E,
  12781                                         PC_jo b_status = > 'INFORMA TION - Ite ration: '| | gc_inter ation||'-  Elapse: '| |VN_elapse d_time||'  min',
  12782                                         PC_jo b_log_mess age => 'Ro ws Updated : ID1: '|| VN_rows_co unt_id1 || ' - ID2: ' ||VN_rows_ count_id2,
  12783                                         PD_da te1 => SYS DATE
  12784                                 );
  12785  
  12786  
  12787           EX IT WHEN ID _RECORD_TA B.COUNT =  0;
  12788  
  12789        END L OOP;
  12790  
  12791        CLOSE  corres_id _C;
  12792  
  12793        VC_lo g_step :=  'Process C ompleted -  Iteration # '||gc_in teration;
  12794  
  12795        time_ d := dbms_ utility.ge t_time;
  12796  
  12797        VN_el apsed_time  := ROUND( (time_d -  time_a)/10 0/60,2);
  12798  
  12799        ADRMG T.Job_Proc ess_Log_Sp (PC_job_na me => gc_j ob_name,
  12800                              PD_jo b_log_date  => SYSDAT E,
  12801                              PC_jo b_status = > 'INFORMA TION - Pro cess Compl eted ', -- - Rows TO  BE Process ed: '||vn_ total_rows _tobe_proc essed,
  12802                              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,
  12803                              pc_te xt1 => 'To tal Rows F rom File ' || vn_tota l_rows_tob e_processe d,
  12804                              PD_da te1 => SYS DATE
  12805           );
  12806  
  12807        VC_lo g_step :=  'Checking  External L og File ';
  12808  
  12809        SELEC T COUNT(1)
  12810            I NTO VN_tem p
  12811        FROM  ADR.ACA_MA IL_RESPONS E_LOG_EXT
  12812        WHERE  upper(tex t) LIKE '% ORA%'
  12813        OR up per(text)  LIKE '%ERR OR%'
  12814        OR up per(text)  LIKE '%FAI L%';
  12815  
  12816        IF VN _temp >= 1  THEN
  12817  
  12818           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => g c_job_name ,
  12819                              PD_jo b_log_date  => SYSDAT E,
  12820                              PC_jo b_status = > 'WARNING  - Process  Completed , Found Er ror in Log  ',
  12821                              PC_jo b_log_mess age => 'ER OR FOUND I N LOG FILE  - PLEASE  REVIEW LOG  FILE ON S ERVER',
  12822                              pc_te xt1 => 'To tal Rows U pdated ID1 : '||VN_ro ws_count_i d1||' ID2:  '||VN_row s_count_id 2,
  12823                              PD_da te1 => SYS DATE
  12824                  );
  12825        ELSE
  12826  
  12827            A DRMGT.Job_ Process_Lo g_Sp(PC_jo b_name =>  gc_job_nam e,
  12828                                       PD_job_ log_date = > SYSDATE,
  12829                                       PC_job_ status =>  'INFORMATI ON - Proce ss Complet ed SUCCESS FULLY!',
  12830                                       PC_job_ log_messag e => 'NO E ROR FOUND  IN EXTERNA L LOG FILE ',
  12831                                       PD_date 1 => SYSDA TE
  12832                  );
  12833        END I F;
  12834  
  12835  
  12836       -- === ========== ========== ========== ========== ========== =====
  12837       --
  12838       -- Mov ing file n ame to Pro cessed dir  from toPr ocess fold er
  12839       --
  12840       -- === ========== ========== ========== ========== ========== =====
  12841       UTL_FI LE.fremove (CC_BATCH_ ACA_TOPROC ESS_DIR, V C_file_nam e);
  12842       --UTL_ FILE.fremo ve(CC_BATC H_ACA_LOG_ DIR, VC_lo g_file_nam e);
  12843  
  12844  
  12845       EXCEPT ION
  12846  
  12847         WHEN  UTL_FILE. INVALID_PA TH THEN
  12848                 DBMS_OU TPUT.put_l ine('Error  : INVALID  PATH (' | | CC_BATCH _ACA_TOPRO CESS_DIR | |') ') ;
  12849                 ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (gc_job_na me,1,60),
  12850                                        PD_job _log_date  => SYSDATE ,
  12851                                        PC_job _status =>  'ERROR -  INVALID PA TH - '||VC _file_name ,
  12852                                        PC_job _log_messa ge => 'PLE ASE MAKE S URE FILE E XISTED PRI OR TO RUNN ING THE JO B',
  12853                                        pc_tex t1 => 'INV ALID PATH  '||CC_BATC H_ACA_TOPR OCESS_DIR,
  12854                                        PD_dat e1 => SYSD ATE
  12855                                 );
  12856  
  12857         WHEN  UTL_FILE. INVALID_OP ERATION TH EN
  12858                 DBMS_OU TPUT.put_l ine('Error  : INVALID  FILE OPER ATION - FI LE NOT FOU ND '|| VC_ file_name  );
  12859                 ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (gc_job_na me,1,60),
  12860                                        PD_job _log_date  => SYSDATE ,
  12861                                        PC_job _status =>  'ERROR -  FILE NOT F OUND, '||V C_file_nam e,
  12862                                        PC_job _log_messa ge => 'PLE ASE MAKE S URE FILE E XISTED',
  12863                                        pc_tex t1 => CC_B ATCH_ACA_T OPROCESS_D IR||'.'||V C_file_nam e||' NOT E XISTED!',
  12864                                        PD_dat e1 => SYSD ATE
  12865                                 );
  12866            I F UTL_FILE .IS_OPEN(V F_FILE_HAN DLE) THEN
  12867                 UTL_FIL E.FCLOSE(V F_FILE_HAN DLE);
  12868            E ND IF;
  12869  
  12870         WHEN  UTL_FILE. INVALID_MO DE THEN
  12871                 DBMS_OU TPUT.Put_l ine('Error  : Invalid  Mode ' ||  CC_BATCH_ ACA_TOPROC ESS_DIR );
  12872  
  12873                 ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (gc_job_na me,1,60),
  12874                                        PD_job _log_date  => SYSDATE ,
  12875                                        PC_job _status =>  'ERROR -  INVALID MO DE, '||VC_ file_name,
  12876                                        PC_job _log_messa ge => 'PLE ASE MAKE S URE FILE E XISTED',
  12877                                        pc_tex t1 => CC_B ATCH_ACA_T OPROCESS_D IR||'.'||V C_file_nam e||' NOT E XISTED!',
  12878                                        PD_dat e1 => SYSD ATE
  12879                                 );
  12880                 UTL_FIL E.FCLOSE(V F_FILE_HAN DLE);
  12881  
  12882         WHEN  NO_DATA_F OUND THEN
  12883           AD RMGT.Job_P rocess_Log _Sp(
  12884                    PC_j ob_name =>  SUBSTR(gc _job_name, 1,60),
  12885                    PD_j ob_log_dat e => SYSDA TE,
  12886                    PC_j ob_status  => 'WARNIN G - No DAT A FOUND -  '||SUBSTR( VC_log_ste p,1,60),
  12887                    PC_j ob_log_mes sage => 'W ARNING - ' || SUBSTR( SQLCODE,1, 60)||' - '  ||SUBSTR( SQLERRM,1, 254),
  12888                    PD_d ate1 => SY SDATE,
  12889                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  12890  
  12891               UTL_FILE. FCLOSE(VF_ FILE_HANDL E);
  12892  
  12893         WHEN  OTHERS TH EN
  12894  
  12895            V N_EXCEPTIO N_CNT := S QL%BULK_EX CEPTIONS.C OUNT;
  12896            F OR I IN 1  .. VN_EXCE PTION_CNT  LOOP
  12897  
  12898            V C_error_ms g :=
  12899                  'ERROR  BULK EXCE PTION: ' | | VC_log_s tep||CHR(1 0) || SQL% BULK_EXCEP TIONS(I).E RROR_INDEX  ||
  12900                  ' ID1:  ' || ID_R ECORD_TAB( I).CORRESP ONDENCE_ID 1 || ' - I DX2: '||ID _RECORD_TA B(I).CORRE SPONDENCE_ ID2||
  12901                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  12902  
  12903                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(gc_job_n ame,1,60),
  12904                                                PD_job_lo g_date =>  SYSDATE,
  12905                                                PC_job_st atus => 'E RROR BULK  EXCEPTION  - Row# '|| SQL%BULK_E XCEPTIONS( I).ERROR_I NDEX,
  12906                                                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,
  12907                                                PC_text1  => ID_RECO RD_TAB(I). CORRESPOND ENCE_ID1||  ' - IDX2:  '||ID_REC ORD_TAB(I) .CORRESPON DENCE_ID2,
  12908                                                PD_date1  => SYSDATE
  12909                                 );
  12910  
  12911                 DBMS_OU TPUT.put_l ine(VC_err or_msg);
  12912  
  12913            E ND LOOP;
  12914  
  12915            A DRMGT.Job_ Process_Lo g_Sp(
  12916                    PC_j ob_name =>  SUBSTR(gc _job_name, 1,60),
  12917                    PD_j ob_log_dat e => SYSDA TE,
  12918                    PC_j ob_status  => 'ERROR:  Unknown E xception -  '||SUBSTR (VC_log_st ep,1,60),
  12919                    PC_j ob_log_mes sage => 'E RROR CODE  '|| SUBSTR (SQLCODE,1 ,60)||' -  ' ||SUBSTR (SQLERRM,1 ,254),
  12920                    PD_d ate1 => SY SDATE,
  12921                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  12922  
  12923            U TL_FILE.FC LOSE(VF_FI LE_HANDLE) ;
  12924  
  12925    END BATCH _ACA_PROCE SSED_SP;
  12926   /
  12927  
  12928  
  12929   CREATE OR  REPLACE PU BLIC SYNON YM BATCH_A CA_PROCESS ED_SP FOR  ADR.BATCH_ ACA_PROCES SED_SP;
  12930   DROP PROCE DURE ADR.L OAD_CORRES PONDENCE_I NFO_SP;
  12931  
  12932   CREATE OR  REPLACE PR OCEDURE AD R.LOAD_COR RESPONDENC E_INFO_SP(
  12933       p_bulk _limit         NUMBER  DEFAULT 1 000,
  12934       p_effe ctive_date     DATE)
  12935   IS
  12936  
  12937      -- 5562 66: Add jo b(s) to po pulate ACA  mail queu e records  into Corre spondence  table
  12938      gc_job_ name              VAR CHAR2 (40)  := 'LOAD_ CORRESPOND ENCE_INFO_ JOB';
  12939  
  12940      CC_LETT ER_TEMPLAT E_ID         CONSTANT  NUMBER :=  103031;
  12941      p_corr_ effective_ date         DATE;
  12942      p_corr_ year                    NUMBER;
  12943  
  12944  
  12945      c_limit   CONSTANT  PLS_INTEG ER := p_bu lk_limit;
  12946      gc_inte ration  PL S_INTEGER  := 0;
  12947  
  12948      VC_msg_ step           VARCHA R2(200);
  12949      VC_erro r_msg          VARCHA R2(200);
  12950      VN_tota l_count        NUMBER  := 0;
  12951      VN_elap sed_time       NUMBER ;
  12952      VN_rowc nt_fetched     NUMBER  := 0;
  12953  
  12954  
  12955      time_a      INTEGE R;
  12956      time_b      INTEGE R;
  12957      time_c      INTEGE R;
  12958      time_d      INTEGE R;
  12959  
  12960  
  12961      dml_err ors         EXCEPTION ;
  12962      PRAGMA  EXCEPTION_ INIT(dml_e rrors, -24 381);
  12963      VN_EXCE PTION_CNT   PLS_INTEG ER;
  12964  
  12965      TYPE CO RRSD_PERSO NID IS TAB LE OF ADR. correspond ence.perso n_id%TYPE  INDEX BY B INARY_INTE GER;
  12966  
  12967      CORRSD_ PERSONID_T AB  CORRSD _PERSONID;
  12968  
  12969  
  12970      CURSOR  GetCorresp ondenceInf o_C (l_eff _date DATE , l_eff_ye ar NUMBER)  IS
  12971      SELECT  DISTINCT p erson_id
  12972      FROM (
  12973           SE LECT m.per son_id
  12974                 FROM me c_period m
  12975                WHERE (    m.mec_en d_date IS  NULL
  12976                       O R m.mec_en d_date >=  l_eff_date )
  12977               MINUS
  12978               SELECT pe rson_id
  12979                 FROM co rresponden ce c
  12980                WHERE      c.com_le tter_templ ate_id = C C_LETTER_T EMPLATE_ID
  12981                   AND E XTRACT( YE AR FROM c. correspond ence_effec tive_date) = l_eff_ye ar
  12982       )
  12983       ;
  12984  
  12985  
  12986   BEGIN
  12987  
  12988       SELECT  TO_DATE(( TO_CHAR(p_ effective_ date,'DD-M ON-YYYY')| |' 00:00:0 0'),'DD-MO N-YYYY HH2 4:MI:SS'),
  12989       EXTRAC T (YEAR FR OM  p_effe ctive_date )
  12990           IN TO  p_corr _effective _date, p_c orr_year
  12991       FROM D UAL;
  12992  
  12993  
  12994       -- === ========== ========== ========== ========== ========== ===
  12995       --
  12996       -- Beg in Bulk Co llect Fetc h
  12997       --
  12998       -- === ========== ========== ========== ========== ========== ===
  12999       EXECUT E IMMEDIAT E 'ALTER S ESSION for ce paralle l dml para llel 4';
  13000       EXECUT E IMMEDIAT E 'ALTER S ESSION for ce paralle l query pa rallel 4';
  13001       EXECUT E IMMEDIAT E 'ALTER S ESSION set  DB_FILE_M ULTIBLOCK_ READ_COUNT =256';
  13002       EXECUT E IMMEDIAT E 'ALTER S ESSION SET  PARALLEL_ FORCE_LOCA L=TRUE';
  13003  
  13004       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'));
  13005  
  13006       time_a  := dbms_u tility.get _time;
  13007       VN_tot al_count : = 0;
  13008  
  13009       VC_msg _step := ' OPEN CURSO R';
  13010  
  13011      ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => gc_job _name,
  13012                                      PD_job_l og_date =>  SYSDATE,
  13013                                      PC_job_s tatus => ' INFORMATIO N - Proces s Initiati on',
  13014                                      PC_job_l og_message  => gc_job _name,
  13015                                      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,
  13016                                      PD_date1  => SYSDAT E
  13017                                 );
  13018  
  13019       OPEN G etCorrespo ndenceInfo _C (p_corr _effective _date, p_c orr_year)  ;
  13020       LOOP
  13021            g c_interati on := gc_i nteration  + 1;
  13022  
  13023            F ETCH GetCo rresponden ceInfo_C B ULK COLLEC T INTO COR RSD_PERSON ID_TAB LIM IT c_limit ;
  13024  
  13025            V N_rowcnt_f etched :=  VN_rowcnt_ fetched +  CORRSD_PER SONID_TAB. COUNT;
  13026  
  13027            V C_msg_step  := 'BULK  LOAD BEGIN S';
  13028  
  13029                time_b : = dbms_uti lity.get_t ime;
  13030  
  13031            F ORALL indx  IN CORRSD _PERSONID_ TAB.FIRST. . CORRSD_P ERSONID_TA B.LAST SAV E EXCEPTIO NS
  13032  
  13033  
  13034                INSERT / *+ APPEND  */ INTO AD R.CORRESPO NDENCE (
  13035                  CORRES PONDENCE_I D,
  13036                           CORRESPO NDENCE_TYP E_ID,
  13037                           CORRESPO NDENCE_STA TUS_ID,
  13038                           PERSON_I D,
  13039                           CORRESPO NDENCE_STA TUS_DATE,
  13040                           CORRESPO NDENCE_EFF ECTIVE_DAT E,
  13041                           COM_LETT ER_TEMPLAT E_ID,
  13042                          -- ADDRES S_H_ID ,
  13043                           RECORD_C REATED_BY,
  13044                           RECORD_C REATED_DAT E ,
  13045                           RECORD_M ODIFIED_BY  ,
  13046                           RECORD_M ODIFIED_DA TE ,
  13047                           RECORD_M ODIFIED_CO UNT )
  13048                    VALU ES(
  13049                         CORRESPOND ENCE_S.NEX TVAL ,
  13050                         1,
  13051                         4,
  13052                         CORRSD_PER SONID_TAB( indx),
  13053                         TRUNC(SYSD ATE),
  13054                         p_effectiv e_date,
  13055                         CC_LETTER_ TEMPLATE_I D,
  13056                         '556266',
  13057                         SYSDATE,
  13058                         '556266',
  13059                         SYSDATE,
  13060                         0
  13061                       )  ;
  13062  
  13063            c ommit;
  13064  
  13065            V C_msg_step  := 'Displ aying row  count';
  13066  
  13067            - - Rows cou nt added
  13068  
  13069            F OR I IN 1. .CORRSD_PE RSONID_TAB .COUNT LOO P
  13070                  VN_tot al_count : = VN_total _count + S QL%BULK_RO WCOUNT(I);
  13071            E ND LOOP;
  13072  
  13073            t ime_c := d bms_utilit y.get_time ;
  13074            V N_elapsed_ time := RO UND((time_ c - time_b )/100/60,2 );
  13075  
  13076            D BMS_APPLIC ATION_INFO .set_clien t_info('It eration# ' || gc_inte ration||'  - Rows: '| |VN_total_ count ||'  - '||VN_el apsed_time ||' min');
  13077  
  13078            A DRMGT.Job_ Process_Lo g_Sp(PC_jo b_name =>  gc_job_nam e,
  13079                                                PD_job_lo g_date =>  SYSDATE,
  13080                                                PC_job_st atus => 'I NFORMATION  - Iterati on: '|| gc _interatio n,
  13081                                                PC_job_lo g_message  => 'Total  Rows Added : '||VN_to tal_count| |' - Elap( min): '||V N_elapsed_ time,
  13082                                                PD_date1  => SYSDATE
  13083                                 );
  13084  
  13085            E XIT WHEN C ORRSD_PERS ONID_TAB.C OUNT = 0;
  13086  
  13087  
  13088       END LO OP;
  13089  
  13090       CLOSE  GetCorresp ondenceInf o_C;
  13091  
  13092       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')) ;
  13093  
  13094       time_d  := dbms_u tility.get _time;
  13095  
  13096       VN_ela psed_time  := ROUND(( time_d - t ime_a)/100 /60,2);
  13097  
  13098  
  13099       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => gc_jo b_name,
  13100                                                PD_job_lo g_date =>  SYSDATE,
  13101                                                PC_job_st atus => 'I NFORMATION  - Process  Ended - E lap(min):  '||VN_elap sed_time,
  13102                                                PC_job_lo g_message  => 'Total  Rows Added /Rows Proc essed: '|| VN_total_c ount||'/'| |VN_rowcnt _fetched,
  13103                                                PD_date1  => SYSDATE
  13104                                 );
  13105  
  13106  
  13107     EXCEPTIO N
  13108  
  13109       WHEN d ml_errors  THEN
  13110  
  13111         VN_E XCEPTION_C NT := SQL% BULK_EXCEP TIONS.COUN T;
  13112  
  13113         FOR  I IN 1 ..  VN_EXCEPTI ON_CNT LOO P
  13114              VC_error_m sg :=
  13115                  'ERROR  BULK EXCE PTION: ' | | VC_msg_s tep||CHR(1 0) || SQL% BULK_EXCEP TIONS(I).E RROR_INDEX  ||
  13116                  ' Pers on ID: ' | | CORRSD_P ERSONID_TA B(I) ||
  13117                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  13118  
  13119                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => gc_jo b_name,
  13120                                                PD_job_lo g_date =>  SYSDATE,
  13121                                                PC_job_st atus => 'E RROR BULK  EXCEPTION  - Row# '|| SQL%BULK_E XCEPTIONS( I).ERROR_I NDEX,
  13122                                                PC_job_lo g_message  => 'Total  Rows Added /Rows Proc essed: '|| VN_total_c ount||'/'| |VN_rowcnt _fetched|| ' Elapsed:  '||VN_ela psed_time,
  13123                                                PC_text1  => SUBSTR( VC_error_m sg,1,200),
  13124                                                PD_date1  => SYSDATE
  13125                                 );
  13126  
  13127               DBMS_OUTP UT.put_lin e(VC_error _msg);
  13128  
  13129         END  LOOP;
  13130  
  13131      WHEN OT HERS THEN
  13132  
  13133         VC_e rror_msg : ='ERROR EX CEPTION -  '||VC_msg_ step||CHR( 10)|| SUBS TR('Unkown  Error: '| |SQLERRM,1 ,200);
  13134  
  13135         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => gc_ job_name,
  13136                                                        P D_job_log_ date => SY SDATE,
  13137                                                        P C_job_stat us => 'ERR OR EXCEPTI ON',
  13138                                                        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,
  13139                                                        P C_text1 =>  SUBSTR(VC _error_msg ,1,200),
  13140                                                        P D_date1 =>  SYSDATE
  13141                                 );
  13142  
  13143          DBM S_OUTPUT.P UT_LINE(VC _error_msg );
  13144  
  13145  
  13146   END LOAD_C ORRESPONDE NCE_INFO_S P;
  13147   /
  13148  
  13149  
  13150   CREATE OR  REPLACE PU BLIC SYNON YM LOAD_CO RRESPONDEN CE_INFO_SP  FOR ADR.L OAD_CORRES PONDENCE_I NFO_SP;
  13151   DROP PROCE DURE ADR.L OAD_MISSIN G_RESIDENT _ADDR_SP;
  13152  
  13153   CREATE OR  REPLACE PR OCEDURE AD R.LOAD_MIS SING_RESID ENT_ADDR_S P(
  13154       p_bulk _limit         NUMBER  DEFAULT 1 000)
  13155   IS
  13156  
  13157      -- 5492 34: Create  A Job to  Insert Res idential A ddresses f or Persons  with Perm anent but   without R esidential  addresses
  13158      --gc_sc hema_owner _name         VARCHAR 2 (10) :=  'ADR';
  13159      gc_prog ram_name               VARCHAR2  (40) := 'L OAD_MISSIN G_RESIDENT _ADDR_SP';
  13160  
  13161      dml_err ors         EXCEPTION ;
  13162      PRAGMA  EXCEPTION_ INIT(dml_e rrors, -24 381);
  13163  
  13164      time_a      INTEGE R;
  13165      time_b      INTEGE R;
  13166      time_c      INTEGE R;
  13167      time_d      INTEGE R;
  13168  
  13169      VC_msg_ step        VARCHAR2( 200);
  13170      VC_erro r_msg   VA RCHAR2(200 );
  13171      VN_tota l_count      NUMBER : = 0;
  13172  
  13173      VN_elap sed_time    NUMBER;
  13174  
  13175      VN_rowc nt_fetched   NUMBER : = 0;
  13176      VN_EXCE PTION_CNT   PLS_INTEG ER;
  13177  
  13178      C_PERM_ ADDRESSTYP E_ID CONST ANT NUMBER  := 144901 2;
  13179      C_RESI_ ADDRESSTYP E_ID CONST ANT NUMBER  := 180741 2;
  13180  
  13181  
  13182      TYPE NE W_RESIDENT _ADDRESS_T AB IS TABL E OF ADDRE SS%ROWTYPE   INDEX BY  BINARY_IN TEGER;
  13183      L_new_r esident_ad dr_tab     NEW_RESIDE NT_ADDRESS _TAB;
  13184  
  13185      c_limit   CONSTANT  PLS_INTEG ER := p_bu lk_limit;
  13186      gc_inte ration  PL S_INTEGER  := 0;
  13187  
  13188      CURSOR  GetPermAdd rInfo_C  I S
  13189      WITH AD D_RES_ADDR  AS
  13190        ( SEL ECT  perso n_id
  13191          FRO M (
  13192              SELECT DIS TINCT pers on_id
  13193              FROM addre ss a
  13194              WHERE STD_ ADDRESSTYP E_ID = C_P ERM_ADDRES STYPE_ID   -- permane nt addr
  13195              AND person _id IS NOT  NULL
  13196           MI NUS
  13197              SELECT DIS TINCT pers on_id
  13198              FROM addre ss a
  13199              WHERE  STD _ADDRESSTY PE_ID = C_ RESI_ADDRE SSTYPE_ID   -- reside ntial addr
  13200              AND person _id IS NOT  NULL
  13201          )
  13202        )
  13203      SELECT  *
  13204      FROM AD DRESS a
  13205      WHERE E XISTS (SEL ECT 1
  13206                    FROM  ADD_RES_A DDR d
  13207                    WHER E a.person _id = d.pe rson_id)
  13208      AND a.S TD_ADDRESS TYPE_ID =  C_PERM_ADD RESSTYPE_I D  -- perm anent addr
  13209      AND a.p erson_id I S NOT NULL ;
  13210  
  13211   BEGIN
  13212  
  13213       -- === ========== ========== ========== ========== ========== ===
  13214       --
  13215       -- Beg in Bulk Co llect Fetc h
  13216       --
  13217       -- === ========== ========== ========== ========== ========== ===
  13218       EXECUT E IMMEDIAT E 'ALTER S ESSION SET  PARALLEL_ FORCE_LOCA L=TRUE';
  13219  
  13220       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' ));
  13221  
  13222       time_a  := dbms_u tility.get _time;
  13223       VN_tot al_count : = 0;
  13224  
  13225       VC_msg _step := ' OPEN CURSO R';
  13226  
  13227      ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => gc_pro gram_name,
  13228                                      PD_job_l og_date =>  SYSDATE,
  13229                                      PC_job_s tatus => ' INFORMATIO N - Proces s Initiati on',
  13230                                      PC_job_l og_message  => 'Load  missing re sident add resses ',
  13231                                      pc_text1  => 'BULK  LIMIT: '||  c_limit,
  13232                                      PD_date1  => SYSDAT E
  13233                                 );
  13234  
  13235       OPEN G etPermAddr Info_C ;
  13236       LOOP
  13237            g c_interati on := gc_i nteration  + 1;
  13238  
  13239            F ETCH GetPe rmAddrInfo _C BULK CO LLECT INTO  L_new_res ident_addr _tab LIMIT  c_limit;
  13240  
  13241            V N_rowcnt_f etched :=  VN_rowcnt_ fetched +  L_new_resi dent_addr_ tab.COUNT;
  13242  
  13243            V C_msg_step  := 'BULK  LOAD BEGIN S';
  13244  
  13245            t ime_b := d bms_utilit y.get_time ;
  13246  
  13247            F ORALL indx  IN L_new_ resident_a ddr_tab.FI RST.. L_ne w_resident _addr_tab. LAST SAVE  EXCEPTIONS
  13248  
  13249                INSERT / *+ APPEND  */ INTO AD DRESS (
  13250                         ADDRESS_ID  ,
  13251                         PERSON_ID,
  13252                         INSURANCE_ ID,
  13253                         STD_ADDRES STYPE_ID,
  13254                         ADDRESS_CH ANGE_SRC_T YPE_ID,
  13255                         STD_INSTIT UTION_ID,
  13256                         ADDRESS_IN VALID_TYPE _ID,
  13257                         NCOA_STATU S_TYPE_ID,
  13258                         NCOA_DELIV ERY_TYPE_I D,
  13259                         NCOA_ZIP_M ATCH_TYPE_ ID,
  13260                         NCOA_ZIP_N O_MATCH_TY PE_ID,
  13261                         ADDRESS_LI NE1,
  13262                         ADDRESS_LI NE2,
  13263                         ADDRESS_LI NE3,
  13264                         CITY,
  13265                         STATE_CODE ,
  13266                         COUNTY_COD E,
  13267                         PROVINCE_C ODE,
  13268                         ZIP_CODE,
  13269                         ZIP_PLUS_4 ,
  13270                         POSTAL_COD E,
  13271                         COUNTRY_CO DE,
  13272                         ADDRESS_CH ANGE_EFFEC TIVE_DATE,
  13273                         ADDRESS_IN VALIDATED_ DATE,
  13274                         NCOA_ADDRE SS_CHECK_D ATE,
  13275                         ADDRESS_ST ART_DATE_T XT,
  13276                         ADDRESS_EN D_DATE_TXT ,
  13277                         ADDRESS_PH ONE_NUMBER ,
  13278                         RECORD_CRE ATED_BY,
  13279                         RECORD_CRE ATED_DATE,
  13280                         RECORD_MOD IFIED_BY,
  13281                         RECORD_MOD IFIED_DATE ,
  13282                         RECORD_MOD IFIED_COUN T,
  13283                         RECORD_MOD IFIED_SRC_ NAME,
  13284                         PERSON_REL ATION_ID,
  13285                         CASSCERTIF IEDTYPE_ID ,
  13286                         CASS_CERTI FIED_DATE,
  13287                         PURPOSE_OF _USE_TYPE_ ID)
  13288                    VALU ES(
  13289                         TRANSACTIO N_S.NEXTVA L ,
  13290                         L_new_resi dent_addr_ tab(indx). PERSON_ID,
  13291                         L_new_resi dent_addr_ tab(indx). INSURANCE_ ID,
  13292                         1807412,
  13293                         L_new_resi dent_addr_ tab(indx). ADDRESS_CH ANGE_SRC_T YPE_ID,
  13294                         L_new_resi dent_addr_ tab(indx). STD_INSTIT UTION_ID,
  13295                         L_new_resi dent_addr_ tab(indx). ADDRESS_IN VALID_TYPE _ID,
  13296                         L_new_resi dent_addr_ tab(indx). NCOA_STATU S_TYPE_ID,
  13297                         L_new_resi dent_addr_ tab(indx). NCOA_DELIV ERY_TYPE_I D,
  13298                         L_new_resi dent_addr_ tab(indx). NCOA_ZIP_M ATCH_TYPE_ ID,
  13299                         L_new_resi dent_addr_ tab(indx). NCOA_ZIP_N O_MATCH_TY PE_ID,
  13300                         L_new_resi dent_addr_ tab(indx). ADDRESS_LI NE1,
  13301                         L_new_resi dent_addr_ tab(indx). ADDRESS_LI NE2,
  13302                         L_new_resi dent_addr_ tab(indx). ADDRESS_LI NE3,
  13303                         L_new_resi dent_addr_ tab(indx). CITY,
  13304                         L_new_resi dent_addr_ tab(indx). STATE_CODE ,
  13305                         L_new_resi dent_addr_ tab(indx). COUNTY_COD E,
  13306                         L_new_resi dent_addr_ tab(indx). PROVINCE_C ODE,
  13307                         L_new_resi dent_addr_ tab(indx). ZIP_CODE,
  13308                         L_new_resi dent_addr_ tab(indx). ZIP_PLUS_4 ,
  13309                         L_new_resi dent_addr_ tab(indx). POSTAL_COD E,
  13310                         L_new_resi dent_addr_ tab(indx). COUNTRY_CO DE,
  13311                         L_new_resi dent_addr_ tab(indx). ADDRESS_CH ANGE_EFFEC TIVE_DATE,
  13312                         L_new_resi dent_addr_ tab(indx). ADDRESS_IN VALIDATED_ DATE,
  13313                         L_new_resi dent_addr_ tab(indx). NCOA_ADDRE SS_CHECK_D ATE,
  13314                         L_new_resi dent_addr_ tab(indx). ADDRESS_ST ART_DATE_T XT,
  13315                         L_new_resi dent_addr_ tab(indx). ADDRESS_EN D_DATE_TXT ,
  13316                         L_new_resi dent_addr_ tab(indx). ADDRESS_PH ONE_NUMBER ,
  13317                         '549234',
  13318                         SYSDATE,
  13319                         '549234',
  13320                         SYSDATE,
  13321                         0,
  13322                         L_new_resi dent_addr_ tab(indx). RECORD_MOD IFIED_SRC_ NAME,
  13323                         L_new_resi dent_addr_ tab(indx). PERSON_REL ATION_ID,
  13324                         L_new_resi dent_addr_ tab(indx). CASSCERTIF IEDTYPE_ID ,
  13325                         L_new_resi dent_addr_ tab(indx). CASS_CERTI FIED_DATE,
  13326                         L_new_resi dent_addr_ tab(indx). PURPOSE_OF _USE_TYPE_ ID) ;
  13327  
  13328            c ommit;
  13329  
  13330            V C_msg_step  := 'Displ aying row  count';
  13331  
  13332            - - Rows cou nt added
  13333            F OR I IN 1. .L_new_res ident_addr _tab.COUNT  LOOP
  13334                  VN_tot al_count : = VN_total _count + S QL%BULK_RO WCOUNT(I);
  13335            E ND LOOP;
  13336  
  13337            t ime_c := d bms_utilit y.get_time ;
  13338            V N_elapsed_ time := RO UND((time_ c - time_b )/100/60,2 );
  13339  
  13340            D BMS_APPLIC ATION_INFO .set_clien t_info('It eration# ' || gc_inte ration||'  - Rows: '| |VN_total_ count ||'  - '||VN_el apsed_time ||' min');
  13341  
  13342            A DRMGT.Job_ Process_Lo g_Sp(PC_jo b_name =>  gc_program _name,
  13343                                                PD_job_lo g_date =>  SYSDATE,
  13344                                                PC_job_st atus => 'I NFORMATION  - Iterati on: '|| gc _interatio n,
  13345                                                PC_job_lo g_message  => 'Rows A dded: '||V N_total_co unt||' - E lap(min):  '||VN_elap sed_time,
  13346                                                PD_date1  => SYSDATE
  13347                                 );
  13348  
  13349            E XIT WHEN L _new_resid ent_addr_t ab.COUNT =  0;
  13350  
  13351  
  13352       END LO OP;
  13353  
  13354       CLOSE  GetPermAdd rInfo_C;
  13355  
  13356       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')) ;
  13357  
  13358       time_d  := dbms_u tility.get _time;
  13359  
  13360       VN_ela psed_time  := ROUND(( time_d - t ime_a)/100 /60,2);
  13361  
  13362  
  13363       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => gc_pr ogram_name ,
  13364                                                PD_job_lo g_date =>  SYSDATE,
  13365                                                PC_job_st atus => 'I NFORMATION  - Process  Ended - E lap(min):  '||VN_elap sed_time,
  13366                                                PC_job_lo g_message  => 'Total  Rows Added /Rows Proc essed: '|| VN_total_c ount||'/'| |VN_rowcnt _fetched,
  13367                                                PD_date1  => SYSDATE
  13368                                 );
  13369  
  13370  
  13371     EXCEPTIO N
  13372  
  13373       WHEN d ml_errors  THEN
  13374  
  13375         VN_E XCEPTION_C NT := SQL% BULK_EXCEP TIONS.COUN T;
  13376  
  13377         FOR  I IN 1 ..  VN_EXCEPTI ON_CNT LOO P
  13378              VC_error_m sg :=
  13379                  'ERROR  BULK EXCE PTION: ' | | VC_msg_s tep||CHR(1 0) || SQL% BULK_EXCEP TIONS(I).E RROR_INDEX  ||
  13380                  ' Pers on ID: ' | | L_new_re sident_add r_tab(I).p erson_id | |
  13381                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  13382  
  13383                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => gc_pr ogram_name ,
  13384                                                PD_job_lo g_date =>  SYSDATE,
  13385                                                PC_job_st atus => 'E RROR BULK  EXCEPTION  - Row# '|| SQL%BULK_E XCEPTIONS( I).ERROR_I NDEX,
  13386                                                PC_job_lo g_message  => 'Total  Rows Added /Rows Proc essed: '|| VN_total_c ount||'/'| |VN_rowcnt _fetched|| ' Elapsed:  '||VN_ela psed_time,
  13387                                                PC_text1  => SUBSTR( VC_error_m sg,1,200),
  13388                                                PD_date1  => SYSDATE
  13389                                 );
  13390  
  13391               DBMS_OUTP UT.put_lin e(VC_error _msg);
  13392  
  13393         END  LOOP;
  13394  
  13395      WHEN OT HERS THEN
  13396  
  13397         VC_e rror_msg : ='ERROR EX CEPTION -  '||VC_msg_ step||CHR( 10)|| SUBS TR('Unkown  Error: '| |SQLERRM,1 ,200);
  13398  
  13399         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => gc_ program_na me,
  13400                                                        P D_job_log_ date => SY SDATE,
  13401                                                        P C_job_stat us => 'ERR OR EXCEPTI ON',
  13402                                                        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,
  13403                                                        P C_text1 =>  SUBSTR(VC _error_msg ,1,200),
  13404                                                        P D_date1 =>  SYSDATE
  13405                                 );
  13406  
  13407          DBM S_OUTPUT.P UT_LINE(VC _error_msg );
  13408  
  13409  
  13410   END LOAD_M ISSING_RES IDENT_ADDR _SP;
  13411   /
  13412  
  13413  
  13414   CREATE OR  REPLACE PU BLIC SYNON YM LOAD_MI SSING_RESI DENT_ADDR_ SP FOR ADR .LOAD_MISS ING_RESIDE NT_ADDR_SP ;