3. EPMO Open Source Coordination Office Redaction File Detail Report

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

3.1 Files compared

# Location File Last Modified
1 C:\AraxisMergeCompare\Pri_un\ADR\DDL\ADR procedure.sql Wed Apr 24 15:52:16 2019 UTC
2 C:\AraxisMergeCompare\Pri_re\ADR\DDL\ADR procedure.sql Fri Apr 26 17:50:05 2019 UTC

3.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 2 27132
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||' DOMAIN . EXT ',
  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   -- 10/15/2 018  Hsiao -Kun Tu           rep lace recor d_created_ date with  transmissi on_date
  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        transm ission_dat e < TRUNC( SYSDATE) -  VN_parm_h l7_err_txt _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  
  2760     VC_sql_s tatement:= 'ALTER SES SION SET p arallel_fo rce_local= TRUE';      --  force  parallel  to a local  node
  2761     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  2762  
  2763  
  2764     VD_rec_g roup_date  := TRUNC(S YSDATE);
  2765  
  2766     VD_log_d ate := SYS DATE;
  2767     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  2768                                 PD _job_log_d ate => VD_ log_date,
  2769                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  2770                                 PD _date1 =>  VD_rec_gro up_date,
  2771                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  2772  
  2773   -- ******* ********** ********** ********** ********** ********** ********** ********
  2774   -- *
  2775   -- * Valid ate input  parameters
  2776   -- *
  2777   -- ******* ********** ********** ********** ********** ********** ********** ********
  2778  
  2779   -- * Check  run stand alone flag
  2780  
  2781     IF PB_ru n_standalo ne IS NULL
  2782      OR NOT  PB_run_sta ndalone TH EN
  2783  
  2784       VB_run _standalon e := FALSE ;
  2785       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  2786  
  2787     ELSE
  2788  
  2789       VB_run _standalon e := TRUE;
  2790       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  2791  
  2792     END IF;
  2793  
  2794   -- * Check  run on re port insta nce flag
  2795  
  2796     IF PB_al low_rpt_in st IS NULL
  2797      OR NOT  PB_allow_r pt_inst TH EN
  2798  
  2799       VB_all ow_rpt_ins t := FALSE ;
  2800       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  2801  
  2802     ELSE
  2803  
  2804       VB_all ow_rpt_ins t := TRUE;
  2805       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  2806  
  2807     END IF;
  2808  
  2809   -- ******* ********** ********** ********** ********** ********** ********** ********
  2810   -- *
  2811   -- * Retri eve proces sing param eters
  2812   -- *
  2813   -- ******* ********** ********** ********** ********** ********** ********** ********
  2814  
  2815   -- Process  Parameter  OLDEST HL 7 ERROR TE XT DAYS KE PT
  2816  
  2817     BEGIN
  2818  
  2819       SELECT     Value
  2820       INTO       VN_par m_hl7_err_ txt_age
  2821       FROM       ADRMGT .Adr_Param eter
  2822       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  2823       AND        Parame ter_name =  'OLDEST H L7 ERROR T EXT DAYS K EPT';
  2824  
  2825       IF VN_ parm_hl7_e rr_txt_age  IS NULL T HEN
  2826  
  2827         VD_l og_date :=  SYSDATE;
  2828         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2829                                      PD_job_l og_date =>  VD_log_da te,
  2830                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  2831                                      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),
  2832                                      PD_date1  => VD_rec _group_dat e,
  2833                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2834  
  2835         RETU RN;
  2836  
  2837       END IF ;
  2838  
  2839     EXCEPTIO N
  2840  
  2841       WHEN N O_DATA_FOU ND THEN
  2842  
  2843         VD_l og_date :=  SYSDATE;
  2844         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2845                                      PD_job_l og_date =>  VD_log_da te,
  2846                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  2847                                      PC_job_l og_message  => 'Param eter for O LDEST HL7  ERROR TEXT  DAYS KEPT  was not f ound. Term inating pr ocess.',
  2848                                      PD_date1  => VD_rec _group_dat e,
  2849                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2850  
  2851         RETU RN;
  2852  
  2853       WHEN O THERS THEN
  2854  
  2855         VD_l og_date :=  SYSDATE;
  2856         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2857                                      PD_job_l og_date =>  VD_log_da te,
  2858                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  2859                                      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. '
  2860                                                                      || SQLERR M,1,2000),
  2861                                      PD_date1  => VD_rec _group_dat e,
  2862                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2863  
  2864         RETU RN;
  2865  
  2866     END;
  2867  
  2868   -- Process  Parameter  OLDEST LO G FILE DAY S KEPT
  2869  
  2870     BEGIN
  2871  
  2872       SELECT     Value
  2873       INTO       VN_par m_log_file _age
  2874       FROM       ADRMGT .Adr_Param eter
  2875       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  2876       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  2877  
  2878       IF VN_ parm_log_f ile_age IS  NULL THEN
  2879  
  2880         VD_l og_date :=  SYSDATE;
  2881         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2882                                      PD_job_l og_date =>  VD_log_da te,
  2883                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  2884                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST L OG FILE DA YS KEPT is  NULL. Ter minating p rocess.',1 ,2000),
  2885                                      PD_date1  => VD_rec _group_dat e,
  2886                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2887  
  2888         RETU RN;
  2889  
  2890       END IF ;
  2891  
  2892     EXCEPTIO N
  2893  
  2894       WHEN N O_DATA_FOU ND THEN
  2895  
  2896         VD_l og_date :=  SYSDATE;
  2897         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2898                                      PD_job_l og_date =>  VD_log_da te,
  2899                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  2900                                      PC_job_l og_message  => 'Param eter for O LDEST LOG  FILE DAYS  KEPT was n ot found.  Terminatin g process. ',
  2901                                      PD_date1  => VD_rec _group_dat e,
  2902                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2903  
  2904         RETU RN;
  2905  
  2906       WHEN O THERS THEN
  2907  
  2908         VD_l og_date :=  SYSDATE;
  2909         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2910                                      PD_job_l og_date =>  VD_log_da te,
  2911                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  2912                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  OLDEST LO G FILE DAY S KEPT. Te rminating  process. '
  2913                                                                      || SQLERR M,1,2000),
  2914                                      PD_date1  => VD_rec _group_dat e,
  2915                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2916  
  2917         RETU RN;
  2918  
  2919     END;
  2920  
  2921   -- Process  Parameter  ROWS TO P ROCESS
  2922  
  2923     BEGIN
  2924  
  2925       SELECT     Value
  2926       INTO       VN_par m_rows_to_ process
  2927       FROM       ADRMGT .Adr_Param eter
  2928       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  2929       AND        Parame ter_name =  'ROWS TO  PROCESS';
  2930  
  2931       IF VN_ parm_rows_ to_process  IS NULL T HEN
  2932  
  2933         VD_l og_date :=  SYSDATE;
  2934         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2935                                      PD_job_l og_date =>  VD_log_da te,
  2936                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  2937                                      PC_job_l og_message  => SUBSTR ('Paramete r ROWS TO  PROCESS is  NULL. Ter minating p rocess.',1 ,2000),
  2938                                      PD_date1  => VD_rec _group_dat e,
  2939                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2940  
  2941         RETU RN;
  2942  
  2943       END IF ;
  2944  
  2945     EXCEPTIO N
  2946  
  2947       WHEN N O_DATA_FOU ND THEN
  2948  
  2949         VD_l og_date :=  SYSDATE;
  2950         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2951                                      PD_job_l og_date =>  VD_log_da te,
  2952                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  2953                                      PC_job_l og_message  => 'Param eter for R OWS TO PRO CESS was n ot found.  Terminatin g process. ',
  2954                                      PD_date1  => VD_rec _group_dat e,
  2955                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2956  
  2957         RETU RN;
  2958  
  2959       WHEN O THERS THEN
  2960  
  2961         VD_l og_date :=  SYSDATE;
  2962         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2963                                      PD_job_l og_date =>  VD_log_da te,
  2964                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  2965                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ROWS TO P ROCESS. Te rminating  process. '
  2966                                                                      || SQLERR M,1,2000),
  2967                                      PD_date1  => VD_rec _group_dat e,
  2968                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2969  
  2970         RETU RN;
  2971  
  2972     END;
  2973  
  2974   -- Process  Parameter  LAST PROC ESSED LOG  ID
  2975  
  2976     BEGIN
  2977  
  2978       SELECT     Value
  2979       INTO       VN_par m_last_log _id
  2980       FROM       ADRMGT .Adr_Param eter
  2981       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  2982       AND        Parame ter_name =  'LAST PRO CESSED LOG  ID';
  2983  
  2984       IF VN_ parm_last_ log_id IS  NULL THEN
  2985  
  2986         VD_l og_date :=  SYSDATE;
  2987         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  2988                                      PD_job_l og_date =>  VD_log_da te,
  2989                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  2990                                      PC_job_l og_message  => SUBSTR ('Paramete r LAST PRO CESSED LOG  ID is NUL L. Termina ting proce ss.',1,200 0),
  2991                                      PD_date1  => VD_rec _group_dat e,
  2992                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2993  
  2994         RETU RN;
  2995  
  2996       END IF ;
  2997  
  2998     EXCEPTIO N
  2999  
  3000       WHEN N O_DATA_FOU ND THEN
  3001  
  3002         VD_l og_date :=  SYSDATE;
  3003         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3004                                      PD_job_l og_date =>  VD_log_da te,
  3005                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  3006                                      PC_job_l og_message  => 'Param eter for L AST PROCES SED LOG ID  was not f ound. Term inating pr ocess.',
  3007                                      PD_date1  => VD_rec _group_dat e,
  3008                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3009  
  3010         RETU RN;
  3011  
  3012       WHEN O THERS THEN
  3013  
  3014         VD_l og_date :=  SYSDATE;
  3015         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3016                                      PD_job_l og_date =>  VD_log_da te,
  3017                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  3018                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  LAST PROC ESSED LOG  ID. Termin ating proc ess. '
  3019                                                                      || SQLERR M,1,2000),
  3020                                      PD_date1  => VD_rec _group_dat e,
  3021                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3022  
  3023         RETU RN;
  3024  
  3025     END;
  3026  
  3027   -- Write o ut Paramet er log mes sages for  submitted  job
  3028  
  3029     VD_log_d ate := SYS DATE;
  3030     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3031                                 PD _job_log_d ate => VD_ log_date,
  3032                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  3033                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  3034                                 PD _date1 =>  VD_rec_gro up_date,
  3035                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3036  
  3037     VD_log_d ate := SYS DATE;
  3038     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3039                                 PD _job_log_d ate => VD_ log_date,
  3040                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  3041                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  3042                                 PD _date1 =>  VD_rec_gro up_date,
  3043                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3044  
  3045     VD_log_d ate := SYS DATE;
  3046     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3047                                 PD _job_log_d ate => VD_ log_date,
  3048                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  3049                                 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),
  3050                                 PD _date1 =>  VD_rec_gro up_date,
  3051                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3052  
  3053  
  3054     VD_log_d ate := SYS DATE;
  3055     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3056                                 PD _job_log_d ate => VD_ log_date,
  3057                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  3058                                 PC _job_log_m essage =>  SUBSTR(' O LDEST HL7  ERROR TEXT  DAYS KEPT : ' || VN_ parm_hl7_e rr_txt_age ,1,2000),
  3059                                 PD _date1 =>  VD_rec_gro up_date,
  3060                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3061  
  3062     VD_log_d ate := SYS DATE;
  3063     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3064                                 PD _job_log_d ate => VD_ log_date,
  3065                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  3066                                 PC _job_log_m essage =>  SUBSTR(' O LDEST LOG  FILE DAYS  KEPT: ' ||  VN_parm_l og_file_ag e,1,2000),
  3067                                 PD _date1 =>  VD_rec_gro up_date,
  3068                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3069  
  3070     VD_log_d ate := SYS DATE;
  3071     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3072                                 PD _job_log_d ate => VD_ log_date,
  3073                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  3074                                 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),
  3075                                 PD _date1 =>  VD_rec_gro up_date,
  3076                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3077  
  3078     VD_log_d ate := SYS DATE;
  3079     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3080                                 PD _job_log_d ate => VD_ log_date,
  3081                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  3082                                 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),
  3083                                 PD _date1 =>  VD_rec_gro up_date,
  3084                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3085  
  3086   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  3087  
  3088     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  3089  
  3090       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  3091  
  3092       VD_log _date := S YSDATE;
  3093       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3094                                    PD_job_log _date => V D_log_date ,
  3095                                    PC_job_sta tus => SUB STR('WARNI NG     - J ob table p arameters' ,1,60),
  3096                                    PC_job_log _message = > SUBSTR('  Processin g paramete r ROWS TO  PROCESS (i n each loo p) has bee n overridd en.'
  3097                                                              || ' T he overrid e value is : ' || NVL (TO_CHAR(V N_parm_row s_to_proce ss),'NULL' ),1,2000),
  3098                                    PD_date1 = > VD_rec_g roup_date,
  3099                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3100  
  3101     END IF;
  3102  
  3103   -- ******* ********** ********** ********** ********** ********** ********** ********
  3104   -- *
  3105   -- * Check  to see if  process i s running  on a repor ting datab ase.
  3106   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  3107   -- *
  3108   -- ******* ********** ********** ********** ********** ********** ********** ********
  3109  
  3110     IF NOT V B_allow_rp t_inst THE N
  3111  
  3112       BEGIN
  3113  
  3114         VD_l og_date :=  SYSDATE;
  3115         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3116                                      PD_job_l og_date =>  VD_log_da te,
  3117                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  3118                                      PD_date1  => VD_rec _group_dat e,
  3119                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3120  
  3121         SELE CT    Inst ance_name
  3122         INTO       VC_i nstance_na me
  3123         FROM       V$in stance;
  3124  
  3125         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  3126  
  3127           VD _log_date  := SYSDATE ;
  3128           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  3129                                        PD_job _log_date  => VD_log_ date,
  3130                                        PC_job _status =>  SUBSTR('E RROR        - Process ing Failed ',1,60),
  3131                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  3132                                                                     || VC_inst ance_name
  3133                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  3134                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  3135                                        PD_dat e1 => VD_r ec_group_d ate,
  3136                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  3137  
  3138           RE TURN;
  3139  
  3140         END  IF;
  3141  
  3142       EXCEPT ION
  3143  
  3144         WHEN  OTHERS TH EN
  3145  
  3146           VD _log_date  := SYSDATE ;
  3147           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  3148                                        PD_job _log_date  => VD_log_ date,
  3149                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  3150                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  3151                                        PD_dat e1 => VD_r ec_group_d ate,
  3152                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  3153  
  3154           RE TURN;
  3155  
  3156       END;
  3157  
  3158     END IF;
  3159  
  3160   -- ******* ********** ********** ********** ********** ********** ********** ********
  3161   -- *
  3162   -- * Check  to see if  the job h as already  run today
  3163   -- *  - If  running i n stand-al one mode,  don't chec k.
  3164   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  3165   -- *
  3166   -- ******* ********** ********** ********** ********** ********** ********** ********
  3167  
  3168     IF NOT P B_run_stan dalone THE N
  3169  
  3170       BEGIN
  3171  
  3172         VD_l og_date :=  SYSDATE;
  3173         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3174                                      PD_job_l og_date =>  VD_log_da te,
  3175                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  3176                                      PD_date1  => VD_rec _group_dat e,
  3177                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3178  
  3179         SELE CT    COUN T(*)
  3180         INTO       VN_r ec_count
  3181         FROM       ADRM GT.Job_Pro cess_Logs
  3182         WHER E     Job_ name = CC_ process_na me
  3183         AND        Date 1 = VD_rec _group_dat e
  3184         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  3185  
  3186         IF V N_rec_coun t > 0 THEN
  3187  
  3188           VD _log_date  := SYSDATE ;
  3189           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  3190                                        PD_job _log_date  => VD_log_ date,
  3191                                        PC_job _status =>  SUBSTR('W ARNING      - This da te has alr eady been  processed' ,1,60),
  3192                                        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),
  3193                                        PD_dat e1 => VD_r ec_group_d ate,
  3194                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  3195  
  3196           RE TURN;
  3197  
  3198         END  IF;
  3199  
  3200       EXCEPT ION
  3201  
  3202         WHEN  OTHERS TH EN
  3203  
  3204           VD _log_date  := SYSDATE ;
  3205           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  3206                                        PD_job _log_date  => VD_log_ date,
  3207                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  3208                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  3209                                        PD_dat e1 => VD_r ec_group_d ate,
  3210                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  3211  
  3212           RE TURN;
  3213  
  3214       END;
  3215  
  3216     END IF;
  3217  
  3218   -- ******* ********** ********** ********** ********** ********** ********** ********
  3219   -- *
  3220   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  3221   -- *  - If  yes, then  end this  job.
  3222   -- *
  3223   -- ******* ********** ********** ********** ********** ********** ********** ********
  3224  
  3225     SELECT C OUNT(*)
  3226     INTO   V N_job_coun t
  3227     FROM   S YS.DBA_JOB S_RUNNING  R,
  3228            S YS.DBA_JOB S J
  3229     WHERE  J .JOB = R.J OB
  3230     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  3231  
  3232     IF VN_jo b_count >  1 THEN
  3233  
  3234       VD_log _date := S YSDATE;
  3235       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3236                                    PD_job_log _date => V D_log_date ,
  3237                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  3238                                    PC_job_log _message = > SUBSTR(' There is a nother '
  3239                                                                || C C_sp_name
  3240                                                                || '  job runni ng.'
  3241                                                                || '  Exiting j ob without  running.' ,1,2000),
  3242                                    PD_date1 = > VD_rec_g roup_date,
  3243                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3244  
  3245       RETURN ;
  3246  
  3247     ELSE
  3248  
  3249       IF VB_ run_standa lone THEN
  3250  
  3251         VD_l og_date :=  SYSDATE;
  3252         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3253                                      PD_job_l og_date =>  VD_log_da te,
  3254                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  3255                                      PD_date1  => VD_rec _group_dat e,
  3256                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3257  
  3258       ELSE
  3259  
  3260         SELE CT    MAX( J.Job)
  3261         INTO       VN_j ob_number
  3262         FROM       SYS. DBA_JOBS_R UNNING R,
  3263                    SYS. DBA_JOBS J
  3264         WHER E     J.JO B = R.JOB
  3265         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  3266  
  3267         VD_l og_date :=  SYSDATE;
  3268         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3269                                      PD_job_l og_date =>  VD_log_da te,
  3270                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  3271                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  3272                                                                      || VN_job _number,1, 2000),
  3273                                      PD_date1  => VD_rec _group_dat e,
  3274                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3275  
  3276       END IF ;
  3277  
  3278     END IF;
  3279  
  3280   -- ******* ********** ********** ********** ********** ********** ********** ********
  3281   -- *
  3282   -- * Main  processing  loop
  3283   -- *
  3284   -- ******* ********** ********** ********** ********** ********** ********** ********
  3285  
  3286     VN_pass_ count := 0 ;
  3287     VN_updat e_count :=  0;
  3288     VD_proce ss_start_d ate := SYS DATE;
  3289  
  3290   -- ******* ********** ********** ********** ********** ********** ********** ********
  3291   -- * Remov e old proc ess log ro ws
  3292   -- ******* ********** ********** ********** ********** ********** ********** ********
  3293     BEGIN
  3294  
  3295       VD_log _date := S YSDATE;
  3296       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3297                                    PD_job_log _date => V D_log_date ,
  3298                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  3299                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  3300                                                                   | | VN_parm_ log_file_a ge
  3301                                                                   | | ' days o ld',1,2000 ),
  3302                                    PD_date1 = > VD_rec_g roup_date,
  3303                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3304  
  3305       DELETE
  3306       FROM       ADRMGT .Job_Proce ss_Logs
  3307       WHERE      Job_na me = CC_pr ocess_name
  3308       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  3309  
  3310       COMMIT ;
  3311  
  3312       VD_log _date := S YSDATE;
  3313       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3314                                    PD_job_log _date => V D_log_date ,
  3315                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  3316                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  3317                                                                   | | VN_parm_ log_file_a ge
  3318                                                                   | | ' days o ld',1,2000 ),
  3319                                    PD_date1 = > VD_rec_g roup_date,
  3320                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3321  
  3322  
  3323     EXCEPTIO N
  3324  
  3325       WHEN N O_DATA_FOU ND THEN
  3326  
  3327         NULL ;
  3328  
  3329       WHEN O THERS THEN
  3330  
  3331         VD_l og_date :=  SYSDATE;
  3332         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3333                                      PD_job_l og_date  = > VD_log_d ate,
  3334                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess logs .',1,60),
  3335                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  3336                                      PD_date1  => VD_rec _group_dat e,
  3337                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3338  
  3339     END;
  3340  
  3341   -- ******* ********** ********** ********** ********** ********** ********** ********
  3342   -- * Remov e old proc ess error  rows
  3343   -- ******* ********** ********** ********** ********** ********** ********** ********
  3344  
  3345     BEGIN
  3346  
  3347       VD_log _date := S YSDATE;
  3348       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3349                                    PD_job_log _date => V D_log_date ,
  3350                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  3351                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  3352                                                                   | | VN_parm_ log_file_a ge
  3353                                                                   | | ' days o ld',1,2000 ),
  3354                                    PD_date1 = > VD_rec_g roup_date,
  3355                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3356  
  3357       DELETE
  3358       FROM       ADRMGT .Job_Proce ss_Errs
  3359       WHERE      Job_na me = CC_pr ocess_name
  3360       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  3361  
  3362       COMMIT ;
  3363  
  3364       VD_log _date := S YSDATE;
  3365       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3366                                    PD_job_log _date => V D_log_date ,
  3367                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  3368                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  3369                                                                   | | VN_parm_ log_file_a ge
  3370                                                                   | | ' days o ld',1,2000 ),
  3371                                    PD_date1 = > VD_rec_g roup_date,
  3372                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3373  
  3374     EXCEPTIO N
  3375  
  3376       WHEN N O_DATA_FOU ND THEN
  3377  
  3378         NULL ;
  3379  
  3380       WHEN O THERS THEN
  3381  
  3382         VD_l og_date :=  SYSDATE;
  3383         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3384                                      PD_job_l og_date  = > VD_log_d ate,
  3385                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess erro rs.',1,60) ,
  3386                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  3387                                      PD_date1  => VD_rec _group_dat e,
  3388                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3389  
  3390     END;
  3391  
  3392   -- ******* ********** ********** ********** ********** ********** ********** ********
  3393   -- * Main  record cur sor logic
  3394   -- ******* ********** ********** ********** ********** ********** ********** ********
  3395  
  3396     BEGIN
  3397  
  3398       VN_max _log_id :=  0;
  3399       VN_pas s_count :=  0;
  3400       VN_upd ate_count  := 0;
  3401  
  3402       OPEN C _hl7_id;
  3403  
  3404       LOOP
  3405  
  3406         FETC H C_hl7_id
  3407         BULK  COLLECT I NTO T_hl7_ id
  3408         LIMI T VN_parm_ rows_to_pr ocess;
  3409  
  3410         EXIT  WHEN T_hl 7_id.COUNT  = 0;
  3411  
  3412         FORA LL I_hl7_i d IN T_hl7 _id.FIRST. .T_hl7_id. last
  3413           UP DATE    AD R.Hl7_tran saction_lo g
  3414           SE T       In ternal_err or_text =  NULL
  3415           WH ERE     Hl 7_transact ion_log_id  = T_hl7_i d(I_hl7_id );
  3416  
  3417         COMM IT;
  3418  
  3419         FOR  I_hl7_id I N T_hl7_id .FIRST..T_ hl7_id.las t LOOP
  3420  
  3421           IF  T_hl7_id( I_hl7_id)  > VN_max_l og_id THEN
  3422  
  3423              VN_max_log _id := T_h l7_id(I_hl 7_id);
  3424  
  3425           EN D IF;
  3426  
  3427         END  LOOP;
  3428  
  3429         VN_p ass_count  := VN_pass _count + 1 ;
  3430  
  3431         VN_u pdate_coun t := VN_up date_count  + T_hl7_i d.COUNT;
  3432  
  3433       END LO OP;
  3434  
  3435       CLOSE  C_hl7_id;
  3436  
  3437       BEGIN
  3438  
  3439         IF N VL(VN_max_ log_id,0)  <> 0 THEN
  3440  
  3441           UP DATE    AD RMGT.Adr_P arameter
  3442           SE T       Va lue = VN_m ax_log_id
  3443           WH ERE     Ap plication_ name = 'HL 7 NULL INT ERNAL_ERRO R_TEXT COL UMN'
  3444           AN D       Pa rameter_na me = 'LAST  PROCESSED  LOG ID';
  3445  
  3446           CO MMIT;
  3447  
  3448         ELSE
  3449  
  3450           VN _max_log_i d := VN_pa rm_last_lo g_id;
  3451  
  3452         END  IF;
  3453  
  3454       EXCEPT ION
  3455  
  3456         WHEN  OTHERS TH EN
  3457  
  3458           VD _log_date  := SYSDATE ;
  3459           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  3460                                        PD_job _log_date   => VD_log _date,
  3461                                        PC_job _status =>  SUBSTR('E RROR        - Unknown  error upd ating LAST  PROCESSED  LOG ID.', 1,60),
  3462                                        PC_job _log_messa ge => SUBS TR('Last p rocessed l og id: ' | | VN_max_l og_id
  3463                                                                        || '. '  || SQLERR M,1,2000),
  3464                                        PD_dat e1 => VD_r ec_group_d ate,
  3465                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  3466  
  3467           RE TURN;
  3468  
  3469       END;
  3470  
  3471   -- Process  completio n informat ion
  3472  
  3473       VD_log _date := S YSDATE;
  3474       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3475                                    PD_job_log _date => V D_log_date ,
  3476                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  3477                                    PD_date1 = > VD_rec_g roup_date,
  3478                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  3479                                    PN_numeric 2 => VN_pa ss_count,
  3480                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  3481  
  3482       VD_log _date := S YSDATE;
  3483       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3484                                    PD_job_log _date => V D_log_date ,
  3485                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  3486                                    PD_date1 = > VD_rec_g roup_date,
  3487                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  3488                                    PN_numeric 2 => VN_up date_count ,
  3489                                    PC_text2 = > SUBSTR(' Updated Re cord Count ',1,255));
  3490  
  3491       VD_log _date := S YSDATE;
  3492       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3493                                    PD_job_log _date => V D_log_date ,
  3494                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  3495                                    PD_date1 = > VD_rec_g roup_date,
  3496                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  3497                                    PN_numeric 2 => VN_ma x_log_id,
  3498                                    PC_text2 = > SUBSTR(' Last proce ssed log i d',1,255)) ;
  3499  
  3500       VD_pro cess_end_d ate := SYS DATE;
  3501       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  3502                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  3503                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  3504                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  3505                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  3506  
  3507       VD_log _date := S YSDATE;
  3508       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3509                                    PD_job_log _date => V D_log_date ,
  3510                                    PC_job_sta tus => SUB STR('SUCCE SS     - P rocessing  Completed' ,1,60),
  3511                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  3512                                    PD_date1 = > VD_rec_g roup_date,
  3513                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3514  
  3515     EXCEPTIO N
  3516  
  3517       WHEN O THERS THEN
  3518  
  3519         VD_l og_date :=  SYSDATE;
  3520         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3521                                      PD_job_l og_date  = > VD_log_d ate,
  3522                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror updat ing Intern al_error_t ext.',1,60 ),
  3523                                      PC_job_l og_message  => SUBSTR ('Cursor L oop Count:  ' || VN_p ass_count
  3524                                                                      || ' Upda ted Record  Count: '  || VN_upda te_count
  3525                                                                      || '. ' | | SQLERRM, 1,2000),
  3526                                      PD_date1  => VD_rec _group_dat e,
  3527                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3528  
  3529         RETU RN;
  3530  
  3531     END;
  3532  
  3533   EXCEPTION
  3534  
  3535     WHEN OTH ERS THEN
  3536  
  3537       ROLLBA CK;
  3538  
  3539       VD_log _date := S YSDATE;
  3540       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3541                                    PD_job_err or_date  = > VD_log_d ate,
  3542                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  3543                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Hl7_Txn_Lo g_Null_Err _Col_Sp.'
  3544                                                                  ||  SQLERRM,1 ,2000),
  3545                                    PD_date1 = > VD_rec_g roup_date,
  3546                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3547  
  3548       VD_log _date := S YSDATE;
  3549       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3550                                    PD_job_log _date => V D_log_date ,
  3551                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  3552                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  3553                                    PD_date1 = > VD_rec_g roup_date,
  3554                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3555  
  3556   END Hl7_Tx n_Log_Null _Err_Col_S p;
  3557   /
  3558   DROP PROCE DURE ADR.P ERSON_CHG_ LOG_CLEANU P_SP;
  3559  
  3560   CREATE OR  REPLACE PR OCEDURE AD R.Person_C hg_Log_Cle anup_Sp
  3561     (PB_run_ standalone
  3562        IN      BOOLEAN  DEFAULT FA LSE,
  3563      PB_allo w_rpt_inst
  3564        IN      BOOLEAN  DEFAULT FA LSE,
  3565      PN_rows _to_proces s
  3566        IN      NUMBER D EFAULT NUL L
  3567     )
  3568   IS
  3569  
  3570   -- ******* ********** ********** ********** ********** ********** ********** ********
  3571   -- * Proce dure: ADR. Person_Chg _Log_Clean up_Sp
  3572   -- *
  3573   -- *   Upd ate the AD R.Person_C hange_Log  table to r emove rows  where the
  3574   -- *   sub mission da te is olde r than the  days defi ned in the
  3575   -- *   ADR MGT.Adr_Pa rameter ta ble. Initi ally this  was set to  31 days.
  3576   -- *
  3577   -- * Param eters:
  3578   -- *
  3579   -- *  PB_r un_standal one   Igno re DBMS_JO B logic fo r checking  running j obs.
  3580   -- *                         Def ault: FALS E
  3581   -- *
  3582   -- *  PB_a llow_rpt_i nst   Allo w stored p rocedure t o be submi tted in th e
  3583   -- *                        DBMS _JOB queue  on the AD R reportin g database s
  3584   -- *                         Def ault: FALS E
  3585   -- *
  3586   -- ******* ********** ********** ********** ********** ********** ********** ********
  3587   --
  3588   -- ======= ========== ========== ========== ========== ========== ========== ========
  3589   -- Date         Autho r             Descrip tion
  3590   -- ======= ========== ========== ========== ========== ========== ========== ========
  3591   -- 06/23/2 010  Craig  Wood         Created  for CCR 1 175.
  3592   -- 10/13/2 014  Craig  Wood         CCR 215 2 - Fix ex ception ha ndler rout ine in
  3593   --                                              main p rocessing  loop to cl ose the
  3594   --                                              cursor  and write  to error  table
  3595   --                                              instea d of log t able. Also , exit
  3596   --                                              job if  too many  errors occ ur.
  3597   -- ======= ========== ========== ========== ========== ========== ========== ========
  3598  
  3599   -- CONSTAN TS
  3600  
  3601     CC_no                                   V ARCHAR2(1)  := 'N';
  3602     CC_parm_ applicatio n_name     CONSTANT V ARCHAR2(80 ) := 'PERS ON_CHG_LOG _CLEANUP_S P';
  3603     CC_parm_ log_file_a ge         CONSTANT V ARCHAR2(50 ) := 'OLDE ST LOG FIL E DAYS KEP T';
  3604     CC_parm_ rows_to_pr ocess      CONSTANT V ARCHAR2(50 ) := 'ROWS  TO PROCES S';
  3605     CC_parm_ submitted_ age        CONSTANT V ARCHAR2(50 ) := 'OLDE ST SUBMITT ED DATE KE PT';
  3606     CC_proce ss_name               CONSTANT V ARCHAR2(60 ) := 'Pers on_Change_ Log Cleanu p';
  3607     CC_sp_na me                    CONSTANT V ARCHAR2(35 ) := 'Pers on_Chg_Log _Cleanup_S p';
  3608     CC_yes                         CONSTANT V ARCHAR2(1)  := 'Y';
  3609  
  3610     CN_max_e rror_count            CONSTANT N UMBER := 5 00; -- CCR  2152
  3611  
  3612   -- VARIABL ES
  3613  
  3614     VB_allow _rpt_inst                      B OOLEAN :=  FALSE;
  3615     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  3616  
  3617     VC_allow _rpt_inst                      V ARCHAR2(5)  := NULL;
  3618     VC_insta nce_name                       V ARCHAR2(16 );
  3619     VC_proce ss_duratio n                   V ARCHAR2(25 );
  3620     VC_run_s tandalone                      V ARCHAR2(5)  := NULL;
  3621     VC_sql_s tatement                       V ARCHAR2(20 00);
  3622  
  3623     VD_log_d ate                            D ATE;
  3624     VD_proce ss_end_dat e                   D ATE;
  3625     VD_proce ss_start_d ate                 D ATE;
  3626     VD_rec_g roup_date                      D ATE;
  3627  
  3628     VN_error _count                         N UMBER := 0 ; -- CCR 2 152
  3629     VN_job_c ount                           N UMBER := 0 ;
  3630     VN_job_n umber                          N UMBER;
  3631     VN_parm_ log_file_a ge                  N UMBER;
  3632     VN_parm_ rows_to_pr ocess               N UMBER;
  3633     VN_parm_ submitted_ age                 N UMBER;
  3634     VN_pass_ count                          N UMBER := 0 ;
  3635     VN_rec_c ount                           N UMBER := 0 ;
  3636     VN_updat e_count                        N UMBER := 0 ;
  3637  
  3638   -- CURSORS
  3639  
  3640     CURSOR C _prsn_chg_ rec IS
  3641       SELECT     Person _change_lo g_id
  3642       FROM       ADR.Pe rson_Chang e_Log
  3643       WHERE      Submit ted_date <  SYSDATE -  VN_parm_s ubmitted_a ge
  3644       AND        ROWNUM  <= VN_par m_rows_to_ process;
  3645  
  3646   -- TYPES
  3647  
  3648     TYPE TT_ prsn_chg_i d IS
  3649       TABLE  OF ADR.Per son_Change _Log.Perso n_change_l og_id%TYPE ;
  3650  
  3651   -- MEMORY  TABLES
  3652  
  3653     T_prsn_c hg_id                          T T_prsn_chg _id;
  3654  
  3655   -- ******* ********** ********** ********** ********** ********** ********** *******
  3656   -- *
  3657   -- *  MAIN  PROCEDURE :
  3658   -- *
  3659   -- ******* ********** ********** ********** ********** ********** ********** *******
  3660  
  3661   BEGIN
  3662  
  3663     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  3664     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  3665  
  3666     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  3667     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  3668  
  3669     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  3670     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  3671  
  3672     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  3673     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  3674  
  3675     VD_rec_g roup_date  := TRUNC(S YSDATE);
  3676  
  3677     VD_log_d ate := SYS DATE;
  3678     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3679                                 PD _job_log_d ate => VD_ log_date,
  3680                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  3681                                 PD _date1 =>  VD_rec_gro up_date,
  3682                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3683  
  3684   -- ******* ********** ********** ********** ********** ********** ********** ********
  3685   -- *
  3686   -- * Valid ate input  parameters
  3687   -- *
  3688   -- ******* ********** ********** ********** ********** ********** ********** ********
  3689  
  3690   -- * Check  run stand alone flag
  3691  
  3692     IF PB_ru n_standalo ne IS NULL
  3693      OR NOT  PB_run_sta ndalone TH EN
  3694  
  3695       VB_run _standalon e := FALSE ;
  3696       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  3697  
  3698     ELSE
  3699  
  3700       VB_run _standalon e := TRUE;
  3701       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  3702  
  3703     END IF;
  3704  
  3705   -- * Check  run on re port insta nce flag
  3706  
  3707     IF PB_al low_rpt_in st IS NULL
  3708      OR NOT  PB_allow_r pt_inst TH EN
  3709  
  3710       VB_all ow_rpt_ins t := FALSE ;
  3711       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  3712  
  3713     ELSE
  3714  
  3715       VB_all ow_rpt_ins t := TRUE;
  3716       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  3717  
  3718     END IF;
  3719  
  3720   -- ******* ********** ********** ********** ********** ********** ********** ********
  3721   -- *
  3722   -- * Retri eve proces sing param eters
  3723   -- *
  3724   -- ******* ********** ********** ********** ********** ********** ********** ********
  3725  
  3726   -- ******* ********** ********** ********** ********** ********** ********** ********
  3727   -- * Proce ss Paramet er for OLD EST LOG FI LE DAYS KE PT
  3728   -- ******* ********** ********** ********** ********** ********** ********** ********
  3729  
  3730     BEGIN
  3731  
  3732       SELECT     Value
  3733       INTO       VN_par m_log_file _age
  3734       FROM       ADRMGT .Adr_Param eter
  3735       WHERE      Applic ation_name  = CC_parm _applicati on_name
  3736       AND        Parame ter_name =  CC_parm_l og_file_ag e;
  3737  
  3738       IF VN_ parm_log_f ile_age IS  NULL THEN
  3739  
  3740         VD_l og_date :=  SYSDATE;
  3741         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3742                                      PD_job_l og_date =>  VD_log_da te,
  3743                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  3744                                      PC_job_l og_message  => SUBSTR ('Paramete r '
  3745                                                                      || CC_par m_log_file _age
  3746                                                                      || 'is NU LL. Termin ating proc ess.',1,20 00),
  3747                                      PD_date1  => VD_rec _group_dat e,
  3748                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3749  
  3750         RETU RN;
  3751  
  3752       END IF ;
  3753  
  3754     EXCEPTIO N
  3755  
  3756       WHEN N O_DATA_FOU ND THEN
  3757  
  3758         VD_l og_date :=  SYSDATE;
  3759         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3760                                      PD_job_l og_date =>  VD_log_da te,
  3761                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  3762                                      PC_job_l og_message  => 'Param eter for '
  3763                                                              || CC_ parm_log_f ile_age
  3764                                                              || ' w as not fou nd. Termin ating proc ess.',
  3765                                      PD_date1  => VD_rec _group_dat e,
  3766                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3767  
  3768         RETU RN;
  3769  
  3770       WHEN O THERS THEN
  3771  
  3772         VD_l og_date :=  SYSDATE;
  3773         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3774                                      PD_job_l og_date =>  VD_log_da te,
  3775                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  3776                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  '
  3777                                                                      || CC_par m_log_file _age
  3778                                                                      || '. Ter minating p rocess. '
  3779                                                                      || SQLERR M,1,2000),
  3780                                      PD_date1  => VD_rec _group_dat e,
  3781                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3782  
  3783         RETU RN;
  3784  
  3785     END;
  3786  
  3787   -- ******* ********** ********** ********** ********** ********** ********** ********
  3788   -- * Proce ss Paramet er for OLD EST SUBMIT TED DATE K EPT
  3789   -- ******* ********** ********** ********** ********** ********** ********** ********
  3790  
  3791     BEGIN
  3792  
  3793       SELECT     Value
  3794       INTO       VN_par m_submitte d_age
  3795       FROM       ADRMGT .Adr_Param eter
  3796       WHERE      Applic ation_name  = CC_parm _applicati on_name
  3797       AND        Parame ter_name =  CC_parm_s ubmitted_a ge;
  3798  
  3799       IF VN_ parm_submi tted_age I S NULL THE N
  3800  
  3801         VD_l og_date :=  SYSDATE;
  3802         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3803                                      PD_job_l og_date =>  VD_log_da te,
  3804                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  3805                                      PC_job_l og_message  => SUBSTR ('Paramete r '
  3806                                                                      || CC_par m_submitte d_age
  3807                                                                      || 'is NU LL. Termin ating proc ess.',1,20 00),
  3808                                      PD_date1  => VD_rec _group_dat e,
  3809                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3810  
  3811         RETU RN;
  3812  
  3813       END IF ;
  3814  
  3815     EXCEPTIO N
  3816  
  3817       WHEN N O_DATA_FOU ND THEN
  3818  
  3819         VD_l og_date :=  SYSDATE;
  3820         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3821                                      PD_job_l og_date =>  VD_log_da te,
  3822                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  3823                                      PC_job_l og_message  => 'Param eter for '
  3824                                                              || CC_ parm_submi tted_age
  3825                                                              || ' w as not fou nd. Termin ating proc ess.',
  3826                                      PD_date1  => VD_rec _group_dat e,
  3827                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3828  
  3829         RETU RN;
  3830  
  3831       WHEN O THERS THEN
  3832  
  3833         VD_l og_date :=  SYSDATE;
  3834         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3835                                      PD_job_l og_date =>  VD_log_da te,
  3836                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  3837                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  '
  3838                                                                      || CC_par m_submitte d_age
  3839                                                                      || '. Ter minating p rocess. '
  3840                                                                      || SQLERR M,1,2000),
  3841                                      PD_date1  => VD_rec _group_dat e,
  3842                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3843  
  3844         RETU RN;
  3845  
  3846     END;
  3847  
  3848   -- ******* ********** ********** ********** ********** ********** ********** ********
  3849   -- * Proce ss Paramet er ROWS TO  PROCESS
  3850   -- ******* ********** ********** ********** ********** ********** ********** ********
  3851  
  3852     BEGIN
  3853  
  3854       SELECT     Value
  3855       INTO       VN_par m_rows_to_ process
  3856       FROM       ADRMGT .Adr_Param eter
  3857       WHERE      Applic ation_name  = CC_parm _applicati on_name
  3858       AND        Parame ter_name =  CC_parm_r ows_to_pro cess;
  3859  
  3860       IF VN_ parm_rows_ to_process  IS NULL T HEN
  3861  
  3862         VD_l og_date :=  SYSDATE;
  3863         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3864                                      PD_job_l og_date =>  VD_log_da te,
  3865                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  3866                                      PC_job_l og_message  => SUBSTR ('Paramete r '
  3867                                                                      || CC_par m_rows_to_ process
  3868                                                                      || 'is NU LL. Termin ating proc ess.',1,20 00),
  3869                                      PD_date1  => VD_rec _group_dat e,
  3870                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3871  
  3872         RETU RN;
  3873  
  3874       END IF ;
  3875  
  3876     EXCEPTIO N
  3877  
  3878       WHEN N O_DATA_FOU ND THEN
  3879  
  3880         VD_l og_date :=  SYSDATE;
  3881         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3882                                      PD_job_l og_date =>  VD_log_da te,
  3883                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  3884                                      PC_job_l og_message  => 'Param eter for '
  3885                                                              || CC_ parm_rows_ to_process
  3886                                                              || ' w as not fou nd. Termin ating proc ess.',
  3887                                      PD_date1  => VD_rec _group_dat e,
  3888                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3889  
  3890         RETU RN;
  3891  
  3892       WHEN O THERS THEN
  3893  
  3894         VD_l og_date :=  SYSDATE;
  3895         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3896                                      PD_job_l og_date =>  VD_log_da te,
  3897                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  3898                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  '
  3899                                                                      || CC_par m_rows_to_ process
  3900                                                                      || '. Ter minating p rocess. '
  3901                                                                      || SQLERR M,1,2000),
  3902                                      PD_date1  => VD_rec _group_dat e,
  3903                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3904  
  3905         RETU RN;
  3906  
  3907     END;
  3908  
  3909   -- ******* ********** ********** ********** ********** ********** ********** ********
  3910   -- *
  3911   -- * Write  out Param eter log m essages fo r submitte d job
  3912   -- *
  3913   -- ******* ********** ********** ********** ********** ********** ********** ********
  3914  
  3915   -- ******* ********** ********** ********** ********** ********** ********** ********
  3916   -- *  Job  Submission  Parameter s
  3917   -- ******* ********** ********** ********** ********** ********** ********** ********
  3918  
  3919     VD_log_d ate := SYS DATE;
  3920     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3921                                 PD _job_log_d ate => VD_ log_date,
  3922                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  3923                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  3924                                 PD _date1 =>  VD_rec_gro up_date,
  3925                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3926  
  3927     VD_log_d ate := SYS DATE;
  3928     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3929                                 PD _job_log_d ate => VD_ log_date,
  3930                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  3931                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  3932                                 PD _date1 =>  VD_rec_gro up_date,
  3933                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3934  
  3935     VD_log_d ate := SYS DATE;
  3936     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3937                                 PD _job_log_d ate => VD_ log_date,
  3938                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  3939                                 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),
  3940                                 PD _date1 =>  VD_rec_gro up_date,
  3941                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3942  
  3943   -- ******* ********** ********** ********** ********** ********** ********** ********
  3944   -- *  Job  Table Para meters
  3945   -- ******* ********** ********** ********** ********** ********** ********** ********
  3946  
  3947     VD_log_d ate := SYS DATE;
  3948     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3949                                 PD _job_log_d ate => VD_ log_date,
  3950                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  3951                                 PC _job_log_m essage =>  SUBSTR(' '  || CC_par m_log_file _age || ':  ' || VN_p arm_log_fi le_age,1,2 000),
  3952                                 PD _date1 =>  VD_rec_gro up_date,
  3953                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3954  
  3955     VD_log_d ate := SYS DATE;
  3956     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3957                                 PD _job_log_d ate => VD_ log_date,
  3958                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  3959                                 PC _job_log_m essage =>  SUBSTR(' '  || CC_par m_submitte d_age || ' : ' || VN_ parm_submi tted_age,1 ,2000),
  3960                                 PD _date1 =>  VD_rec_gro up_date,
  3961                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3962  
  3963     VD_log_d ate := SYS DATE;
  3964     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3965                                 PD _job_log_d ate => VD_ log_date,
  3966                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  3967                                 PC _job_log_m essage =>  SUBSTR(' '
  3968                                                                 ||  CC_parm_ro ws_to_proc ess
  3969                                                                 ||  ' (in each  loop): '
  3970                                                                 ||  TO_CHAR(VN _parm_rows _to_proces s),1,2000) ,
  3971                                 PD _date1 =>  VD_rec_gro up_date,
  3972                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3973  
  3974   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  3975  
  3976     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  3977  
  3978       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  3979  
  3980       VD_log _date := S YSDATE;
  3981       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3982                                    PD_job_log _date => V D_log_date ,
  3983                                    PC_job_sta tus => SUB STR('WARNI NG - Job t able param eters',1,6 0),
  3984                                    PC_job_log _message = > SUBSTR('  Processin g paramete r '
  3985                                                                   | | CC_parm_ rows_to_pr ocess
  3986                                                                   | | ' (in ea ch loop) h as been ov erridden.'
  3987                                                                   | | ' The ov erride val ue is: '
  3988                                                                   | | TO_CHAR( VN_parm_ro ws_to_proc ess),1,200 0),
  3989                                    PD_date1 = > VD_rec_g roup_date,
  3990                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3991  
  3992     END IF;
  3993  
  3994   -- ******* ********** ********** ********** ********** ********** ********** ********
  3995   -- *
  3996   -- * Check  to see if  process i s running  on a repor ting datab ase.
  3997   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  3998   -- *
  3999   -- ******* ********** ********** ********** ********** ********** ********** ********
  4000  
  4001     IF NOT V B_allow_rp t_inst THE N
  4002  
  4003       BEGIN
  4004  
  4005         VD_l og_date :=  SYSDATE;
  4006         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4007                                      PD_job_l og_date =>  VD_log_da te,
  4008                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  4009                                      PD_date1  => VD_rec _group_dat e,
  4010                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4011  
  4012         SELE CT    Inst ance_name
  4013         INTO       VC_i nstance_na me
  4014         FROM       V$in stance;
  4015  
  4016         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  4017  
  4018           VD _log_date  := SYSDATE ;
  4019           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  4020                                        PD_job _log_date  => VD_log_ date,
  4021                                        PC_job _status =>  SUBSTR('E RROR - Pro cessing Fa iled',1,60 ),
  4022                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  4023                                                                     || VC_inst ance_name
  4024                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  4025                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  4026                                        PD_dat e1 => VD_r ec_group_d ate,
  4027                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4028  
  4029           RE TURN;
  4030  
  4031         END  IF;
  4032  
  4033       EXCEPT ION
  4034  
  4035         WHEN  OTHERS TH EN
  4036  
  4037           VD _log_date  := SYSDATE ;
  4038           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  4039                                        PD_job _log_date  => VD_log_ date,
  4040                                        PC_job _status =>  SUBSTR('E RROR - Una ble to ret rieve inst ance name' ,1,60),
  4041                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  4042                                        PD_dat e1 => VD_r ec_group_d ate,
  4043                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4044  
  4045           RE TURN;
  4046  
  4047       END;
  4048  
  4049     END IF;
  4050  
  4051   -- ******* ********** ********** ********** ********** ********** ********** ********
  4052   -- *
  4053   -- * Check  to see if  the job h as already  run today
  4054   -- *  - If  running i n stand-al one mode,  don't chec k.
  4055   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  4056   -- *
  4057   -- ******* ********** ********** ********** ********** ********** ********** ********
  4058  
  4059     IF NOT P B_run_stan dalone THE N
  4060  
  4061       BEGIN
  4062  
  4063         VD_l og_date :=  SYSDATE;
  4064         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4065                                      PD_job_l og_date =>  VD_log_da te,
  4066                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  4067                                      PD_date1  => VD_rec _group_dat e,
  4068                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4069  
  4070         SELE CT    COUN T(*)
  4071         INTO       VN_r ec_count
  4072         FROM       ADRM GT.Job_Pro cess_Logs
  4073         WHER E     Job_ name = CC_ process_na me
  4074         AND        Date 1 = VD_rec _group_dat e
  4075         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  4076  
  4077         IF V N_rec_coun t > 0 THEN
  4078  
  4079           VD _log_date  := SYSDATE ;
  4080           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  4081                                        PD_job _log_date  => VD_log_ date,
  4082                                        PC_job _status =>  SUBSTR('W ARNING - T his date h as already  been proc essed',1,6 0),
  4083                                        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),
  4084                                        PD_dat e1 => VD_r ec_group_d ate,
  4085                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4086  
  4087           RE TURN;
  4088  
  4089         END  IF;
  4090  
  4091       EXCEPT ION
  4092  
  4093         WHEN  OTHERS TH EN
  4094  
  4095           VD _log_date  := SYSDATE ;
  4096           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  4097                                        PD_job _log_date  => VD_log_ date,
  4098                                        PC_job _status =>  SUBSTR('E RROR - Una ble to ver ify if job  has alrea dy run',1, 60),
  4099                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  4100                                        PD_dat e1 => VD_r ec_group_d ate,
  4101                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4102  
  4103           RE TURN;
  4104  
  4105       END;
  4106  
  4107     END IF;
  4108  
  4109   -- ******* ********** ********** ********** ********** ********** ********** ********
  4110   -- *
  4111   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  4112   -- *  - If  yes, then  end this  job.
  4113   -- *
  4114   -- ******* ********** ********** ********** ********** ********** ********** ********
  4115  
  4116     SELECT C OUNT(*)
  4117     INTO   V N_job_coun t
  4118     FROM   S YS.DBA_JOB S_RUNNING  R,
  4119            S YS.DBA_JOB S J
  4120     WHERE  J .JOB = R.J OB
  4121     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  4122  
  4123     IF VN_jo b_count >  1 THEN
  4124  
  4125       VD_log _date := S YSDATE;
  4126       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4127                                    PD_job_log _date => V D_log_date ,
  4128                                    PC_job_sta tus => SUB STR('WARNI NG - Check  for runni ng jobs',1 ,60),
  4129                                    PC_job_log _message = > SUBSTR(' There is a nother '
  4130                                                                || C C_sp_name
  4131                                                                || '  job runni ng.'
  4132                                                                || '  Exiting j ob without  running.' ,1,2000),
  4133                                    PD_date1 = > VD_rec_g roup_date,
  4134                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4135  
  4136       RETURN ;
  4137  
  4138     ELSE
  4139  
  4140       IF VB_ run_standa lone THEN
  4141  
  4142         VD_l og_date :=  SYSDATE;
  4143         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4144                                      PD_job_l og_date =>  VD_log_da te,
  4145                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  4146                                      PD_date1  => VD_rec _group_dat e,
  4147                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4148  
  4149       ELSE
  4150  
  4151         SELE CT    MAX( J.Job)
  4152         INTO       VN_j ob_number
  4153         FROM       SYS. DBA_JOBS_R UNNING R,
  4154                    SYS. DBA_JOBS J
  4155         WHER E     J.JO B = R.JOB
  4156         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  4157  
  4158         VD_l og_date :=  SYSDATE;
  4159         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4160                                      PD_job_l og_date =>  VD_log_da te,
  4161                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  4162                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  4163                                                                      || VN_job _number,1, 2000),
  4164                                      PD_date1  => VD_rec _group_dat e,
  4165                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4166  
  4167       END IF ;
  4168  
  4169     END IF;
  4170  
  4171   -- ******* ********** ********** ********** ********** ********** ********** ********
  4172   -- *
  4173   -- * Main  processing  loop
  4174   -- *
  4175   -- ******* ********** ********** ********** ********** ********** ********** ********
  4176  
  4177     VN_pass_ count := 0 ;
  4178     VN_updat e_count :=  0;
  4179     VD_proce ss_start_d ate := SYS DATE;
  4180  
  4181   -- ******* ********** ********** ********** ********** ********** ********** ********
  4182   -- * Remov e old proc ess log ro ws
  4183   -- ******* ********** ********** ********** ********** ********** ********** ********
  4184     BEGIN
  4185  
  4186       VD_log _date := S YSDATE;
  4187       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4188                                    PD_job_log _date => V D_log_date ,
  4189                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  4190                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  4191                                                                   | | VN_parm_ log_file_a ge
  4192                                                                   | | ' days o ld',1,2000 ),
  4193                                    PD_date1 = > VD_rec_g roup_date,
  4194                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4195  
  4196       DELETE
  4197       FROM       ADRMGT .Job_Proce ss_Logs
  4198       WHERE      Job_na me = CC_pr ocess_name
  4199       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  4200  
  4201       COMMIT ;
  4202  
  4203       VD_log _date := S YSDATE;
  4204       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4205                                    PD_job_log _date => V D_log_date ,
  4206                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  4207                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  4208                                                                   | | VN_parm_ log_file_a ge
  4209                                                                   | | ' days o ld',1,2000 ),
  4210                                    PD_date1 = > VD_rec_g roup_date,
  4211                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4212  
  4213  
  4214     EXCEPTIO N
  4215  
  4216       WHEN N O_DATA_FOU ND THEN
  4217  
  4218         NULL ;
  4219  
  4220       WHEN O THERS THEN
  4221  
  4222         VD_l og_date :=  SYSDATE;
  4223         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4224                                      PD_job_l og_date  = > VD_log_d ate,
  4225                                      PC_job_s tatus => S UBSTR('ERR OR - Unkno wn error r emoving ol d process  logs.',1,6 0),
  4226                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  4227                                      PD_date1  => VD_rec _group_dat e,
  4228                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4229  
  4230     END;
  4231  
  4232   -- ******* ********** ********** ********** ********** ********** ********** ********
  4233   -- * Remov e old proc ess error  rows
  4234   -- ******* ********** ********** ********** ********** ********** ********** ********
  4235  
  4236     BEGIN
  4237  
  4238       VD_log _date := S YSDATE;
  4239       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4240                                    PD_job_log _date => V D_log_date ,
  4241                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  4242                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  4243                                                                   | | VN_parm_ log_file_a ge
  4244                                                                   | | ' days o ld',1,2000 ),
  4245                                    PD_date1 = > VD_rec_g roup_date,
  4246                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4247  
  4248       DELETE
  4249       FROM       ADRMGT .Job_Proce ss_Errs
  4250       WHERE      Job_na me = CC_pr ocess_name
  4251       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  4252  
  4253       COMMIT ;
  4254  
  4255       VD_log _date := S YSDATE;
  4256       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4257                                    PD_job_log _date => V D_log_date ,
  4258                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  4259                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  4260                                                                   | | VN_parm_ log_file_a ge
  4261                                                                   | | ' days o ld',1,2000 ),
  4262                                    PD_date1 = > VD_rec_g roup_date,
  4263                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4264  
  4265     EXCEPTIO N
  4266  
  4267       WHEN N O_DATA_FOU ND THEN
  4268  
  4269         NULL ;
  4270  
  4271       WHEN O THERS THEN
  4272  
  4273         VD_l og_date :=  SYSDATE;
  4274         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4275                                      PD_job_l og_date  = > VD_log_d ate,
  4276                                      PC_job_s tatus => S UBSTR('ERR OR - Unkno wn error r emoving ol d process  errors.',1 ,60),
  4277                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  4278                                      PD_date1  => VD_rec _group_dat e,
  4279                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4280  
  4281     END;
  4282  
  4283   -- ******* ********** ********** ********** ********** ********** ********** ********
  4284   -- * Main  record cur sor logic
  4285   -- ******* ********** ********** ********** ********** ********** ********** ********
  4286  
  4287     VN_pass_ count := 0 ;
  4288     VN_updat e_count :=  0;
  4289  
  4290     LOOP
  4291  
  4292       BEGIN
  4293  
  4294         OPEN  C_prsn_ch g_rec;
  4295  
  4296         FETC H C_prsn_c hg_rec
  4297         BULK  COLLECT I NTO T_prsn _chg_id
  4298         LIMI T VN_parm_ rows_to_pr ocess;
  4299  
  4300         EXIT  WHEN T_pr sn_chg_id. COUNT = 0;
  4301  
  4302         FORA LL I_prsn_ chg_id IN  T_prsn_chg _id.FIRST. .T_prsn_ch g_id.last
  4303           DE LETE
  4304           FR OM      AD R.Person_C hange_Log
  4305           WH ERE     Pe rson_chang e_log_id =  T_prsn_ch g_id(I_prs n_chg_id);
  4306  
  4307         COMM IT;
  4308  
  4309         VN_p ass_count  := VN_pass _count + 1 ;
  4310  
  4311         VN_u pdate_coun t := VN_up date_count  + T_prsn_ chg_id.COU NT;
  4312  
  4313         CLOS E C_prsn_c hg_rec;
  4314  
  4315       EXCEPT ION
  4316  
  4317         WHEN  OTHERS TH EN
  4318  
  4319           VN _error_cou nt := VN_e rror_count  + 1;  --  CCR 2152
  4320  
  4321           IF  VN_error_ count >= C N_max_erro r_count TH EN  -- CCR  2152
  4322  
  4323              RETURN;  - - CCR 2152
  4324  
  4325           EL SE  -- CCR  2152
  4326  
  4327              IF C_prsn_ chg_rec%IS OPEN THEN   -- CCR 21 52
  4328  
  4329                CLOSE C_ prsn_chg_r ec;  -- CC R 2152
  4330  
  4331              END IF;  - - CCR 2152
  4332  
  4333              VD_log_dat e := SYSDA TE;
  4334  
  4335              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  4336                                          PD_j ob_error_d ate  => VD _log_date,
  4337                                          PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  4338                                          PC_j ob_error_m essage =>  SUBSTR('Un known erro r removing  person ch ange logs  - '
  4339                                                                         || SQL ERRM,1,200 0),
  4340                                          PD_d ate1 => VD _rec_group _date,
  4341                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));  --  CCR 2152
  4342  
  4343           EN D IF;  --  CCR 2152
  4344  
  4345       END;
  4346  
  4347     END LOOP ;
  4348  
  4349   -- ******* ********** ********** ********** ********** ********** ********** ********
  4350   -- * Proce ss complet ion inform ation
  4351   -- ******* ********** ********** ********** ********** ********** ********** ********
  4352  
  4353     BEGIN
  4354  
  4355       VD_log _date := S YSDATE;
  4356       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4357                                    PD_job_log _date => V D_log_date ,
  4358                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  4359                                    PD_date1 = > VD_rec_g roup_date,
  4360                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  4361                                    PN_numeric 2 => VN_pa ss_count,
  4362                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  4363  
  4364       VD_log _date := S YSDATE;
  4365       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4366                                    PD_job_log _date => V D_log_date ,
  4367                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  4368                                    PD_date1 = > VD_rec_g roup_date,
  4369                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  4370                                    PN_numeric 2 => VN_up date_count ,
  4371                                    PC_text2 = > SUBSTR(' Deleted Re cords Coun t',1,255)) ;
  4372  
  4373       VD_pro cess_end_d ate := SYS DATE;
  4374       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  4375                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  4376                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  4377                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  4378                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  4379  
  4380       VD_log _date := S YSDATE;
  4381       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4382                                    PD_job_log _date => V D_log_date ,
  4383                                    PC_job_sta tus => SUB STR('SUCCE SS - Proce ssing Comp leted',1,6 0),
  4384                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  4385                                    PD_date1 = > VD_rec_g roup_date,
  4386                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4387  
  4388     EXCEPTIO N
  4389  
  4390       WHEN O THERS THEN
  4391  
  4392         VD_l og_date :=  SYSDATE;
  4393         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4394                                      PD_job_l og_date  = > VD_log_d ate,
  4395                                      PC_job_s tatus => S UBSTR('ERR OR - Unkno wn error w riting com pletion in formation. ',1,60),
  4396                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  4397                                      PD_date1  => VD_rec _group_dat e,
  4398                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4399  
  4400         RETU RN;
  4401  
  4402     END;
  4403  
  4404   EXCEPTION
  4405  
  4406     WHEN OTH ERS THEN
  4407  
  4408       ROLLBA CK;
  4409  
  4410       VD_log _date := S YSDATE;
  4411       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4412                                    PD_job_err or_date  = > VD_log_d ate,
  4413                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  4414                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Person_Chg _Log_Clean up_Sp.'
  4415                                                                  ||  SQLERRM,1 ,2000),
  4416                                    PD_date1 = > VD_rec_g roup_date,
  4417                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4418  
  4419       VD_log _date := S YSDATE;
  4420       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4421                                    PD_job_log _date => V D_log_date ,
  4422                                    PC_job_sta tus => SUB STR('ERROR  - Unknown  processin g error',1 ,60),
  4423                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  4424                                    PD_date1 = > VD_rec_g roup_date,
  4425                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4426  
  4427   END Person _Chg_Log_C leanup_Sp;
  4428   /
  4429   DROP PROCE DURE ADR.A DR_DELETE_ ADDRESS_SP ;
  4430  
  4431   CREATE OR  REPLACE PR OCEDURE AD R.Adr_dele te_address _Sp
  4432     (PB_run_ standalone
  4433        IN      BOOLEAN  DEFAULT FA LSE,
  4434      PB_allo w_rpt_inst
  4435        IN      BOOLEAN  DEFAULT FA LSE
  4436     )
  4437   IS
  4438  
  4439   -- ******* ********** ********** ********** ********** ********** ********** ********
  4440   -- * Proce dure: Adr_ delete_add ress_Sp
  4441   -- *
  4442   -- *  Temp orary  Add ress table  bug fix t o be run n ightly.
  4443   -- *
  4444   -- *  - Se lects all  Address re cords wher e the INSU RANCE_ID S TD_ADDRESS TYPE_ID
  4445   -- *     i s NULL
  4446   -- *
  4447   -- *
  4448   -- * Param eters:
  4449   -- *
  4450   -- *  PB_r un_standal one   Igno re DBMS_JO B logic fo r checking  running j obs.
  4451   -- *                         Def ault: FALS E
  4452   -- *
  4453   -- *  PB_a llow_rpt_i nst   Allo w stored p rocedure t o be submi tted in th e
  4454   -- *                        DBMS _JOB queue  on the AD R reportin g database s
  4455   -- *                         Def ault: FALS E
  4456   -- *
  4457   -- ******* ********** ********** ********** ********** ********** ********** ********
  4458   --
  4459   -- ======= ========== ========== ========== ========== ========== ========== ========
  4460   -- Date         Autho r                             De scription
  4461   -- ======= ========== ========== ========== ========== ========== ========== ========
  4462   -- 11/30/2 010  Brend a Caningto n       Cr eated for  CCR 1252.
  4463  
  4464   --
  4465   -- ======= ========== ========== ========== ========== ========== ========== ========
  4466  
  4467   -- CONSTAN TS
  4468  
  4469  
  4470   -- VARIABL ES
  4471  
  4472     VB_allow _rpt_inst                      B OOLEAN :=  FALSE;
  4473     VB_error                                B OOLEAN :=  FALSE;
  4474     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  4475     VB_updat e_row                          B OOLEAN :=  FALSE;
  4476  
  4477     VC_allow _rpt_inst                      V ARCHAR2(5)  := NULL;
  4478     VC_insta nce_name                       V ARCHAR2(16 );
  4479     VC_proce ss_duratio n                   V ARCHAR2(25 );
  4480     VC_proce ss_name                        V ARCHAR2(60 ) := 'ADR  Delete Add ress Recor ds';
  4481     VC_run_s tandalone                      V ARCHAR2(5)  := NULL;
  4482  
  4483     VD_log_d ate                            D ATE;
  4484     VD_proce ss_end_dat e                   D ATE;
  4485     VD_proce ss_start_d ate                 D ATE;
  4486     VD_rec_g roup_date                      D ATE;
  4487  
  4488     VN_addr_ chg_src_ty pe_id               N UMBER := 0 ;
  4489     VN_job_c ount                           N UMBER := 0 ;
  4490     VN_job_n umber                          N UMBER := 0 ;
  4491     VN_inst_ id_upd_cou nt                  N UMBER := 0 ;
  4492     VN_error _recs_coun t                   N UMBER := 0 ;
  4493     VN_no_in st_id_coun t                   N UMBER := 0 ;
  4494     VN_rec_c ount                           N UMBER := 0 ;
  4495     VN_src_t ype_upd_co unt                 N UMBER := 0 ;
  4496     VN_std_i nstitution _id                 N UMBER := 0 ;
  4497     VN_total _recs_coun t                   N UMBER := 0 ;
  4498     sql_stmt                                v archar2(50 0);
  4499  
  4500   -- CURSORS
  4501  
  4502   CURSOR my_ del_record s  IS
  4503        SELEC T A.ADDRES S_ID
  4504        FROM       ADR.A ddress A
  4505       WHERE      A.STD_ ADDRESSTYP E_ID IS NU LL
  4506       AND
  4507                       A .INSURANCE _ID IS NUL L;
  4508  
  4509   -- ******* ********** ********** ********** ********** ********** ********** *******
  4510   -- *
  4511   -- *  MAIN  PROCEDURE :
  4512   -- *
  4513   -- *    AD R.Adr_Addr ess_Z05_Up date_Sp
  4514   -- *
  4515   -- ******* ********** ********** ********** ********** ********** ********** *******
  4516  
  4517   BEGIN
  4518  
  4519     VD_rec_g roup_date  := TRUNC(S YSDATE);
  4520  
  4521     VD_log_d ate := SYS DATE;
  4522     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  4523                                 PD _job_log_d ate => VD_ log_date,
  4524                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  4525                                 PD _date1 =>  VD_rec_gro up_date,
  4526                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4527  
  4528   -- ******* ********** ********** ********** ********** ********** ********** ********
  4529   -- *
  4530   -- * Valid ate input  parameters
  4531   -- *
  4532   -- ******* ********** ********** ********** ********** ********** ********** ********
  4533  
  4534   -- * Check  run stand alone flag
  4535  
  4536     IF PB_ru n_standalo ne IS NULL
  4537      OR NOT  PB_run_sta ndalone TH EN
  4538  
  4539       VB_run _standalon e := FALSE ;
  4540       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  4541  
  4542     ELSE
  4543  
  4544       VB_run _standalon e := TRUE;
  4545       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  4546  
  4547     END IF;
  4548  
  4549   -- * Check  run on re port insta nce flag
  4550  
  4551     IF PB_al low_rpt_in st IS NULL
  4552      OR NOT  PB_allow_r pt_inst TH EN
  4553  
  4554       VB_all ow_rpt_ins t := FALSE ;
  4555       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  4556  
  4557     ELSE
  4558  
  4559       VB_all ow_rpt_ins t := TRUE;
  4560       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  4561  
  4562     END IF;
  4563  
  4564     VD_log_d ate := SYS DATE;
  4565     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  4566                                 PD _job_log_d ate => VD_ log_date,
  4567                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cessing pa rameters f or this jo b',1,60),
  4568                                 PC _job_log_m essage =>  SUBSTR('Cu rrent job  parameters  - '
  4569                                                              || ' R un standal one: ' ||  VC_run_sta ndalone
  4570                                                              || ' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  4571                                 PD _date1 =>  VD_rec_gro up_date,
  4572                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4573  
  4574   -- ******* ********** ********** ********** ********** ********** ********** ********
  4575   -- *
  4576   -- * Check  to see if  process i s running  on a repor ting datab ase.
  4577   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  4578   -- *
  4579   -- ******* ********** ********** ********** ********** ********** ********** ********
  4580  
  4581     IF NOT V B_allow_rp t_inst THE N
  4582  
  4583       BEGIN
  4584  
  4585         VD_l og_date :=  SYSDATE;
  4586         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  4587                                      PD_job_l og_date =>  VD_log_da te,
  4588                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  4589                                      PD_date1  => VD_rec _group_dat e,
  4590                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4591  
  4592         SELE CT    Inst ance_name
  4593         INTO       VC_i nstance_na me
  4594         FROM       V$in stance;
  4595  
  4596         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  4597  
  4598           VD _log_date  := SYSDATE ;
  4599           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  4600                                        PD_job _log_date  => VD_log_ date,
  4601                                        PC_job _status =>  SUBSTR('W ARNING      - Process ing Failed ',1,60),
  4602                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  4603                                                                     || VC_inst ance_name
  4604                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  4605                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  4606                                        PD_dat e1 => VD_r ec_group_d ate,
  4607                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4608  
  4609           RE TURN;
  4610  
  4611         END  IF;
  4612  
  4613       EXCEPT ION
  4614  
  4615         WHEN  OTHERS TH EN
  4616  
  4617           VD _log_date  := SYSDATE ;
  4618           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  4619                                        PD_job _log_date  => VD_log_ date,
  4620                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  4621                                        PC_job _log_messa ge => SUBS TR('Termin ating scri pt.',1,200 0),
  4622                                        PD_dat e1 => VD_r ec_group_d ate,
  4623                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4624  
  4625           RE TURN;
  4626  
  4627       END;
  4628  
  4629     END IF;
  4630  
  4631   -- ******* ********** ********** ********** ********** ********** ********** ********
  4632   -- *
  4633   -- * Check  to see if  the job h as already  run today
  4634   -- *  - If  running i n stand-al one mode,  don't chec k.
  4635   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  4636   -- *
  4637   -- ******* ********** ********** ********** ********** ********** ********** ********
  4638  
  4639     IF NOT P B_run_stan dalone THE N
  4640  
  4641       BEGIN
  4642  
  4643         SELE CT    COUN T(*)
  4644         INTO       VN_r ec_count
  4645         FROM       ADRM GT.Job_Pro cess_Logs
  4646         WHER E     Job_ name = VC_ process_na me
  4647         AND        Date 1 = VD_rec _group_dat e
  4648         AND        Job_ status = ' SUCCESS      - Proces sing Compl eted';
  4649  
  4650         IF V N_rec_coun t > 0 THEN
  4651  
  4652           VD _log_date  := SYSDATE ;
  4653           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  4654                                        PD_job _log_date  => VD_log_ date,
  4655                                        PC_job _status =>  SUBSTR('I NFORMATION  - This da te has alr eady been  processed' ,1,60),
  4656                                        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),
  4657                                        PD_dat e1 => VD_r ec_group_d ate,
  4658                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4659  
  4660           RE TURN;
  4661  
  4662         END  IF;
  4663  
  4664       EXCEPT ION
  4665  
  4666         WHEN  OTHERS TH EN
  4667  
  4668           VD _log_date  := SYSDATE ;
  4669           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  4670                                        PD_job _log_date  => VD_log_ date,
  4671                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  4672                                        PC_job _log_messa ge => SUBS TR('Termin ating scri pt.',1,200 0),
  4673                                        PD_dat e1 => VD_r ec_group_d ate,
  4674                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4675  
  4676           RE TURN;
  4677  
  4678       END;
  4679  
  4680     END IF;
  4681  
  4682   -- ******* ********** ********** ********** ********** ********** ********** ********
  4683   -- *
  4684   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  4685   -- *  - If  yes, then  end this  job.
  4686   -- *
  4687   -- ******* ********** ********** ********** ********** ********** ********** ********
  4688  
  4689     SELECT C OUNT(*)
  4690     INTO   V N_job_coun t
  4691     FROM   S YS.DBA_JOB S_RUNNING  R,
  4692            S YS.DBA_JOB S J
  4693     WHERE  J .JOB = R.J OB
  4694     AND    U PPER(J.WHA T) LIKE '% ADR_DELETE _ADDRESS_S P%';
  4695  
  4696     IF VN_jo b_count >  1 THEN
  4697  
  4698       VD_log _date := S YSDATE;
  4699       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  4700                                    PD_job_log _date => V D_log_date ,
  4701                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  4702                                    PC_job_log _message = > SUBSTR(' There is a nother add ress Delet e job runn ing.'
  4703                                                                || '  Exiting j ob without  running.' ,1,2000),
  4704                                    PD_date1 = > VD_rec_g roup_date,
  4705                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4706  
  4707       RETURN ;
  4708  
  4709     ELSE
  4710  
  4711       IF VB_ run_standa lone THEN
  4712  
  4713         VD_l og_date :=  SYSDATE;
  4714         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  4715                                      PD_job_l og_date =>  VD_log_da te,
  4716                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  4717                                      PD_date1  => VD_rec _group_dat e,
  4718                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4719  
  4720       ELSE
  4721  
  4722         SELE CT    MAX( J.Job)
  4723         INTO       VN_j ob_number
  4724         FROM       SYS. DBA_JOBS_R UNNING R,
  4725                    SYS. DBA_JOBS J
  4726         WHER E     J.JO B = R.JOB
  4727         AND        UPPE R(J.WHAT)  LIKE '%ADR _DELETE_AD DRESS_SP%' ;
  4728  
  4729         VD_l og_date :=  SYSDATE;
  4730         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  4731                                      PD_job_l og_date =>  VD_log_da te,
  4732                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  4733                                      PD_date1  => VD_rec _group_dat e,
  4734                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4735  
  4736       END IF ;
  4737  
  4738     END IF;
  4739  
  4740   -- ******* ********** ********** ********** ********** ********** ********** ********
  4741   -- *
  4742   -- * Main  processing  loop
  4743   -- *
  4744   -- ******* ********** ********** ********** ********** ********** ********** ********
  4745  
  4746     VN_error _recs_coun t := 0;
  4747     VN_inst_ id_upd_cou nt := 0;
  4748     VN_no_in st_id_coun t := 0;
  4749     VN_src_t ype_upd_co unt := 0;
  4750     VN_total _recs_coun t := 0;
  4751  
  4752     VD_proce ss_start_d ate := SYS DATE;
  4753  
  4754   -- Remove  all proces s logs ove r 14 days  old
  4755  
  4756     BEGIN
  4757  
  4758       VD_log _date := S YSDATE;
  4759       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  4760                                    PD_job_log _date => V D_log_date ,
  4761                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  4762                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over 14  days old', 1,2000),
  4763                                    PD_date1 = > VD_rec_g roup_date,
  4764                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4765  
  4766       DELETE
  4767       FROM       ADRMGT .Job_Proce ss_Logs
  4768       WHERE      Job_na me = VC_pr ocess_name
  4769       AND        Date1  < TRUNC(SY SDATE) - 1 4;
  4770  
  4771       COMMIT ;
  4772  
  4773       VD_log _date := S YSDATE;
  4774       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  4775                                    PD_job_log _date => V D_log_date ,
  4776                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  4777                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over 14 d ays old',1 ,2000),
  4778                                    PD_date1 = > VD_rec_g roup_date,
  4779                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4780  
  4781  
  4782     EXCEPTIO N
  4783  
  4784       WHEN N O_DATA_FOU ND THEN
  4785  
  4786         NULL ;
  4787  
  4788       WHEN O THERS THEN
  4789  
  4790         VD_l og_date :=  SYSDATE;
  4791         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  4792                                      PD_job_e rror_date   => VD_log _date,
  4793                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  4794                                      PC_job_e rror_messa ge => SUBS TR('Unknow n error wh ile removi ng old pro cess logs.  '
  4795                                                                        || SQLE RRM,1,2000 ),
  4796                                      PD_date1  => VD_rec _group_dat e,
  4797                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4798  
  4799     END;
  4800  
  4801   -- Remove  all proces s errors o ver 14 day s old
  4802  
  4803     BEGIN
  4804  
  4805       VD_log _date := S YSDATE;
  4806       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  4807                                    PD_job_log _date => V D_log_date ,
  4808                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  4809                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over 1 4 days old ',1,2000),
  4810                                    PD_date1 = > VD_rec_g roup_date,
  4811                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4812  
  4813       DELETE
  4814       FROM       ADRMGT .Job_Proce ss_Errs
  4815       WHERE      Job_na me = VC_pr ocess_name
  4816       AND        Date1  < TRUNC(SY SDATE) - 1 4;
  4817  
  4818       COMMIT ;
  4819  
  4820       VD_log _date := S YSDATE;
  4821       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  4822                                    PD_job_log _date => V D_log_date ,
  4823                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  4824                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over 14  days old' ,1,2000),
  4825                                    PD_date1 = > VD_rec_g roup_date,
  4826                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4827  
  4828     EXCEPTIO N
  4829  
  4830       WHEN N O_DATA_FOU ND THEN
  4831  
  4832         NULL ;
  4833  
  4834       WHEN O THERS THEN
  4835  
  4836         VD_l og_date :=  SYSDATE;
  4837         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  4838                                      PD_job_e rror_date   => VD_log _date,
  4839                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  4840                                      PC_job_e rror_messa ge => SUBS TR('Unknow n error wh ile removi ng old pro cess error s. '
  4841                                                                        || SQLE RRM,1,2000 ),
  4842                                      PD_date1  => VD_rec _group_dat e,
  4843                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4844  
  4845     END;
  4846  
  4847   -- Main re cord curso r logic
  4848   BEGIN
  4849       FOR th is_del_rec ords in my _del_recor ds LOOP
  4850                sql_stmt  := 'DELET E     FROM       ADR. Address A  WHERE A.AD DRESS_ID =  ' || this _del_recor ds.ADDRESS _ID ;
  4851                 EXECUTE  IMMEDIATE  sql_stmt;
  4852                 COMMIT;
  4853              END LOOP;
  4854  
  4855  
  4856  
  4857           EX CEPTION
  4858           WH EN NO_DATA _FOUND THE N
  4859                 NULL;
  4860           WH EN OTHERS  THEN
  4861              VN_error_r ecs_count  := VN_erro r_recs_cou nt + 1;
  4862              ROLLBACK;
  4863              VD_log_dat e := SYSDA TE;
  4864              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  4865                                          PD_j ob_error_d ate  => VD _log_date,
  4866                                          PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  4867                                          PC_j ob_error_m essage =>  SUBSTR('Un known erro r while de leting fro m ADR.Addr ess row.'
  4868                                                                         || SQL ERRM,1,200 0),
  4869                                          PD_d ate1 => VD _rec_group _date,
  4870                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255)
  4871                                          );
  4872  
  4873         END;
  4874  
  4875  
  4876  
  4877   END Adr_de lete_addre ss_Sp;
  4878   /
  4879   DROP PROCE DURE ADR.W KF_CASE_H_ DELETE_SP;
  4880  
  4881   CREATE OR  REPLACE PR OCEDURE AD R.WKF_CASE _H_DELETE_ SP
  4882   IS
  4883  
  4884  
  4885  
  4886     CURSOR c _wkf  IS S ELECT WKF_ CASE_H.wkf _case_id
  4887          fro m ADR.wkf_ case_H
  4888         wher e WKF_CASE _H.transac tion_type_ code = 'D'
  4889       AND WK F_CASE_H.W KF_CASE_TY PE_ID = 16 16295;
  4890  
  4891     sql_stmt  string(51 2);
  4892     v_cnt_wk f number(2 0);
  4893     VD_log_d ate                            D ATE;
  4894     VD_rec_g roup_date                      D ATE;
  4895     VC_proce ss_name                        V ARCHAR2(60 ) := 'ADR  WKF_CASE_H  DELETE';
  4896     VN_error _recs_coun t                   N UMBER := 0 ;
  4897      BEGIN
  4898           se lect  coun t(wkf_case _id)
  4899           in to v_cnt_w kf
  4900           fr om wkf_cas e_H
  4901           wh ere transa ction_type _code = 'D '
  4902           AN D WKF_CASE _TYPE_ID =  1616295;
  4903          if  v_cnt_wkf  > 0 THEN
  4904                FOR this _sql in  c _wkf  LOOP
  4905                    sql_ stmt :=  ' DELETE FRO M ADR.WKF_ CASE_ASSIG NMENT_H  W HERE WKF_C ASE_ID = '  ||this_sq l.WKF_CASE _ID;
  4906                    EXEC UTE IMMEDI ATE sql_st mt;
  4907                    sql_ stmt :=  ' DELETE FRO M ADR.WKF_ CASE_COMME NTS_H  WHE RE WKF_CAS E_ID = ' | |this_sql. WKF_CASE_I D;
  4908                    EXEC UTE IMMEDI ATE sql_st mt;
  4909                    sql_ stmt :=  ' DELETE FRO M ADR.WKF_ CASE_STATU S_DETAIL_H    WHERE W KF_CASE_ID  = ' ||thi s_sql.WKF_ CASE_ID;
  4910                    EXEC UTE IMMEDI ATE sql_st mt;
  4911                    sql_ stmt :=  ' DELETE FRO M ADR.WKF_ MESSAGING_ CASE_H   W HERE WKF_C ASE_ID = '  ||this_sq l.WKF_CASE _ID;
  4912                    EXEC UTE IMMEDI ATE sql_st mt;
  4913                    sql_ stmt :=  ' DELETE FRO M ADR.WKF_ CASE_H   W HERE WKF_C ASE_ID = '  ||this_sq l.WKF_CASE _ID;
  4914                    EXEC UTE IMMEDI ATE sql_st mt;
  4915                   commi t;
  4916              END LOOP;
  4917         END  IF;
  4918         EXCE PTION
  4919           WH EN NO_DATA _FOUND THE N
  4920                 NULL;
  4921           WH EN OTHERS  THEN
  4922              VN_error_r ecs_count  := VN_erro r_recs_cou nt + 1;
  4923              ROLLBACK;
  4924              VD_log_dat e := SYSDA TE;
  4925              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  4926                                          PD_j ob_error_d ate  => VD _log_date,
  4927                                          PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  4928                                          PC_j ob_error_m essage =>  SUBSTR('Un known erro r while de leting fro m ADR.Addr ess row.'
  4929                                                                         || SQL ERRM,1,200 0),
  4930                                          PD_d ate1 => VD _rec_group _date,
  4931                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255)
  4932                                          );
  4933   END WKF_CA SE_H_DELET E_SP;
  4934   /
  4935   DROP PROCE DURE ADR.H L7_TXN_LOG _NULL_ERR_ COL_SP_05;
  4936  
  4937   CREATE OR  REPLACE PR OCEDURE AD R.Hl7_Txn_ Log_Null_E rr_Col_Sp_ 05 (
  4938      PB_run_ standalone     IN BOO LEAN DEFAU LT FALSE,
  4939      PB_allo w_rpt_inst     IN BOO LEAN DEFAU LT FALSE,
  4940      PN_rows _to_proces s   IN NUM BER DEFAUL T NULL)
  4941   IS
  4942      -- **** ********** ********** ********** ********** ********** ********** ********** *
  4943      -- * Pr ocedure: H l7_Txn_Log _Null_Erro r_Col
  4944      -- *
  4945      -- *    Update HL7  transcati ons to rem ove data f rom the in ternal_err or_text
  4946      -- *    column for  all rows  more than  6 months o ld.
  4947      -- *
  4948      -- * Pa rameters:
  4949      -- *
  4950      -- *  P B_run_stan dalone   I gnore DBMS _JOB logic  for check ing runnin g jobs.
  4951      -- *                          Default: F ALSE
  4952      -- *
  4953      -- *  P B_allow_rp t_inst   A llow store d procedur e to be su bmitted in  the
  4954      -- *                        D BMS_JOB qu eue on the  ADR repor ting datab ases
  4955      -- *                          Default: F ALSE
  4956      -- *
  4957      -- **** ********** ********** ********** ********** ********** ********** ********** *
  4958      --
  4959      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  4960      -- Date         Au thor             Desc ription
  4961      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  4962      -- 06/2 3/2010  Cr aig Wood         Crea ted for CC R 1100.
  4963      --
  4964      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  4965  
  4966      -- CONS TANTS
  4967  
  4968      CC_no                                  V ARCHAR2 (1 ) := 'N';
  4969      CC_parm _applicati on_name    CONSTANT V ARCHAR2 (8 0)
  4970         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  4971      CC_parm _hl7_err_t xt_age     CONSTANT V ARCHAR2 (5 0)
  4972                                                 := 'OLDE ST HL7 ERR OR TEXT DA YS' ;
  4973      CC_parm _last_hl7_ id         CONSTANT V ARCHAR2 (5 0)
  4974                                                 := 'LAST  HL7 ID PR OCESSED' ;
  4975      CC_parm _log_file_ age        CONSTANT V ARCHAR2 (5 0)
  4976                                                 := 'OLDE ST LOG FIL E DAYS' ;
  4977      CC_proc ess_name              CONSTANT V ARCHAR2 (6 0)
  4978         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  4979      CC_sp_n ame                   CONSTANT V ARCHAR2 (3 5)
  4980         := ' Hl7_Txn_Lo g_Null_Err _Col_Sp_'  || '05' ;
  4981      CC_yes                                 V ARCHAR2 (1 ) := 'Y';
  4982  
  4983      -- VARI ABLES
  4984  
  4985      VB_allo w_rpt_inst                     B OOLEAN :=  FALSE;
  4986      VB_run_ standalone                     B OOLEAN :=  FALSE;
  4987  
  4988      VC_allo w_rpt_inst                     V ARCHAR2 (5 ) := NULL;
  4989      VC_inst ance_name                      V ARCHAR2 (1 6);
  4990      VC_proc ess_durati on                  V ARCHAR2 (2 5);
  4991      VC_run_ standalone                     V ARCHAR2 (5 ) := NULL;
  4992      VC_sql_ statement                      V ARCHAR2 (2 000);
  4993      VC_para _name_last _proc_id            V ARCHAR2 (3 0):= 'P' | | '05' ||  ' LAST PRO CESSED LOG  ID';
  4994  
  4995     VD_log_d ate                            D ATE;
  4996     VD_proce ss_end_dat e                   D ATE;
  4997     VD_proce ss_start_d ate                 D ATE;
  4998     VD_rec_g roup_date                      D ATE;
  4999  
  5000     VN_job_c ount                           N UMBER := 0 ;
  5001     VN_job_n umber                          N UMBER;
  5002     VN_max_l og_id                          N UMBER := 0 ;
  5003     VN_parm_ hl7_err_tx t_age               N UMBER;
  5004     VN_parm_ log_file_a ge                  N UMBER;
  5005     VN_parm_ last_log_i d                   N UMBER := 0 ;
  5006     VN_parm_ rows_to_pr ocess               N UMBER;
  5007     VN_pass_ count                          N UMBER := 0 ;
  5008     VN_rec_c ount                           N UMBER := 0 ;
  5009     VN_updat e_count                        N UMBER := 0 ;
  5010  
  5011  
  5012   -- CURSORS
  5013  
  5014     CURSOR C _hl7_id IS
  5015       SELECT   /*+ para llel(4) */  Hl7_trans action_log _id
  5016       FROM       Hl7_tr ansaction_ log PARTIT ION (HL7_T RANSACTION _LOG_P05)
  5017       WHERE      Hl7_tr ansaction_ log_id > V N_parm_las t_log_id
  5018       AND        Transm ission_dat e < TRUNC( SYSDATE) -  VN_parm_h l7_err_txt _age
  5019       AND        Intern al_error_t ext IS NOT  NULL;
  5020  
  5021   -- TYPES
  5022  
  5023     TYPE TT_ hl7_id IS
  5024       TABLE  OF ADR.Hl7 _Transacti on_Log.Hl7 _transacti on_log_id% TYPE;
  5025  
  5026   -- MEMORY  TABLES
  5027  
  5028     T_hl7_id                                T T_hl7_id;
  5029  
  5030   -- ******* ********** ********** ********** ********** ********** ********** *******
  5031   -- *
  5032   -- *  MAIN  PROCEDURE :
  5033   -- *
  5034   -- ******* ********** ********** ********** ********** ********** ********** *******
  5035  
  5036   BEGIN
  5037  
  5038     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  5039     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5040  
  5041     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  5042     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5043  
  5044     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  5045     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5046  
  5047     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  5048     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5049  
  5050     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  QUERY PARA LLEL ' ||   2;
  5051     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5052  
  5053     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  DML PARALL EL ' || 2;
  5054     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5055  
  5056  
  5057     VC_sql_s tatement:= 'ALTER SES SION SET p arallel_fo rce_local= TRUE';      --  force  parallel  to a local  node
  5058     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5059  
  5060     VD_rec_g roup_date  := TRUNC(S YSDATE);
  5061  
  5062     VD_log_d ate := SYS DATE;
  5063     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  5064                                 PD _job_log_d ate => VD_ log_date,
  5065                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  5066                                 PD _date1 =>  VD_rec_gro up_date,
  5067                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  5068  
  5069   -- ******* ********** ********** ********** ********** ********** ********** ********
  5070   -- *
  5071   -- * Valid ate input  parameters
  5072   -- *
  5073   -- ******* ********** ********** ********** ********** ********** ********** ********
  5074  
  5075   -- * Check  run stand alone flag
  5076  
  5077     IF PB_ru n_standalo ne IS NULL
  5078      OR NOT  PB_run_sta ndalone TH EN
  5079  
  5080       VB_run _standalon e := FALSE ;
  5081       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  5082  
  5083     ELSE
  5084  
  5085       VB_run _standalon e := TRUE;
  5086       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  5087  
  5088     END IF;
  5089  
  5090   -- * Check  run on re port insta nce flag
  5091  
  5092     IF PB_al low_rpt_in st IS NULL
  5093      OR NOT  PB_allow_r pt_inst TH EN
  5094  
  5095       VB_all ow_rpt_ins t := FALSE ;
  5096       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  5097  
  5098     ELSE
  5099  
  5100       VB_all ow_rpt_ins t := TRUE;
  5101       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  5102  
  5103     END IF;
  5104  
  5105   -- ******* ********** ********** ********** ********** ********** ********** ********
  5106   -- *
  5107   -- * Retri eve proces sing param eters
  5108   -- *
  5109   -- ******* ********** ********** ********** ********** ********** ********** ********
  5110  
  5111   -- Process  Parameter  OLDEST HL 7 ERROR TE XT DAYS KE PT
  5112  
  5113     BEGIN
  5114  
  5115       SELECT     Value
  5116       INTO       VN_par m_hl7_err_ txt_age
  5117       FROM       ADRMGT .Adr_Param eter
  5118       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  5119       AND        Parame ter_name =  'OLDEST H L7 ERROR T EXT DAYS K EPT';
  5120  
  5121       IF VN_ parm_hl7_e rr_txt_age  IS NULL T HEN
  5122  
  5123         VD_l og_date :=  SYSDATE;
  5124         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5125                                      PD_job_l og_date =>  VD_log_da te,
  5126                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5127                                      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),
  5128                                      PD_date1  => VD_rec _group_dat e,
  5129                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5130  
  5131         RETU RN;
  5132  
  5133       END IF ;
  5134  
  5135     EXCEPTIO N
  5136  
  5137       WHEN N O_DATA_FOU ND THEN
  5138  
  5139         VD_l og_date :=  SYSDATE;
  5140         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5141                                      PD_job_l og_date =>  VD_log_da te,
  5142                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5143                                      PC_job_l og_message  => 'Param eter for O LDEST HL7  ERROR TEXT  DAYS KEPT  was not f ound. Term inating pr ocess.',
  5144                                      PD_date1  => VD_rec _group_dat e,
  5145                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5146  
  5147         RETU RN;
  5148  
  5149       WHEN O THERS THEN
  5150  
  5151         VD_l og_date :=  SYSDATE;
  5152         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5153                                      PD_job_l og_date =>  VD_log_da te,
  5154                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5155                                      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. '
  5156                                                                      || SQLERR M,1,2000),
  5157                                      PD_date1  => VD_rec _group_dat e,
  5158                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5159  
  5160         RETU RN;
  5161  
  5162     END;
  5163  
  5164   -- Process  Parameter  OLDEST LO G FILE DAY S KEPT
  5165  
  5166     BEGIN
  5167  
  5168       SELECT     Value
  5169       INTO       VN_par m_log_file _age
  5170       FROM       ADRMGT .Adr_Param eter
  5171       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  5172       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  5173  
  5174       IF VN_ parm_log_f ile_age IS  NULL THEN
  5175  
  5176         VD_l og_date :=  SYSDATE;
  5177         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5178                                      PD_job_l og_date =>  VD_log_da te,
  5179                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5180                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST L OG FILE DA YS KEPT is  NULL. Ter minating p rocess.',1 ,2000),
  5181                                      PD_date1  => VD_rec _group_dat e,
  5182                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5183  
  5184         RETU RN;
  5185  
  5186       END IF ;
  5187  
  5188     EXCEPTIO N
  5189  
  5190       WHEN N O_DATA_FOU ND THEN
  5191  
  5192         VD_l og_date :=  SYSDATE;
  5193         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5194                                      PD_job_l og_date =>  VD_log_da te,
  5195                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5196                                      PC_job_l og_message  => 'Param eter for O LDEST LOG  FILE DAYS  KEPT was n ot found.  Terminatin g process. ',
  5197                                      PD_date1  => VD_rec _group_dat e,
  5198                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5199  
  5200         RETU RN;
  5201  
  5202       WHEN O THERS THEN
  5203  
  5204         VD_l og_date :=  SYSDATE;
  5205         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5206                                      PD_job_l og_date =>  VD_log_da te,
  5207                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5208                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  OLDEST LO G FILE DAY S KEPT. Te rminating  process. '
  5209                                                                      || SQLERR M,1,2000),
  5210                                      PD_date1  => VD_rec _group_dat e,
  5211                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5212  
  5213         RETU RN;
  5214  
  5215     END;
  5216  
  5217   -- Process  Parameter  ROWS TO P ROCESS
  5218  
  5219     BEGIN
  5220  
  5221       SELECT     Value
  5222       INTO       VN_par m_rows_to_ process
  5223       FROM       ADRMGT .Adr_Param eter
  5224       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  5225       AND        Parame ter_name =  'ROWS TO  PROCESS';
  5226  
  5227       IF VN_ parm_rows_ to_process  IS NULL T HEN
  5228  
  5229         VD_l og_date :=  SYSDATE;
  5230         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5231                                      PD_job_l og_date =>  VD_log_da te,
  5232                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5233                                      PC_job_l og_message  => SUBSTR ('Paramete r ROWS TO  PROCESS is  NULL. Ter minating p rocess.',1 ,2000),
  5234                                      PD_date1  => VD_rec _group_dat e,
  5235                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5236  
  5237         RETU RN;
  5238  
  5239       END IF ;
  5240  
  5241     EXCEPTIO N
  5242  
  5243       WHEN N O_DATA_FOU ND THEN
  5244  
  5245         VD_l og_date :=  SYSDATE;
  5246         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5247                                      PD_job_l og_date =>  VD_log_da te,
  5248                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5249                                      PC_job_l og_message  => 'Param eter for R OWS TO PRO CESS was n ot found.  Terminatin g process. ',
  5250                                      PD_date1  => VD_rec _group_dat e,
  5251                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5252  
  5253         RETU RN;
  5254  
  5255       WHEN O THERS THEN
  5256  
  5257         VD_l og_date :=  SYSDATE;
  5258         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5259                                      PD_job_l og_date =>  VD_log_da te,
  5260                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5261                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ROWS TO P ROCESS. Te rminating  process. '
  5262                                                                      || SQLERR M,1,2000),
  5263                                      PD_date1  => VD_rec _group_dat e,
  5264                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5265  
  5266         RETU RN;
  5267  
  5268     END;
  5269  
  5270   -- Process  Parameter  LAST PROC ESSED LOG  ID
  5271  
  5272     BEGIN
  5273  
  5274       SELECT     Value
  5275       INTO       VN_par m_last_log _id
  5276       FROM       ADRMGT .Adr_Param eter
  5277       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  5278       AND        Parame ter_name =  VC_para_n ame_last_p roc_id;
  5279  
  5280       IF VN_ parm_last_ log_id IS  NULL THEN
  5281  
  5282         VD_l og_date :=  SYSDATE;
  5283         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5284                                      PD_job_l og_date =>  VD_log_da te,
  5285                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5286                                      PC_job_l og_message  => SUBSTR ('Paramete r ' || VC_ para_name_ last_proc_ id || ' is  NULL. Ter minating p rocess.',1 ,2000),
  5287                                      PD_date1  => VD_rec _group_dat e,
  5288                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5289  
  5290         RETU RN;
  5291  
  5292       END IF ;
  5293  
  5294     EXCEPTIO N
  5295  
  5296       WHEN N O_DATA_FOU ND THEN
  5297  
  5298         VD_l og_date :=  SYSDATE;
  5299         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5300                                      PD_job_l og_date =>  VD_log_da te,
  5301                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5302                                      PC_job_l og_message  => 'Param eter for '  || VC_par a_name_las t_proc_id  || ' was n ot found.  Terminatin g process. ',
  5303                                      PD_date1  => VD_rec _group_dat e,
  5304                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5305  
  5306         RETU RN;
  5307  
  5308       WHEN O THERS THEN
  5309  
  5310         VD_l og_date :=  SYSDATE;
  5311         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5312                                      PD_job_l og_date =>  VD_log_da te,
  5313                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  5314                                      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. '
  5315                                                                      || SQLERR M,1,2000),
  5316                                      PD_date1  => VD_rec _group_dat e,
  5317                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5318  
  5319         RETU RN;
  5320  
  5321     END;
  5322  
  5323   -- Write o ut Paramet er log mes sages for  submitted  job
  5324  
  5325     VD_log_d ate := SYS DATE;
  5326     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  5327                                 PD _job_log_d ate => VD_ log_date,
  5328                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  5329                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  5330                                 PD _date1 =>  VD_rec_gro up_date,
  5331                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  5332  
  5333     VD_log_d ate := SYS DATE;
  5334     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  5335                                 PD _job_log_d ate => VD_ log_date,
  5336                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  5337                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  5338                                 PD _date1 =>  VD_rec_gro up_date,
  5339                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  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  submissio n paramete rs',1,60),
  5345                                 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),
  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  
  5350     VD_log_d ate := SYS DATE;
  5351     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  5352                                 PD _job_log_d ate => VD_ log_date,
  5353                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  5354                                 PC _job_log_m essage =>  SUBSTR(' O LDEST HL7  ERROR TEXT  DAYS KEPT : ' || VN_ parm_hl7_e rr_txt_age ,1,2000),
  5355                                 PD _date1 =>  VD_rec_gro up_date,
  5356                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  5357  
  5358     VD_log_d ate := SYS DATE;
  5359     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  5360                                 PD _job_log_d ate => VD_ log_date,
  5361                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  5362                                 PC _job_log_m essage =>  SUBSTR(' O LDEST LOG  FILE DAYS  KEPT: ' ||  VN_parm_l og_file_ag e,1,2000),
  5363                                 PD _date1 =>  VD_rec_gro up_date,
  5364                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  5365  
  5366     VD_log_d ate := SYS DATE;
  5367     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  5368                                 PD _job_log_d ate => VD_ log_date,
  5369                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  5370                                 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),
  5371                                 PD _date1 =>  VD_rec_gro up_date,
  5372                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  5373  
  5374     VD_log_d ate := SYS DATE;
  5375     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  5376                                 PD _job_log_d ate => VD_ log_date,
  5377                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  5378                                 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),
  5379                                 PD _date1 =>  VD_rec_gro up_date,
  5380                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  5381  
  5382   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  5383  
  5384     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  5385  
  5386       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  5387  
  5388       VD_log _date := S YSDATE;
  5389       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5390                                    PD_job_log _date => V D_log_date ,
  5391                                    PC_job_sta tus => SUB STR('WARNI NG     - J ob table p arameters' ,1,60),
  5392                                    PC_job_log _message = > SUBSTR('  Processin g paramete r ROWS TO  PROCESS (i n each loo p) has bee n overridd en.'
  5393                                                              || ' T he overrid e value is : ' || NVL (TO_CHAR(V N_parm_row s_to_proce ss),'NULL' ),1,2000),
  5394                                    PD_date1 = > VD_rec_g roup_date,
  5395                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5396  
  5397     END IF;
  5398  
  5399   -- ******* ********** ********** ********** ********** ********** ********** ********
  5400   -- *
  5401   -- * Check  to see if  process i s running  on a repor ting datab ase.
  5402   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  5403   -- *
  5404   -- ******* ********** ********** ********** ********** ********** ********** ********
  5405  
  5406     IF NOT V B_allow_rp t_inst THE N
  5407  
  5408       BEGIN
  5409  
  5410         VD_l og_date :=  SYSDATE;
  5411         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5412                                      PD_job_l og_date =>  VD_log_da te,
  5413                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  5414                                      PD_date1  => VD_rec _group_dat e,
  5415                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5416  
  5417         SELE CT    Inst ance_name
  5418         INTO       VC_i nstance_na me
  5419         FROM       V$in stance;
  5420  
  5421         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  5422  
  5423           VD _log_date  := SYSDATE ;
  5424           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  5425                                        PD_job _log_date  => VD_log_ date,
  5426                                        PC_job _status =>  SUBSTR('E RROR        - Process ing Failed ',1,60),
  5427                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  5428                                                                     || VC_inst ance_name
  5429                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  5430                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  5431                                        PD_dat e1 => VD_r ec_group_d ate,
  5432                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  5433  
  5434           RE TURN;
  5435  
  5436         END  IF;
  5437  
  5438       EXCEPT ION
  5439  
  5440         WHEN  OTHERS TH EN
  5441  
  5442           VD _log_date  := SYSDATE ;
  5443           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  5444                                        PD_job _log_date  => VD_log_ date,
  5445                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  5446                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  5447                                        PD_dat e1 => VD_r ec_group_d ate,
  5448                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  5449  
  5450           RE TURN;
  5451  
  5452       END;
  5453  
  5454     END IF;
  5455  
  5456   -- ******* ********** ********** ********** ********** ********** ********** ********
  5457   -- *
  5458   -- * Check  to see if  the job h as already  run today
  5459   -- *  - If  running i n stand-al one mode,  don't chec k.
  5460   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  5461   -- *
  5462   -- ******* ********** ********** ********** ********** ********** ********** ********
  5463  
  5464     IF NOT P B_run_stan dalone THE N
  5465  
  5466       BEGIN
  5467  
  5468         VD_l og_date :=  SYSDATE;
  5469         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5470                                      PD_job_l og_date =>  VD_log_da te,
  5471                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  5472                                      PD_date1  => VD_rec _group_dat e,
  5473                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5474  
  5475         SELE CT    COUN T(*)
  5476         INTO       VN_r ec_count
  5477         FROM       ADRM GT.Job_Pro cess_Logs
  5478         WHER E     Job_ name = CC_ process_na me
  5479         AND        Date 1 = VD_rec _group_dat e
  5480         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  5481  
  5482         IF V N_rec_coun t > 0 THEN
  5483  
  5484           VD _log_date  := SYSDATE ;
  5485           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  5486                                        PD_job _log_date  => VD_log_ date,
  5487                                        PC_job _status =>  SUBSTR('W ARNING      - This da te has alr eady been  processed' ,1,60),
  5488                                        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),
  5489                                        PD_dat e1 => VD_r ec_group_d ate,
  5490                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  5491  
  5492           RE TURN;
  5493  
  5494         END  IF;
  5495  
  5496       EXCEPT ION
  5497  
  5498         WHEN  OTHERS TH EN
  5499  
  5500           VD _log_date  := SYSDATE ;
  5501           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  5502                                        PD_job _log_date  => VD_log_ date,
  5503                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  5504                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  5505                                        PD_dat e1 => VD_r ec_group_d ate,
  5506                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  5507  
  5508           RE TURN;
  5509  
  5510       END;
  5511  
  5512     END IF;
  5513  
  5514   -- ******* ********** ********** ********** ********** ********** ********** ********
  5515   -- *
  5516   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  5517   -- *  - If  yes, then  end this  job.
  5518   -- *
  5519   -- ******* ********** ********** ********** ********** ********** ********** ********
  5520  
  5521     SELECT C OUNT(*)
  5522     INTO   V N_job_coun t
  5523     FROM   S YS.DBA_JOB S_RUNNING  R,
  5524            S YS.DBA_JOB S J
  5525     WHERE  J .JOB = R.J OB
  5526     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  5527  
  5528     IF VN_jo b_count >  1 THEN
  5529  
  5530       VD_log _date := S YSDATE;
  5531       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5532                                    PD_job_log _date => V D_log_date ,
  5533                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  5534                                    PC_job_log _message = > SUBSTR(' There is a nother '
  5535                                                                || C C_sp_name
  5536                                                                || '  job runni ng.'
  5537                                                                || '  Exiting j ob without  running.' ,1,2000),
  5538                                    PD_date1 = > VD_rec_g roup_date,
  5539                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5540  
  5541       RETURN ;
  5542  
  5543     ELSE
  5544  
  5545       IF VB_ run_standa lone THEN
  5546  
  5547         VD_l og_date :=  SYSDATE;
  5548         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5549                                      PD_job_l og_date =>  VD_log_da te,
  5550                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  5551                                      PD_date1  => VD_rec _group_dat e,
  5552                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5553  
  5554       ELSE
  5555  
  5556         SELE CT    MAX( J.Job)
  5557         INTO       VN_j ob_number
  5558         FROM       SYS. DBA_JOBS_R UNNING R,
  5559                    SYS. DBA_JOBS J
  5560         WHER E     J.JO B = R.JOB
  5561         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  5562  
  5563         VD_l og_date :=  SYSDATE;
  5564         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5565                                      PD_job_l og_date =>  VD_log_da te,
  5566                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  5567                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  5568                                                                      || VN_job _number,1, 2000),
  5569                                      PD_date1  => VD_rec _group_dat e,
  5570                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5571  
  5572       END IF ;
  5573  
  5574     END IF;
  5575  
  5576   -- ******* ********** ********** ********** ********** ********** ********** ********
  5577   -- *
  5578   -- * Main  processing  loop
  5579   -- *
  5580   -- ******* ********** ********** ********** ********** ********** ********** ********
  5581  
  5582     VN_pass_ count := 0 ;
  5583     VN_updat e_count :=  0;
  5584     VD_proce ss_start_d ate := SYS DATE;
  5585  
  5586   -- ******* ********** ********** ********** ********** ********** ********** ********
  5587   -- * Remov e old proc ess log ro ws
  5588   -- ******* ********** ********** ********** ********** ********** ********** ********
  5589     BEGIN
  5590  
  5591       VD_log _date := S YSDATE;
  5592       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5593                                    PD_job_log _date => V D_log_date ,
  5594                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  5595                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  5596                                                                   | | VN_parm_ log_file_a ge
  5597                                                                   | | ' days o ld',1,2000 ),
  5598                                    PD_date1 = > VD_rec_g roup_date,
  5599                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5600  
  5601       DELETE
  5602       FROM       ADRMGT .Job_Proce ss_Logs
  5603       WHERE      Job_na me = CC_pr ocess_name
  5604       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  5605  
  5606       COMMIT ;
  5607  
  5608       VD_log _date := S YSDATE;
  5609       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5610                                    PD_job_log _date => V D_log_date ,
  5611                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  5612                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  5613                                                                   | | VN_parm_ log_file_a ge
  5614                                                                   | | ' days o ld',1,2000 ),
  5615                                    PD_date1 = > VD_rec_g roup_date,
  5616                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5617  
  5618  
  5619     EXCEPTIO N
  5620  
  5621       WHEN N O_DATA_FOU ND THEN
  5622  
  5623         NULL ;
  5624  
  5625       WHEN O THERS THEN
  5626  
  5627         VD_l og_date :=  SYSDATE;
  5628         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5629                                      PD_job_l og_date  = > VD_log_d ate,
  5630                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess logs .',1,60),
  5631                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  5632                                      PD_date1  => VD_rec _group_dat e,
  5633                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5634  
  5635     END;
  5636  
  5637   -- ******* ********** ********** ********** ********** ********** ********** ********
  5638   -- * Remov e old proc ess error  rows
  5639   -- ******* ********** ********** ********** ********** ********** ********** ********
  5640  
  5641     BEGIN
  5642  
  5643       VD_log _date := S YSDATE;
  5644       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5645                                    PD_job_log _date => V D_log_date ,
  5646                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  5647                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  5648                                                                   | | VN_parm_ log_file_a ge
  5649                                                                   | | ' days o ld',1,2000 ),
  5650                                    PD_date1 = > VD_rec_g roup_date,
  5651                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5652  
  5653       DELETE
  5654       FROM       ADRMGT .Job_Proce ss_Errs
  5655       WHERE      Job_na me = CC_pr ocess_name
  5656       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  5657  
  5658       COMMIT ;
  5659  
  5660       VD_log _date := S YSDATE;
  5661       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5662                                    PD_job_log _date => V D_log_date ,
  5663                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  5664                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  5665                                                                   | | VN_parm_ log_file_a ge
  5666                                                                   | | ' days o ld',1,2000 ),
  5667                                    PD_date1 = > VD_rec_g roup_date,
  5668                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5669  
  5670     EXCEPTIO N
  5671  
  5672       WHEN N O_DATA_FOU ND THEN
  5673  
  5674         NULL ;
  5675  
  5676       WHEN O THERS THEN
  5677  
  5678         VD_l og_date :=  SYSDATE;
  5679         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5680                                      PD_job_l og_date  = > VD_log_d ate,
  5681                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess erro rs.',1,60) ,
  5682                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  5683                                      PD_date1  => VD_rec _group_dat e,
  5684                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5685  
  5686     END;
  5687  
  5688   -- ******* ********** ********** ********** ********** ********** ********** ********
  5689   -- * Main  record cur sor logic
  5690   -- ******* ********** ********** ********** ********** ********** ********** ********
  5691  
  5692     BEGIN
  5693  
  5694       VN_max _log_id :=  0;
  5695       VN_pas s_count :=  0;
  5696       VN_upd ate_count  := 0;
  5697  
  5698       OPEN C _hl7_id;
  5699  
  5700       LOOP
  5701  
  5702         FETC H C_hl7_id
  5703         BULK  COLLECT I NTO T_hl7_ id
  5704         LIMI T VN_parm_ rows_to_pr ocess;
  5705  
  5706         EXIT  WHEN T_hl 7_id.COUNT  = 0;
  5707  
  5708         FORA LL I_hl7_i d IN T_hl7 _id.FIRST. .T_hl7_id. last
  5709           UP DATE    AD R.Hl7_tran saction_lo g
  5710           SE T       In ternal_err or_text =  NULL
  5711           WH ERE     Hl 7_transact ion_log_id  = T_hl7_i d(I_hl7_id );
  5712  
  5713         COMM IT;
  5714  
  5715         FOR  I_hl7_id I N T_hl7_id .FIRST..T_ hl7_id.las t LOOP
  5716  
  5717           IF  T_hl7_id( I_hl7_id)  > VN_max_l og_id THEN
  5718  
  5719              VN_max_log _id := T_h l7_id(I_hl 7_id);
  5720  
  5721           EN D IF;
  5722  
  5723         END  LOOP;
  5724  
  5725         VN_p ass_count  := VN_pass _count + 1 ;
  5726  
  5727         VN_u pdate_coun t := VN_up date_count  + T_hl7_i d.COUNT;
  5728  
  5729       END LO OP;
  5730  
  5731       CLOSE  C_hl7_id;
  5732  
  5733       BEGIN
  5734  
  5735         IF N VL(VN_max_ log_id,0)  <> 0 THEN
  5736  
  5737           UP DATE    AD RMGT.Adr_P arameter
  5738           SE T       Va lue = VN_m ax_log_id
  5739           WH ERE     Ap plication_ name = 'HL 7 NULL INT ERNAL_ERRO R_TEXT COL UMN'
  5740           AN D       Pa rameter_na me = VC_pa ra_name_la st_proc_id ;
  5741  
  5742           CO MMIT;
  5743  
  5744         ELSE
  5745  
  5746           VN _max_log_i d := VN_pa rm_last_lo g_id;
  5747  
  5748         END  IF;
  5749  
  5750       EXCEPT ION
  5751  
  5752         WHEN  OTHERS TH EN
  5753  
  5754           VD _log_date  := SYSDATE ;
  5755           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  5756                                        PD_job _log_date   => VD_log _date,
  5757                                        PC_job _status =>  SUBSTR('E RROR        - Unknown  error upd ating ' ||  VC_para_n ame_last_p roc_id ||  '.',1,60),
  5758                                        PC_job _log_messa ge => SUBS TR(VC_para _name_last _proc_id | | ': ' ||  VN_max_log _id
  5759                                                                        || '. '  || SQLERR M,1,2000),
  5760                                        PD_dat e1 => VD_r ec_group_d ate,
  5761                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  5762  
  5763           RE TURN;
  5764  
  5765       END;
  5766  
  5767   -- Process  completio n informat ion
  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_pa ss_count,
  5776                                    PC_text2 = > SUBSTR(' Cursor Loo p 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_up date_count ,
  5785                                    PC_text2 = > SUBSTR(' Updated Re cord Count ',1,255));
  5786  
  5787       VD_log _date := S YSDATE;
  5788       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5789                                    PD_job_log _date => V D_log_date ,
  5790                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  5791                                    PD_date1 = > VD_rec_g roup_date,
  5792                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  5793                                    PN_numeric 2 => VN_ma x_log_id,
  5794                                    PC_text2 = > SUBSTR(' Last proce ssed log i d',1,255)) ;
  5795  
  5796       VD_pro cess_end_d ate := SYS DATE;
  5797       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  5798                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  5799                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  5800                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  5801                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  5802  
  5803       VD_log _date := S YSDATE;
  5804       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5805                                    PD_job_log _date => V D_log_date ,
  5806                                    PC_job_sta tus => SUB STR('SUCCE SS     - P rocessing  Completed' ,1,60),
  5807                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  5808                                    PD_date1 = > VD_rec_g roup_date,
  5809                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5810  
  5811     EXCEPTIO N
  5812  
  5813       WHEN O THERS THEN
  5814  
  5815         VD_l og_date :=  SYSDATE;
  5816         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5817                                      PD_job_l og_date  = > VD_log_d ate,
  5818                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror updat ing Intern al_error_t ext.',1,60 ),
  5819                                      PC_job_l og_message  => SUBSTR ('Cursor L oop Count:  ' || VN_p ass_count
  5820                                                                      || ' Upda ted Record  Count: '  || VN_upda te_count
  5821                                                                      || '. ' | | SQLERRM, 1,2000),
  5822                                      PD_date1  => VD_rec _group_dat e,
  5823                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5824  
  5825         RETU RN;
  5826  
  5827     END;
  5828  
  5829   EXCEPTION
  5830  
  5831     WHEN OTH ERS THEN
  5832  
  5833       ROLLBA CK;
  5834  
  5835       VD_log _date := S YSDATE;
  5836       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5837                                    PD_job_err or_date  = > VD_log_d ate,
  5838                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  5839                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Hl7_Txn_Lo g_Null_Err _Col_Sp.'
  5840                                                                  ||  SQLERRM,1 ,2000),
  5841                                    PD_date1 = > VD_rec_g roup_date,
  5842                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5843  
  5844       VD_log _date := S YSDATE;
  5845       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5846                                    PD_job_log _date => V D_log_date ,
  5847                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  5848                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  5849                                    PD_date1 = > VD_rec_g roup_date,
  5850                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5851  
  5852   END Hl7_Tx n_Log_Null _Err_Col_S p_05;
  5853   /
  5854   DROP PROCE DURE ADR.H L7_TXN_LOG _NULL_ERR_ COL_SP_06;
  5855  
  5856   CREATE OR  REPLACE PR OCEDURE AD R.Hl7_Txn_ Log_Null_E rr_Col_Sp_ 06 (
  5857      PB_run_ standalone     IN BOO LEAN DEFAU LT FALSE,
  5858      PB_allo w_rpt_inst     IN BOO LEAN DEFAU LT FALSE,
  5859      PN_rows _to_proces s   IN NUM BER DEFAUL T NULL)
  5860   IS
  5861      -- **** ********** ********** ********** ********** ********** ********** ********** *
  5862      -- * Pr ocedure: H l7_Txn_Log _Null_Erro r_Col
  5863      -- *
  5864      -- *    Update HL7  transcati ons to rem ove data f rom the in ternal_err or_text
  5865      -- *    column for  all rows  more than  6 months o ld.
  5866      -- *
  5867      -- * Pa rameters:
  5868      -- *
  5869      -- *  P B_run_stan dalone   I gnore DBMS _JOB logic  for check ing runnin g jobs.
  5870      -- *                          Default: F ALSE
  5871      -- *
  5872      -- *  P B_allow_rp t_inst   A llow store d procedur e to be su bmitted in  the
  5873      -- *                        D BMS_JOB qu eue on the  ADR repor ting datab ases
  5874      -- *                          Default: F ALSE
  5875      -- *
  5876      -- **** ********** ********** ********** ********** ********** ********** ********** *
  5877      --
  5878      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  5879      -- Date         Au thor             Desc ription
  5880      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  5881      -- 06/2 3/2010  Cr aig Wood         Crea ted for CC R 1100.
  5882      --
  5883      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  5884  
  5885      -- CONS TANTS
  5886  
  5887      CC_no                                  V ARCHAR2 (1 ) := 'N';
  5888      CC_parm _applicati on_name    CONSTANT V ARCHAR2 (8 0)
  5889         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  5890      CC_parm _hl7_err_t xt_age     CONSTANT V ARCHAR2 (5 0)
  5891                                                 := 'OLDE ST HL7 ERR OR TEXT DA YS' ;
  5892      CC_parm _last_hl7_ id         CONSTANT V ARCHAR2 (5 0)
  5893                                                 := 'LAST  HL7 ID PR OCESSED' ;
  5894      CC_parm _log_file_ age        CONSTANT V ARCHAR2 (5 0)
  5895                                                 := 'OLDE ST LOG FIL E DAYS' ;
  5896      CC_proc ess_name              CONSTANT V ARCHAR2 (6 0)
  5897         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  5898      CC_sp_n ame                   CONSTANT V ARCHAR2 (3 5)
  5899         := ' Hl7_Txn_Lo g_Null_Err _Col_Sp_'  || '06' ;
  5900      CC_yes                                 V ARCHAR2 (1 ) := 'Y';
  5901  
  5902      -- VARI ABLES
  5903  
  5904      VB_allo w_rpt_inst                     B OOLEAN :=  FALSE;
  5905      VB_run_ standalone                     B OOLEAN :=  FALSE;
  5906  
  5907      VC_allo w_rpt_inst                     V ARCHAR2 (5 ) := NULL;
  5908      VC_inst ance_name                      V ARCHAR2 (1 6);
  5909      VC_proc ess_durati on                  V ARCHAR2 (2 5);
  5910      VC_run_ standalone                     V ARCHAR2 (5 ) := NULL;
  5911      VC_sql_ statement                      V ARCHAR2 (2 000);
  5912      VC_para _name_last _proc_id            V ARCHAR2 (3 0):= 'P' | | '06' ||  ' LAST PRO CESSED LOG  ID';
  5913  
  5914     VD_log_d ate                            D ATE;
  5915     VD_proce ss_end_dat e                   D ATE;
  5916     VD_proce ss_start_d ate                 D ATE;
  5917     VD_rec_g roup_date                      D ATE;
  5918  
  5919     VN_job_c ount                           N UMBER := 0 ;
  5920     VN_job_n umber                          N UMBER;
  5921     VN_max_l og_id                          N UMBER := 0 ;
  5922     VN_parm_ hl7_err_tx t_age               N UMBER;
  5923     VN_parm_ log_file_a ge                  N UMBER;
  5924     VN_parm_ last_log_i d                   N UMBER := 0 ;
  5925     VN_parm_ rows_to_pr ocess               N UMBER;
  5926     VN_pass_ count                          N UMBER := 0 ;
  5927     VN_rec_c ount                           N UMBER := 0 ;
  5928     VN_updat e_count                        N UMBER := 0 ;
  5929  
  5930  
  5931   -- CURSORS
  5932  
  5933     CURSOR C _hl7_id IS
  5934       SELECT   /*+ para llel(4) */  Hl7_trans action_log _id
  5935       FROM       Hl7_tr ansaction_ log PARTIT ION (HL7_T RANSACTION _LOG_P06)
  5936       WHERE      Hl7_tr ansaction_ log_id > V N_parm_las t_log_id
  5937       AND        Transm ission_dat e < TRUNC( SYSDATE) -  VN_parm_h l7_err_txt _age
  5938       AND        Intern al_error_t ext IS NOT  NULL;
  5939  
  5940   -- TYPES
  5941  
  5942     TYPE TT_ hl7_id IS
  5943       TABLE  OF ADR.Hl7 _Transacti on_Log.Hl7 _transacti on_log_id% TYPE;
  5944  
  5945   -- MEMORY  TABLES
  5946  
  5947     T_hl7_id                                T T_hl7_id;
  5948  
  5949   -- ******* ********** ********** ********** ********** ********** ********** *******
  5950   -- *
  5951   -- *  MAIN  PROCEDURE :
  5952   -- *
  5953   -- ******* ********** ********** ********** ********** ********** ********** *******
  5954  
  5955   BEGIN
  5956  
  5957     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  5958     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5959  
  5960     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  5961     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5962  
  5963     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  5964     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5965  
  5966     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  5967     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5968  
  5969     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  QUERY PARA LLEL ' ||   2;
  5970     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5971  
  5972     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  DML PARALL EL ' || 2;
  5973     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5974  
  5975  
  5976     VC_sql_s tatement:= 'ALTER SES SION SET p arallel_fo rce_local= TRUE';      --  force  parallel  to a local  node
  5977     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  5978  
  5979     VD_rec_g roup_date  := TRUNC(S YSDATE);
  5980  
  5981     VD_log_d ate := SYS DATE;
  5982     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  5983                                 PD _job_log_d ate => VD_ log_date,
  5984                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  5985                                 PD _date1 =>  VD_rec_gro up_date,
  5986                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  5987  
  5988   -- ******* ********** ********** ********** ********** ********** ********** ********
  5989   -- *
  5990   -- * Valid ate input  parameters
  5991   -- *
  5992   -- ******* ********** ********** ********** ********** ********** ********** ********
  5993  
  5994   -- * Check  run stand alone flag
  5995  
  5996     IF PB_ru n_standalo ne IS NULL
  5997      OR NOT  PB_run_sta ndalone TH EN
  5998  
  5999       VB_run _standalon e := FALSE ;
  6000       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  6001  
  6002     ELSE
  6003  
  6004       VB_run _standalon e := TRUE;
  6005       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  6006  
  6007     END IF;
  6008  
  6009   -- * Check  run on re port insta nce flag
  6010  
  6011     IF PB_al low_rpt_in st IS NULL
  6012      OR NOT  PB_allow_r pt_inst TH EN
  6013  
  6014       VB_all ow_rpt_ins t := FALSE ;
  6015       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  6016  
  6017     ELSE
  6018  
  6019       VB_all ow_rpt_ins t := TRUE;
  6020       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  6021  
  6022     END IF;
  6023  
  6024   -- ******* ********** ********** ********** ********** ********** ********** ********
  6025   -- *
  6026   -- * Retri eve proces sing param eters
  6027   -- *
  6028   -- ******* ********** ********** ********** ********** ********** ********** ********
  6029  
  6030   -- Process  Parameter  OLDEST HL 7 ERROR TE XT DAYS KE PT
  6031  
  6032     BEGIN
  6033  
  6034       SELECT     Value
  6035       INTO       VN_par m_hl7_err_ txt_age
  6036       FROM       ADRMGT .Adr_Param eter
  6037       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  6038       AND        Parame ter_name =  'OLDEST H L7 ERROR T EXT DAYS K EPT';
  6039  
  6040       IF VN_ parm_hl7_e rr_txt_age  IS NULL T HEN
  6041  
  6042         VD_l og_date :=  SYSDATE;
  6043         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6044                                      PD_job_l og_date =>  VD_log_da te,
  6045                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6046                                      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),
  6047                                      PD_date1  => VD_rec _group_dat e,
  6048                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6049  
  6050         RETU RN;
  6051  
  6052       END IF ;
  6053  
  6054     EXCEPTIO N
  6055  
  6056       WHEN N O_DATA_FOU ND THEN
  6057  
  6058         VD_l og_date :=  SYSDATE;
  6059         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6060                                      PD_job_l og_date =>  VD_log_da te,
  6061                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6062                                      PC_job_l og_message  => 'Param eter for O LDEST HL7  ERROR TEXT  DAYS KEPT  was not f ound. Term inating pr ocess.',
  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       WHEN O THERS THEN
  6069  
  6070         VD_l og_date :=  SYSDATE;
  6071         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6072                                      PD_job_l og_date =>  VD_log_da te,
  6073                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6074                                      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. '
  6075                                                                      || SQLERR M,1,2000),
  6076                                      PD_date1  => VD_rec _group_dat e,
  6077                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6078  
  6079         RETU RN;
  6080  
  6081     END;
  6082  
  6083   -- Process  Parameter  OLDEST LO G FILE DAY S KEPT
  6084  
  6085     BEGIN
  6086  
  6087       SELECT     Value
  6088       INTO       VN_par m_log_file _age
  6089       FROM       ADRMGT .Adr_Param eter
  6090       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  6091       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  6092  
  6093       IF VN_ parm_log_f ile_age IS  NULL THEN
  6094  
  6095         VD_l og_date :=  SYSDATE;
  6096         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6097                                      PD_job_l og_date =>  VD_log_da te,
  6098                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6099                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST L OG FILE DA YS KEPT is  NULL. Ter minating p rocess.',1 ,2000),
  6100                                      PD_date1  => VD_rec _group_dat e,
  6101                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6102  
  6103         RETU RN;
  6104  
  6105       END IF ;
  6106  
  6107     EXCEPTIO N
  6108  
  6109       WHEN N O_DATA_FOU ND THEN
  6110  
  6111         VD_l og_date :=  SYSDATE;
  6112         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6113                                      PD_job_l og_date =>  VD_log_da te,
  6114                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6115                                      PC_job_l og_message  => 'Param eter for O LDEST LOG  FILE DAYS  KEPT was n ot found.  Terminatin g process. ',
  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       WHEN O THERS THEN
  6122  
  6123         VD_l og_date :=  SYSDATE;
  6124         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6125                                      PD_job_l og_date =>  VD_log_da te,
  6126                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6127                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  OLDEST LO G FILE DAY S KEPT. Te rminating  process. '
  6128                                                                      || SQLERR M,1,2000),
  6129                                      PD_date1  => VD_rec _group_dat e,
  6130                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6131  
  6132         RETU RN;
  6133  
  6134     END;
  6135  
  6136   -- Process  Parameter  ROWS TO P ROCESS
  6137  
  6138     BEGIN
  6139  
  6140       SELECT     Value
  6141       INTO       VN_par m_rows_to_ process
  6142       FROM       ADRMGT .Adr_Param eter
  6143       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  6144       AND        Parame ter_name =  'ROWS TO  PROCESS';
  6145  
  6146       IF VN_ parm_rows_ to_process  IS NULL T HEN
  6147  
  6148         VD_l og_date :=  SYSDATE;
  6149         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6150                                      PD_job_l og_date =>  VD_log_da te,
  6151                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6152                                      PC_job_l og_message  => SUBSTR ('Paramete r ROWS TO  PROCESS is  NULL. Ter minating p rocess.',1 ,2000),
  6153                                      PD_date1  => VD_rec _group_dat e,
  6154                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6155  
  6156         RETU RN;
  6157  
  6158       END IF ;
  6159  
  6160     EXCEPTIO N
  6161  
  6162       WHEN N O_DATA_FOU ND THEN
  6163  
  6164         VD_l og_date :=  SYSDATE;
  6165         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6166                                      PD_job_l og_date =>  VD_log_da te,
  6167                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6168                                      PC_job_l og_message  => 'Param eter for R OWS TO PRO CESS was n ot found.  Terminatin g process. ',
  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       WHEN O THERS THEN
  6175  
  6176         VD_l og_date :=  SYSDATE;
  6177         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6178                                      PD_job_l og_date =>  VD_log_da te,
  6179                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6180                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ROWS TO P ROCESS. Te rminating  process. '
  6181                                                                      || SQLERR M,1,2000),
  6182                                      PD_date1  => VD_rec _group_dat e,
  6183                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6184  
  6185         RETU RN;
  6186  
  6187     END;
  6188  
  6189   -- Process  Parameter  LAST PROC ESSED LOG  ID
  6190  
  6191     BEGIN
  6192  
  6193       SELECT     Value
  6194       INTO       VN_par m_last_log _id
  6195       FROM       ADRMGT .Adr_Param eter
  6196       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  6197       AND        Parame ter_name =  VC_para_n ame_last_p roc_id;
  6198  
  6199       IF VN_ parm_last_ log_id IS  NULL THEN
  6200  
  6201         VD_l og_date :=  SYSDATE;
  6202         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6203                                      PD_job_l og_date =>  VD_log_da te,
  6204                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6205                                      PC_job_l og_message  => SUBSTR ('Paramete r ' || VC_ para_name_ last_proc_ id || ' is  NULL. Ter minating p rocess.',1 ,2000),
  6206                                      PD_date1  => VD_rec _group_dat e,
  6207                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6208  
  6209         RETU RN;
  6210  
  6211       END IF ;
  6212  
  6213     EXCEPTIO N
  6214  
  6215       WHEN N O_DATA_FOU ND THEN
  6216  
  6217         VD_l og_date :=  SYSDATE;
  6218         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6219                                      PD_job_l og_date =>  VD_log_da te,
  6220                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6221                                      PC_job_l og_message  => 'Param eter for '  || VC_par a_name_las t_proc_id  || ' was n ot found.  Terminatin g process. ',
  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       WHEN O THERS THEN
  6228  
  6229         VD_l og_date :=  SYSDATE;
  6230         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6231                                      PD_job_l og_date =>  VD_log_da te,
  6232                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6233                                      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. '
  6234                                                                      || SQLERR M,1,2000),
  6235                                      PD_date1  => VD_rec _group_dat e,
  6236                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6237  
  6238         RETU RN;
  6239  
  6240     END;
  6241  
  6242   -- Write o ut Paramet er log mes sages for  submitted  job
  6243  
  6244     VD_log_d ate := SYS DATE;
  6245     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  6246                                 PD _job_log_d ate => VD_ log_date,
  6247                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  6248                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  6249                                 PD _date1 =>  VD_rec_gro up_date,
  6250                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  6251  
  6252     VD_log_d ate := SYS DATE;
  6253     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  6254                                 PD _job_log_d ate => VD_ log_date,
  6255                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  6256                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  6257                                 PD _date1 =>  VD_rec_gro up_date,
  6258                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  6259  
  6260     VD_log_d ate := SYS DATE;
  6261     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  6262                                 PD _job_log_d ate => VD_ log_date,
  6263                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  6264                                 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),
  6265                                 PD _date1 =>  VD_rec_gro up_date,
  6266                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  6267  
  6268  
  6269     VD_log_d ate := SYS DATE;
  6270     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  6271                                 PD _job_log_d ate => VD_ log_date,
  6272                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  6273                                 PC _job_log_m essage =>  SUBSTR(' O LDEST HL7  ERROR TEXT  DAYS KEPT : ' || VN_ parm_hl7_e rr_txt_age ,1,2000),
  6274                                 PD _date1 =>  VD_rec_gro up_date,
  6275                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  6276  
  6277     VD_log_d ate := SYS DATE;
  6278     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  6279                                 PD _job_log_d ate => VD_ log_date,
  6280                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  6281                                 PC _job_log_m essage =>  SUBSTR(' O LDEST LOG  FILE DAYS  KEPT: ' ||  VN_parm_l og_file_ag e,1,2000),
  6282                                 PD _date1 =>  VD_rec_gro up_date,
  6283                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  6284  
  6285     VD_log_d ate := SYS DATE;
  6286     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  6287                                 PD _job_log_d ate => VD_ log_date,
  6288                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  6289                                 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),
  6290                                 PD _date1 =>  VD_rec_gro up_date,
  6291                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  6292  
  6293     VD_log_d ate := SYS DATE;
  6294     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  6295                                 PD _job_log_d ate => VD_ log_date,
  6296                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  6297                                 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),
  6298                                 PD _date1 =>  VD_rec_gro up_date,
  6299                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  6300  
  6301   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  6302  
  6303     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  6304  
  6305       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  6306  
  6307       VD_log _date := S YSDATE;
  6308       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6309                                    PD_job_log _date => V D_log_date ,
  6310                                    PC_job_sta tus => SUB STR('WARNI NG     - J ob table p arameters' ,1,60),
  6311                                    PC_job_log _message = > SUBSTR('  Processin g paramete r ROWS TO  PROCESS (i n each loo p) has bee n overridd en.'
  6312                                                              || ' T he overrid e value is : ' || NVL (TO_CHAR(V N_parm_row s_to_proce ss),'NULL' ),1,2000),
  6313                                    PD_date1 = > VD_rec_g roup_date,
  6314                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  6315  
  6316     END IF;
  6317  
  6318   -- ******* ********** ********** ********** ********** ********** ********** ********
  6319   -- *
  6320   -- * Check  to see if  process i s running  on a repor ting datab ase.
  6321   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  6322   -- *
  6323   -- ******* ********** ********** ********** ********** ********** ********** ********
  6324  
  6325     IF NOT V B_allow_rp t_inst THE N
  6326  
  6327       BEGIN
  6328  
  6329         VD_l og_date :=  SYSDATE;
  6330         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6331                                      PD_job_l og_date =>  VD_log_da te,
  6332                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  6333                                      PD_date1  => VD_rec _group_dat e,
  6334                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6335  
  6336         SELE CT    Inst ance_name
  6337         INTO       VC_i nstance_na me
  6338         FROM       V$in stance;
  6339  
  6340         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  6341  
  6342           VD _log_date  := SYSDATE ;
  6343           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  6344                                        PD_job _log_date  => VD_log_ date,
  6345                                        PC_job _status =>  SUBSTR('E RROR        - Process ing Failed ',1,60),
  6346                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  6347                                                                     || VC_inst ance_name
  6348                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  6349                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  6350                                        PD_dat e1 => VD_r ec_group_d ate,
  6351                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  6352  
  6353           RE TURN;
  6354  
  6355         END  IF;
  6356  
  6357       EXCEPT ION
  6358  
  6359         WHEN  OTHERS TH EN
  6360  
  6361           VD _log_date  := SYSDATE ;
  6362           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  6363                                        PD_job _log_date  => VD_log_ date,
  6364                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  6365                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  6366                                        PD_dat e1 => VD_r ec_group_d ate,
  6367                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  6368  
  6369           RE TURN;
  6370  
  6371       END;
  6372  
  6373     END IF;
  6374  
  6375   -- ******* ********** ********** ********** ********** ********** ********** ********
  6376   -- *
  6377   -- * Check  to see if  the job h as already  run today
  6378   -- *  - If  running i n stand-al one mode,  don't chec k.
  6379   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  6380   -- *
  6381   -- ******* ********** ********** ********** ********** ********** ********** ********
  6382  
  6383     IF NOT P B_run_stan dalone THE N
  6384  
  6385       BEGIN
  6386  
  6387         VD_l og_date :=  SYSDATE;
  6388         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6389                                      PD_job_l og_date =>  VD_log_da te,
  6390                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  6391                                      PD_date1  => VD_rec _group_dat e,
  6392                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6393  
  6394         SELE CT    COUN T(*)
  6395         INTO       VN_r ec_count
  6396         FROM       ADRM GT.Job_Pro cess_Logs
  6397         WHER E     Job_ name = CC_ process_na me
  6398         AND        Date 1 = VD_rec _group_dat e
  6399         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  6400  
  6401         IF V N_rec_coun t > 0 THEN
  6402  
  6403           VD _log_date  := SYSDATE ;
  6404           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  6405                                        PD_job _log_date  => VD_log_ date,
  6406                                        PC_job _status =>  SUBSTR('W ARNING      - This da te has alr eady been  processed' ,1,60),
  6407                                        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),
  6408                                        PD_dat e1 => VD_r ec_group_d ate,
  6409                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  6410  
  6411           RE TURN;
  6412  
  6413         END  IF;
  6414  
  6415       EXCEPT ION
  6416  
  6417         WHEN  OTHERS TH EN
  6418  
  6419           VD _log_date  := SYSDATE ;
  6420           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  6421                                        PD_job _log_date  => VD_log_ date,
  6422                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  6423                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  6424                                        PD_dat e1 => VD_r ec_group_d ate,
  6425                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  6426  
  6427           RE TURN;
  6428  
  6429       END;
  6430  
  6431     END IF;
  6432  
  6433   -- ******* ********** ********** ********** ********** ********** ********** ********
  6434   -- *
  6435   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  6436   -- *  - If  yes, then  end this  job.
  6437   -- *
  6438   -- ******* ********** ********** ********** ********** ********** ********** ********
  6439  
  6440     SELECT C OUNT(*)
  6441     INTO   V N_job_coun t
  6442     FROM   S YS.DBA_JOB S_RUNNING  R,
  6443            S YS.DBA_JOB S J
  6444     WHERE  J .JOB = R.J OB
  6445     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  6446  
  6447     IF VN_jo b_count >  1 THEN
  6448  
  6449       VD_log _date := S YSDATE;
  6450       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6451                                    PD_job_log _date => V D_log_date ,
  6452                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  6453                                    PC_job_log _message = > SUBSTR(' There is a nother '
  6454                                                                || C C_sp_name
  6455                                                                || '  job runni ng.'
  6456                                                                || '  Exiting j ob without  running.' ,1,2000),
  6457                                    PD_date1 = > VD_rec_g roup_date,
  6458                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  6459  
  6460       RETURN ;
  6461  
  6462     ELSE
  6463  
  6464       IF VB_ run_standa lone THEN
  6465  
  6466         VD_l og_date :=  SYSDATE;
  6467         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6468                                      PD_job_l og_date =>  VD_log_da te,
  6469                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  6470                                      PD_date1  => VD_rec _group_dat e,
  6471                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6472  
  6473       ELSE
  6474  
  6475         SELE CT    MAX( J.Job)
  6476         INTO       VN_j ob_number
  6477         FROM       SYS. DBA_JOBS_R UNNING R,
  6478                    SYS. DBA_JOBS J
  6479         WHER E     J.JO B = R.JOB
  6480         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  6481  
  6482         VD_l og_date :=  SYSDATE;
  6483         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6484                                      PD_job_l og_date =>  VD_log_da te,
  6485                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  6486                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  6487                                                                      || VN_job _number,1, 2000),
  6488                                      PD_date1  => VD_rec _group_dat e,
  6489                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6490  
  6491       END IF ;
  6492  
  6493     END IF;
  6494  
  6495   -- ******* ********** ********** ********** ********** ********** ********** ********
  6496   -- *
  6497   -- * Main  processing  loop
  6498   -- *
  6499   -- ******* ********** ********** ********** ********** ********** ********** ********
  6500  
  6501     VN_pass_ count := 0 ;
  6502     VN_updat e_count :=  0;
  6503     VD_proce ss_start_d ate := SYS DATE;
  6504  
  6505   -- ******* ********** ********** ********** ********** ********** ********** ********
  6506   -- * Remov e old proc ess log ro ws
  6507   -- ******* ********** ********** ********** ********** ********** ********** ********
  6508     BEGIN
  6509  
  6510       VD_log _date := S YSDATE;
  6511       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6512                                    PD_job_log _date => V D_log_date ,
  6513                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  6514                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  6515                                                                   | | VN_parm_ log_file_a ge
  6516                                                                   | | ' days o ld',1,2000 ),
  6517                                    PD_date1 = > VD_rec_g roup_date,
  6518                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  6519  
  6520       DELETE
  6521       FROM       ADRMGT .Job_Proce ss_Logs
  6522       WHERE      Job_na me = CC_pr ocess_name
  6523       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  6524  
  6525       COMMIT ;
  6526  
  6527       VD_log _date := S YSDATE;
  6528       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6529                                    PD_job_log _date => V D_log_date ,
  6530                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  6531                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  6532                                                                   | | VN_parm_ log_file_a ge
  6533                                                                   | | ' days o ld',1,2000 ),
  6534                                    PD_date1 = > VD_rec_g roup_date,
  6535                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  6536  
  6537  
  6538     EXCEPTIO N
  6539  
  6540       WHEN N O_DATA_FOU ND THEN
  6541  
  6542         NULL ;
  6543  
  6544       WHEN O THERS THEN
  6545  
  6546         VD_l og_date :=  SYSDATE;
  6547         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6548                                      PD_job_l og_date  = > VD_log_d ate,
  6549                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess logs .',1,60),
  6550                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  6551                                      PD_date1  => VD_rec _group_dat e,
  6552                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6553  
  6554     END;
  6555  
  6556   -- ******* ********** ********** ********** ********** ********** ********** ********
  6557   -- * Remov e old proc ess error  rows
  6558   -- ******* ********** ********** ********** ********** ********** ********** ********
  6559  
  6560     BEGIN
  6561  
  6562       VD_log _date := S YSDATE;
  6563       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6564                                    PD_job_log _date => V D_log_date ,
  6565                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  6566                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  6567                                                                   | | VN_parm_ log_file_a ge
  6568                                                                   | | ' days o ld',1,2000 ),
  6569                                    PD_date1 = > VD_rec_g roup_date,
  6570                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  6571  
  6572       DELETE
  6573       FROM       ADRMGT .Job_Proce ss_Errs
  6574       WHERE      Job_na me = CC_pr ocess_name
  6575       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  6576  
  6577       COMMIT ;
  6578  
  6579       VD_log _date := S YSDATE;
  6580       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6581                                    PD_job_log _date => V D_log_date ,
  6582                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  6583                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  6584                                                                   | | VN_parm_ log_file_a ge
  6585                                                                   | | ' days o ld',1,2000 ),
  6586                                    PD_date1 = > VD_rec_g roup_date,
  6587                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  6588  
  6589     EXCEPTIO N
  6590  
  6591       WHEN N O_DATA_FOU ND THEN
  6592  
  6593         NULL ;
  6594  
  6595       WHEN O THERS THEN
  6596  
  6597         VD_l og_date :=  SYSDATE;
  6598         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6599                                      PD_job_l og_date  = > VD_log_d ate,
  6600                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess erro rs.',1,60) ,
  6601                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  6602                                      PD_date1  => VD_rec _group_dat e,
  6603                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6604  
  6605     END;
  6606  
  6607   -- ******* ********** ********** ********** ********** ********** ********** ********
  6608   -- * Main  record cur sor logic
  6609   -- ******* ********** ********** ********** ********** ********** ********** ********
  6610  
  6611     BEGIN
  6612  
  6613       VN_max _log_id :=  0;
  6614       VN_pas s_count :=  0;
  6615       VN_upd ate_count  := 0;
  6616  
  6617       OPEN C _hl7_id;
  6618  
  6619       LOOP
  6620  
  6621         FETC H C_hl7_id
  6622         BULK  COLLECT I NTO T_hl7_ id
  6623         LIMI T VN_parm_ rows_to_pr ocess;
  6624  
  6625         EXIT  WHEN T_hl 7_id.COUNT  = 0;
  6626  
  6627         FORA LL I_hl7_i d IN T_hl7 _id.FIRST. .T_hl7_id. last
  6628           UP DATE    AD R.Hl7_tran saction_lo g
  6629           SE T       In ternal_err or_text =  NULL
  6630           WH ERE     Hl 7_transact ion_log_id  = T_hl7_i d(I_hl7_id );
  6631  
  6632         COMM IT;
  6633  
  6634         FOR  I_hl7_id I N T_hl7_id .FIRST..T_ hl7_id.las t LOOP
  6635  
  6636           IF  T_hl7_id( I_hl7_id)  > VN_max_l og_id THEN
  6637  
  6638              VN_max_log _id := T_h l7_id(I_hl 7_id);
  6639  
  6640           EN D IF;
  6641  
  6642         END  LOOP;
  6643  
  6644         VN_p ass_count  := VN_pass _count + 1 ;
  6645  
  6646         VN_u pdate_coun t := VN_up date_count  + T_hl7_i d.COUNT;
  6647  
  6648       END LO OP;
  6649  
  6650       CLOSE  C_hl7_id;
  6651  
  6652       BEGIN
  6653  
  6654         IF N VL(VN_max_ log_id,0)  <> 0 THEN
  6655  
  6656           UP DATE    AD RMGT.Adr_P arameter
  6657           SE T       Va lue = VN_m ax_log_id
  6658           WH ERE     Ap plication_ name = 'HL 7 NULL INT ERNAL_ERRO R_TEXT COL UMN'
  6659           AN D       Pa rameter_na me = VC_pa ra_name_la st_proc_id ;
  6660  
  6661           CO MMIT;
  6662  
  6663         ELSE
  6664  
  6665           VN _max_log_i d := VN_pa rm_last_lo g_id;
  6666  
  6667         END  IF;
  6668  
  6669       EXCEPT ION
  6670  
  6671         WHEN  OTHERS TH EN
  6672  
  6673           VD _log_date  := SYSDATE ;
  6674           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  6675                                        PD_job _log_date   => VD_log _date,
  6676                                        PC_job _status =>  SUBSTR('E RROR        - Unknown  error upd ating ' ||  VC_para_n ame_last_p roc_id ||  '.',1,60),
  6677                                        PC_job _log_messa ge => SUBS TR(VC_para _name_last _proc_id | | ': ' ||  VN_max_log _id
  6678                                                                        || '. '  || SQLERR M,1,2000),
  6679                                        PD_dat e1 => VD_r ec_group_d ate,
  6680                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  6681  
  6682           RE TURN;
  6683  
  6684       END;
  6685  
  6686   -- Process  completio n informat ion
  6687  
  6688       VD_log _date := S YSDATE;
  6689       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6690                                    PD_job_log _date => V D_log_date ,
  6691                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  6692                                    PD_date1 = > VD_rec_g roup_date,
  6693                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  6694                                    PN_numeric 2 => VN_pa ss_count,
  6695                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  6696  
  6697       VD_log _date := S YSDATE;
  6698       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6699                                    PD_job_log _date => V D_log_date ,
  6700                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  6701                                    PD_date1 = > VD_rec_g roup_date,
  6702                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  6703                                    PN_numeric 2 => VN_up date_count ,
  6704                                    PC_text2 = > SUBSTR(' Updated Re cord Count ',1,255));
  6705  
  6706       VD_log _date := S YSDATE;
  6707       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6708                                    PD_job_log _date => V D_log_date ,
  6709                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  6710                                    PD_date1 = > VD_rec_g roup_date,
  6711                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  6712                                    PN_numeric 2 => VN_ma x_log_id,
  6713                                    PC_text2 = > SUBSTR(' Last proce ssed log i d',1,255)) ;
  6714  
  6715       VD_pro cess_end_d ate := SYS DATE;
  6716       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  6717                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  6718                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  6719                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  6720                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  6721  
  6722       VD_log _date := S YSDATE;
  6723       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6724                                    PD_job_log _date => V D_log_date ,
  6725                                    PC_job_sta tus => SUB STR('SUCCE SS     - P rocessing  Completed' ,1,60),
  6726                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  6727                                    PD_date1 = > VD_rec_g roup_date,
  6728                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  6729  
  6730     EXCEPTIO N
  6731  
  6732       WHEN O THERS THEN
  6733  
  6734         VD_l og_date :=  SYSDATE;
  6735         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6736                                      PD_job_l og_date  = > VD_log_d ate,
  6737                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror updat ing Intern al_error_t ext.',1,60 ),
  6738                                      PC_job_l og_message  => SUBSTR ('Cursor L oop Count:  ' || VN_p ass_count
  6739                                                                      || ' Upda ted Record  Count: '  || VN_upda te_count
  6740                                                                      || '. ' | | SQLERRM, 1,2000),
  6741                                      PD_date1  => VD_rec _group_dat e,
  6742                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6743  
  6744         RETU RN;
  6745  
  6746     END;
  6747  
  6748   EXCEPTION
  6749  
  6750     WHEN OTH ERS THEN
  6751  
  6752       ROLLBA CK;
  6753  
  6754       VD_log _date := S YSDATE;
  6755       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6756                                    PD_job_err or_date  = > VD_log_d ate,
  6757                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  6758                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Hl7_Txn_Lo g_Null_Err _Col_Sp.'
  6759                                                                  ||  SQLERRM,1 ,2000),
  6760                                    PD_date1 = > VD_rec_g roup_date,
  6761                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  6762  
  6763       VD_log _date := S YSDATE;
  6764       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  6765                                    PD_job_log _date => V D_log_date ,
  6766                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  6767                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  6768                                    PD_date1 = > VD_rec_g roup_date,
  6769                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  6770  
  6771   END Hl7_Tx n_Log_Null _Err_Col_S p_06;
  6772   /
  6773   DROP PROCE DURE ADR.H L7_TXN_LOG _NULL_ERR_ COL_SP_01;
  6774  
  6775   CREATE OR  REPLACE PR OCEDURE AD R.Hl7_Txn_ Log_Null_E rr_Col_Sp_ 01 (
  6776      PB_run_ standalone     IN BOO LEAN DEFAU LT FALSE,
  6777      PB_allo w_rpt_inst     IN BOO LEAN DEFAU LT FALSE,
  6778      PN_rows _to_proces s   IN NUM BER DEFAUL T NULL)
  6779   IS
  6780      -- **** ********** ********** ********** ********** ********** ********** ********** *
  6781      -- * Pr ocedure: H l7_Txn_Log _Null_Erro r_Col
  6782      -- *
  6783      -- *    Update HL7  transcati ons to rem ove data f rom the in ternal_err or_text
  6784      -- *    column for  all rows  more than  6 months o ld.
  6785      -- *
  6786      -- * Pa rameters:
  6787      -- *
  6788      -- *  P B_run_stan dalone   I gnore DBMS _JOB logic  for check ing runnin g jobs.
  6789      -- *                          Default: F ALSE
  6790      -- *
  6791      -- *  P B_allow_rp t_inst   A llow store d procedur e to be su bmitted in  the
  6792      -- *                        D BMS_JOB qu eue on the  ADR repor ting datab ases
  6793      -- *                          Default: F ALSE
  6794      -- *
  6795      -- **** ********** ********** ********** ********** ********** ********** ********** *
  6796      --
  6797      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  6798      -- Date         Au thor             Desc ription
  6799      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  6800      -- 06/2 3/2010  Cr aig Wood         Crea ted for CC R 1100.
  6801      --
  6802      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  6803  
  6804      -- CONS TANTS
  6805  
  6806      CC_no                                  V ARCHAR2 (1 ) := 'N';
  6807      CC_parm _applicati on_name    CONSTANT V ARCHAR2 (8 0)
  6808         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  6809      CC_parm _hl7_err_t xt_age     CONSTANT V ARCHAR2 (5 0)
  6810                                                 := 'OLDE ST HL7 ERR OR TEXT DA YS' ;
  6811      CC_parm _last_hl7_ id         CONSTANT V ARCHAR2 (5 0)
  6812                                                 := 'LAST  HL7 ID PR OCESSED' ;
  6813      CC_parm _log_file_ age        CONSTANT V ARCHAR2 (5 0)
  6814                                                 := 'OLDE ST LOG FIL E DAYS' ;
  6815      CC_proc ess_name              CONSTANT V ARCHAR2 (6 0)
  6816         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  6817      CC_sp_n ame                   CONSTANT V ARCHAR2 (3 5)
  6818         := ' Hl7_Txn_Lo g_Null_Err _Col_Sp_'  || '01' ;
  6819      CC_yes                                 V ARCHAR2 (1 ) := 'Y';
  6820  
  6821      -- VARI ABLES
  6822  
  6823      VB_allo w_rpt_inst                     B OOLEAN :=  FALSE;
  6824      VB_run_ standalone                     B OOLEAN :=  FALSE;
  6825  
  6826      VC_allo w_rpt_inst                     V ARCHAR2 (5 ) := NULL;
  6827      VC_inst ance_name                      V ARCHAR2 (1 6);
  6828      VC_proc ess_durati on                  V ARCHAR2 (2 5);
  6829      VC_run_ standalone                     V ARCHAR2 (5 ) := NULL;
  6830      VC_sql_ statement                      V ARCHAR2 (2 000);
  6831      VC_para _name_last _proc_id            V ARCHAR2 (3 0):= 'P' | | '01' ||  ' LAST PRO CESSED LOG  ID';
  6832  
  6833     VD_log_d ate                            D ATE;
  6834     VD_proce ss_end_dat e                   D ATE;
  6835     VD_proce ss_start_d ate                 D ATE;
  6836     VD_rec_g roup_date                      D ATE;
  6837  
  6838     VN_job_c ount                           N UMBER := 0 ;
  6839     VN_job_n umber                          N UMBER;
  6840     VN_max_l og_id                          N UMBER := 0 ;
  6841     VN_parm_ hl7_err_tx t_age               N UMBER;
  6842     VN_parm_ log_file_a ge                  N UMBER;
  6843     VN_parm_ last_log_i d                   N UMBER := 0 ;
  6844     VN_parm_ rows_to_pr ocess               N UMBER;
  6845     VN_pass_ count                          N UMBER := 0 ;
  6846     VN_rec_c ount                           N UMBER := 0 ;
  6847     VN_updat e_count                        N UMBER := 0 ;
  6848  
  6849  
  6850   -- CURSORS
  6851  
  6852     CURSOR C _hl7_id IS
  6853       SELECT   /*+ para llel(4) */  Hl7_trans action_log _id
  6854       FROM       Hl7_tr ansaction_ log PARTIT ION (HL7_T RANSACTION _LOG_P01)
  6855       WHERE      Hl7_tr ansaction_ log_id > V N_parm_las t_log_id
  6856       AND        Transm ission_dat e < TRUNC( SYSDATE) -  VN_parm_h l7_err_txt _age
  6857       AND        Intern al_error_t ext IS NOT  NULL;
  6858  
  6859   -- TYPES
  6860  
  6861     TYPE TT_ hl7_id IS
  6862       TABLE  OF ADR.Hl7 _Transacti on_Log.Hl7 _transacti on_log_id% TYPE;
  6863  
  6864   -- MEMORY  TABLES
  6865  
  6866     T_hl7_id                                T T_hl7_id;
  6867  
  6868   -- ******* ********** ********** ********** ********** ********** ********** *******
  6869   -- *
  6870   -- *  MAIN  PROCEDURE :
  6871   -- *
  6872   -- ******* ********** ********** ********** ********** ********** ********** *******
  6873  
  6874   BEGIN
  6875  
  6876     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  6877     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  6878  
  6879     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  6880     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  6881  
  6882     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  6883     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  6884  
  6885     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  6886     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  6887  
  6888     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  QUERY PARA LLEL ' ||   2;
  6889     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  6890  
  6891     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  DML PARALL EL ' || 2;
  6892     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  6893  
  6894  
  6895     VC_sql_s tatement:= 'ALTER SES SION SET p arallel_fo rce_local= TRUE';      --  force  parallel  to a local  node
  6896     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  6897  
  6898     VD_rec_g roup_date  := TRUNC(S YSDATE);
  6899  
  6900     VD_log_d ate := SYS DATE;
  6901     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  6902                                 PD _job_log_d ate => VD_ log_date,
  6903                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  6904                                 PD _date1 =>  VD_rec_gro up_date,
  6905                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  6906  
  6907   -- ******* ********** ********** ********** ********** ********** ********** ********
  6908   -- *
  6909   -- * Valid ate input  parameters
  6910   -- *
  6911   -- ******* ********** ********** ********** ********** ********** ********** ********
  6912  
  6913   -- * Check  run stand alone flag
  6914  
  6915     IF PB_ru n_standalo ne IS NULL
  6916      OR NOT  PB_run_sta ndalone TH EN
  6917  
  6918       VB_run _standalon e := FALSE ;
  6919       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  6920  
  6921     ELSE
  6922  
  6923       VB_run _standalon e := TRUE;
  6924       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  6925  
  6926     END IF;
  6927  
  6928   -- * Check  run on re port insta nce flag
  6929  
  6930     IF PB_al low_rpt_in st IS NULL
  6931      OR NOT  PB_allow_r pt_inst TH EN
  6932  
  6933       VB_all ow_rpt_ins t := FALSE ;
  6934       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  6935  
  6936     ELSE
  6937  
  6938       VB_all ow_rpt_ins t := TRUE;
  6939       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  6940  
  6941     END IF;
  6942  
  6943   -- ******* ********** ********** ********** ********** ********** ********** ********
  6944   -- *
  6945   -- * Retri eve proces sing param eters
  6946   -- *
  6947   -- ******* ********** ********** ********** ********** ********** ********** ********
  6948  
  6949   -- Process  Parameter  OLDEST HL 7 ERROR TE XT DAYS KE PT
  6950  
  6951     BEGIN
  6952  
  6953       SELECT     Value
  6954       INTO       VN_par m_hl7_err_ txt_age
  6955       FROM       ADRMGT .Adr_Param eter
  6956       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  6957       AND        Parame ter_name =  'OLDEST H L7 ERROR T EXT DAYS K EPT';
  6958  
  6959       IF VN_ parm_hl7_e rr_txt_age  IS NULL T HEN
  6960  
  6961         VD_l og_date :=  SYSDATE;
  6962         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6963                                      PD_job_l og_date =>  VD_log_da te,
  6964                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6965                                      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),
  6966                                      PD_date1  => VD_rec _group_dat e,
  6967                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6968  
  6969         RETU RN;
  6970  
  6971       END IF ;
  6972  
  6973     EXCEPTIO N
  6974  
  6975       WHEN N O_DATA_FOU ND THEN
  6976  
  6977         VD_l og_date :=  SYSDATE;
  6978         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6979                                      PD_job_l og_date =>  VD_log_da te,
  6980                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6981                                      PC_job_l og_message  => 'Param eter for O LDEST HL7  ERROR TEXT  DAYS KEPT  was not f ound. Term inating pr ocess.',
  6982                                      PD_date1  => VD_rec _group_dat e,
  6983                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6984  
  6985         RETU RN;
  6986  
  6987       WHEN O THERS THEN
  6988  
  6989         VD_l og_date :=  SYSDATE;
  6990         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  6991                                      PD_job_l og_date =>  VD_log_da te,
  6992                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  6993                                      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. '
  6994                                                                      || SQLERR M,1,2000),
  6995                                      PD_date1  => VD_rec _group_dat e,
  6996                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  6997  
  6998         RETU RN;
  6999  
  7000     END;
  7001  
  7002   -- Process  Parameter  OLDEST LO G FILE DAY S KEPT
  7003  
  7004     BEGIN
  7005  
  7006       SELECT     Value
  7007       INTO       VN_par m_log_file _age
  7008       FROM       ADRMGT .Adr_Param eter
  7009       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  7010       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  7011  
  7012       IF VN_ parm_log_f ile_age IS  NULL THEN
  7013  
  7014         VD_l og_date :=  SYSDATE;
  7015         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7016                                      PD_job_l og_date =>  VD_log_da te,
  7017                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7018                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST L OG FILE DA YS KEPT is  NULL. Ter minating p rocess.',1 ,2000),
  7019                                      PD_date1  => VD_rec _group_dat e,
  7020                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7021  
  7022         RETU RN;
  7023  
  7024       END IF ;
  7025  
  7026     EXCEPTIO N
  7027  
  7028       WHEN N O_DATA_FOU ND THEN
  7029  
  7030         VD_l og_date :=  SYSDATE;
  7031         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7032                                      PD_job_l og_date =>  VD_log_da te,
  7033                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7034                                      PC_job_l og_message  => 'Param eter for O LDEST LOG  FILE DAYS  KEPT was n ot found.  Terminatin g process. ',
  7035                                      PD_date1  => VD_rec _group_dat e,
  7036                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7037  
  7038         RETU RN;
  7039  
  7040       WHEN O THERS THEN
  7041  
  7042         VD_l og_date :=  SYSDATE;
  7043         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7044                                      PD_job_l og_date =>  VD_log_da te,
  7045                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7046                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  OLDEST LO G FILE DAY S KEPT. Te rminating  process. '
  7047                                                                      || SQLERR M,1,2000),
  7048                                      PD_date1  => VD_rec _group_dat e,
  7049                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7050  
  7051         RETU RN;
  7052  
  7053     END;
  7054  
  7055   -- Process  Parameter  ROWS TO P ROCESS
  7056  
  7057     BEGIN
  7058  
  7059       SELECT     Value
  7060       INTO       VN_par m_rows_to_ process
  7061       FROM       ADRMGT .Adr_Param eter
  7062       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  7063       AND        Parame ter_name =  'ROWS TO  PROCESS';
  7064  
  7065       IF VN_ parm_rows_ to_process  IS NULL T HEN
  7066  
  7067         VD_l og_date :=  SYSDATE;
  7068         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7069                                      PD_job_l og_date =>  VD_log_da te,
  7070                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7071                                      PC_job_l og_message  => SUBSTR ('Paramete r ROWS TO  PROCESS is  NULL. Ter minating p rocess.',1 ,2000),
  7072                                      PD_date1  => VD_rec _group_dat e,
  7073                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7074  
  7075         RETU RN;
  7076  
  7077       END IF ;
  7078  
  7079     EXCEPTIO N
  7080  
  7081       WHEN N O_DATA_FOU ND THEN
  7082  
  7083         VD_l og_date :=  SYSDATE;
  7084         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7085                                      PD_job_l og_date =>  VD_log_da te,
  7086                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7087                                      PC_job_l og_message  => 'Param eter for R OWS TO PRO CESS was n ot found.  Terminatin g process. ',
  7088                                      PD_date1  => VD_rec _group_dat e,
  7089                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7090  
  7091         RETU RN;
  7092  
  7093       WHEN O THERS THEN
  7094  
  7095         VD_l og_date :=  SYSDATE;
  7096         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7097                                      PD_job_l og_date =>  VD_log_da te,
  7098                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7099                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ROWS TO P ROCESS. Te rminating  process. '
  7100                                                                      || SQLERR M,1,2000),
  7101                                      PD_date1  => VD_rec _group_dat e,
  7102                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7103  
  7104         RETU RN;
  7105  
  7106     END;
  7107  
  7108   -- Process  Parameter  LAST PROC ESSED LOG  ID
  7109  
  7110     BEGIN
  7111  
  7112       SELECT     Value
  7113       INTO       VN_par m_last_log _id
  7114       FROM       ADRMGT .Adr_Param eter
  7115       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  7116       AND        Parame ter_name =  VC_para_n ame_last_p roc_id;
  7117  
  7118       IF VN_ parm_last_ log_id IS  NULL THEN
  7119  
  7120         VD_l og_date :=  SYSDATE;
  7121         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7122                                      PD_job_l og_date =>  VD_log_da te,
  7123                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7124                                      PC_job_l og_message  => SUBSTR ('Paramete r ' || VC_ para_name_ last_proc_ id || ' is  NULL. Ter minating p rocess.',1 ,2000),
  7125                                      PD_date1  => VD_rec _group_dat e,
  7126                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7127  
  7128         RETU RN;
  7129  
  7130       END IF ;
  7131  
  7132     EXCEPTIO N
  7133  
  7134       WHEN N O_DATA_FOU ND THEN
  7135  
  7136         VD_l og_date :=  SYSDATE;
  7137         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7138                                      PD_job_l og_date =>  VD_log_da te,
  7139                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7140                                      PC_job_l og_message  => 'Param eter for '  || VC_par a_name_las t_proc_id  || ' was n ot found.  Terminatin g process. ',
  7141                                      PD_date1  => VD_rec _group_dat e,
  7142                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7143  
  7144         RETU RN;
  7145  
  7146       WHEN O THERS THEN
  7147  
  7148         VD_l og_date :=  SYSDATE;
  7149         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7150                                      PD_job_l og_date =>  VD_log_da te,
  7151                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7152                                      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. '
  7153                                                                      || SQLERR M,1,2000),
  7154                                      PD_date1  => VD_rec _group_dat e,
  7155                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7156  
  7157         RETU RN;
  7158  
  7159     END;
  7160  
  7161   -- Write o ut Paramet er log mes sages for  submitted  job
  7162  
  7163     VD_log_d ate := SYS DATE;
  7164     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  7165                                 PD _job_log_d ate => VD_ log_date,
  7166                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  7167                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  7168                                 PD _date1 =>  VD_rec_gro up_date,
  7169                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  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  submissio n paramete rs',1,60),
  7175                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 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  submissio n paramete rs',1,60),
  7183                                 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),
  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  
  7188     VD_log_d ate := SYS DATE;
  7189     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  7190                                 PD _job_log_d ate => VD_ log_date,
  7191                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  7192                                 PC _job_log_m essage =>  SUBSTR(' O LDEST HL7  ERROR TEXT  DAYS KEPT : ' || VN_ parm_hl7_e rr_txt_age ,1,2000),
  7193                                 PD _date1 =>  VD_rec_gro up_date,
  7194                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  7195  
  7196     VD_log_d ate := SYS DATE;
  7197     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  7198                                 PD _job_log_d ate => VD_ log_date,
  7199                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  7200                                 PC _job_log_m essage =>  SUBSTR(' O LDEST LOG  FILE DAYS  KEPT: ' ||  VN_parm_l og_file_ag e,1,2000),
  7201                                 PD _date1 =>  VD_rec_gro up_date,
  7202                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  7203  
  7204     VD_log_d ate := SYS DATE;
  7205     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  7206                                 PD _job_log_d ate => VD_ log_date,
  7207                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  7208                                 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),
  7209                                 PD _date1 =>  VD_rec_gro up_date,
  7210                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  7211  
  7212     VD_log_d ate := SYS DATE;
  7213     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  7214                                 PD _job_log_d ate => VD_ log_date,
  7215                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  7216                                 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),
  7217                                 PD _date1 =>  VD_rec_gro up_date,
  7218                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  7219  
  7220   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  7221  
  7222     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  7223  
  7224       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  7225  
  7226       VD_log _date := S YSDATE;
  7227       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7228                                    PD_job_log _date => V D_log_date ,
  7229                                    PC_job_sta tus => SUB STR('WARNI NG     - J ob table p arameters' ,1,60),
  7230                                    PC_job_log _message = > SUBSTR('  Processin g paramete r ROWS TO  PROCESS (i n each loo p) has bee n overridd en.'
  7231                                                              || ' T he overrid e value is : ' || NVL (TO_CHAR(V N_parm_row s_to_proce ss),'NULL' ),1,2000),
  7232                                    PD_date1 = > VD_rec_g roup_date,
  7233                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  7234  
  7235     END IF;
  7236  
  7237   -- ******* ********** ********** ********** ********** ********** ********** ********
  7238   -- *
  7239   -- * Check  to see if  process i s running  on a repor ting datab ase.
  7240   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  7241   -- *
  7242   -- ******* ********** ********** ********** ********** ********** ********** ********
  7243  
  7244     IF NOT V B_allow_rp t_inst THE N
  7245  
  7246       BEGIN
  7247  
  7248         VD_l og_date :=  SYSDATE;
  7249         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7250                                      PD_job_l og_date =>  VD_log_da te,
  7251                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  7252                                      PD_date1  => VD_rec _group_dat e,
  7253                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7254  
  7255         SELE CT    Inst ance_name
  7256         INTO       VC_i nstance_na me
  7257         FROM       V$in stance;
  7258  
  7259         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  7260  
  7261           VD _log_date  := SYSDATE ;
  7262           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  7263                                        PD_job _log_date  => VD_log_ date,
  7264                                        PC_job _status =>  SUBSTR('E RROR        - Process ing Failed ',1,60),
  7265                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  7266                                                                     || VC_inst ance_name
  7267                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  7268                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  7269                                        PD_dat e1 => VD_r ec_group_d ate,
  7270                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  7271  
  7272           RE TURN;
  7273  
  7274         END  IF;
  7275  
  7276       EXCEPT ION
  7277  
  7278         WHEN  OTHERS TH EN
  7279  
  7280           VD _log_date  := SYSDATE ;
  7281           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  7282                                        PD_job _log_date  => VD_log_ date,
  7283                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  7284                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  7285                                        PD_dat e1 => VD_r ec_group_d ate,
  7286                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  7287  
  7288           RE TURN;
  7289  
  7290       END;
  7291  
  7292     END IF;
  7293  
  7294   -- ******* ********** ********** ********** ********** ********** ********** ********
  7295   -- *
  7296   -- * Check  to see if  the job h as already  run today
  7297   -- *  - If  running i n stand-al one mode,  don't chec k.
  7298   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  7299   -- *
  7300   -- ******* ********** ********** ********** ********** ********** ********** ********
  7301  
  7302     IF NOT P B_run_stan dalone THE N
  7303  
  7304       BEGIN
  7305  
  7306         VD_l og_date :=  SYSDATE;
  7307         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7308                                      PD_job_l og_date =>  VD_log_da te,
  7309                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  7310                                      PD_date1  => VD_rec _group_dat e,
  7311                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7312  
  7313         SELE CT    COUN T(*)
  7314         INTO       VN_r ec_count
  7315         FROM       ADRM GT.Job_Pro cess_Logs
  7316         WHER E     Job_ name = CC_ process_na me
  7317         AND        Date 1 = VD_rec _group_dat e
  7318         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  7319  
  7320         IF V N_rec_coun t > 0 THEN
  7321  
  7322           VD _log_date  := SYSDATE ;
  7323           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  7324                                        PD_job _log_date  => VD_log_ date,
  7325                                        PC_job _status =>  SUBSTR('W ARNING      - This da te has alr eady been  processed' ,1,60),
  7326                                        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),
  7327                                        PD_dat e1 => VD_r ec_group_d ate,
  7328                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  7329  
  7330           RE TURN;
  7331  
  7332         END  IF;
  7333  
  7334       EXCEPT ION
  7335  
  7336         WHEN  OTHERS TH EN
  7337  
  7338           VD _log_date  := SYSDATE ;
  7339           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  7340                                        PD_job _log_date  => VD_log_ date,
  7341                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  7342                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  7343                                        PD_dat e1 => VD_r ec_group_d ate,
  7344                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  7345  
  7346           RE TURN;
  7347  
  7348       END;
  7349  
  7350     END IF;
  7351  
  7352   -- ******* ********** ********** ********** ********** ********** ********** ********
  7353   -- *
  7354   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  7355   -- *  - If  yes, then  end this  job.
  7356   -- *
  7357   -- ******* ********** ********** ********** ********** ********** ********** ********
  7358  
  7359     SELECT C OUNT(*)
  7360     INTO   V N_job_coun t
  7361     FROM   S YS.DBA_JOB S_RUNNING  R,
  7362            S YS.DBA_JOB S J
  7363     WHERE  J .JOB = R.J OB
  7364     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  7365  
  7366     IF VN_jo b_count >  1 THEN
  7367  
  7368       VD_log _date := S YSDATE;
  7369       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7370                                    PD_job_log _date => V D_log_date ,
  7371                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  7372                                    PC_job_log _message = > SUBSTR(' There is a nother '
  7373                                                                || C C_sp_name
  7374                                                                || '  job runni ng.'
  7375                                                                || '  Exiting j ob without  running.' ,1,2000),
  7376                                    PD_date1 = > VD_rec_g roup_date,
  7377                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  7378  
  7379       RETURN ;
  7380  
  7381     ELSE
  7382  
  7383       IF VB_ run_standa lone THEN
  7384  
  7385         VD_l og_date :=  SYSDATE;
  7386         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7387                                      PD_job_l og_date =>  VD_log_da te,
  7388                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  7389                                      PD_date1  => VD_rec _group_dat e,
  7390                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7391  
  7392       ELSE
  7393  
  7394         SELE CT    MAX( J.Job)
  7395         INTO       VN_j ob_number
  7396         FROM       SYS. DBA_JOBS_R UNNING R,
  7397                    SYS. DBA_JOBS J
  7398         WHER E     J.JO B = R.JOB
  7399         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  7400  
  7401         VD_l og_date :=  SYSDATE;
  7402         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7403                                      PD_job_l og_date =>  VD_log_da te,
  7404                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  7405                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  7406                                                                      || VN_job _number,1, 2000),
  7407                                      PD_date1  => VD_rec _group_dat e,
  7408                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7409  
  7410       END IF ;
  7411  
  7412     END IF;
  7413  
  7414   -- ******* ********** ********** ********** ********** ********** ********** ********
  7415   -- *
  7416   -- * Main  processing  loop
  7417   -- *
  7418   -- ******* ********** ********** ********** ********** ********** ********** ********
  7419  
  7420     VN_pass_ count := 0 ;
  7421     VN_updat e_count :=  0;
  7422     VD_proce ss_start_d ate := SYS DATE;
  7423  
  7424   -- ******* ********** ********** ********** ********** ********** ********** ********
  7425   -- * Remov e old proc ess log ro ws
  7426   -- ******* ********** ********** ********** ********** ********** ********** ********
  7427     BEGIN
  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 emoving ol d process  logs',1,60 ),
  7433                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s 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       DELETE
  7440       FROM       ADRMGT .Job_Proce ss_Logs
  7441       WHERE      Job_na me = CC_pr ocess_name
  7442       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  7443  
  7444       COMMIT ;
  7445  
  7446       VD_log _date := S YSDATE;
  7447       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7448                                    PD_job_log _date => V D_log_date ,
  7449                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  7450                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  7451                                                                   | | VN_parm_ log_file_a ge
  7452                                                                   | | ' days o ld',1,2000 ),
  7453                                    PD_date1 = > VD_rec_g roup_date,
  7454                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  7455  
  7456  
  7457     EXCEPTIO N
  7458  
  7459       WHEN N O_DATA_FOU ND THEN
  7460  
  7461         NULL ;
  7462  
  7463       WHEN O THERS THEN
  7464  
  7465         VD_l og_date :=  SYSDATE;
  7466         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7467                                      PD_job_l og_date  = > VD_log_d ate,
  7468                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess logs .',1,60),
  7469                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  7470                                      PD_date1  => VD_rec _group_dat e,
  7471                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7472  
  7473     END;
  7474  
  7475   -- ******* ********** ********** ********** ********** ********** ********** ********
  7476   -- * Remov e old proc ess error  rows
  7477   -- ******* ********** ********** ********** ********** ********** ********** ********
  7478  
  7479     BEGIN
  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 emoving ol d process  errors',1, 60),
  7485                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors 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       DELETE
  7492       FROM       ADRMGT .Job_Proce ss_Errs
  7493       WHERE      Job_na me = CC_pr ocess_name
  7494       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  7495  
  7496       COMMIT ;
  7497  
  7498       VD_log _date := S YSDATE;
  7499       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7500                                    PD_job_log _date => V D_log_date ,
  7501                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  7502                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  7503                                                                   | | VN_parm_ log_file_a ge
  7504                                                                   | | ' days o ld',1,2000 ),
  7505                                    PD_date1 = > VD_rec_g roup_date,
  7506                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  7507  
  7508     EXCEPTIO N
  7509  
  7510       WHEN N O_DATA_FOU ND THEN
  7511  
  7512         NULL ;
  7513  
  7514       WHEN O THERS THEN
  7515  
  7516         VD_l og_date :=  SYSDATE;
  7517         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7518                                      PD_job_l og_date  = > VD_log_d ate,
  7519                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess erro rs.',1,60) ,
  7520                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  7521                                      PD_date1  => VD_rec _group_dat e,
  7522                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7523  
  7524     END;
  7525  
  7526   -- ******* ********** ********** ********** ********** ********** ********** ********
  7527   -- * Main  record cur sor logic
  7528   -- ******* ********** ********** ********** ********** ********** ********** ********
  7529  
  7530     BEGIN
  7531  
  7532       VN_max _log_id :=  0;
  7533       VN_pas s_count :=  0;
  7534       VN_upd ate_count  := 0;
  7535  
  7536       OPEN C _hl7_id;
  7537  
  7538       LOOP
  7539  
  7540         FETC H C_hl7_id
  7541         BULK  COLLECT I NTO T_hl7_ id
  7542         LIMI T VN_parm_ rows_to_pr ocess;
  7543  
  7544         EXIT  WHEN T_hl 7_id.COUNT  = 0;
  7545  
  7546         FORA LL I_hl7_i d IN T_hl7 _id.FIRST. .T_hl7_id. last
  7547           UP DATE    AD R.Hl7_tran saction_lo g
  7548           SE T       In ternal_err or_text =  NULL
  7549           WH ERE     Hl 7_transact ion_log_id  = T_hl7_i d(I_hl7_id );
  7550  
  7551         COMM IT;
  7552  
  7553         FOR  I_hl7_id I N T_hl7_id .FIRST..T_ hl7_id.las t LOOP
  7554  
  7555           IF  T_hl7_id( I_hl7_id)  > VN_max_l og_id THEN
  7556  
  7557              VN_max_log _id := T_h l7_id(I_hl 7_id);
  7558  
  7559           EN D IF;
  7560  
  7561         END  LOOP;
  7562  
  7563         VN_p ass_count  := VN_pass _count + 1 ;
  7564  
  7565         VN_u pdate_coun t := VN_up date_count  + T_hl7_i d.COUNT;
  7566  
  7567       END LO OP;
  7568  
  7569       CLOSE  C_hl7_id;
  7570  
  7571       BEGIN
  7572  
  7573         IF N VL(VN_max_ log_id,0)  <> 0 THEN
  7574  
  7575           UP DATE    AD RMGT.Adr_P arameter
  7576           SE T       Va lue = VN_m ax_log_id
  7577           WH ERE     Ap plication_ name = 'HL 7 NULL INT ERNAL_ERRO R_TEXT COL UMN'
  7578           AN D       Pa rameter_na me = VC_pa ra_name_la st_proc_id ;
  7579  
  7580           CO MMIT;
  7581  
  7582         ELSE
  7583  
  7584           VN _max_log_i d := VN_pa rm_last_lo g_id;
  7585  
  7586         END  IF;
  7587  
  7588       EXCEPT ION
  7589  
  7590         WHEN  OTHERS TH EN
  7591  
  7592           VD _log_date  := SYSDATE ;
  7593           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  7594                                        PD_job _log_date   => VD_log _date,
  7595                                        PC_job _status =>  SUBSTR('E RROR        - Unknown  error upd ating ' ||  VC_para_n ame_last_p roc_id ||  '.',1,60),
  7596                                        PC_job _log_messa ge => SUBS TR(VC_para _name_last _proc_id | | ': ' ||  VN_max_log _id
  7597                                                                        || '. '  || SQLERR M,1,2000),
  7598                                        PD_dat e1 => VD_r ec_group_d ate,
  7599                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  7600  
  7601           RE TURN;
  7602  
  7603       END;
  7604  
  7605   -- Process  completio n informat ion
  7606  
  7607       VD_log _date := S YSDATE;
  7608       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7609                                    PD_job_log _date => V D_log_date ,
  7610                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  7611                                    PD_date1 = > VD_rec_g roup_date,
  7612                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  7613                                    PN_numeric 2 => VN_pa ss_count,
  7614                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  7615  
  7616       VD_log _date := S YSDATE;
  7617       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7618                                    PD_job_log _date => V D_log_date ,
  7619                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  7620                                    PD_date1 = > VD_rec_g roup_date,
  7621                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  7622                                    PN_numeric 2 => VN_up date_count ,
  7623                                    PC_text2 = > SUBSTR(' Updated Re cord Count ',1,255));
  7624  
  7625       VD_log _date := S YSDATE;
  7626       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7627                                    PD_job_log _date => V D_log_date ,
  7628                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  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                                    PN_numeric 2 => VN_ma x_log_id,
  7632                                    PC_text2 = > SUBSTR(' Last proce ssed log i d',1,255)) ;
  7633  
  7634       VD_pro cess_end_d ate := SYS DATE;
  7635       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  7636                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  7637                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  7638                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  7639                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  7640  
  7641       VD_log _date := S YSDATE;
  7642       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7643                                    PD_job_log _date => V D_log_date ,
  7644                                    PC_job_sta tus => SUB STR('SUCCE SS     - P rocessing  Completed' ,1,60),
  7645                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  7646                                    PD_date1 = > VD_rec_g roup_date,
  7647                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  7648  
  7649     EXCEPTIO N
  7650  
  7651       WHEN O THERS THEN
  7652  
  7653         VD_l og_date :=  SYSDATE;
  7654         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7655                                      PD_job_l og_date  = > VD_log_d ate,
  7656                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror updat ing Intern al_error_t ext.',1,60 ),
  7657                                      PC_job_l og_message  => SUBSTR ('Cursor L oop Count:  ' || VN_p ass_count
  7658                                                                      || ' Upda ted Record  Count: '  || VN_upda te_count
  7659                                                                      || '. ' | | SQLERRM, 1,2000),
  7660                                      PD_date1  => VD_rec _group_dat e,
  7661                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7662  
  7663         RETU RN;
  7664  
  7665     END;
  7666  
  7667   EXCEPTION
  7668  
  7669     WHEN OTH ERS THEN
  7670  
  7671       ROLLBA CK;
  7672  
  7673       VD_log _date := S YSDATE;
  7674       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7675                                    PD_job_err or_date  = > VD_log_d ate,
  7676                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  7677                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Hl7_Txn_Lo g_Null_Err _Col_Sp.'
  7678                                                                  ||  SQLERRM,1 ,2000),
  7679                                    PD_date1 = > VD_rec_g roup_date,
  7680                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  7681  
  7682       VD_log _date := S YSDATE;
  7683       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  7684                                    PD_job_log _date => V D_log_date ,
  7685                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  7686                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  7687                                    PD_date1 = > VD_rec_g roup_date,
  7688                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  7689  
  7690   END Hl7_Tx n_Log_Null _Err_Col_S p_01;
  7691   /
  7692   DROP PROCE DURE ADR.H L7_TXN_LOG _NULL_ERR_ COL_SP_07;
  7693  
  7694   CREATE OR  REPLACE PR OCEDURE AD R.Hl7_Txn_ Log_Null_E rr_Col_Sp_ 07 (
  7695      PB_run_ standalone     IN BOO LEAN DEFAU LT FALSE,
  7696      PB_allo w_rpt_inst     IN BOO LEAN DEFAU LT FALSE,
  7697      PN_rows _to_proces s   IN NUM BER DEFAUL T NULL)
  7698   IS
  7699      -- **** ********** ********** ********** ********** ********** ********** ********** *
  7700      -- * Pr ocedure: H l7_Txn_Log _Null_Erro r_Col
  7701      -- *
  7702      -- *    Update HL7  transcati ons to rem ove data f rom the in ternal_err or_text
  7703      -- *    column for  all rows  more than  6 months o ld.
  7704      -- *
  7705      -- * Pa rameters:
  7706      -- *
  7707      -- *  P B_run_stan dalone   I gnore DBMS _JOB logic  for check ing runnin g jobs.
  7708      -- *                          Default: F ALSE
  7709      -- *
  7710      -- *  P B_allow_rp t_inst   A llow store d procedur e to be su bmitted in  the
  7711      -- *                        D BMS_JOB qu eue on the  ADR repor ting datab ases
  7712      -- *                          Default: F ALSE
  7713      -- *
  7714      -- **** ********** ********** ********** ********** ********** ********** ********** *
  7715      --
  7716      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  7717      -- Date         Au thor             Desc ription
  7718      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  7719      -- 06/2 3/2010  Cr aig Wood         Crea ted for CC R 1100.
  7720      --
  7721      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  7722  
  7723      -- CONS TANTS
  7724  
  7725      CC_no                                  V ARCHAR2 (1 ) := 'N';
  7726      CC_parm _applicati on_name    CONSTANT V ARCHAR2 (8 0)
  7727         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  7728      CC_parm _hl7_err_t xt_age     CONSTANT V ARCHAR2 (5 0)
  7729                                                 := 'OLDE ST HL7 ERR OR TEXT DA YS' ;
  7730      CC_parm _last_hl7_ id         CONSTANT V ARCHAR2 (5 0)
  7731                                                 := 'LAST  HL7 ID PR OCESSED' ;
  7732      CC_parm _log_file_ age        CONSTANT V ARCHAR2 (5 0)
  7733                                                 := 'OLDE ST LOG FIL E DAYS' ;
  7734      CC_proc ess_name              CONSTANT V ARCHAR2 (6 0)
  7735         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  7736      CC_sp_n ame                   CONSTANT V ARCHAR2 (3 5)
  7737         := ' Hl7_Txn_Lo g_Null_Err _Col_Sp_'  || '07' ;
  7738      CC_yes                                 V ARCHAR2 (1 ) := 'Y';
  7739  
  7740      -- VARI ABLES
  7741  
  7742      VB_allo w_rpt_inst                     B OOLEAN :=  FALSE;
  7743      VB_run_ standalone                     B OOLEAN :=  FALSE;
  7744  
  7745      VC_allo w_rpt_inst                     V ARCHAR2 (5 ) := NULL;
  7746      VC_inst ance_name                      V ARCHAR2 (1 6);
  7747      VC_proc ess_durati on                  V ARCHAR2 (2 5);
  7748      VC_run_ standalone                     V ARCHAR2 (5 ) := NULL;
  7749      VC_sql_ statement                      V ARCHAR2 (2 000);
  7750      VC_para _name_last _proc_id            V ARCHAR2 (3 0):= 'P' | | '07' ||  ' LAST PRO CESSED LOG  ID';
  7751  
  7752     VD_log_d ate                            D ATE;
  7753     VD_proce ss_end_dat e                   D ATE;
  7754     VD_proce ss_start_d ate                 D ATE;
  7755     VD_rec_g roup_date                      D ATE;
  7756  
  7757     VN_job_c ount                           N UMBER := 0 ;
  7758     VN_job_n umber                          N UMBER;
  7759     VN_max_l og_id                          N UMBER := 0 ;
  7760     VN_parm_ hl7_err_tx t_age               N UMBER;
  7761     VN_parm_ log_file_a ge                  N UMBER;
  7762     VN_parm_ last_log_i d                   N UMBER := 0 ;
  7763     VN_parm_ rows_to_pr ocess               N UMBER;
  7764     VN_pass_ count                          N UMBER := 0 ;
  7765     VN_rec_c ount                           N UMBER := 0 ;
  7766     VN_updat e_count                        N UMBER := 0 ;
  7767  
  7768  
  7769   -- CURSORS
  7770  
  7771     CURSOR C _hl7_id IS
  7772       SELECT   /*+ para llel(4) */  Hl7_trans action_log _id
  7773       FROM       Hl7_tr ansaction_ log PARTIT ION (HL7_T RANSACTION _LOG_P07)
  7774       WHERE      Hl7_tr ansaction_ log_id > V N_parm_las t_log_id
  7775       AND        Transm ission_dat e < TRUNC( SYSDATE) -  VN_parm_h l7_err_txt _age
  7776       AND        Intern al_error_t ext IS NOT  NULL;
  7777  
  7778   -- TYPES
  7779  
  7780     TYPE TT_ hl7_id IS
  7781       TABLE  OF ADR.Hl7 _Transacti on_Log.Hl7 _transacti on_log_id% TYPE;
  7782  
  7783   -- MEMORY  TABLES
  7784  
  7785     T_hl7_id                                T T_hl7_id;
  7786  
  7787   -- ******* ********** ********** ********** ********** ********** ********** *******
  7788   -- *
  7789   -- *  MAIN  PROCEDURE :
  7790   -- *
  7791   -- ******* ********** ********** ********** ********** ********** ********** *******
  7792  
  7793   BEGIN
  7794  
  7795     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  7796     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  7797  
  7798     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  7799     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  7800  
  7801     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  7802     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  7803  
  7804     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  7805     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  7806  
  7807     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  QUERY PARA LLEL ' ||   2;
  7808     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  7809  
  7810     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  DML PARALL EL ' || 2;
  7811     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  7812  
  7813  
  7814     VC_sql_s tatement:= 'ALTER SES SION SET p arallel_fo rce_local= TRUE';      --  force  parallel  to a local  node
  7815     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  7816  
  7817     VD_rec_g roup_date  := TRUNC(S YSDATE);
  7818  
  7819     VD_log_d ate := SYS DATE;
  7820     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  7821                                 PD _job_log_d ate => VD_ log_date,
  7822                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  7823                                 PD _date1 =>  VD_rec_gro up_date,
  7824                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  7825  
  7826   -- ******* ********** ********** ********** ********** ********** ********** ********
  7827   -- *
  7828   -- * Valid ate input  parameters
  7829   -- *
  7830   -- ******* ********** ********** ********** ********** ********** ********** ********
  7831  
  7832   -- * Check  run stand alone flag
  7833  
  7834     IF PB_ru n_standalo ne IS NULL
  7835      OR NOT  PB_run_sta ndalone TH EN
  7836  
  7837       VB_run _standalon e := FALSE ;
  7838       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  7839  
  7840     ELSE
  7841  
  7842       VB_run _standalon e := TRUE;
  7843       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  7844  
  7845     END IF;
  7846  
  7847   -- * Check  run on re port insta nce flag
  7848  
  7849     IF PB_al low_rpt_in st IS NULL
  7850      OR NOT  PB_allow_r pt_inst TH EN
  7851  
  7852       VB_all ow_rpt_ins t := FALSE ;
  7853       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  7854  
  7855     ELSE
  7856  
  7857       VB_all ow_rpt_ins t := TRUE;
  7858       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  7859  
  7860     END IF;
  7861  
  7862   -- ******* ********** ********** ********** ********** ********** ********** ********
  7863   -- *
  7864   -- * Retri eve proces sing param eters
  7865   -- *
  7866   -- ******* ********** ********** ********** ********** ********** ********** ********
  7867  
  7868   -- Process  Parameter  OLDEST HL 7 ERROR TE XT DAYS KE PT
  7869  
  7870     BEGIN
  7871  
  7872       SELECT     Value
  7873       INTO       VN_par m_hl7_err_ txt_age
  7874       FROM       ADRMGT .Adr_Param eter
  7875       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  7876       AND        Parame ter_name =  'OLDEST H L7 ERROR T EXT DAYS K EPT';
  7877  
  7878       IF VN_ parm_hl7_e rr_txt_age  IS NULL T HEN
  7879  
  7880         VD_l og_date :=  SYSDATE;
  7881         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7882                                      PD_job_l og_date =>  VD_log_da te,
  7883                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7884                                      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),
  7885                                      PD_date1  => VD_rec _group_dat e,
  7886                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7887  
  7888         RETU RN;
  7889  
  7890       END IF ;
  7891  
  7892     EXCEPTIO N
  7893  
  7894       WHEN N O_DATA_FOU ND THEN
  7895  
  7896         VD_l og_date :=  SYSDATE;
  7897         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7898                                      PD_job_l og_date =>  VD_log_da te,
  7899                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7900                                      PC_job_l og_message  => 'Param eter for O LDEST HL7  ERROR TEXT  DAYS KEPT  was not f ound. Term inating pr ocess.',
  7901                                      PD_date1  => VD_rec _group_dat e,
  7902                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7903  
  7904         RETU RN;
  7905  
  7906       WHEN O THERS THEN
  7907  
  7908         VD_l og_date :=  SYSDATE;
  7909         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7910                                      PD_job_l og_date =>  VD_log_da te,
  7911                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7912                                      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. '
  7913                                                                      || SQLERR M,1,2000),
  7914                                      PD_date1  => VD_rec _group_dat e,
  7915                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7916  
  7917         RETU RN;
  7918  
  7919     END;
  7920  
  7921   -- Process  Parameter  OLDEST LO G FILE DAY S KEPT
  7922  
  7923     BEGIN
  7924  
  7925       SELECT     Value
  7926       INTO       VN_par m_log_file _age
  7927       FROM       ADRMGT .Adr_Param eter
  7928       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  7929       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  7930  
  7931       IF VN_ parm_log_f ile_age IS  NULL THEN
  7932  
  7933         VD_l og_date :=  SYSDATE;
  7934         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7935                                      PD_job_l og_date =>  VD_log_da te,
  7936                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7937                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST L OG FILE DA YS KEPT is  NULL. Ter minating p rocess.',1 ,2000),
  7938                                      PD_date1  => VD_rec _group_dat e,
  7939                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7940  
  7941         RETU RN;
  7942  
  7943       END IF ;
  7944  
  7945     EXCEPTIO N
  7946  
  7947       WHEN N O_DATA_FOU ND THEN
  7948  
  7949         VD_l og_date :=  SYSDATE;
  7950         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7951                                      PD_job_l og_date =>  VD_log_da te,
  7952                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7953                                      PC_job_l og_message  => 'Param eter for O LDEST LOG  FILE DAYS  KEPT was n ot found.  Terminatin g process. ',
  7954                                      PD_date1  => VD_rec _group_dat e,
  7955                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7956  
  7957         RETU RN;
  7958  
  7959       WHEN O THERS THEN
  7960  
  7961         VD_l og_date :=  SYSDATE;
  7962         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7963                                      PD_job_l og_date =>  VD_log_da te,
  7964                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7965                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  OLDEST LO G FILE DAY S KEPT. Te rminating  process. '
  7966                                                                      || SQLERR M,1,2000),
  7967                                      PD_date1  => VD_rec _group_dat e,
  7968                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7969  
  7970         RETU RN;
  7971  
  7972     END;
  7973  
  7974   -- Process  Parameter  ROWS TO P ROCESS
  7975  
  7976     BEGIN
  7977  
  7978       SELECT     Value
  7979       INTO       VN_par m_rows_to_ process
  7980       FROM       ADRMGT .Adr_Param eter
  7981       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  7982       AND        Parame ter_name =  'ROWS TO  PROCESS';
  7983  
  7984       IF VN_ parm_rows_ to_process  IS NULL T HEN
  7985  
  7986         VD_l og_date :=  SYSDATE;
  7987         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  7988                                      PD_job_l og_date =>  VD_log_da te,
  7989                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  7990                                      PC_job_l og_message  => SUBSTR ('Paramete r ROWS TO  PROCESS is  NULL. Ter minating p rocess.',1 ,2000),
  7991                                      PD_date1  => VD_rec _group_dat e,
  7992                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  7993  
  7994         RETU RN;
  7995  
  7996       END IF ;
  7997  
  7998     EXCEPTIO N
  7999  
  8000       WHEN N O_DATA_FOU ND THEN
  8001  
  8002         VD_l og_date :=  SYSDATE;
  8003         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8004                                      PD_job_l og_date =>  VD_log_da te,
  8005                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8006                                      PC_job_l og_message  => 'Param eter for R OWS TO PRO CESS was n ot found.  Terminatin g process. ',
  8007                                      PD_date1  => VD_rec _group_dat e,
  8008                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8009  
  8010         RETU RN;
  8011  
  8012       WHEN O THERS THEN
  8013  
  8014         VD_l og_date :=  SYSDATE;
  8015         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8016                                      PD_job_l og_date =>  VD_log_da te,
  8017                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8018                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ROWS TO P ROCESS. Te rminating  process. '
  8019                                                                      || SQLERR M,1,2000),
  8020                                      PD_date1  => VD_rec _group_dat e,
  8021                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8022  
  8023         RETU RN;
  8024  
  8025     END;
  8026  
  8027   -- Process  Parameter  LAST PROC ESSED LOG  ID
  8028  
  8029     BEGIN
  8030  
  8031       SELECT     Value
  8032       INTO       VN_par m_last_log _id
  8033       FROM       ADRMGT .Adr_Param eter
  8034       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  8035       AND        Parame ter_name =  VC_para_n ame_last_p roc_id;
  8036  
  8037       IF VN_ parm_last_ log_id IS  NULL THEN
  8038  
  8039         VD_l og_date :=  SYSDATE;
  8040         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8041                                      PD_job_l og_date =>  VD_log_da te,
  8042                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8043                                      PC_job_l og_message  => SUBSTR ('Paramete r ' || VC_ para_name_ last_proc_ id || ' is  NULL. Ter minating p rocess.',1 ,2000),
  8044                                      PD_date1  => VD_rec _group_dat e,
  8045                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8046  
  8047         RETU RN;
  8048  
  8049       END IF ;
  8050  
  8051     EXCEPTIO N
  8052  
  8053       WHEN N O_DATA_FOU ND THEN
  8054  
  8055         VD_l og_date :=  SYSDATE;
  8056         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8057                                      PD_job_l og_date =>  VD_log_da te,
  8058                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8059                                      PC_job_l og_message  => 'Param eter for '  || VC_par a_name_las t_proc_id  || ' was n ot found.  Terminatin g process. ',
  8060                                      PD_date1  => VD_rec _group_dat e,
  8061                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8062  
  8063         RETU RN;
  8064  
  8065       WHEN O THERS THEN
  8066  
  8067         VD_l og_date :=  SYSDATE;
  8068         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8069                                      PD_job_l og_date =>  VD_log_da te,
  8070                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8071                                      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. '
  8072                                                                      || SQLERR M,1,2000),
  8073                                      PD_date1  => VD_rec _group_dat e,
  8074                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8075  
  8076         RETU RN;
  8077  
  8078     END;
  8079  
  8080   -- Write o ut Paramet er log mes sages for  submitted  job
  8081  
  8082     VD_log_d ate := SYS DATE;
  8083     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  8084                                 PD _job_log_d ate => VD_ log_date,
  8085                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  8086                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  8087                                 PD _date1 =>  VD_rec_gro up_date,
  8088                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  8089  
  8090     VD_log_d ate := SYS DATE;
  8091     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  8092                                 PD _job_log_d ate => VD_ log_date,
  8093                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  8094                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  8095                                 PD _date1 =>  VD_rec_gro up_date,
  8096                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  8097  
  8098     VD_log_d ate := SYS DATE;
  8099     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  8100                                 PD _job_log_d ate => VD_ log_date,
  8101                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  8102                                 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),
  8103                                 PD _date1 =>  VD_rec_gro up_date,
  8104                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  8105  
  8106  
  8107     VD_log_d ate := SYS DATE;
  8108     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  8109                                 PD _job_log_d ate => VD_ log_date,
  8110                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  8111                                 PC _job_log_m essage =>  SUBSTR(' O LDEST HL7  ERROR TEXT  DAYS KEPT : ' || VN_ parm_hl7_e rr_txt_age ,1,2000),
  8112                                 PD _date1 =>  VD_rec_gro up_date,
  8113                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  8114  
  8115     VD_log_d ate := SYS DATE;
  8116     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  8117                                 PD _job_log_d ate => VD_ log_date,
  8118                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  8119                                 PC _job_log_m essage =>  SUBSTR(' O LDEST LOG  FILE DAYS  KEPT: ' ||  VN_parm_l og_file_ag e,1,2000),
  8120                                 PD _date1 =>  VD_rec_gro up_date,
  8121                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  8122  
  8123     VD_log_d ate := SYS DATE;
  8124     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  8125                                 PD _job_log_d ate => VD_ log_date,
  8126                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  8127                                 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),
  8128                                 PD _date1 =>  VD_rec_gro up_date,
  8129                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  8130  
  8131     VD_log_d ate := SYS DATE;
  8132     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  8133                                 PD _job_log_d ate => VD_ log_date,
  8134                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  8135                                 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),
  8136                                 PD _date1 =>  VD_rec_gro up_date,
  8137                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  8138  
  8139   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  8140  
  8141     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  8142  
  8143       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  8144  
  8145       VD_log _date := S YSDATE;
  8146       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8147                                    PD_job_log _date => V D_log_date ,
  8148                                    PC_job_sta tus => SUB STR('WARNI NG     - J ob table p arameters' ,1,60),
  8149                                    PC_job_log _message = > SUBSTR('  Processin g paramete r ROWS TO  PROCESS (i n each loo p) has bee n overridd en.'
  8150                                                              || ' T he overrid e value is : ' || NVL (TO_CHAR(V N_parm_row s_to_proce ss),'NULL' ),1,2000),
  8151                                    PD_date1 = > VD_rec_g roup_date,
  8152                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  8153  
  8154     END IF;
  8155  
  8156   -- ******* ********** ********** ********** ********** ********** ********** ********
  8157   -- *
  8158   -- * Check  to see if  process i s running  on a repor ting datab ase.
  8159   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  8160   -- *
  8161   -- ******* ********** ********** ********** ********** ********** ********** ********
  8162  
  8163     IF NOT V B_allow_rp t_inst THE N
  8164  
  8165       BEGIN
  8166  
  8167         VD_l og_date :=  SYSDATE;
  8168         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8169                                      PD_job_l og_date =>  VD_log_da te,
  8170                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  8171                                      PD_date1  => VD_rec _group_dat e,
  8172                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8173  
  8174         SELE CT    Inst ance_name
  8175         INTO       VC_i nstance_na me
  8176         FROM       V$in stance;
  8177  
  8178         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  8179  
  8180           VD _log_date  := SYSDATE ;
  8181           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  8182                                        PD_job _log_date  => VD_log_ date,
  8183                                        PC_job _status =>  SUBSTR('E RROR        - Process ing Failed ',1,60),
  8184                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  8185                                                                     || VC_inst ance_name
  8186                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  8187                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  8188                                        PD_dat e1 => VD_r ec_group_d ate,
  8189                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  8190  
  8191           RE TURN;
  8192  
  8193         END  IF;
  8194  
  8195       EXCEPT ION
  8196  
  8197         WHEN  OTHERS TH EN
  8198  
  8199           VD _log_date  := SYSDATE ;
  8200           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  8201                                        PD_job _log_date  => VD_log_ date,
  8202                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  8203                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  8204                                        PD_dat e1 => VD_r ec_group_d ate,
  8205                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  8206  
  8207           RE TURN;
  8208  
  8209       END;
  8210  
  8211     END IF;
  8212  
  8213   -- ******* ********** ********** ********** ********** ********** ********** ********
  8214   -- *
  8215   -- * Check  to see if  the job h as already  run today
  8216   -- *  - If  running i n stand-al one mode,  don't chec k.
  8217   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  8218   -- *
  8219   -- ******* ********** ********** ********** ********** ********** ********** ********
  8220  
  8221     IF NOT P B_run_stan dalone THE N
  8222  
  8223       BEGIN
  8224  
  8225         VD_l og_date :=  SYSDATE;
  8226         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8227                                      PD_job_l og_date =>  VD_log_da te,
  8228                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  8229                                      PD_date1  => VD_rec _group_dat e,
  8230                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8231  
  8232         SELE CT    COUN T(*)
  8233         INTO       VN_r ec_count
  8234         FROM       ADRM GT.Job_Pro cess_Logs
  8235         WHER E     Job_ name = CC_ process_na me
  8236         AND        Date 1 = VD_rec _group_dat e
  8237         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  8238  
  8239         IF V N_rec_coun t > 0 THEN
  8240  
  8241           VD _log_date  := SYSDATE ;
  8242           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  8243                                        PD_job _log_date  => VD_log_ date,
  8244                                        PC_job _status =>  SUBSTR('W ARNING      - This da te has alr eady been  processed' ,1,60),
  8245                                        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),
  8246                                        PD_dat e1 => VD_r ec_group_d ate,
  8247                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  8248  
  8249           RE TURN;
  8250  
  8251         END  IF;
  8252  
  8253       EXCEPT ION
  8254  
  8255         WHEN  OTHERS TH EN
  8256  
  8257           VD _log_date  := SYSDATE ;
  8258           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  8259                                        PD_job _log_date  => VD_log_ date,
  8260                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  8261                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  8262                                        PD_dat e1 => VD_r ec_group_d ate,
  8263                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  8264  
  8265           RE TURN;
  8266  
  8267       END;
  8268  
  8269     END IF;
  8270  
  8271   -- ******* ********** ********** ********** ********** ********** ********** ********
  8272   -- *
  8273   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  8274   -- *  - If  yes, then  end this  job.
  8275   -- *
  8276   -- ******* ********** ********** ********** ********** ********** ********** ********
  8277  
  8278     SELECT C OUNT(*)
  8279     INTO   V N_job_coun t
  8280     FROM   S YS.DBA_JOB S_RUNNING  R,
  8281            S YS.DBA_JOB S J
  8282     WHERE  J .JOB = R.J OB
  8283     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  8284  
  8285     IF VN_jo b_count >  1 THEN
  8286  
  8287       VD_log _date := S YSDATE;
  8288       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8289                                    PD_job_log _date => V D_log_date ,
  8290                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  8291                                    PC_job_log _message = > SUBSTR(' There is a nother '
  8292                                                                || C C_sp_name
  8293                                                                || '  job runni ng.'
  8294                                                                || '  Exiting j ob without  running.' ,1,2000),
  8295                                    PD_date1 = > VD_rec_g roup_date,
  8296                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  8297  
  8298       RETURN ;
  8299  
  8300     ELSE
  8301  
  8302       IF VB_ run_standa lone THEN
  8303  
  8304         VD_l og_date :=  SYSDATE;
  8305         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8306                                      PD_job_l og_date =>  VD_log_da te,
  8307                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  8308                                      PD_date1  => VD_rec _group_dat e,
  8309                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8310  
  8311       ELSE
  8312  
  8313         SELE CT    MAX( J.Job)
  8314         INTO       VN_j ob_number
  8315         FROM       SYS. DBA_JOBS_R UNNING R,
  8316                    SYS. DBA_JOBS J
  8317         WHER E     J.JO B = R.JOB
  8318         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  8319  
  8320         VD_l og_date :=  SYSDATE;
  8321         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8322                                      PD_job_l og_date =>  VD_log_da te,
  8323                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  8324                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  8325                                                                      || VN_job _number,1, 2000),
  8326                                      PD_date1  => VD_rec _group_dat e,
  8327                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8328  
  8329       END IF ;
  8330  
  8331     END IF;
  8332  
  8333   -- ******* ********** ********** ********** ********** ********** ********** ********
  8334   -- *
  8335   -- * Main  processing  loop
  8336   -- *
  8337   -- ******* ********** ********** ********** ********** ********** ********** ********
  8338  
  8339     VN_pass_ count := 0 ;
  8340     VN_updat e_count :=  0;
  8341     VD_proce ss_start_d ate := SYS DATE;
  8342  
  8343   -- ******* ********** ********** ********** ********** ********** ********** ********
  8344   -- * Remov e old proc ess log ro ws
  8345   -- ******* ********** ********** ********** ********** ********** ********** ********
  8346     BEGIN
  8347  
  8348       VD_log _date := S YSDATE;
  8349       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8350                                    PD_job_log _date => V D_log_date ,
  8351                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  8352                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  8353                                                                   | | VN_parm_ log_file_a ge
  8354                                                                   | | ' days o ld',1,2000 ),
  8355                                    PD_date1 = > VD_rec_g roup_date,
  8356                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  8357  
  8358       DELETE
  8359       FROM       ADRMGT .Job_Proce ss_Logs
  8360       WHERE      Job_na me = CC_pr ocess_name
  8361       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  8362  
  8363       COMMIT ;
  8364  
  8365       VD_log _date := S YSDATE;
  8366       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8367                                    PD_job_log _date => V D_log_date ,
  8368                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  8369                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  8370                                                                   | | VN_parm_ log_file_a ge
  8371                                                                   | | ' days o ld',1,2000 ),
  8372                                    PD_date1 = > VD_rec_g roup_date,
  8373                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  8374  
  8375  
  8376     EXCEPTIO N
  8377  
  8378       WHEN N O_DATA_FOU ND THEN
  8379  
  8380         NULL ;
  8381  
  8382       WHEN O THERS THEN
  8383  
  8384         VD_l og_date :=  SYSDATE;
  8385         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8386                                      PD_job_l og_date  = > VD_log_d ate,
  8387                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess logs .',1,60),
  8388                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  8389                                      PD_date1  => VD_rec _group_dat e,
  8390                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8391  
  8392     END;
  8393  
  8394   -- ******* ********** ********** ********** ********** ********** ********** ********
  8395   -- * Remov e old proc ess error  rows
  8396   -- ******* ********** ********** ********** ********** ********** ********** ********
  8397  
  8398     BEGIN
  8399  
  8400       VD_log _date := S YSDATE;
  8401       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8402                                    PD_job_log _date => V D_log_date ,
  8403                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  8404                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  8405                                                                   | | VN_parm_ log_file_a ge
  8406                                                                   | | ' days o ld',1,2000 ),
  8407                                    PD_date1 = > VD_rec_g roup_date,
  8408                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  8409  
  8410       DELETE
  8411       FROM       ADRMGT .Job_Proce ss_Errs
  8412       WHERE      Job_na me = CC_pr ocess_name
  8413       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  8414  
  8415       COMMIT ;
  8416  
  8417       VD_log _date := S YSDATE;
  8418       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8419                                    PD_job_log _date => V D_log_date ,
  8420                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  8421                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  8422                                                                   | | VN_parm_ log_file_a ge
  8423                                                                   | | ' days o ld',1,2000 ),
  8424                                    PD_date1 = > VD_rec_g roup_date,
  8425                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  8426  
  8427     EXCEPTIO N
  8428  
  8429       WHEN N O_DATA_FOU ND THEN
  8430  
  8431         NULL ;
  8432  
  8433       WHEN O THERS THEN
  8434  
  8435         VD_l og_date :=  SYSDATE;
  8436         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8437                                      PD_job_l og_date  = > VD_log_d ate,
  8438                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess erro rs.',1,60) ,
  8439                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  8440                                      PD_date1  => VD_rec _group_dat e,
  8441                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8442  
  8443     END;
  8444  
  8445   -- ******* ********** ********** ********** ********** ********** ********** ********
  8446   -- * Main  record cur sor logic
  8447   -- ******* ********** ********** ********** ********** ********** ********** ********
  8448  
  8449     BEGIN
  8450  
  8451       VN_max _log_id :=  0;
  8452       VN_pas s_count :=  0;
  8453       VN_upd ate_count  := 0;
  8454  
  8455       OPEN C _hl7_id;
  8456  
  8457       LOOP
  8458  
  8459         FETC H C_hl7_id
  8460         BULK  COLLECT I NTO T_hl7_ id
  8461         LIMI T VN_parm_ rows_to_pr ocess;
  8462  
  8463         EXIT  WHEN T_hl 7_id.COUNT  = 0;
  8464  
  8465         FORA LL I_hl7_i d IN T_hl7 _id.FIRST. .T_hl7_id. last
  8466           UP DATE    AD R.Hl7_tran saction_lo g
  8467           SE T       In ternal_err or_text =  NULL
  8468           WH ERE     Hl 7_transact ion_log_id  = T_hl7_i d(I_hl7_id );
  8469  
  8470         COMM IT;
  8471  
  8472         FOR  I_hl7_id I N T_hl7_id .FIRST..T_ hl7_id.las t LOOP
  8473  
  8474           IF  T_hl7_id( I_hl7_id)  > VN_max_l og_id THEN
  8475  
  8476              VN_max_log _id := T_h l7_id(I_hl 7_id);
  8477  
  8478           EN D IF;
  8479  
  8480         END  LOOP;
  8481  
  8482         VN_p ass_count  := VN_pass _count + 1 ;
  8483  
  8484         VN_u pdate_coun t := VN_up date_count  + T_hl7_i d.COUNT;
  8485  
  8486       END LO OP;
  8487  
  8488       CLOSE  C_hl7_id;
  8489  
  8490       BEGIN
  8491  
  8492         IF N VL(VN_max_ log_id,0)  <> 0 THEN
  8493  
  8494           UP DATE    AD RMGT.Adr_P arameter
  8495           SE T       Va lue = VN_m ax_log_id
  8496           WH ERE     Ap plication_ name = 'HL 7 NULL INT ERNAL_ERRO R_TEXT COL UMN'
  8497           AN D       Pa rameter_na me = VC_pa ra_name_la st_proc_id ;
  8498  
  8499           CO MMIT;
  8500  
  8501         ELSE
  8502  
  8503           VN _max_log_i d := VN_pa rm_last_lo g_id;
  8504  
  8505         END  IF;
  8506  
  8507       EXCEPT ION
  8508  
  8509         WHEN  OTHERS TH EN
  8510  
  8511           VD _log_date  := SYSDATE ;
  8512           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  8513                                        PD_job _log_date   => VD_log _date,
  8514                                        PC_job _status =>  SUBSTR('E RROR        - Unknown  error upd ating ' ||  VC_para_n ame_last_p roc_id ||  '.',1,60),
  8515                                        PC_job _log_messa ge => SUBS TR(VC_para _name_last _proc_id | | ': ' ||  VN_max_log _id
  8516                                                                        || '. '  || SQLERR M,1,2000),
  8517                                        PD_dat e1 => VD_r ec_group_d ate,
  8518                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  8519  
  8520           RE TURN;
  8521  
  8522       END;
  8523  
  8524   -- Process  completio n informat ion
  8525  
  8526       VD_log _date := S YSDATE;
  8527       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8528                                    PD_job_log _date => V D_log_date ,
  8529                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  8530                                    PD_date1 = > VD_rec_g roup_date,
  8531                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  8532                                    PN_numeric 2 => VN_pa ss_count,
  8533                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  8534  
  8535       VD_log _date := S YSDATE;
  8536       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8537                                    PD_job_log _date => V D_log_date ,
  8538                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  8539                                    PD_date1 = > VD_rec_g roup_date,
  8540                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  8541                                    PN_numeric 2 => VN_up date_count ,
  8542                                    PC_text2 = > SUBSTR(' Updated Re cord Count ',1,255));
  8543  
  8544       VD_log _date := S YSDATE;
  8545       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8546                                    PD_job_log _date => V D_log_date ,
  8547                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  8548                                    PD_date1 = > VD_rec_g roup_date,
  8549                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  8550                                    PN_numeric 2 => VN_ma x_log_id,
  8551                                    PC_text2 = > SUBSTR(' Last proce ssed log i d',1,255)) ;
  8552  
  8553       VD_pro cess_end_d ate := SYS DATE;
  8554       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  8555                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  8556                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  8557                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  8558                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  8559  
  8560       VD_log _date := S YSDATE;
  8561       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8562                                    PD_job_log _date => V D_log_date ,
  8563                                    PC_job_sta tus => SUB STR('SUCCE SS     - P rocessing  Completed' ,1,60),
  8564                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  8565                                    PD_date1 = > VD_rec_g roup_date,
  8566                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  8567  
  8568     EXCEPTIO N
  8569  
  8570       WHEN O THERS THEN
  8571  
  8572         VD_l og_date :=  SYSDATE;
  8573         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8574                                      PD_job_l og_date  = > VD_log_d ate,
  8575                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror updat ing Intern al_error_t ext.',1,60 ),
  8576                                      PC_job_l og_message  => SUBSTR ('Cursor L oop Count:  ' || VN_p ass_count
  8577                                                                      || ' Upda ted Record  Count: '  || VN_upda te_count
  8578                                                                      || '. ' | | SQLERRM, 1,2000),
  8579                                      PD_date1  => VD_rec _group_dat e,
  8580                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8581  
  8582         RETU RN;
  8583  
  8584     END;
  8585  
  8586   EXCEPTION
  8587  
  8588     WHEN OTH ERS THEN
  8589  
  8590       ROLLBA CK;
  8591  
  8592       VD_log _date := S YSDATE;
  8593       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8594                                    PD_job_err or_date  = > VD_log_d ate,
  8595                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  8596                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Hl7_Txn_Lo g_Null_Err _Col_Sp.'
  8597                                                                  ||  SQLERRM,1 ,2000),
  8598                                    PD_date1 = > VD_rec_g roup_date,
  8599                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  8600  
  8601       VD_log _date := S YSDATE;
  8602       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  8603                                    PD_job_log _date => V D_log_date ,
  8604                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  8605                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  8606                                    PD_date1 = > VD_rec_g roup_date,
  8607                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  8608  
  8609   END Hl7_Tx n_Log_Null _Err_Col_S p_07;
  8610   /
  8611   DROP PROCE DURE ADR.H L7_TXN_LOG _NULL_ERR_ COL_SP_02;
  8612  
  8613   CREATE OR  REPLACE PR OCEDURE AD R.Hl7_Txn_ Log_Null_E rr_Col_Sp_ 02 (
  8614      PB_run_ standalone     IN BOO LEAN DEFAU LT FALSE,
  8615      PB_allo w_rpt_inst     IN BOO LEAN DEFAU LT FALSE,
  8616      PN_rows _to_proces s   IN NUM BER DEFAUL T NULL)
  8617   IS
  8618      -- **** ********** ********** ********** ********** ********** ********** ********** *
  8619      -- * Pr ocedure: H l7_Txn_Log _Null_Erro r_Col
  8620      -- *
  8621      -- *    Update HL7  transcati ons to rem ove data f rom the in ternal_err or_text
  8622      -- *    column for  all rows  more than  6 months o ld.
  8623      -- *
  8624      -- * Pa rameters:
  8625      -- *
  8626      -- *  P B_run_stan dalone   I gnore DBMS _JOB logic  for check ing runnin g jobs.
  8627      -- *                          Default: F ALSE
  8628      -- *
  8629      -- *  P B_allow_rp t_inst   A llow store d procedur e to be su bmitted in  the
  8630      -- *                        D BMS_JOB qu eue on the  ADR repor ting datab ases
  8631      -- *                          Default: F ALSE
  8632      -- *
  8633      -- **** ********** ********** ********** ********** ********** ********** ********** *
  8634      --
  8635      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  8636      -- Date         Au thor             Desc ription
  8637      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  8638      -- 06/2 3/2010  Cr aig Wood         Crea ted for CC R 1100.
  8639      --
  8640      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  8641  
  8642      -- CONS TANTS
  8643  
  8644      CC_no                                  V ARCHAR2 (1 ) := 'N';
  8645      CC_parm _applicati on_name    CONSTANT V ARCHAR2 (8 0)
  8646         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  8647      CC_parm _hl7_err_t xt_age     CONSTANT V ARCHAR2 (5 0)
  8648                                                 := 'OLDE ST HL7 ERR OR TEXT DA YS' ;
  8649      CC_parm _last_hl7_ id         CONSTANT V ARCHAR2 (5 0)
  8650                                                 := 'LAST  HL7 ID PR OCESSED' ;
  8651      CC_parm _log_file_ age        CONSTANT V ARCHAR2 (5 0)
  8652                                                 := 'OLDE ST LOG FIL E DAYS' ;
  8653      CC_proc ess_name              CONSTANT V ARCHAR2 (6 0)
  8654         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  8655      CC_sp_n ame                   CONSTANT V ARCHAR2 (3 5)
  8656         := ' Hl7_Txn_Lo g_Null_Err _Col_Sp_'  || '02' ;
  8657      CC_yes                                 V ARCHAR2 (1 ) := 'Y';
  8658  
  8659      -- VARI ABLES
  8660  
  8661      VB_allo w_rpt_inst                     B OOLEAN :=  FALSE;
  8662      VB_run_ standalone                     B OOLEAN :=  FALSE;
  8663  
  8664      VC_allo w_rpt_inst                     V ARCHAR2 (5 ) := NULL;
  8665      VC_inst ance_name                      V ARCHAR2 (1 6);
  8666      VC_proc ess_durati on                  V ARCHAR2 (2 5);
  8667      VC_run_ standalone                     V ARCHAR2 (5 ) := NULL;
  8668      VC_sql_ statement                      V ARCHAR2 (2 000);
  8669      VC_para _name_last _proc_id            V ARCHAR2 (3 0):= 'P' | | '02' ||  ' LAST PRO CESSED LOG  ID';
  8670  
  8671     VD_log_d ate                            D ATE;
  8672     VD_proce ss_end_dat e                   D ATE;
  8673     VD_proce ss_start_d ate                 D ATE;
  8674     VD_rec_g roup_date                      D ATE;
  8675  
  8676     VN_job_c ount                           N UMBER := 0 ;
  8677     VN_job_n umber                          N UMBER;
  8678     VN_max_l og_id                          N UMBER := 0 ;
  8679     VN_parm_ hl7_err_tx t_age               N UMBER;
  8680     VN_parm_ log_file_a ge                  N UMBER;
  8681     VN_parm_ last_log_i d                   N UMBER := 0 ;
  8682     VN_parm_ rows_to_pr ocess               N UMBER;
  8683     VN_pass_ count                          N UMBER := 0 ;
  8684     VN_rec_c ount                           N UMBER := 0 ;
  8685     VN_updat e_count                        N UMBER := 0 ;
  8686  
  8687  
  8688   -- CURSORS
  8689  
  8690     CURSOR C _hl7_id IS
  8691       SELECT   /*+ para llel(4) */  Hl7_trans action_log _id
  8692       FROM       Hl7_tr ansaction_ log PARTIT ION (HL7_T RANSACTION _LOG_P02)
  8693       WHERE      Hl7_tr ansaction_ log_id > V N_parm_las t_log_id
  8694       AND        Transm ission_dat e < TRUNC( SYSDATE) -  VN_parm_h l7_err_txt _age
  8695       AND        Intern al_error_t ext IS NOT  NULL;
  8696  
  8697   -- TYPES
  8698  
  8699     TYPE TT_ hl7_id IS
  8700       TABLE  OF ADR.Hl7 _Transacti on_Log.Hl7 _transacti on_log_id% TYPE;
  8701  
  8702   -- MEMORY  TABLES
  8703  
  8704     T_hl7_id                                T T_hl7_id;
  8705  
  8706   -- ******* ********** ********** ********** ********** ********** ********** *******
  8707   -- *
  8708   -- *  MAIN  PROCEDURE :
  8709   -- *
  8710   -- ******* ********** ********** ********** ********** ********** ********** *******
  8711  
  8712   BEGIN
  8713  
  8714     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  8715     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  8716  
  8717     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  8718     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  8719  
  8720     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  8721     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  8722  
  8723     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  8724     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  8725  
  8726     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  QUERY PARA LLEL ' ||   2;
  8727     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  8728  
  8729     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  DML PARALL EL ' || 2;
  8730     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  8731  
  8732  
  8733     VC_sql_s tatement:= 'ALTER SES SION SET p arallel_fo rce_local= TRUE';      --  force  parallel  to a local  node
  8734     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  8735  
  8736     VD_rec_g roup_date  := TRUNC(S YSDATE);
  8737  
  8738     VD_log_d ate := SYS DATE;
  8739     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  8740                                 PD _job_log_d ate => VD_ log_date,
  8741                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  8742                                 PD _date1 =>  VD_rec_gro up_date,
  8743                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  8744  
  8745   -- ******* ********** ********** ********** ********** ********** ********** ********
  8746   -- *
  8747   -- * Valid ate input  parameters
  8748   -- *
  8749   -- ******* ********** ********** ********** ********** ********** ********** ********
  8750  
  8751   -- * Check  run stand alone flag
  8752  
  8753     IF PB_ru n_standalo ne IS NULL
  8754      OR NOT  PB_run_sta ndalone TH EN
  8755  
  8756       VB_run _standalon e := FALSE ;
  8757       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  8758  
  8759     ELSE
  8760  
  8761       VB_run _standalon e := TRUE;
  8762       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  8763  
  8764     END IF;
  8765  
  8766   -- * Check  run on re port insta nce flag
  8767  
  8768     IF PB_al low_rpt_in st IS NULL
  8769      OR NOT  PB_allow_r pt_inst TH EN
  8770  
  8771       VB_all ow_rpt_ins t := FALSE ;
  8772       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  8773  
  8774     ELSE
  8775  
  8776       VB_all ow_rpt_ins t := TRUE;
  8777       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  8778  
  8779     END IF;
  8780  
  8781   -- ******* ********** ********** ********** ********** ********** ********** ********
  8782   -- *
  8783   -- * Retri eve proces sing param eters
  8784   -- *
  8785   -- ******* ********** ********** ********** ********** ********** ********** ********
  8786  
  8787   -- Process  Parameter  OLDEST HL 7 ERROR TE XT DAYS KE PT
  8788  
  8789     BEGIN
  8790  
  8791       SELECT     Value
  8792       INTO       VN_par m_hl7_err_ txt_age
  8793       FROM       ADRMGT .Adr_Param eter
  8794       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  8795       AND        Parame ter_name =  'OLDEST H L7 ERROR T EXT DAYS K EPT';
  8796  
  8797       IF VN_ parm_hl7_e rr_txt_age  IS NULL T HEN
  8798  
  8799         VD_l og_date :=  SYSDATE;
  8800         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8801                                      PD_job_l og_date =>  VD_log_da te,
  8802                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8803                                      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),
  8804                                      PD_date1  => VD_rec _group_dat e,
  8805                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8806  
  8807         RETU RN;
  8808  
  8809       END IF ;
  8810  
  8811     EXCEPTIO N
  8812  
  8813       WHEN N O_DATA_FOU ND THEN
  8814  
  8815         VD_l og_date :=  SYSDATE;
  8816         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8817                                      PD_job_l og_date =>  VD_log_da te,
  8818                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8819                                      PC_job_l og_message  => 'Param eter for O LDEST HL7  ERROR TEXT  DAYS KEPT  was not f ound. Term inating pr ocess.',
  8820                                      PD_date1  => VD_rec _group_dat e,
  8821                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8822  
  8823         RETU RN;
  8824  
  8825       WHEN O THERS 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 ('Unknown  error retr ieving par ameter for  OLDEST HL 7 ERROR TE XT DAYS KE PT. Termin ating proc ess. '
  8832                                                                      || SQLERR M,1,2000),
  8833                                      PD_date1  => VD_rec _group_dat e,
  8834                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8835  
  8836         RETU RN;
  8837  
  8838     END;
  8839  
  8840   -- Process  Parameter  OLDEST LO G FILE DAY S KEPT
  8841  
  8842     BEGIN
  8843  
  8844       SELECT     Value
  8845       INTO       VN_par m_log_file _age
  8846       FROM       ADRMGT .Adr_Param eter
  8847       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  8848       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  8849  
  8850       IF VN_ parm_log_f ile_age IS  NULL THEN
  8851  
  8852         VD_l og_date :=  SYSDATE;
  8853         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8854                                      PD_job_l og_date =>  VD_log_da te,
  8855                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8856                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST L OG FILE DA YS KEPT is  NULL. Ter minating p rocess.',1 ,2000),
  8857                                      PD_date1  => VD_rec _group_dat e,
  8858                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8859  
  8860         RETU RN;
  8861  
  8862       END IF ;
  8863  
  8864     EXCEPTIO N
  8865  
  8866       WHEN N O_DATA_FOU ND THEN
  8867  
  8868         VD_l og_date :=  SYSDATE;
  8869         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8870                                      PD_job_l og_date =>  VD_log_da te,
  8871                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8872                                      PC_job_l og_message  => 'Param eter for O LDEST LOG  FILE DAYS  KEPT was n ot found.  Terminatin g process. ',
  8873                                      PD_date1  => VD_rec _group_dat e,
  8874                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8875  
  8876         RETU RN;
  8877  
  8878       WHEN O THERS THEN
  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 ('Unknown  error retr ieving par ameter for  OLDEST LO G FILE DAY S KEPT. Te rminating  process. '
  8885                                                                      || SQLERR M,1,2000),
  8886                                      PD_date1  => VD_rec _group_dat e,
  8887                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8888  
  8889         RETU RN;
  8890  
  8891     END;
  8892  
  8893   -- Process  Parameter  ROWS TO P ROCESS
  8894  
  8895     BEGIN
  8896  
  8897       SELECT     Value
  8898       INTO       VN_par m_rows_to_ process
  8899       FROM       ADRMGT .Adr_Param eter
  8900       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  8901       AND        Parame ter_name =  'ROWS TO  PROCESS';
  8902  
  8903       IF VN_ parm_rows_ to_process  IS NULL T HEN
  8904  
  8905         VD_l og_date :=  SYSDATE;
  8906         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8907                                      PD_job_l og_date =>  VD_log_da te,
  8908                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8909                                      PC_job_l og_message  => SUBSTR ('Paramete r ROWS TO  PROCESS is  NULL. Ter minating p rocess.',1 ,2000),
  8910                                      PD_date1  => VD_rec _group_dat e,
  8911                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8912  
  8913         RETU RN;
  8914  
  8915       END IF ;
  8916  
  8917     EXCEPTIO N
  8918  
  8919       WHEN N O_DATA_FOU ND THEN
  8920  
  8921         VD_l og_date :=  SYSDATE;
  8922         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8923                                      PD_job_l og_date =>  VD_log_da te,
  8924                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8925                                      PC_job_l og_message  => 'Param eter for R OWS TO PRO CESS was n ot found.  Terminatin g process. ',
  8926                                      PD_date1  => VD_rec _group_dat e,
  8927                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8928  
  8929         RETU RN;
  8930  
  8931       WHEN O THERS 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 ('Unknown  error retr ieving par ameter for  ROWS TO P ROCESS. Te rminating  process. '
  8938                                                                      || SQLERR M,1,2000),
  8939                                      PD_date1  => VD_rec _group_dat e,
  8940                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8941  
  8942         RETU RN;
  8943  
  8944     END;
  8945  
  8946   -- Process  Parameter  LAST PROC ESSED LOG  ID
  8947  
  8948     BEGIN
  8949  
  8950       SELECT     Value
  8951       INTO       VN_par m_last_log _id
  8952       FROM       ADRMGT .Adr_Param eter
  8953       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  8954       AND        Parame ter_name =  VC_para_n ame_last_p roc_id;
  8955  
  8956       IF VN_ parm_last_ log_id IS  NULL THEN
  8957  
  8958         VD_l og_date :=  SYSDATE;
  8959         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8960                                      PD_job_l og_date =>  VD_log_da te,
  8961                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8962                                      PC_job_l og_message  => SUBSTR ('Paramete r ' || VC_ para_name_ last_proc_ id || ' is  NULL. Ter minating p rocess.',1 ,2000),
  8963                                      PD_date1  => VD_rec _group_dat e,
  8964                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8965  
  8966         RETU RN;
  8967  
  8968       END IF ;
  8969  
  8970     EXCEPTIO N
  8971  
  8972       WHEN N O_DATA_FOU ND THEN
  8973  
  8974         VD_l og_date :=  SYSDATE;
  8975         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8976                                      PD_job_l og_date =>  VD_log_da te,
  8977                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8978                                      PC_job_l og_message  => 'Param eter for '  || VC_par a_name_las t_proc_id  || ' was n ot found.  Terminatin g process. ',
  8979                                      PD_date1  => VD_rec _group_dat e,
  8980                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8981  
  8982         RETU RN;
  8983  
  8984       WHEN O THERS THEN
  8985  
  8986         VD_l og_date :=  SYSDATE;
  8987         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  8988                                      PD_job_l og_date =>  VD_log_da te,
  8989                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  8990                                      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. '
  8991                                                                      || SQLERR M,1,2000),
  8992                                      PD_date1  => VD_rec _group_dat e,
  8993                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  8994  
  8995         RETU RN;
  8996  
  8997     END;
  8998  
  8999   -- Write o ut Paramet er log mes sages for  submitted  job
  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  submissio n paramete rs',1,60),
  9005                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,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  submissio n paramete rs',1,60),
  9013                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 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  submissio n paramete rs',1,60),
  9021                                 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),
  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  
  9026     VD_log_d ate := SYS DATE;
  9027     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9028                                 PD _job_log_d ate => VD_ log_date,
  9029                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  9030                                 PC _job_log_m essage =>  SUBSTR(' O LDEST HL7  ERROR TEXT  DAYS KEPT : ' || VN_ parm_hl7_e rr_txt_age ,1,2000),
  9031                                 PD _date1 =>  VD_rec_gro up_date,
  9032                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9033  
  9034     VD_log_d ate := SYS DATE;
  9035     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9036                                 PD _job_log_d ate => VD_ log_date,
  9037                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  9038                                 PC _job_log_m essage =>  SUBSTR(' O LDEST LOG  FILE DAYS  KEPT: ' ||  VN_parm_l og_file_ag e,1,2000),
  9039                                 PD _date1 =>  VD_rec_gro up_date,
  9040                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9041  
  9042     VD_log_d ate := SYS DATE;
  9043     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9044                                 PD _job_log_d ate => VD_ log_date,
  9045                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  9046                                 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),
  9047                                 PD _date1 =>  VD_rec_gro up_date,
  9048                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9049  
  9050     VD_log_d ate := SYS DATE;
  9051     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9052                                 PD _job_log_d ate => VD_ log_date,
  9053                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  9054                                 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),
  9055                                 PD _date1 =>  VD_rec_gro up_date,
  9056                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9057  
  9058   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  9059  
  9060     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  9061  
  9062       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  9063  
  9064       VD_log _date := S YSDATE;
  9065       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9066                                    PD_job_log _date => V D_log_date ,
  9067                                    PC_job_sta tus => SUB STR('WARNI NG     - J ob table p arameters' ,1,60),
  9068                                    PC_job_log _message = > SUBSTR('  Processin g paramete r ROWS TO  PROCESS (i n each loo p) has bee n overridd en.'
  9069                                                              || ' T he overrid e value is : ' || NVL (TO_CHAR(V N_parm_row s_to_proce ss),'NULL' ),1,2000),
  9070                                    PD_date1 = > VD_rec_g roup_date,
  9071                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  9072  
  9073     END IF;
  9074  
  9075   -- ******* ********** ********** ********** ********** ********** ********** ********
  9076   -- *
  9077   -- * Check  to see if  process i s running  on a repor ting datab ase.
  9078   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  9079   -- *
  9080   -- ******* ********** ********** ********** ********** ********** ********** ********
  9081  
  9082     IF NOT V B_allow_rp t_inst THE N
  9083  
  9084       BEGIN
  9085  
  9086         VD_l og_date :=  SYSDATE;
  9087         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9088                                      PD_job_l og_date =>  VD_log_da te,
  9089                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  9090                                      PD_date1  => VD_rec _group_dat e,
  9091                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9092  
  9093         SELE CT    Inst ance_name
  9094         INTO       VC_i nstance_na me
  9095         FROM       V$in stance;
  9096  
  9097         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  9098  
  9099           VD _log_date  := SYSDATE ;
  9100           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  9101                                        PD_job _log_date  => VD_log_ date,
  9102                                        PC_job _status =>  SUBSTR('E RROR        - Process ing Failed ',1,60),
  9103                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  9104                                                                     || VC_inst ance_name
  9105                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  9106                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  9107                                        PD_dat e1 => VD_r ec_group_d ate,
  9108                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  9109  
  9110           RE TURN;
  9111  
  9112         END  IF;
  9113  
  9114       EXCEPT ION
  9115  
  9116         WHEN  OTHERS TH EN
  9117  
  9118           VD _log_date  := SYSDATE ;
  9119           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  9120                                        PD_job _log_date  => VD_log_ date,
  9121                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  9122                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  9123                                        PD_dat e1 => VD_r ec_group_d ate,
  9124                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  9125  
  9126           RE TURN;
  9127  
  9128       END;
  9129  
  9130     END IF;
  9131  
  9132   -- ******* ********** ********** ********** ********** ********** ********** ********
  9133   -- *
  9134   -- * Check  to see if  the job h as already  run today
  9135   -- *  - If  running i n stand-al one mode,  don't chec k.
  9136   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  9137   -- *
  9138   -- ******* ********** ********** ********** ********** ********** ********** ********
  9139  
  9140     IF NOT P B_run_stan dalone THE N
  9141  
  9142       BEGIN
  9143  
  9144         VD_l og_date :=  SYSDATE;
  9145         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9146                                      PD_job_l og_date =>  VD_log_da te,
  9147                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  9148                                      PD_date1  => VD_rec _group_dat e,
  9149                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9150  
  9151         SELE CT    COUN T(*)
  9152         INTO       VN_r ec_count
  9153         FROM       ADRM GT.Job_Pro cess_Logs
  9154         WHER E     Job_ name = CC_ process_na me
  9155         AND        Date 1 = VD_rec _group_dat e
  9156         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  9157  
  9158         IF V N_rec_coun t > 0 THEN
  9159  
  9160           VD _log_date  := SYSDATE ;
  9161           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  9162                                        PD_job _log_date  => VD_log_ date,
  9163                                        PC_job _status =>  SUBSTR('W ARNING      - This da te has alr eady been  processed' ,1,60),
  9164                                        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),
  9165                                        PD_dat e1 => VD_r ec_group_d ate,
  9166                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  9167  
  9168           RE TURN;
  9169  
  9170         END  IF;
  9171  
  9172       EXCEPT ION
  9173  
  9174         WHEN  OTHERS TH EN
  9175  
  9176           VD _log_date  := SYSDATE ;
  9177           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  9178                                        PD_job _log_date  => VD_log_ date,
  9179                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  9180                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  9181                                        PD_dat e1 => VD_r ec_group_d ate,
  9182                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  9183  
  9184           RE TURN;
  9185  
  9186       END;
  9187  
  9188     END IF;
  9189  
  9190   -- ******* ********** ********** ********** ********** ********** ********** ********
  9191   -- *
  9192   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  9193   -- *  - If  yes, then  end this  job.
  9194   -- *
  9195   -- ******* ********** ********** ********** ********** ********** ********** ********
  9196  
  9197     SELECT C OUNT(*)
  9198     INTO   V N_job_coun t
  9199     FROM   S YS.DBA_JOB S_RUNNING  R,
  9200            S YS.DBA_JOB S J
  9201     WHERE  J .JOB = R.J OB
  9202     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  9203  
  9204     IF VN_jo b_count >  1 THEN
  9205  
  9206       VD_log _date := S YSDATE;
  9207       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9208                                    PD_job_log _date => V D_log_date ,
  9209                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  9210                                    PC_job_log _message = > SUBSTR(' There is a nother '
  9211                                                                || C C_sp_name
  9212                                                                || '  job runni ng.'
  9213                                                                || '  Exiting j ob without  running.' ,1,2000),
  9214                                    PD_date1 = > VD_rec_g roup_date,
  9215                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  9216  
  9217       RETURN ;
  9218  
  9219     ELSE
  9220  
  9221       IF VB_ run_standa lone THEN
  9222  
  9223         VD_l og_date :=  SYSDATE;
  9224         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9225                                      PD_job_l og_date =>  VD_log_da te,
  9226                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  9227                                      PD_date1  => VD_rec _group_dat e,
  9228                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9229  
  9230       ELSE
  9231  
  9232         SELE CT    MAX( J.Job)
  9233         INTO       VN_j ob_number
  9234         FROM       SYS. DBA_JOBS_R UNNING R,
  9235                    SYS. DBA_JOBS J
  9236         WHER E     J.JO B = R.JOB
  9237         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  9238  
  9239         VD_l og_date :=  SYSDATE;
  9240         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9241                                      PD_job_l og_date =>  VD_log_da te,
  9242                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  9243                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  9244                                                                      || VN_job _number,1, 2000),
  9245                                      PD_date1  => VD_rec _group_dat e,
  9246                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9247  
  9248       END IF ;
  9249  
  9250     END IF;
  9251  
  9252   -- ******* ********** ********** ********** ********** ********** ********** ********
  9253   -- *
  9254   -- * Main  processing  loop
  9255   -- *
  9256   -- ******* ********** ********** ********** ********** ********** ********** ********
  9257  
  9258     VN_pass_ count := 0 ;
  9259     VN_updat e_count :=  0;
  9260     VD_proce ss_start_d ate := SYS DATE;
  9261  
  9262   -- ******* ********** ********** ********** ********** ********** ********** ********
  9263   -- * Remov e old proc ess log ro ws
  9264   -- ******* ********** ********** ********** ********** ********** ********** ********
  9265     BEGIN
  9266  
  9267       VD_log _date := S YSDATE;
  9268       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9269                                    PD_job_log _date => V D_log_date ,
  9270                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  9271                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  9272                                                                   | | VN_parm_ log_file_a ge
  9273                                                                   | | ' days o ld',1,2000 ),
  9274                                    PD_date1 = > VD_rec_g roup_date,
  9275                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  9276  
  9277       DELETE
  9278       FROM       ADRMGT .Job_Proce ss_Logs
  9279       WHERE      Job_na me = CC_pr ocess_name
  9280       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  9281  
  9282       COMMIT ;
  9283  
  9284       VD_log _date := S YSDATE;
  9285       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9286                                    PD_job_log _date => V D_log_date ,
  9287                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  9288                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  9289                                                                   | | VN_parm_ log_file_a ge
  9290                                                                   | | ' days o ld',1,2000 ),
  9291                                    PD_date1 = > VD_rec_g roup_date,
  9292                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  9293  
  9294  
  9295     EXCEPTIO N
  9296  
  9297       WHEN N O_DATA_FOU ND THEN
  9298  
  9299         NULL ;
  9300  
  9301       WHEN O THERS THEN
  9302  
  9303         VD_l og_date :=  SYSDATE;
  9304         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9305                                      PD_job_l og_date  = > VD_log_d ate,
  9306                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess logs .',1,60),
  9307                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  9308                                      PD_date1  => VD_rec _group_dat e,
  9309                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9310  
  9311     END;
  9312  
  9313   -- ******* ********** ********** ********** ********** ********** ********** ********
  9314   -- * Remov e old proc ess error  rows
  9315   -- ******* ********** ********** ********** ********** ********** ********** ********
  9316  
  9317     BEGIN
  9318  
  9319       VD_log _date := S YSDATE;
  9320       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9321                                    PD_job_log _date => V D_log_date ,
  9322                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  9323                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  9324                                                                   | | VN_parm_ log_file_a ge
  9325                                                                   | | ' days o ld',1,2000 ),
  9326                                    PD_date1 = > VD_rec_g roup_date,
  9327                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  9328  
  9329       DELETE
  9330       FROM       ADRMGT .Job_Proce ss_Errs
  9331       WHERE      Job_na me = CC_pr ocess_name
  9332       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  9333  
  9334       COMMIT ;
  9335  
  9336       VD_log _date := S YSDATE;
  9337       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9338                                    PD_job_log _date => V D_log_date ,
  9339                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  9340                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  9341                                                                   | | VN_parm_ log_file_a ge
  9342                                                                   | | ' days o ld',1,2000 ),
  9343                                    PD_date1 = > VD_rec_g roup_date,
  9344                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  9345  
  9346     EXCEPTIO N
  9347  
  9348       WHEN N O_DATA_FOU ND THEN
  9349  
  9350         NULL ;
  9351  
  9352       WHEN O THERS THEN
  9353  
  9354         VD_l og_date :=  SYSDATE;
  9355         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9356                                      PD_job_l og_date  = > VD_log_d ate,
  9357                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess erro rs.',1,60) ,
  9358                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  9359                                      PD_date1  => VD_rec _group_dat e,
  9360                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9361  
  9362     END;
  9363  
  9364   -- ******* ********** ********** ********** ********** ********** ********** ********
  9365   -- * Main  record cur sor logic
  9366   -- ******* ********** ********** ********** ********** ********** ********** ********
  9367  
  9368     BEGIN
  9369  
  9370       VN_max _log_id :=  0;
  9371       VN_pas s_count :=  0;
  9372       VN_upd ate_count  := 0;
  9373  
  9374       OPEN C _hl7_id;
  9375  
  9376       LOOP
  9377  
  9378         FETC H C_hl7_id
  9379         BULK  COLLECT I NTO T_hl7_ id
  9380         LIMI T VN_parm_ rows_to_pr ocess;
  9381  
  9382         EXIT  WHEN T_hl 7_id.COUNT  = 0;
  9383  
  9384         FORA LL I_hl7_i d IN T_hl7 _id.FIRST. .T_hl7_id. last
  9385           UP DATE    AD R.Hl7_tran saction_lo g
  9386           SE T       In ternal_err or_text =  NULL
  9387           WH ERE     Hl 7_transact ion_log_id  = T_hl7_i d(I_hl7_id );
  9388  
  9389         COMM IT;
  9390  
  9391         FOR  I_hl7_id I N T_hl7_id .FIRST..T_ hl7_id.las t LOOP
  9392  
  9393           IF  T_hl7_id( I_hl7_id)  > VN_max_l og_id THEN
  9394  
  9395              VN_max_log _id := T_h l7_id(I_hl 7_id);
  9396  
  9397           EN D IF;
  9398  
  9399         END  LOOP;
  9400  
  9401         VN_p ass_count  := VN_pass _count + 1 ;
  9402  
  9403         VN_u pdate_coun t := VN_up date_count  + T_hl7_i d.COUNT;
  9404  
  9405       END LO OP;
  9406  
  9407       CLOSE  C_hl7_id;
  9408  
  9409       BEGIN
  9410  
  9411         IF N VL(VN_max_ log_id,0)  <> 0 THEN
  9412  
  9413           UP DATE    AD RMGT.Adr_P arameter
  9414           SE T       Va lue = VN_m ax_log_id
  9415           WH ERE     Ap plication_ name = 'HL 7 NULL INT ERNAL_ERRO R_TEXT COL UMN'
  9416           AN D       Pa rameter_na me = VC_pa ra_name_la st_proc_id ;
  9417  
  9418           CO MMIT;
  9419  
  9420         ELSE
  9421  
  9422           VN _max_log_i d := VN_pa rm_last_lo g_id;
  9423  
  9424         END  IF;
  9425  
  9426       EXCEPT ION
  9427  
  9428         WHEN  OTHERS TH EN
  9429  
  9430           VD _log_date  := SYSDATE ;
  9431           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  9432                                        PD_job _log_date   => VD_log _date,
  9433                                        PC_job _status =>  SUBSTR('E RROR        - Unknown  error upd ating ' ||  VC_para_n ame_last_p roc_id ||  '.',1,60),
  9434                                        PC_job _log_messa ge => SUBS TR(VC_para _name_last _proc_id | | ': ' ||  VN_max_log _id
  9435                                                                        || '. '  || SQLERR M,1,2000),
  9436                                        PD_dat e1 => VD_r ec_group_d ate,
  9437                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  9438  
  9439           RE TURN;
  9440  
  9441       END;
  9442  
  9443   -- Process  completio n informat ion
  9444  
  9445       VD_log _date := S YSDATE;
  9446       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9447                                    PD_job_log _date => V D_log_date ,
  9448                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  9449                                    PD_date1 = > VD_rec_g roup_date,
  9450                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  9451                                    PN_numeric 2 => VN_pa ss_count,
  9452                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  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('INFOR MATION - P rocess Sta tistics',1 ,60),
  9458                                    PD_date1 = > VD_rec_g roup_date,
  9459                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  9460                                    PN_numeric 2 => VN_up date_count ,
  9461                                    PC_text2 = > SUBSTR(' Updated Re cord Count ',1,255));
  9462  
  9463       VD_log _date := S YSDATE;
  9464       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9465                                    PD_job_log _date => V D_log_date ,
  9466                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  9467                                    PD_date1 = > VD_rec_g roup_date,
  9468                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  9469                                    PN_numeric 2 => VN_ma x_log_id,
  9470                                    PC_text2 = > SUBSTR(' Last proce ssed log i d',1,255)) ;
  9471  
  9472       VD_pro cess_end_d ate := SYS DATE;
  9473       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  9474                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  9475                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  9476                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  9477                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  9478  
  9479       VD_log _date := S YSDATE;
  9480       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9481                                    PD_job_log _date => V D_log_date ,
  9482                                    PC_job_sta tus => SUB STR('SUCCE SS     - P rocessing  Completed' ,1,60),
  9483                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  9484                                    PD_date1 = > VD_rec_g roup_date,
  9485                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  9486  
  9487     EXCEPTIO N
  9488  
  9489       WHEN O THERS THEN
  9490  
  9491         VD_l og_date :=  SYSDATE;
  9492         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9493                                      PD_job_l og_date  = > VD_log_d ate,
  9494                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror updat ing Intern al_error_t ext.',1,60 ),
  9495                                      PC_job_l og_message  => SUBSTR ('Cursor L oop Count:  ' || VN_p ass_count
  9496                                                                      || ' Upda ted Record  Count: '  || VN_upda te_count
  9497                                                                      || '. ' | | SQLERRM, 1,2000),
  9498                                      PD_date1  => VD_rec _group_dat e,
  9499                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9500  
  9501         RETU RN;
  9502  
  9503     END;
  9504  
  9505   EXCEPTION
  9506  
  9507     WHEN OTH ERS THEN
  9508  
  9509       ROLLBA CK;
  9510  
  9511       VD_log _date := S YSDATE;
  9512       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9513                                    PD_job_err or_date  = > VD_log_d ate,
  9514                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  9515                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Hl7_Txn_Lo g_Null_Err _Col_Sp.'
  9516                                                                  ||  SQLERRM,1 ,2000),
  9517                                    PD_date1 = > VD_rec_g roup_date,
  9518                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  9519  
  9520       VD_log _date := S YSDATE;
  9521       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9522                                    PD_job_log _date => V D_log_date ,
  9523                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  9524                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  9525                                    PD_date1 = > VD_rec_g roup_date,
  9526                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  9527  
  9528   END Hl7_Tx n_Log_Null _Err_Col_S p_02;
  9529   /
  9530   DROP PROCE DURE ADR.H L7_TXN_LOG _NULL_ERR_ COL_SP_03;
  9531  
  9532   CREATE OR  REPLACE PR OCEDURE AD R.Hl7_Txn_ Log_Null_E rr_Col_Sp_ 03 (
  9533      PB_run_ standalone     IN BOO LEAN DEFAU LT FALSE,
  9534      PB_allo w_rpt_inst     IN BOO LEAN DEFAU LT FALSE,
  9535      PN_rows _to_proces s   IN NUM BER DEFAUL T NULL)
  9536   IS
  9537      -- **** ********** ********** ********** ********** ********** ********** ********** *
  9538      -- * Pr ocedure: H l7_Txn_Log _Null_Erro r_Col
  9539      -- *
  9540      -- *    Update HL7  transcati ons to rem ove data f rom the in ternal_err or_text
  9541      -- *    column for  all rows  more than  6 months o ld.
  9542      -- *
  9543      -- * Pa rameters:
  9544      -- *
  9545      -- *  P B_run_stan dalone   I gnore DBMS _JOB logic  for check ing runnin g jobs.
  9546      -- *                          Default: F ALSE
  9547      -- *
  9548      -- *  P B_allow_rp t_inst   A llow store d procedur e to be su bmitted in  the
  9549      -- *                        D BMS_JOB qu eue on the  ADR repor ting datab ases
  9550      -- *                          Default: F ALSE
  9551      -- *
  9552      -- **** ********** ********** ********** ********** ********** ********** ********** *
  9553      --
  9554      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  9555      -- Date         Au thor             Desc ription
  9556      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  9557      -- 06/2 3/2010  Cr aig Wood         Crea ted for CC R 1100.
  9558      --
  9559      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  9560  
  9561      -- CONS TANTS
  9562  
  9563      CC_no                                  V ARCHAR2 (1 ) := 'N';
  9564      CC_parm _applicati on_name    CONSTANT V ARCHAR2 (8 0)
  9565         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  9566      CC_parm _hl7_err_t xt_age     CONSTANT V ARCHAR2 (5 0)
  9567                                                 := 'OLDE ST HL7 ERR OR TEXT DA YS' ;
  9568      CC_parm _last_hl7_ id         CONSTANT V ARCHAR2 (5 0)
  9569                                                 := 'LAST  HL7 ID PR OCESSED' ;
  9570      CC_parm _log_file_ age        CONSTANT V ARCHAR2 (5 0)
  9571                                                 := 'OLDE ST LOG FIL E DAYS' ;
  9572      CC_proc ess_name              CONSTANT V ARCHAR2 (6 0)
  9573         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  9574      CC_sp_n ame                   CONSTANT V ARCHAR2 (3 5)
  9575         := ' Hl7_Txn_Lo g_Null_Err _Col_Sp_'  || '03' ;
  9576      CC_yes                                 V ARCHAR2 (1 ) := 'Y';
  9577  
  9578      -- VARI ABLES
  9579  
  9580      VB_allo w_rpt_inst                     B OOLEAN :=  FALSE;
  9581      VB_run_ standalone                     B OOLEAN :=  FALSE;
  9582  
  9583      VC_allo w_rpt_inst                     V ARCHAR2 (5 ) := NULL;
  9584      VC_inst ance_name                      V ARCHAR2 (1 6);
  9585      VC_proc ess_durati on                  V ARCHAR2 (2 5);
  9586      VC_run_ standalone                     V ARCHAR2 (5 ) := NULL;
  9587      VC_sql_ statement                      V ARCHAR2 (2 000);
  9588      VC_para _name_last _proc_id            V ARCHAR2 (3 0):= 'P' | | '03' ||  ' LAST PRO CESSED LOG  ID';
  9589  
  9590     VD_log_d ate                            D ATE;
  9591     VD_proce ss_end_dat e                   D ATE;
  9592     VD_proce ss_start_d ate                 D ATE;
  9593     VD_rec_g roup_date                      D ATE;
  9594  
  9595     VN_job_c ount                           N UMBER := 0 ;
  9596     VN_job_n umber                          N UMBER;
  9597     VN_max_l og_id                          N UMBER := 0 ;
  9598     VN_parm_ hl7_err_tx t_age               N UMBER;
  9599     VN_parm_ log_file_a ge                  N UMBER;
  9600     VN_parm_ last_log_i d                   N UMBER := 0 ;
  9601     VN_parm_ rows_to_pr ocess               N UMBER;
  9602     VN_pass_ count                          N UMBER := 0 ;
  9603     VN_rec_c ount                           N UMBER := 0 ;
  9604     VN_updat e_count                        N UMBER := 0 ;
  9605  
  9606  
  9607   -- CURSORS
  9608  
  9609     CURSOR C _hl7_id IS
  9610       SELECT   /*+ para llel(4) */  Hl7_trans action_log _id
  9611       FROM       Hl7_tr ansaction_ log PARTIT ION (HL7_T RANSACTION _LOG_P03)
  9612       WHERE      Hl7_tr ansaction_ log_id > V N_parm_las t_log_id
  9613       AND        Transm ission_dat e < TRUNC( SYSDATE) -  VN_parm_h l7_err_txt _age
  9614       AND        Intern al_error_t ext IS NOT  NULL;
  9615  
  9616   -- TYPES
  9617  
  9618     TYPE TT_ hl7_id IS
  9619       TABLE  OF ADR.Hl7 _Transacti on_Log.Hl7 _transacti on_log_id% TYPE;
  9620  
  9621   -- MEMORY  TABLES
  9622  
  9623     T_hl7_id                                T T_hl7_id;
  9624  
  9625   -- ******* ********** ********** ********** ********** ********** ********** *******
  9626   -- *
  9627   -- *  MAIN  PROCEDURE :
  9628   -- *
  9629   -- ******* ********** ********** ********** ********** ********** ********** *******
  9630  
  9631   BEGIN
  9632  
  9633     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  9634     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  9635  
  9636     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  9637     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  9638  
  9639     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  9640     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  9641  
  9642     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  9643     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  9644  
  9645     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  QUERY PARA LLEL ' ||   2;
  9646     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  9647  
  9648     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  DML PARALL EL ' || 2;
  9649     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  9650  
  9651  
  9652     VC_sql_s tatement:= 'ALTER SES SION SET p arallel_fo rce_local= TRUE';      --  force  parallel  to a local  node
  9653     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  9654  
  9655     VD_rec_g roup_date  := TRUNC(S YSDATE);
  9656  
  9657     VD_log_d ate := SYS DATE;
  9658     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9659                                 PD _job_log_d ate => VD_ log_date,
  9660                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  9661                                 PD _date1 =>  VD_rec_gro up_date,
  9662                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9663  
  9664   -- ******* ********** ********** ********** ********** ********** ********** ********
  9665   -- *
  9666   -- * Valid ate input  parameters
  9667   -- *
  9668   -- ******* ********** ********** ********** ********** ********** ********** ********
  9669  
  9670   -- * Check  run stand alone flag
  9671  
  9672     IF PB_ru n_standalo ne IS NULL
  9673      OR NOT  PB_run_sta ndalone TH EN
  9674  
  9675       VB_run _standalon e := FALSE ;
  9676       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  9677  
  9678     ELSE
  9679  
  9680       VB_run _standalon e := TRUE;
  9681       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  9682  
  9683     END IF;
  9684  
  9685   -- * Check  run on re port insta nce flag
  9686  
  9687     IF PB_al low_rpt_in st IS NULL
  9688      OR NOT  PB_allow_r pt_inst TH EN
  9689  
  9690       VB_all ow_rpt_ins t := FALSE ;
  9691       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  9692  
  9693     ELSE
  9694  
  9695       VB_all ow_rpt_ins t := TRUE;
  9696       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  9697  
  9698     END IF;
  9699  
  9700   -- ******* ********** ********** ********** ********** ********** ********** ********
  9701   -- *
  9702   -- * Retri eve proces sing param eters
  9703   -- *
  9704   -- ******* ********** ********** ********** ********** ********** ********** ********
  9705  
  9706   -- Process  Parameter  OLDEST HL 7 ERROR TE XT DAYS KE PT
  9707  
  9708     BEGIN
  9709  
  9710       SELECT     Value
  9711       INTO       VN_par m_hl7_err_ txt_age
  9712       FROM       ADRMGT .Adr_Param eter
  9713       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  9714       AND        Parame ter_name =  'OLDEST H L7 ERROR T EXT DAYS K EPT';
  9715  
  9716       IF VN_ parm_hl7_e rr_txt_age  IS NULL T HEN
  9717  
  9718         VD_l og_date :=  SYSDATE;
  9719         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9720                                      PD_job_l og_date =>  VD_log_da te,
  9721                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9722                                      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),
  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 IF ;
  9729  
  9730     EXCEPTIO N
  9731  
  9732       WHEN N O_DATA_FOU ND THEN
  9733  
  9734         VD_l og_date :=  SYSDATE;
  9735         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9736                                      PD_job_l og_date =>  VD_log_da te,
  9737                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9738                                      PC_job_l og_message  => 'Param eter for O LDEST HL7  ERROR TEXT  DAYS KEPT  was not f ound. Term inating pr ocess.',
  9739                                      PD_date1  => VD_rec _group_dat e,
  9740                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9741  
  9742         RETU RN;
  9743  
  9744       WHEN O THERS THEN
  9745  
  9746         VD_l og_date :=  SYSDATE;
  9747         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9748                                      PD_job_l og_date =>  VD_log_da te,
  9749                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9750                                      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. '
  9751                                                                      || SQLERR M,1,2000),
  9752                                      PD_date1  => VD_rec _group_dat e,
  9753                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9754  
  9755         RETU RN;
  9756  
  9757     END;
  9758  
  9759   -- Process  Parameter  OLDEST LO G FILE DAY S KEPT
  9760  
  9761     BEGIN
  9762  
  9763       SELECT     Value
  9764       INTO       VN_par m_log_file _age
  9765       FROM       ADRMGT .Adr_Param eter
  9766       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  9767       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  9768  
  9769       IF VN_ parm_log_f ile_age IS  NULL THEN
  9770  
  9771         VD_l og_date :=  SYSDATE;
  9772         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9773                                      PD_job_l og_date =>  VD_log_da te,
  9774                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9775                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST L OG FILE DA YS KEPT is  NULL. Ter minating p rocess.',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 IF ;
  9782  
  9783     EXCEPTIO N
  9784  
  9785       WHEN N O_DATA_FOU ND THEN
  9786  
  9787         VD_l og_date :=  SYSDATE;
  9788         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9789                                      PD_job_l og_date =>  VD_log_da te,
  9790                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9791                                      PC_job_l og_message  => 'Param eter for O LDEST LOG  FILE DAYS  KEPT was n ot found.  Terminatin g process. ',
  9792                                      PD_date1  => VD_rec _group_dat e,
  9793                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9794  
  9795         RETU RN;
  9796  
  9797       WHEN O THERS THEN
  9798  
  9799         VD_l og_date :=  SYSDATE;
  9800         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9801                                      PD_job_l og_date =>  VD_log_da te,
  9802                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9803                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  OLDEST LO G FILE DAY S KEPT. Te rminating  process. '
  9804                                                                      || SQLERR M,1,2000),
  9805                                      PD_date1  => VD_rec _group_dat e,
  9806                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9807  
  9808         RETU RN;
  9809  
  9810     END;
  9811  
  9812   -- Process  Parameter  ROWS TO P ROCESS
  9813  
  9814     BEGIN
  9815  
  9816       SELECT     Value
  9817       INTO       VN_par m_rows_to_ process
  9818       FROM       ADRMGT .Adr_Param eter
  9819       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  9820       AND        Parame ter_name =  'ROWS TO  PROCESS';
  9821  
  9822       IF VN_ parm_rows_ to_process  IS NULL T HEN
  9823  
  9824         VD_l og_date :=  SYSDATE;
  9825         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9826                                      PD_job_l og_date =>  VD_log_da te,
  9827                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9828                                      PC_job_l og_message  => SUBSTR ('Paramete r ROWS TO  PROCESS is  NULL. Ter minating p rocess.',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 IF ;
  9835  
  9836     EXCEPTIO N
  9837  
  9838       WHEN N O_DATA_FOU ND THEN
  9839  
  9840         VD_l og_date :=  SYSDATE;
  9841         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9842                                      PD_job_l og_date =>  VD_log_da te,
  9843                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9844                                      PC_job_l og_message  => 'Param eter for R OWS TO PRO CESS was n ot found.  Terminatin g process. ',
  9845                                      PD_date1  => VD_rec _group_dat e,
  9846                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9847  
  9848         RETU RN;
  9849  
  9850       WHEN O THERS THEN
  9851  
  9852         VD_l og_date :=  SYSDATE;
  9853         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9854                                      PD_job_l og_date =>  VD_log_da te,
  9855                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9856                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ROWS TO P ROCESS. Te rminating  process. '
  9857                                                                      || SQLERR M,1,2000),
  9858                                      PD_date1  => VD_rec _group_dat e,
  9859                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9860  
  9861         RETU RN;
  9862  
  9863     END;
  9864  
  9865   -- Process  Parameter  LAST PROC ESSED LOG  ID
  9866  
  9867     BEGIN
  9868  
  9869       SELECT     Value
  9870       INTO       VN_par m_last_log _id
  9871       FROM       ADRMGT .Adr_Param eter
  9872       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  9873       AND        Parame ter_name =  VC_para_n ame_last_p roc_id;
  9874  
  9875       IF VN_ parm_last_ log_id IS  NULL THEN
  9876  
  9877         VD_l og_date :=  SYSDATE;
  9878         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9879                                      PD_job_l og_date =>  VD_log_da te,
  9880                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9881                                      PC_job_l og_message  => SUBSTR ('Paramete r ' || VC_ para_name_ last_proc_ id || ' is  NULL. Ter minating p rocess.',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 IF ;
  9888  
  9889     EXCEPTIO N
  9890  
  9891       WHEN N O_DATA_FOU ND THEN
  9892  
  9893         VD_l og_date :=  SYSDATE;
  9894         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9895                                      PD_job_l og_date =>  VD_log_da te,
  9896                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9897                                      PC_job_l og_message  => 'Param eter for '  || VC_par a_name_las t_proc_id  || ' was n ot found.  Terminatin g process. ',
  9898                                      PD_date1  => VD_rec _group_dat e,
  9899                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9900  
  9901         RETU RN;
  9902  
  9903       WHEN O THERS THEN
  9904  
  9905         VD_l og_date :=  SYSDATE;
  9906         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  9907                                      PD_job_l og_date =>  VD_log_da te,
  9908                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  9909                                      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. '
  9910                                                                      || SQLERR M,1,2000),
  9911                                      PD_date1  => VD_rec _group_dat e,
  9912                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  9913  
  9914         RETU RN;
  9915  
  9916     END;
  9917  
  9918   -- Write o ut Paramet er log mes sages for  submitted  job
  9919  
  9920     VD_log_d ate := SYS DATE;
  9921     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9922                                 PD _job_log_d ate => VD_ log_date,
  9923                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  9924                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  9925                                 PD _date1 =>  VD_rec_gro up_date,
  9926                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9927  
  9928     VD_log_d ate := SYS DATE;
  9929     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9930                                 PD _job_log_d ate => VD_ log_date,
  9931                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  9932                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  9933                                 PD _date1 =>  VD_rec_gro up_date,
  9934                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9935  
  9936     VD_log_d ate := SYS DATE;
  9937     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9938                                 PD _job_log_d ate => VD_ log_date,
  9939                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  9940                                 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),
  9941                                 PD _date1 =>  VD_rec_gro up_date,
  9942                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9943  
  9944  
  9945     VD_log_d ate := SYS DATE;
  9946     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9947                                 PD _job_log_d ate => VD_ log_date,
  9948                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  9949                                 PC _job_log_m essage =>  SUBSTR(' O LDEST HL7  ERROR TEXT  DAYS KEPT : ' || VN_ parm_hl7_e rr_txt_age ,1,2000),
  9950                                 PD _date1 =>  VD_rec_gro up_date,
  9951                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9952  
  9953     VD_log_d ate := SYS DATE;
  9954     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9955                                 PD _job_log_d ate => VD_ log_date,
  9956                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  9957                                 PC _job_log_m essage =>  SUBSTR(' O LDEST LOG  FILE DAYS  KEPT: ' ||  VN_parm_l og_file_ag e,1,2000),
  9958                                 PD _date1 =>  VD_rec_gro up_date,
  9959                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9960  
  9961     VD_log_d ate := SYS DATE;
  9962     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9963                                 PD _job_log_d ate => VD_ log_date,
  9964                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  9965                                 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),
  9966                                 PD _date1 =>  VD_rec_gro up_date,
  9967                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9968  
  9969     VD_log_d ate := SYS DATE;
  9970     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  9971                                 PD _job_log_d ate => VD_ log_date,
  9972                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  9973                                 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),
  9974                                 PD _date1 =>  VD_rec_gro up_date,
  9975                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  9976  
  9977   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  9978  
  9979     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  9980  
  9981       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  9982  
  9983       VD_log _date := S YSDATE;
  9984       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  9985                                    PD_job_log _date => V D_log_date ,
  9986                                    PC_job_sta tus => SUB STR('WARNI NG     - J ob table p arameters' ,1,60),
  9987                                    PC_job_log _message = > SUBSTR('  Processin g paramete r ROWS TO  PROCESS (i n each loo p) has bee n overridd en.'
  9988                                                              || ' T he overrid e value is : ' || NVL (TO_CHAR(V N_parm_row s_to_proce ss),'NULL' ),1,2000),
  9989                                    PD_date1 = > VD_rec_g roup_date,
  9990                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  9991  
  9992     END IF;
  9993  
  9994   -- ******* ********** ********** ********** ********** ********** ********** ********
  9995   -- *
  9996   -- * Check  to see if  process i s running  on a repor ting datab ase.
  9997   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  9998   -- *
  9999   -- ******* ********** ********** ********** ********** ********** ********** ********
  10000  
  10001     IF NOT V B_allow_rp t_inst THE N
  10002  
  10003       BEGIN
  10004  
  10005         VD_l og_date :=  SYSDATE;
  10006         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10007                                      PD_job_l og_date =>  VD_log_da te,
  10008                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  10009                                      PD_date1  => VD_rec _group_dat e,
  10010                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10011  
  10012         SELE CT    Inst ance_name
  10013         INTO       VC_i nstance_na me
  10014         FROM       V$in stance;
  10015  
  10016         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  10017  
  10018           VD _log_date  := SYSDATE ;
  10019           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  10020                                        PD_job _log_date  => VD_log_ date,
  10021                                        PC_job _status =>  SUBSTR('E RROR        - Process ing Failed ',1,60),
  10022                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  10023                                                                     || VC_inst ance_name
  10024                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  10025                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  10026                                        PD_dat e1 => VD_r ec_group_d ate,
  10027                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  10028  
  10029           RE TURN;
  10030  
  10031         END  IF;
  10032  
  10033       EXCEPT ION
  10034  
  10035         WHEN  OTHERS TH EN
  10036  
  10037           VD _log_date  := SYSDATE ;
  10038           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  10039                                        PD_job _log_date  => VD_log_ date,
  10040                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  10041                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  10042                                        PD_dat e1 => VD_r ec_group_d ate,
  10043                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  10044  
  10045           RE TURN;
  10046  
  10047       END;
  10048  
  10049     END IF;
  10050  
  10051   -- ******* ********** ********** ********** ********** ********** ********** ********
  10052   -- *
  10053   -- * Check  to see if  the job h as already  run today
  10054   -- *  - If  running i n stand-al one mode,  don't chec k.
  10055   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  10056   -- *
  10057   -- ******* ********** ********** ********** ********** ********** ********** ********
  10058  
  10059     IF NOT P B_run_stan dalone THE N
  10060  
  10061       BEGIN
  10062  
  10063         VD_l og_date :=  SYSDATE;
  10064         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10065                                      PD_job_l og_date =>  VD_log_da te,
  10066                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  10067                                      PD_date1  => VD_rec _group_dat e,
  10068                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10069  
  10070         SELE CT    COUN T(*)
  10071         INTO       VN_r ec_count
  10072         FROM       ADRM GT.Job_Pro cess_Logs
  10073         WHER E     Job_ name = CC_ process_na me
  10074         AND        Date 1 = VD_rec _group_dat e
  10075         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  10076  
  10077         IF V N_rec_coun t > 0 THEN
  10078  
  10079           VD _log_date  := SYSDATE ;
  10080           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  10081                                        PD_job _log_date  => VD_log_ date,
  10082                                        PC_job _status =>  SUBSTR('W ARNING      - This da te has alr eady been  processed' ,1,60),
  10083                                        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),
  10084                                        PD_dat e1 => VD_r ec_group_d ate,
  10085                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  10086  
  10087           RE TURN;
  10088  
  10089         END  IF;
  10090  
  10091       EXCEPT ION
  10092  
  10093         WHEN  OTHERS TH EN
  10094  
  10095           VD _log_date  := SYSDATE ;
  10096           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  10097                                        PD_job _log_date  => VD_log_ date,
  10098                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  10099                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  10100                                        PD_dat e1 => VD_r ec_group_d ate,
  10101                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  10102  
  10103           RE TURN;
  10104  
  10105       END;
  10106  
  10107     END IF;
  10108  
  10109   -- ******* ********** ********** ********** ********** ********** ********** ********
  10110   -- *
  10111   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  10112   -- *  - If  yes, then  end this  job.
  10113   -- *
  10114   -- ******* ********** ********** ********** ********** ********** ********** ********
  10115  
  10116     SELECT C OUNT(*)
  10117     INTO   V N_job_coun t
  10118     FROM   S YS.DBA_JOB S_RUNNING  R,
  10119            S YS.DBA_JOB S J
  10120     WHERE  J .JOB = R.J OB
  10121     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  10122  
  10123     IF VN_jo b_count >  1 THEN
  10124  
  10125       VD_log _date := S YSDATE;
  10126       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10127                                    PD_job_log _date => V D_log_date ,
  10128                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  10129                                    PC_job_log _message = > SUBSTR(' There is a nother '
  10130                                                                || C C_sp_name
  10131                                                                || '  job runni ng.'
  10132                                                                || '  Exiting j ob without  running.' ,1,2000),
  10133                                    PD_date1 = > VD_rec_g roup_date,
  10134                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  10135  
  10136       RETURN ;
  10137  
  10138     ELSE
  10139  
  10140       IF VB_ run_standa lone THEN
  10141  
  10142         VD_l og_date :=  SYSDATE;
  10143         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10144                                      PD_job_l og_date =>  VD_log_da te,
  10145                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  10146                                      PD_date1  => VD_rec _group_dat e,
  10147                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10148  
  10149       ELSE
  10150  
  10151         SELE CT    MAX( J.Job)
  10152         INTO       VN_j ob_number
  10153         FROM       SYS. DBA_JOBS_R UNNING R,
  10154                    SYS. DBA_JOBS J
  10155         WHER E     J.JO B = R.JOB
  10156         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  10157  
  10158         VD_l og_date :=  SYSDATE;
  10159         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10160                                      PD_job_l og_date =>  VD_log_da te,
  10161                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  10162                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  10163                                                                      || VN_job _number,1, 2000),
  10164                                      PD_date1  => VD_rec _group_dat e,
  10165                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10166  
  10167       END IF ;
  10168  
  10169     END IF;
  10170  
  10171   -- ******* ********** ********** ********** ********** ********** ********** ********
  10172   -- *
  10173   -- * Main  processing  loop
  10174   -- *
  10175   -- ******* ********** ********** ********** ********** ********** ********** ********
  10176  
  10177     VN_pass_ count := 0 ;
  10178     VN_updat e_count :=  0;
  10179     VD_proce ss_start_d ate := SYS DATE;
  10180  
  10181   -- ******* ********** ********** ********** ********** ********** ********** ********
  10182   -- * Remov e old proc ess log ro ws
  10183   -- ******* ********** ********** ********** ********** ********** ********** ********
  10184     BEGIN
  10185  
  10186       VD_log _date := S YSDATE;
  10187       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10188                                    PD_job_log _date => V D_log_date ,
  10189                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  10190                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  10191                                                                   | | VN_parm_ log_file_a ge
  10192                                                                   | | ' days o ld',1,2000 ),
  10193                                    PD_date1 = > VD_rec_g roup_date,
  10194                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  10195  
  10196       DELETE
  10197       FROM       ADRMGT .Job_Proce ss_Logs
  10198       WHERE      Job_na me = CC_pr ocess_name
  10199       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  10200  
  10201       COMMIT ;
  10202  
  10203       VD_log _date := S YSDATE;
  10204       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10205                                    PD_job_log _date => V D_log_date ,
  10206                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  10207                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  10208                                                                   | | VN_parm_ log_file_a ge
  10209                                                                   | | ' days o ld',1,2000 ),
  10210                                    PD_date1 = > VD_rec_g roup_date,
  10211                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  10212  
  10213  
  10214     EXCEPTIO N
  10215  
  10216       WHEN N O_DATA_FOU ND THEN
  10217  
  10218         NULL ;
  10219  
  10220       WHEN O THERS THEN
  10221  
  10222         VD_l og_date :=  SYSDATE;
  10223         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10224                                      PD_job_l og_date  = > VD_log_d ate,
  10225                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess logs .',1,60),
  10226                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  10227                                      PD_date1  => VD_rec _group_dat e,
  10228                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10229  
  10230     END;
  10231  
  10232   -- ******* ********** ********** ********** ********** ********** ********** ********
  10233   -- * Remov e old proc ess error  rows
  10234   -- ******* ********** ********** ********** ********** ********** ********** ********
  10235  
  10236     BEGIN
  10237  
  10238       VD_log _date := S YSDATE;
  10239       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10240                                    PD_job_log _date => V D_log_date ,
  10241                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  10242                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  10243                                                                   | | VN_parm_ log_file_a ge
  10244                                                                   | | ' days o ld',1,2000 ),
  10245                                    PD_date1 = > VD_rec_g roup_date,
  10246                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  10247  
  10248       DELETE
  10249       FROM       ADRMGT .Job_Proce ss_Errs
  10250       WHERE      Job_na me = CC_pr ocess_name
  10251       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  10252  
  10253       COMMIT ;
  10254  
  10255       VD_log _date := S YSDATE;
  10256       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10257                                    PD_job_log _date => V D_log_date ,
  10258                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  10259                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  10260                                                                   | | VN_parm_ log_file_a ge
  10261                                                                   | | ' days o ld',1,2000 ),
  10262                                    PD_date1 = > VD_rec_g roup_date,
  10263                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  10264  
  10265     EXCEPTIO N
  10266  
  10267       WHEN N O_DATA_FOU ND THEN
  10268  
  10269         NULL ;
  10270  
  10271       WHEN O THERS THEN
  10272  
  10273         VD_l og_date :=  SYSDATE;
  10274         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10275                                      PD_job_l og_date  = > VD_log_d ate,
  10276                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess erro rs.',1,60) ,
  10277                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  10278                                      PD_date1  => VD_rec _group_dat e,
  10279                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10280  
  10281     END;
  10282  
  10283   -- ******* ********** ********** ********** ********** ********** ********** ********
  10284   -- * Main  record cur sor logic
  10285   -- ******* ********** ********** ********** ********** ********** ********** ********
  10286  
  10287     BEGIN
  10288  
  10289       VN_max _log_id :=  0;
  10290       VN_pas s_count :=  0;
  10291       VN_upd ate_count  := 0;
  10292  
  10293       OPEN C _hl7_id;
  10294  
  10295       LOOP
  10296  
  10297         FETC H C_hl7_id
  10298         BULK  COLLECT I NTO T_hl7_ id
  10299         LIMI T VN_parm_ rows_to_pr ocess;
  10300  
  10301         EXIT  WHEN T_hl 7_id.COUNT  = 0;
  10302  
  10303         FORA LL I_hl7_i d IN T_hl7 _id.FIRST. .T_hl7_id. last
  10304           UP DATE    AD R.Hl7_tran saction_lo g
  10305           SE T       In ternal_err or_text =  NULL
  10306           WH ERE     Hl 7_transact ion_log_id  = T_hl7_i d(I_hl7_id );
  10307  
  10308         COMM IT;
  10309  
  10310         FOR  I_hl7_id I N T_hl7_id .FIRST..T_ hl7_id.las t LOOP
  10311  
  10312           IF  T_hl7_id( I_hl7_id)  > VN_max_l og_id THEN
  10313  
  10314              VN_max_log _id := T_h l7_id(I_hl 7_id);
  10315  
  10316           EN D IF;
  10317  
  10318         END  LOOP;
  10319  
  10320         VN_p ass_count  := VN_pass _count + 1 ;
  10321  
  10322         VN_u pdate_coun t := VN_up date_count  + T_hl7_i d.COUNT;
  10323  
  10324       END LO OP;
  10325  
  10326       CLOSE  C_hl7_id;
  10327  
  10328       BEGIN
  10329  
  10330         IF N VL(VN_max_ log_id,0)  <> 0 THEN
  10331  
  10332           UP DATE    AD RMGT.Adr_P arameter
  10333           SE T       Va lue = VN_m ax_log_id
  10334           WH ERE     Ap plication_ name = 'HL 7 NULL INT ERNAL_ERRO R_TEXT COL UMN'
  10335           AN D       Pa rameter_na me = VC_pa ra_name_la st_proc_id ;
  10336  
  10337           CO MMIT;
  10338  
  10339         ELSE
  10340  
  10341           VN _max_log_i d := VN_pa rm_last_lo g_id;
  10342  
  10343         END  IF;
  10344  
  10345       EXCEPT ION
  10346  
  10347         WHEN  OTHERS TH EN
  10348  
  10349           VD _log_date  := SYSDATE ;
  10350           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  10351                                        PD_job _log_date   => VD_log _date,
  10352                                        PC_job _status =>  SUBSTR('E RROR        - Unknown  error upd ating ' ||  VC_para_n ame_last_p roc_id ||  '.',1,60),
  10353                                        PC_job _log_messa ge => SUBS TR(VC_para _name_last _proc_id | | ': ' ||  VN_max_log _id
  10354                                                                        || '. '  || SQLERR M,1,2000),
  10355                                        PD_dat e1 => VD_r ec_group_d ate,
  10356                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  10357  
  10358           RE TURN;
  10359  
  10360       END;
  10361  
  10362   -- Process  completio n informat ion
  10363  
  10364       VD_log _date := S YSDATE;
  10365       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10366                                    PD_job_log _date => V D_log_date ,
  10367                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  10368                                    PD_date1 = > VD_rec_g roup_date,
  10369                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  10370                                    PN_numeric 2 => VN_pa ss_count,
  10371                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  10372  
  10373       VD_log _date := S YSDATE;
  10374       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10375                                    PD_job_log _date => V D_log_date ,
  10376                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  10377                                    PD_date1 = > VD_rec_g roup_date,
  10378                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  10379                                    PN_numeric 2 => VN_up date_count ,
  10380                                    PC_text2 = > SUBSTR(' Updated Re cord Count ',1,255));
  10381  
  10382       VD_log _date := S YSDATE;
  10383       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10384                                    PD_job_log _date => V D_log_date ,
  10385                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  10386                                    PD_date1 = > VD_rec_g roup_date,
  10387                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  10388                                    PN_numeric 2 => VN_ma x_log_id,
  10389                                    PC_text2 = > SUBSTR(' Last proce ssed log i d',1,255)) ;
  10390  
  10391       VD_pro cess_end_d ate := SYS DATE;
  10392       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  10393                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  10394                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  10395                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  10396                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  10397  
  10398       VD_log _date := S YSDATE;
  10399       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10400                                    PD_job_log _date => V D_log_date ,
  10401                                    PC_job_sta tus => SUB STR('SUCCE SS     - P rocessing  Completed' ,1,60),
  10402                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  10403                                    PD_date1 = > VD_rec_g roup_date,
  10404                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  10405  
  10406     EXCEPTIO N
  10407  
  10408       WHEN O THERS THEN
  10409  
  10410         VD_l og_date :=  SYSDATE;
  10411         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10412                                      PD_job_l og_date  = > VD_log_d ate,
  10413                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror updat ing Intern al_error_t ext.',1,60 ),
  10414                                      PC_job_l og_message  => SUBSTR ('Cursor L oop Count:  ' || VN_p ass_count
  10415                                                                      || ' Upda ted Record  Count: '  || VN_upda te_count
  10416                                                                      || '. ' | | SQLERRM, 1,2000),
  10417                                      PD_date1  => VD_rec _group_dat e,
  10418                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10419  
  10420         RETU RN;
  10421  
  10422     END;
  10423  
  10424   EXCEPTION
  10425  
  10426     WHEN OTH ERS THEN
  10427  
  10428       ROLLBA CK;
  10429  
  10430       VD_log _date := S YSDATE;
  10431       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10432                                    PD_job_err or_date  = > VD_log_d ate,
  10433                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  10434                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Hl7_Txn_Lo g_Null_Err _Col_Sp.'
  10435                                                                  ||  SQLERRM,1 ,2000),
  10436                                    PD_date1 = > VD_rec_g roup_date,
  10437                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  10438  
  10439       VD_log _date := S YSDATE;
  10440       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10441                                    PD_job_log _date => V D_log_date ,
  10442                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  10443                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  10444                                    PD_date1 = > VD_rec_g roup_date,
  10445                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  10446  
  10447   END Hl7_Tx n_Log_Null _Err_Col_S p_03;
  10448   /
  10449   DROP PROCE DURE ADR.H L7_TXN_LOG _NULL_ERR_ COL_SP_04;
  10450  
  10451   CREATE OR  REPLACE PR OCEDURE AD R.Hl7_Txn_ Log_Null_E rr_Col_Sp_ 04 (
  10452      PB_run_ standalone     IN BOO LEAN DEFAU LT FALSE,
  10453      PB_allo w_rpt_inst     IN BOO LEAN DEFAU LT FALSE,
  10454      PN_rows _to_proces s   IN NUM BER DEFAUL T NULL)
  10455   IS
  10456      -- **** ********** ********** ********** ********** ********** ********** ********** *
  10457      -- * Pr ocedure: H l7_Txn_Log _Null_Erro r_Col
  10458      -- *
  10459      -- *    Update HL7  transcati ons to rem ove data f rom the in ternal_err or_text
  10460      -- *    column for  all rows  more than  6 months o ld.
  10461      -- *
  10462      -- * Pa rameters:
  10463      -- *
  10464      -- *  P B_run_stan dalone   I gnore DBMS _JOB logic  for check ing runnin g jobs.
  10465      -- *                          Default: F ALSE
  10466      -- *
  10467      -- *  P B_allow_rp t_inst   A llow store d procedur e to be su bmitted in  the
  10468      -- *                        D BMS_JOB qu eue on the  ADR repor ting datab ases
  10469      -- *                          Default: F ALSE
  10470      -- *
  10471      -- **** ********** ********** ********** ********** ********** ********** ********** *
  10472      --
  10473      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  10474      -- Date         Au thor             Desc ription
  10475      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  10476      -- 06/2 3/2010  Cr aig Wood         Crea ted for CC R 1100.
  10477      --
  10478      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  10479  
  10480      -- CONS TANTS
  10481  
  10482      CC_no                                  V ARCHAR2 (1 ) := 'N';
  10483      CC_parm _applicati on_name    CONSTANT V ARCHAR2 (8 0)
  10484         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  10485      CC_parm _hl7_err_t xt_age     CONSTANT V ARCHAR2 (5 0)
  10486                                                 := 'OLDE ST HL7 ERR OR TEXT DA YS' ;
  10487      CC_parm _last_hl7_ id         CONSTANT V ARCHAR2 (5 0)
  10488                                                 := 'LAST  HL7 ID PR OCESSED' ;
  10489      CC_parm _log_file_ age        CONSTANT V ARCHAR2 (5 0)
  10490                                                 := 'OLDE ST LOG FIL E DAYS' ;
  10491      CC_proc ess_name              CONSTANT V ARCHAR2 (6 0)
  10492         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  10493      CC_sp_n ame                   CONSTANT V ARCHAR2 (3 5)
  10494         := ' Hl7_Txn_Lo g_Null_Err _Col_Sp_'  || '04' ;
  10495      CC_yes                                 V ARCHAR2 (1 ) := 'Y';
  10496  
  10497      -- VARI ABLES
  10498  
  10499      VB_allo w_rpt_inst                     B OOLEAN :=  FALSE;
  10500      VB_run_ standalone                     B OOLEAN :=  FALSE;
  10501  
  10502      VC_allo w_rpt_inst                     V ARCHAR2 (5 ) := NULL;
  10503      VC_inst ance_name                      V ARCHAR2 (1 6);
  10504      VC_proc ess_durati on                  V ARCHAR2 (2 5);
  10505      VC_run_ standalone                     V ARCHAR2 (5 ) := NULL;
  10506      VC_sql_ statement                      V ARCHAR2 (2 000);
  10507      VC_para _name_last _proc_id            V ARCHAR2 (3 0):= 'P' | | '04' ||  ' LAST PRO CESSED LOG  ID';
  10508  
  10509     VD_log_d ate                            D ATE;
  10510     VD_proce ss_end_dat e                   D ATE;
  10511     VD_proce ss_start_d ate                 D ATE;
  10512     VD_rec_g roup_date                      D ATE;
  10513  
  10514     VN_job_c ount                           N UMBER := 0 ;
  10515     VN_job_n umber                          N UMBER;
  10516     VN_max_l og_id                          N UMBER := 0 ;
  10517     VN_parm_ hl7_err_tx t_age               N UMBER;
  10518     VN_parm_ log_file_a ge                  N UMBER;
  10519     VN_parm_ last_log_i d                   N UMBER := 0 ;
  10520     VN_parm_ rows_to_pr ocess               N UMBER;
  10521     VN_pass_ count                          N UMBER := 0 ;
  10522     VN_rec_c ount                           N UMBER := 0 ;
  10523     VN_updat e_count                        N UMBER := 0 ;
  10524  
  10525  
  10526   -- CURSORS
  10527  
  10528     CURSOR C _hl7_id IS
  10529       SELECT   /*+ para llel(4) */  Hl7_trans action_log _id
  10530       FROM       Hl7_tr ansaction_ log PARTIT ION (HL7_T RANSACTION _LOG_P04)
  10531       WHERE      Hl7_tr ansaction_ log_id > V N_parm_las t_log_id
  10532       AND        Transm ission_dat e < TRUNC( SYSDATE) -  VN_parm_h l7_err_txt _age
  10533       AND        Intern al_error_t ext IS NOT  NULL;
  10534  
  10535   -- TYPES
  10536  
  10537     TYPE TT_ hl7_id IS
  10538       TABLE  OF ADR.Hl7 _Transacti on_Log.Hl7 _transacti on_log_id% TYPE;
  10539  
  10540   -- MEMORY  TABLES
  10541  
  10542     T_hl7_id                                T T_hl7_id;
  10543  
  10544   -- ******* ********** ********** ********** ********** ********** ********** *******
  10545   -- *
  10546   -- *  MAIN  PROCEDURE :
  10547   -- *
  10548   -- ******* ********** ********** ********** ********** ********** ********** *******
  10549  
  10550   BEGIN
  10551  
  10552     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  10553     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  10554  
  10555     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  10556     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  10557  
  10558     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  10559     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  10560  
  10561     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  10562     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  10563  
  10564     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  QUERY PARA LLEL ' ||   2;
  10565     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  10566  
  10567     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  DML PARALL EL ' || 2;
  10568     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  10569  
  10570  
  10571     VC_sql_s tatement:= 'ALTER SES SION SET p arallel_fo rce_local= TRUE';      --  force  parallel  to a local  node
  10572     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  10573  
  10574     VD_rec_g roup_date  := TRUNC(S YSDATE);
  10575  
  10576     VD_log_d ate := SYS DATE;
  10577     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  10578                                 PD _job_log_d ate => VD_ log_date,
  10579                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  10580                                 PD _date1 =>  VD_rec_gro up_date,
  10581                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  10582  
  10583   -- ******* ********** ********** ********** ********** ********** ********** ********
  10584   -- *
  10585   -- * Valid ate input  parameters
  10586   -- *
  10587   -- ******* ********** ********** ********** ********** ********** ********** ********
  10588  
  10589   -- * Check  run stand alone flag
  10590  
  10591     IF PB_ru n_standalo ne IS NULL
  10592      OR NOT  PB_run_sta ndalone TH EN
  10593  
  10594       VB_run _standalon e := FALSE ;
  10595       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  10596  
  10597     ELSE
  10598  
  10599       VB_run _standalon e := TRUE;
  10600       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  10601  
  10602     END IF;
  10603  
  10604   -- * Check  run on re port insta nce flag
  10605  
  10606     IF PB_al low_rpt_in st IS NULL
  10607      OR NOT  PB_allow_r pt_inst TH EN
  10608  
  10609       VB_all ow_rpt_ins t := FALSE ;
  10610       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  10611  
  10612     ELSE
  10613  
  10614       VB_all ow_rpt_ins t := TRUE;
  10615       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  10616  
  10617     END IF;
  10618  
  10619   -- ******* ********** ********** ********** ********** ********** ********** ********
  10620   -- *
  10621   -- * Retri eve proces sing param eters
  10622   -- *
  10623   -- ******* ********** ********** ********** ********** ********** ********** ********
  10624  
  10625   -- Process  Parameter  OLDEST HL 7 ERROR TE XT DAYS KE PT
  10626  
  10627     BEGIN
  10628  
  10629       SELECT     Value
  10630       INTO       VN_par m_hl7_err_ txt_age
  10631       FROM       ADRMGT .Adr_Param eter
  10632       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  10633       AND        Parame ter_name =  'OLDEST H L7 ERROR T EXT DAYS K EPT';
  10634  
  10635       IF VN_ parm_hl7_e rr_txt_age  IS NULL T HEN
  10636  
  10637         VD_l og_date :=  SYSDATE;
  10638         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10639                                      PD_job_l og_date =>  VD_log_da te,
  10640                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10641                                      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),
  10642                                      PD_date1  => VD_rec _group_dat e,
  10643                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10644  
  10645         RETU RN;
  10646  
  10647       END IF ;
  10648  
  10649     EXCEPTIO N
  10650  
  10651       WHEN N O_DATA_FOU ND THEN
  10652  
  10653         VD_l og_date :=  SYSDATE;
  10654         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10655                                      PD_job_l og_date =>  VD_log_da te,
  10656                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10657                                      PC_job_l og_message  => 'Param eter for O LDEST HL7  ERROR TEXT  DAYS KEPT  was not f ound. Term inating pr ocess.',
  10658                                      PD_date1  => VD_rec _group_dat e,
  10659                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10660  
  10661         RETU RN;
  10662  
  10663       WHEN O THERS THEN
  10664  
  10665         VD_l og_date :=  SYSDATE;
  10666         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10667                                      PD_job_l og_date =>  VD_log_da te,
  10668                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10669                                      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. '
  10670                                                                      || SQLERR M,1,2000),
  10671                                      PD_date1  => VD_rec _group_dat e,
  10672                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10673  
  10674         RETU RN;
  10675  
  10676     END;
  10677  
  10678   -- Process  Parameter  OLDEST LO G FILE DAY S KEPT
  10679  
  10680     BEGIN
  10681  
  10682       SELECT     Value
  10683       INTO       VN_par m_log_file _age
  10684       FROM       ADRMGT .Adr_Param eter
  10685       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  10686       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  10687  
  10688       IF VN_ parm_log_f ile_age IS  NULL THEN
  10689  
  10690         VD_l og_date :=  SYSDATE;
  10691         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10692                                      PD_job_l og_date =>  VD_log_da te,
  10693                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10694                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST L OG FILE DA YS KEPT is  NULL. Ter minating p rocess.',1 ,2000),
  10695                                      PD_date1  => VD_rec _group_dat e,
  10696                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10697  
  10698         RETU RN;
  10699  
  10700       END IF ;
  10701  
  10702     EXCEPTIO N
  10703  
  10704       WHEN N O_DATA_FOU ND THEN
  10705  
  10706         VD_l og_date :=  SYSDATE;
  10707         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10708                                      PD_job_l og_date =>  VD_log_da te,
  10709                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10710                                      PC_job_l og_message  => 'Param eter for O LDEST LOG  FILE DAYS  KEPT was n ot found.  Terminatin g process. ',
  10711                                      PD_date1  => VD_rec _group_dat e,
  10712                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10713  
  10714         RETU RN;
  10715  
  10716       WHEN O THERS THEN
  10717  
  10718         VD_l og_date :=  SYSDATE;
  10719         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10720                                      PD_job_l og_date =>  VD_log_da te,
  10721                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10722                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  OLDEST LO G FILE DAY S KEPT. Te rminating  process. '
  10723                                                                      || SQLERR M,1,2000),
  10724                                      PD_date1  => VD_rec _group_dat e,
  10725                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10726  
  10727         RETU RN;
  10728  
  10729     END;
  10730  
  10731   -- Process  Parameter  ROWS TO P ROCESS
  10732  
  10733     BEGIN
  10734  
  10735       SELECT     Value
  10736       INTO       VN_par m_rows_to_ process
  10737       FROM       ADRMGT .Adr_Param eter
  10738       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  10739       AND        Parame ter_name =  'ROWS TO  PROCESS';
  10740  
  10741       IF VN_ parm_rows_ to_process  IS NULL T HEN
  10742  
  10743         VD_l og_date :=  SYSDATE;
  10744         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10745                                      PD_job_l og_date =>  VD_log_da te,
  10746                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10747                                      PC_job_l og_message  => SUBSTR ('Paramete r ROWS TO  PROCESS is  NULL. Ter minating p rocess.',1 ,2000),
  10748                                      PD_date1  => VD_rec _group_dat e,
  10749                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10750  
  10751         RETU RN;
  10752  
  10753       END IF ;
  10754  
  10755     EXCEPTIO N
  10756  
  10757       WHEN N O_DATA_FOU ND THEN
  10758  
  10759         VD_l og_date :=  SYSDATE;
  10760         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10761                                      PD_job_l og_date =>  VD_log_da te,
  10762                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10763                                      PC_job_l og_message  => 'Param eter for R OWS TO PRO CESS was n ot found.  Terminatin g process. ',
  10764                                      PD_date1  => VD_rec _group_dat e,
  10765                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10766  
  10767         RETU RN;
  10768  
  10769       WHEN O THERS THEN
  10770  
  10771         VD_l og_date :=  SYSDATE;
  10772         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10773                                      PD_job_l og_date =>  VD_log_da te,
  10774                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10775                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ROWS TO P ROCESS. Te rminating  process. '
  10776                                                                      || SQLERR M,1,2000),
  10777                                      PD_date1  => VD_rec _group_dat e,
  10778                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10779  
  10780         RETU RN;
  10781  
  10782     END;
  10783  
  10784   -- Process  Parameter  LAST PROC ESSED LOG  ID
  10785  
  10786     BEGIN
  10787  
  10788       SELECT     Value
  10789       INTO       VN_par m_last_log _id
  10790       FROM       ADRMGT .Adr_Param eter
  10791       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  10792       AND        Parame ter_name =  VC_para_n ame_last_p roc_id;
  10793  
  10794       IF VN_ parm_last_ log_id IS  NULL THEN
  10795  
  10796         VD_l og_date :=  SYSDATE;
  10797         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10798                                      PD_job_l og_date =>  VD_log_da te,
  10799                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10800                                      PC_job_l og_message  => SUBSTR ('Paramete r ' || VC_ para_name_ last_proc_ id || ' is  NULL. Ter minating p rocess.',1 ,2000),
  10801                                      PD_date1  => VD_rec _group_dat e,
  10802                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10803  
  10804         RETU RN;
  10805  
  10806       END IF ;
  10807  
  10808     EXCEPTIO N
  10809  
  10810       WHEN N O_DATA_FOU ND THEN
  10811  
  10812         VD_l og_date :=  SYSDATE;
  10813         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10814                                      PD_job_l og_date =>  VD_log_da te,
  10815                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10816                                      PC_job_l og_message  => 'Param eter for '  || VC_par a_name_las t_proc_id  || ' was n ot found.  Terminatin g process. ',
  10817                                      PD_date1  => VD_rec _group_dat e,
  10818                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10819  
  10820         RETU RN;
  10821  
  10822       WHEN O THERS THEN
  10823  
  10824         VD_l og_date :=  SYSDATE;
  10825         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10826                                      PD_job_l og_date =>  VD_log_da te,
  10827                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  10828                                      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. '
  10829                                                                      || SQLERR M,1,2000),
  10830                                      PD_date1  => VD_rec _group_dat e,
  10831                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10832  
  10833         RETU RN;
  10834  
  10835     END;
  10836  
  10837   -- Write o ut Paramet er log mes sages for  submitted  job
  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  submissio n paramete rs',1,60),
  10843                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,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  submissio n paramete rs',1,60),
  10851                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 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  submissio n paramete rs',1,60),
  10859                                 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),
  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  
  10864     VD_log_d ate := SYS DATE;
  10865     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  10866                                 PD _job_log_d ate => VD_ log_date,
  10867                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  10868                                 PC _job_log_m essage =>  SUBSTR(' O LDEST HL7  ERROR TEXT  DAYS KEPT : ' || VN_ parm_hl7_e rr_txt_age ,1,2000),
  10869                                 PD _date1 =>  VD_rec_gro up_date,
  10870                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  10871  
  10872     VD_log_d ate := SYS DATE;
  10873     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  10874                                 PD _job_log_d ate => VD_ log_date,
  10875                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  10876                                 PC _job_log_m essage =>  SUBSTR(' O LDEST LOG  FILE DAYS  KEPT: ' ||  VN_parm_l og_file_ag e,1,2000),
  10877                                 PD _date1 =>  VD_rec_gro up_date,
  10878                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  10879  
  10880     VD_log_d ate := SYS DATE;
  10881     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  10882                                 PD _job_log_d ate => VD_ log_date,
  10883                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  10884                                 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),
  10885                                 PD _date1 =>  VD_rec_gro up_date,
  10886                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  10887  
  10888     VD_log_d ate := SYS DATE;
  10889     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  10890                                 PD _job_log_d ate => VD_ log_date,
  10891                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  10892                                 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),
  10893                                 PD _date1 =>  VD_rec_gro up_date,
  10894                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  10895  
  10896   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  10897  
  10898     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  10899  
  10900       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  10901  
  10902       VD_log _date := S YSDATE;
  10903       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  10904                                    PD_job_log _date => V D_log_date ,
  10905                                    PC_job_sta tus => SUB STR('WARNI NG     - J ob table p arameters' ,1,60),
  10906                                    PC_job_log _message = > SUBSTR('  Processin g paramete r ROWS TO  PROCESS (i n each loo p) has bee n overridd en.'
  10907                                                              || ' T he overrid e value is : ' || NVL (TO_CHAR(V N_parm_row s_to_proce ss),'NULL' ),1,2000),
  10908                                    PD_date1 = > VD_rec_g roup_date,
  10909                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  10910  
  10911     END IF;
  10912  
  10913   -- ******* ********** ********** ********** ********** ********** ********** ********
  10914   -- *
  10915   -- * Check  to see if  process i s running  on a repor ting datab ase.
  10916   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  10917   -- *
  10918   -- ******* ********** ********** ********** ********** ********** ********** ********
  10919  
  10920     IF NOT V B_allow_rp t_inst THE N
  10921  
  10922       BEGIN
  10923  
  10924         VD_l og_date :=  SYSDATE;
  10925         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10926                                      PD_job_l og_date =>  VD_log_da te,
  10927                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  10928                                      PD_date1  => VD_rec _group_dat e,
  10929                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10930  
  10931         SELE CT    Inst ance_name
  10932         INTO       VC_i nstance_na me
  10933         FROM       V$in stance;
  10934  
  10935         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  10936  
  10937           VD _log_date  := SYSDATE ;
  10938           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  10939                                        PD_job _log_date  => VD_log_ date,
  10940                                        PC_job _status =>  SUBSTR('E RROR        - Process ing Failed ',1,60),
  10941                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  10942                                                                     || VC_inst ance_name
  10943                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  10944                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  10945                                        PD_dat e1 => VD_r ec_group_d ate,
  10946                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  10947  
  10948           RE TURN;
  10949  
  10950         END  IF;
  10951  
  10952       EXCEPT ION
  10953  
  10954         WHEN  OTHERS TH EN
  10955  
  10956           VD _log_date  := SYSDATE ;
  10957           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  10958                                        PD_job _log_date  => VD_log_ date,
  10959                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  10960                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  10961                                        PD_dat e1 => VD_r ec_group_d ate,
  10962                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  10963  
  10964           RE TURN;
  10965  
  10966       END;
  10967  
  10968     END IF;
  10969  
  10970   -- ******* ********** ********** ********** ********** ********** ********** ********
  10971   -- *
  10972   -- * Check  to see if  the job h as already  run today
  10973   -- *  - If  running i n stand-al one mode,  don't chec k.
  10974   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  10975   -- *
  10976   -- ******* ********** ********** ********** ********** ********** ********** ********
  10977  
  10978     IF NOT P B_run_stan dalone THE N
  10979  
  10980       BEGIN
  10981  
  10982         VD_l og_date :=  SYSDATE;
  10983         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  10984                                      PD_job_l og_date =>  VD_log_da te,
  10985                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  10986                                      PD_date1  => VD_rec _group_dat e,
  10987                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  10988  
  10989         SELE CT    COUN T(*)
  10990         INTO       VN_r ec_count
  10991         FROM       ADRM GT.Job_Pro cess_Logs
  10992         WHER E     Job_ name = CC_ process_na me
  10993         AND        Date 1 = VD_rec _group_dat e
  10994         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  10995  
  10996         IF V N_rec_coun t > 0 THEN
  10997  
  10998           VD _log_date  := SYSDATE ;
  10999           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  11000                                        PD_job _log_date  => VD_log_ date,
  11001                                        PC_job _status =>  SUBSTR('W ARNING      - This da te has alr eady been  processed' ,1,60),
  11002                                        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),
  11003                                        PD_dat e1 => VD_r ec_group_d ate,
  11004                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  11005  
  11006           RE TURN;
  11007  
  11008         END  IF;
  11009  
  11010       EXCEPT ION
  11011  
  11012         WHEN  OTHERS TH EN
  11013  
  11014           VD _log_date  := SYSDATE ;
  11015           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  11016                                        PD_job _log_date  => VD_log_ date,
  11017                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  11018                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  11019                                        PD_dat e1 => VD_r ec_group_d ate,
  11020                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  11021  
  11022           RE TURN;
  11023  
  11024       END;
  11025  
  11026     END IF;
  11027  
  11028   -- ******* ********** ********** ********** ********** ********** ********** ********
  11029   -- *
  11030   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  11031   -- *  - If  yes, then  end this  job.
  11032   -- *
  11033   -- ******* ********** ********** ********** ********** ********** ********** ********
  11034  
  11035     SELECT C OUNT(*)
  11036     INTO   V N_job_coun t
  11037     FROM   S YS.DBA_JOB S_RUNNING  R,
  11038            S YS.DBA_JOB S J
  11039     WHERE  J .JOB = R.J OB
  11040     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  11041  
  11042     IF VN_jo b_count >  1 THEN
  11043  
  11044       VD_log _date := S YSDATE;
  11045       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11046                                    PD_job_log _date => V D_log_date ,
  11047                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  11048                                    PC_job_log _message = > SUBSTR(' There is a nother '
  11049                                                                || C C_sp_name
  11050                                                                || '  job runni ng.'
  11051                                                                || '  Exiting j ob without  running.' ,1,2000),
  11052                                    PD_date1 = > VD_rec_g roup_date,
  11053                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  11054  
  11055       RETURN ;
  11056  
  11057     ELSE
  11058  
  11059       IF VB_ run_standa lone THEN
  11060  
  11061         VD_l og_date :=  SYSDATE;
  11062         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11063                                      PD_job_l og_date =>  VD_log_da te,
  11064                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  11065                                      PD_date1  => VD_rec _group_dat e,
  11066                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11067  
  11068       ELSE
  11069  
  11070         SELE CT    MAX( J.Job)
  11071         INTO       VN_j ob_number
  11072         FROM       SYS. DBA_JOBS_R UNNING R,
  11073                    SYS. DBA_JOBS J
  11074         WHER E     J.JO B = R.JOB
  11075         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  11076  
  11077         VD_l og_date :=  SYSDATE;
  11078         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11079                                      PD_job_l og_date =>  VD_log_da te,
  11080                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  11081                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  11082                                                                      || VN_job _number,1, 2000),
  11083                                      PD_date1  => VD_rec _group_dat e,
  11084                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11085  
  11086       END IF ;
  11087  
  11088     END IF;
  11089  
  11090   -- ******* ********** ********** ********** ********** ********** ********** ********
  11091   -- *
  11092   -- * Main  processing  loop
  11093   -- *
  11094   -- ******* ********** ********** ********** ********** ********** ********** ********
  11095  
  11096     VN_pass_ count := 0 ;
  11097     VN_updat e_count :=  0;
  11098     VD_proce ss_start_d ate := SYS DATE;
  11099  
  11100   -- ******* ********** ********** ********** ********** ********** ********** ********
  11101   -- * Remov e old proc ess log ro ws
  11102   -- ******* ********** ********** ********** ********** ********** ********** ********
  11103     BEGIN
  11104  
  11105       VD_log _date := S YSDATE;
  11106       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11107                                    PD_job_log _date => V D_log_date ,
  11108                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  11109                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  11110                                                                   | | VN_parm_ log_file_a ge
  11111                                                                   | | ' days o ld',1,2000 ),
  11112                                    PD_date1 = > VD_rec_g roup_date,
  11113                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  11114  
  11115       DELETE
  11116       FROM       ADRMGT .Job_Proce ss_Logs
  11117       WHERE      Job_na me = CC_pr ocess_name
  11118       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  11119  
  11120       COMMIT ;
  11121  
  11122       VD_log _date := S YSDATE;
  11123       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11124                                    PD_job_log _date => V D_log_date ,
  11125                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  11126                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  11127                                                                   | | VN_parm_ log_file_a ge
  11128                                                                   | | ' days o ld',1,2000 ),
  11129                                    PD_date1 = > VD_rec_g roup_date,
  11130                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  11131  
  11132  
  11133     EXCEPTIO N
  11134  
  11135       WHEN N O_DATA_FOU ND THEN
  11136  
  11137         NULL ;
  11138  
  11139       WHEN O THERS THEN
  11140  
  11141         VD_l og_date :=  SYSDATE;
  11142         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11143                                      PD_job_l og_date  = > VD_log_d ate,
  11144                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess logs .',1,60),
  11145                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  11146                                      PD_date1  => VD_rec _group_dat e,
  11147                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11148  
  11149     END;
  11150  
  11151   -- ******* ********** ********** ********** ********** ********** ********** ********
  11152   -- * Remov e old proc ess error  rows
  11153   -- ******* ********** ********** ********** ********** ********** ********** ********
  11154  
  11155     BEGIN
  11156  
  11157       VD_log _date := S YSDATE;
  11158       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11159                                    PD_job_log _date => V D_log_date ,
  11160                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  11161                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  11162                                                                   | | VN_parm_ log_file_a ge
  11163                                                                   | | ' days o ld',1,2000 ),
  11164                                    PD_date1 = > VD_rec_g roup_date,
  11165                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  11166  
  11167       DELETE
  11168       FROM       ADRMGT .Job_Proce ss_Errs
  11169       WHERE      Job_na me = CC_pr ocess_name
  11170       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  11171  
  11172       COMMIT ;
  11173  
  11174       VD_log _date := S YSDATE;
  11175       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11176                                    PD_job_log _date => V D_log_date ,
  11177                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  11178                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  11179                                                                   | | VN_parm_ log_file_a ge
  11180                                                                   | | ' days o ld',1,2000 ),
  11181                                    PD_date1 = > VD_rec_g roup_date,
  11182                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  11183  
  11184     EXCEPTIO N
  11185  
  11186       WHEN N O_DATA_FOU ND THEN
  11187  
  11188         NULL ;
  11189  
  11190       WHEN O THERS THEN
  11191  
  11192         VD_l og_date :=  SYSDATE;
  11193         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11194                                      PD_job_l og_date  = > VD_log_d ate,
  11195                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess erro rs.',1,60) ,
  11196                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  11197                                      PD_date1  => VD_rec _group_dat e,
  11198                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11199  
  11200     END;
  11201  
  11202   -- ******* ********** ********** ********** ********** ********** ********** ********
  11203   -- * Main  record cur sor logic
  11204   -- ******* ********** ********** ********** ********** ********** ********** ********
  11205  
  11206     BEGIN
  11207  
  11208       VN_max _log_id :=  0;
  11209       VN_pas s_count :=  0;
  11210       VN_upd ate_count  := 0;
  11211  
  11212       OPEN C _hl7_id;
  11213  
  11214       LOOP
  11215  
  11216         FETC H C_hl7_id
  11217         BULK  COLLECT I NTO T_hl7_ id
  11218         LIMI T VN_parm_ rows_to_pr ocess;
  11219  
  11220         EXIT  WHEN T_hl 7_id.COUNT  = 0;
  11221  
  11222         FORA LL I_hl7_i d IN T_hl7 _id.FIRST. .T_hl7_id. last
  11223           UP DATE    AD R.Hl7_tran saction_lo g
  11224           SE T       In ternal_err or_text =  NULL
  11225           WH ERE     Hl 7_transact ion_log_id  = T_hl7_i d(I_hl7_id );
  11226  
  11227         COMM IT;
  11228  
  11229         FOR  I_hl7_id I N T_hl7_id .FIRST..T_ hl7_id.las t LOOP
  11230  
  11231           IF  T_hl7_id( I_hl7_id)  > VN_max_l og_id THEN
  11232  
  11233              VN_max_log _id := T_h l7_id(I_hl 7_id);
  11234  
  11235           EN D IF;
  11236  
  11237         END  LOOP;
  11238  
  11239         VN_p ass_count  := VN_pass _count + 1 ;
  11240  
  11241         VN_u pdate_coun t := VN_up date_count  + T_hl7_i d.COUNT;
  11242  
  11243       END LO OP;
  11244  
  11245       CLOSE  C_hl7_id;
  11246  
  11247       BEGIN
  11248  
  11249         IF N VL(VN_max_ log_id,0)  <> 0 THEN
  11250  
  11251           UP DATE    AD RMGT.Adr_P arameter
  11252           SE T       Va lue = VN_m ax_log_id
  11253           WH ERE     Ap plication_ name = 'HL 7 NULL INT ERNAL_ERRO R_TEXT COL UMN'
  11254           AN D       Pa rameter_na me = VC_pa ra_name_la st_proc_id ;
  11255  
  11256           CO MMIT;
  11257  
  11258         ELSE
  11259  
  11260           VN _max_log_i d := VN_pa rm_last_lo g_id;
  11261  
  11262         END  IF;
  11263  
  11264       EXCEPT ION
  11265  
  11266         WHEN  OTHERS TH EN
  11267  
  11268           VD _log_date  := SYSDATE ;
  11269           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  11270                                        PD_job _log_date   => VD_log _date,
  11271                                        PC_job _status =>  SUBSTR('E RROR        - Unknown  error upd ating ' ||  VC_para_n ame_last_p roc_id ||  '.',1,60),
  11272                                        PC_job _log_messa ge => SUBS TR(VC_para _name_last _proc_id | | ': ' ||  VN_max_log _id
  11273                                                                        || '. '  || SQLERR M,1,2000),
  11274                                        PD_dat e1 => VD_r ec_group_d ate,
  11275                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  11276  
  11277           RE TURN;
  11278  
  11279       END;
  11280  
  11281   -- Process  completio n informat ion
  11282  
  11283       VD_log _date := S YSDATE;
  11284       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11285                                    PD_job_log _date => V D_log_date ,
  11286                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  11287                                    PD_date1 = > VD_rec_g roup_date,
  11288                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  11289                                    PN_numeric 2 => VN_pa ss_count,
  11290                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  11291  
  11292       VD_log _date := S YSDATE;
  11293       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11294                                    PD_job_log _date => V D_log_date ,
  11295                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  11296                                    PD_date1 = > VD_rec_g roup_date,
  11297                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  11298                                    PN_numeric 2 => VN_up date_count ,
  11299                                    PC_text2 = > SUBSTR(' Updated Re cord Count ',1,255));
  11300  
  11301       VD_log _date := S YSDATE;
  11302       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11303                                    PD_job_log _date => V D_log_date ,
  11304                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  11305                                    PD_date1 = > VD_rec_g roup_date,
  11306                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  11307                                    PN_numeric 2 => VN_ma x_log_id,
  11308                                    PC_text2 = > SUBSTR(' Last proce ssed log i d',1,255)) ;
  11309  
  11310       VD_pro cess_end_d ate := SYS DATE;
  11311       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  11312                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  11313                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  11314                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  11315                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  11316  
  11317       VD_log _date := S YSDATE;
  11318       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11319                                    PD_job_log _date => V D_log_date ,
  11320                                    PC_job_sta tus => SUB STR('SUCCE SS     - P rocessing  Completed' ,1,60),
  11321                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,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     EXCEPTIO N
  11326  
  11327       WHEN O THERS THEN
  11328  
  11329         VD_l og_date :=  SYSDATE;
  11330         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11331                                      PD_job_l og_date  = > VD_log_d ate,
  11332                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror updat ing Intern al_error_t ext.',1,60 ),
  11333                                      PC_job_l og_message  => SUBSTR ('Cursor L oop Count:  ' || VN_p ass_count
  11334                                                                      || ' Upda ted Record  Count: '  || VN_upda te_count
  11335                                                                      || '. ' | | SQLERRM, 1,2000),
  11336                                      PD_date1  => VD_rec _group_dat e,
  11337                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11338  
  11339         RETU RN;
  11340  
  11341     END;
  11342  
  11343   EXCEPTION
  11344  
  11345     WHEN OTH ERS THEN
  11346  
  11347       ROLLBA CK;
  11348  
  11349       VD_log _date := S YSDATE;
  11350       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11351                                    PD_job_err or_date  = > VD_log_d ate,
  11352                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  11353                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Hl7_Txn_Lo g_Null_Err _Col_Sp.'
  11354                                                                  ||  SQLERRM,1 ,2000),
  11355                                    PD_date1 = > VD_rec_g roup_date,
  11356                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  11357  
  11358       VD_log _date := S YSDATE;
  11359       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11360                                    PD_job_log _date => V D_log_date ,
  11361                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  11362                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  11363                                    PD_date1 = > VD_rec_g roup_date,
  11364                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  11365  
  11366   END Hl7_Tx n_Log_Null _Err_Col_S p_04;
  11367   /
  11368   DROP PROCE DURE ADR.H L7_TXN_LOG _NULL_ERR_ COL_SP_08;
  11369  
  11370   CREATE OR  REPLACE PR OCEDURE AD R.Hl7_Txn_ Log_Null_E rr_Col_Sp_ 08 (
  11371      PB_run_ standalone     IN BOO LEAN DEFAU LT FALSE,
  11372      PB_allo w_rpt_inst     IN BOO LEAN DEFAU LT FALSE,
  11373      PN_rows _to_proces s   IN NUM BER DEFAUL T NULL)
  11374   IS
  11375      -- **** ********** ********** ********** ********** ********** ********** ********** *
  11376      -- * Pr ocedure: H l7_Txn_Log _Null_Erro r_Col
  11377      -- *
  11378      -- *    Update HL7  transcati ons to rem ove data f rom the in ternal_err or_text
  11379      -- *    column for  all rows  more than  6 months o ld.
  11380      -- *
  11381      -- * Pa rameters:
  11382      -- *
  11383      -- *  P B_run_stan dalone   I gnore DBMS _JOB logic  for check ing runnin g jobs.
  11384      -- *                          Default: F ALSE
  11385      -- *
  11386      -- *  P B_allow_rp t_inst   A llow store d procedur e to be su bmitted in  the
  11387      -- *                        D BMS_JOB qu eue on the  ADR repor ting datab ases
  11388      -- *                          Default: F ALSE
  11389      -- *
  11390      -- **** ********** ********** ********** ********** ********** ********** ********** *
  11391      --
  11392      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  11393      -- Date         Au thor             Desc ription
  11394      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  11395      -- 06/2 3/2010  Cr aig Wood         Crea ted for CC R 1100.
  11396      --
  11397      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  11398  
  11399      -- CONS TANTS
  11400  
  11401      CC_no                                  V ARCHAR2 (1 ) := 'N';
  11402      CC_parm _applicati on_name    CONSTANT V ARCHAR2 (8 0)
  11403         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  11404      CC_parm _hl7_err_t xt_age     CONSTANT V ARCHAR2 (5 0)
  11405                                                 := 'OLDE ST HL7 ERR OR TEXT DA YS' ;
  11406      CC_parm _last_hl7_ id         CONSTANT V ARCHAR2 (5 0)
  11407                                                 := 'LAST  HL7 ID PR OCESSED' ;
  11408      CC_parm _log_file_ age        CONSTANT V ARCHAR2 (5 0)
  11409                                                 := 'OLDE ST LOG FIL E DAYS' ;
  11410      CC_proc ess_name              CONSTANT V ARCHAR2 (6 0)
  11411         := ' HL7 NULL I NTERNAL_ER ROR_TEXT C OLUMN' ;
  11412      CC_sp_n ame                   CONSTANT V ARCHAR2 (3 5)
  11413         := ' Hl7_Txn_Lo g_Null_Err _Col_Sp_'  || '08' ;
  11414      CC_yes                                 V ARCHAR2 (1 ) := 'Y';
  11415  
  11416      -- VARI ABLES
  11417  
  11418      VB_allo w_rpt_inst                     B OOLEAN :=  FALSE;
  11419      VB_run_ standalone                     B OOLEAN :=  FALSE;
  11420  
  11421      VC_allo w_rpt_inst                     V ARCHAR2 (5 ) := NULL;
  11422      VC_inst ance_name                      V ARCHAR2 (1 6);
  11423      VC_proc ess_durati on                  V ARCHAR2 (2 5);
  11424      VC_run_ standalone                     V ARCHAR2 (5 ) := NULL;
  11425      VC_sql_ statement                      V ARCHAR2 (2 000);
  11426      VC_para _name_last _proc_id            V ARCHAR2 (3 0):= 'P' | | '08' ||  ' LAST PRO CESSED LOG  ID';
  11427  
  11428     VD_log_d ate                            D ATE;
  11429     VD_proce ss_end_dat e                   D ATE;
  11430     VD_proce ss_start_d ate                 D ATE;
  11431     VD_rec_g roup_date                      D ATE;
  11432  
  11433     VN_job_c ount                           N UMBER := 0 ;
  11434     VN_job_n umber                          N UMBER;
  11435     VN_max_l og_id                          N UMBER := 0 ;
  11436     VN_parm_ hl7_err_tx t_age               N UMBER;
  11437     VN_parm_ log_file_a ge                  N UMBER;
  11438     VN_parm_ last_log_i d                   N UMBER := 0 ;
  11439     VN_parm_ rows_to_pr ocess               N UMBER;
  11440     VN_pass_ count                          N UMBER := 0 ;
  11441     VN_rec_c ount                           N UMBER := 0 ;
  11442     VN_updat e_count                        N UMBER := 0 ;
  11443  
  11444  
  11445   -- CURSORS
  11446  
  11447     CURSOR C _hl7_id IS
  11448       SELECT   /*+ para llel(4) */  Hl7_trans action_log _id
  11449       FROM       Hl7_tr ansaction_ log PARTIT ION (HL7_T RANSACTION _LOG_P08)
  11450       WHERE      Hl7_tr ansaction_ log_id > V N_parm_las t_log_id
  11451       AND        Transm ission_dat e < TRUNC( SYSDATE) -  VN_parm_h l7_err_txt _age
  11452       AND        Intern al_error_t ext IS NOT  NULL;
  11453  
  11454   -- TYPES
  11455  
  11456     TYPE TT_ hl7_id IS
  11457       TABLE  OF ADR.Hl7 _Transacti on_Log.Hl7 _transacti on_log_id% TYPE;
  11458  
  11459   -- MEMORY  TABLES
  11460  
  11461     T_hl7_id                                T T_hl7_id;
  11462  
  11463   -- ******* ********** ********** ********** ********** ********** ********** *******
  11464   -- *
  11465   -- *  MAIN  PROCEDURE :
  11466   -- *
  11467   -- ******* ********** ********** ********** ********** ********** ********** *******
  11468  
  11469   BEGIN
  11470  
  11471     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  11472     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  11473  
  11474     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  11475     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  11476  
  11477     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  11478     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  11479  
  11480     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  11481     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  11482  
  11483     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  QUERY PARA LLEL ' ||   2;
  11484     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  11485  
  11486     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  DML PARALL EL ' || 2;
  11487     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  11488  
  11489  
  11490     VC_sql_s tatement:= 'ALTER SES SION SET p arallel_fo rce_local= TRUE';      --  force  parallel  to a local  node
  11491     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  11492  
  11493     VD_rec_g roup_date  := TRUNC(S YSDATE);
  11494  
  11495     VD_log_d ate := SYS DATE;
  11496     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  11497                                 PD _job_log_d ate => VD_ log_date,
  11498                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  11499                                 PD _date1 =>  VD_rec_gro up_date,
  11500                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  11501  
  11502   -- ******* ********** ********** ********** ********** ********** ********** ********
  11503   -- *
  11504   -- * Valid ate input  parameters
  11505   -- *
  11506   -- ******* ********** ********** ********** ********** ********** ********** ********
  11507  
  11508   -- * Check  run stand alone flag
  11509  
  11510     IF PB_ru n_standalo ne IS NULL
  11511      OR NOT  PB_run_sta ndalone TH EN
  11512  
  11513       VB_run _standalon e := FALSE ;
  11514       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  11515  
  11516     ELSE
  11517  
  11518       VB_run _standalon e := TRUE;
  11519       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  11520  
  11521     END IF;
  11522  
  11523   -- * Check  run on re port insta nce flag
  11524  
  11525     IF PB_al low_rpt_in st IS NULL
  11526      OR NOT  PB_allow_r pt_inst TH EN
  11527  
  11528       VB_all ow_rpt_ins t := FALSE ;
  11529       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  11530  
  11531     ELSE
  11532  
  11533       VB_all ow_rpt_ins t := TRUE;
  11534       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  11535  
  11536     END IF;
  11537  
  11538   -- ******* ********** ********** ********** ********** ********** ********** ********
  11539   -- *
  11540   -- * Retri eve proces sing param eters
  11541   -- *
  11542   -- ******* ********** ********** ********** ********** ********** ********** ********
  11543  
  11544   -- Process  Parameter  OLDEST HL 7 ERROR TE XT DAYS KE PT
  11545  
  11546     BEGIN
  11547  
  11548       SELECT     Value
  11549       INTO       VN_par m_hl7_err_ txt_age
  11550       FROM       ADRMGT .Adr_Param eter
  11551       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  11552       AND        Parame ter_name =  'OLDEST H L7 ERROR T EXT DAYS K EPT';
  11553  
  11554       IF VN_ parm_hl7_e rr_txt_age  IS NULL T HEN
  11555  
  11556         VD_l og_date :=  SYSDATE;
  11557         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11558                                      PD_job_l og_date =>  VD_log_da te,
  11559                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  11560                                      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),
  11561                                      PD_date1  => VD_rec _group_dat e,
  11562                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11563  
  11564         RETU RN;
  11565  
  11566       END IF ;
  11567  
  11568     EXCEPTIO N
  11569  
  11570       WHEN N O_DATA_FOU ND 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  => 'Param eter for O LDEST HL7  ERROR TEXT  DAYS KEPT  was not f ound. Term inating pr ocess.',
  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       WHEN O THERS THEN
  11583  
  11584         VD_l og_date :=  SYSDATE;
  11585         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11586                                      PD_job_l og_date =>  VD_log_da te,
  11587                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  11588                                      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. '
  11589                                                                      || SQLERR M,1,2000),
  11590                                      PD_date1  => VD_rec _group_dat e,
  11591                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11592  
  11593         RETU RN;
  11594  
  11595     END;
  11596  
  11597   -- Process  Parameter  OLDEST LO G FILE DAY S KEPT
  11598  
  11599     BEGIN
  11600  
  11601       SELECT     Value
  11602       INTO       VN_par m_log_file _age
  11603       FROM       ADRMGT .Adr_Param eter
  11604       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  11605       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  11606  
  11607       IF VN_ parm_log_f ile_age IS  NULL THEN
  11608  
  11609         VD_l og_date :=  SYSDATE;
  11610         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11611                                      PD_job_l og_date =>  VD_log_da te,
  11612                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  11613                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST L OG FILE DA YS KEPT is  NULL. Ter minating p rocess.',1 ,2000),
  11614                                      PD_date1  => VD_rec _group_dat e,
  11615                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11616  
  11617         RETU RN;
  11618  
  11619       END IF ;
  11620  
  11621     EXCEPTIO N
  11622  
  11623       WHEN N O_DATA_FOU ND THEN
  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  => 'Param eter for O LDEST LOG  FILE DAYS  KEPT was n ot found.  Terminatin g process. ',
  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       WHEN O THERS THEN
  11636  
  11637         VD_l og_date :=  SYSDATE;
  11638         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11639                                      PD_job_l og_date =>  VD_log_da te,
  11640                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  11641                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  OLDEST LO G FILE DAY S KEPT. Te rminating  process. '
  11642                                                                      || SQLERR M,1,2000),
  11643                                      PD_date1  => VD_rec _group_dat e,
  11644                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11645  
  11646         RETU RN;
  11647  
  11648     END;
  11649  
  11650   -- Process  Parameter  ROWS TO P ROCESS
  11651  
  11652     BEGIN
  11653  
  11654       SELECT     Value
  11655       INTO       VN_par m_rows_to_ process
  11656       FROM       ADRMGT .Adr_Param eter
  11657       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  11658       AND        Parame ter_name =  'ROWS TO  PROCESS';
  11659  
  11660       IF VN_ parm_rows_ to_process  IS NULL T HEN
  11661  
  11662         VD_l og_date :=  SYSDATE;
  11663         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11664                                      PD_job_l og_date =>  VD_log_da te,
  11665                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  11666                                      PC_job_l og_message  => SUBSTR ('Paramete r ROWS TO  PROCESS is  NULL. Ter minating p rocess.',1 ,2000),
  11667                                      PD_date1  => VD_rec _group_dat e,
  11668                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11669  
  11670         RETU RN;
  11671  
  11672       END IF ;
  11673  
  11674     EXCEPTIO N
  11675  
  11676       WHEN N O_DATA_FOU ND 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  => 'Param eter for R OWS TO PRO CESS was n ot found.  Terminatin g process. ',
  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       WHEN O THERS THEN
  11689  
  11690         VD_l og_date :=  SYSDATE;
  11691         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11692                                      PD_job_l og_date =>  VD_log_da te,
  11693                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  11694                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ROWS TO P ROCESS. Te rminating  process. '
  11695                                                                      || SQLERR M,1,2000),
  11696                                      PD_date1  => VD_rec _group_dat e,
  11697                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11698  
  11699         RETU RN;
  11700  
  11701     END;
  11702  
  11703   -- Process  Parameter  LAST PROC ESSED LOG  ID
  11704  
  11705     BEGIN
  11706  
  11707       SELECT     Value
  11708       INTO       VN_par m_last_log _id
  11709       FROM       ADRMGT .Adr_Param eter
  11710       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  11711       AND        Parame ter_name =  VC_para_n ame_last_p roc_id;
  11712  
  11713       IF VN_ parm_last_ log_id IS  NULL THEN
  11714  
  11715         VD_l og_date :=  SYSDATE;
  11716         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11717                                      PD_job_l og_date =>  VD_log_da te,
  11718                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  11719                                      PC_job_l og_message  => SUBSTR ('Paramete r ' || VC_ para_name_ last_proc_ id || ' is  NULL. Ter minating p rocess.',1 ,2000),
  11720                                      PD_date1  => VD_rec _group_dat e,
  11721                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11722  
  11723         RETU RN;
  11724  
  11725       END IF ;
  11726  
  11727     EXCEPTIO N
  11728  
  11729       WHEN N O_DATA_FOU ND THEN
  11730  
  11731         VD_l og_date :=  SYSDATE;
  11732         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11733                                      PD_job_l og_date =>  VD_log_da te,
  11734                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  11735                                      PC_job_l og_message  => 'Param eter for '  || VC_par a_name_las t_proc_id  || ' was n ot found.  Terminatin g process. ',
  11736                                      PD_date1  => VD_rec _group_dat e,
  11737                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11738  
  11739         RETU RN;
  11740  
  11741       WHEN O THERS THEN
  11742  
  11743         VD_l og_date :=  SYSDATE;
  11744         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11745                                      PD_job_l og_date =>  VD_log_da te,
  11746                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  11747                                      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. '
  11748                                                                      || SQLERR M,1,2000),
  11749                                      PD_date1  => VD_rec _group_dat e,
  11750                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11751  
  11752         RETU RN;
  11753  
  11754     END;
  11755  
  11756   -- Write o ut Paramet er log mes sages for  submitted  job
  11757  
  11758     VD_log_d ate := SYS DATE;
  11759     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  11760                                 PD _job_log_d ate => VD_ log_date,
  11761                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  11762                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  11763                                 PD _date1 =>  VD_rec_gro up_date,
  11764                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  11765  
  11766     VD_log_d ate := SYS DATE;
  11767     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  11768                                 PD _job_log_d ate => VD_ log_date,
  11769                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  11770                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  11771                                 PD _date1 =>  VD_rec_gro up_date,
  11772                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  11773  
  11774     VD_log_d ate := SYS DATE;
  11775     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  11776                                 PD _job_log_d ate => VD_ log_date,
  11777                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  11778                                 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),
  11779                                 PD _date1 =>  VD_rec_gro up_date,
  11780                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  11781  
  11782  
  11783     VD_log_d ate := SYS DATE;
  11784     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  11785                                 PD _job_log_d ate => VD_ log_date,
  11786                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  11787                                 PC _job_log_m essage =>  SUBSTR(' O LDEST HL7  ERROR TEXT  DAYS KEPT : ' || VN_ parm_hl7_e rr_txt_age ,1,2000),
  11788                                 PD _date1 =>  VD_rec_gro up_date,
  11789                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  11790  
  11791     VD_log_d ate := SYS DATE;
  11792     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  11793                                 PD _job_log_d ate => VD_ log_date,
  11794                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  11795                                 PC _job_log_m essage =>  SUBSTR(' O LDEST LOG  FILE DAYS  KEPT: ' ||  VN_parm_l og_file_ag e,1,2000),
  11796                                 PD _date1 =>  VD_rec_gro up_date,
  11797                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  11798  
  11799     VD_log_d ate := SYS DATE;
  11800     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  11801                                 PD _job_log_d ate => VD_ log_date,
  11802                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  11803                                 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),
  11804                                 PD _date1 =>  VD_rec_gro up_date,
  11805                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  11806  
  11807     VD_log_d ate := SYS DATE;
  11808     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  11809                                 PD _job_log_d ate => VD_ log_date,
  11810                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  11811                                 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),
  11812                                 PD _date1 =>  VD_rec_gro up_date,
  11813                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  11814  
  11815   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  11816  
  11817     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  11818  
  11819       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  11820  
  11821       VD_log _date := S YSDATE;
  11822       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11823                                    PD_job_log _date => V D_log_date ,
  11824                                    PC_job_sta tus => SUB STR('WARNI NG     - J ob table p arameters' ,1,60),
  11825                                    PC_job_log _message = > SUBSTR('  Processin g paramete r ROWS TO  PROCESS (i n each loo p) has bee n overridd en.'
  11826                                                              || ' T he overrid e value is : ' || NVL (TO_CHAR(V N_parm_row s_to_proce ss),'NULL' ),1,2000),
  11827                                    PD_date1 = > VD_rec_g roup_date,
  11828                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  11829  
  11830     END IF;
  11831  
  11832   -- ******* ********** ********** ********** ********** ********** ********** ********
  11833   -- *
  11834   -- * Check  to see if  process i s running  on a repor ting datab ase.
  11835   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  11836   -- *
  11837   -- ******* ********** ********** ********** ********** ********** ********** ********
  11838  
  11839     IF NOT V B_allow_rp t_inst THE N
  11840  
  11841       BEGIN
  11842  
  11843         VD_l og_date :=  SYSDATE;
  11844         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11845                                      PD_job_l og_date =>  VD_log_da te,
  11846                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  11847                                      PD_date1  => VD_rec _group_dat e,
  11848                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11849  
  11850         SELE CT    Inst ance_name
  11851         INTO       VC_i nstance_na me
  11852         FROM       V$in stance;
  11853  
  11854         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  11855  
  11856           VD _log_date  := SYSDATE ;
  11857           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  11858                                        PD_job _log_date  => VD_log_ date,
  11859                                        PC_job _status =>  SUBSTR('E RROR        - Process ing Failed ',1,60),
  11860                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  11861                                                                     || VC_inst ance_name
  11862                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  11863                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  11864                                        PD_dat e1 => VD_r ec_group_d ate,
  11865                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  11866  
  11867           RE TURN;
  11868  
  11869         END  IF;
  11870  
  11871       EXCEPT ION
  11872  
  11873         WHEN  OTHERS TH EN
  11874  
  11875           VD _log_date  := SYSDATE ;
  11876           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  11877                                        PD_job _log_date  => VD_log_ date,
  11878                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  11879                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  11880                                        PD_dat e1 => VD_r ec_group_d ate,
  11881                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  11882  
  11883           RE TURN;
  11884  
  11885       END;
  11886  
  11887     END IF;
  11888  
  11889   -- ******* ********** ********** ********** ********** ********** ********** ********
  11890   -- *
  11891   -- * Check  to see if  the job h as already  run today
  11892   -- *  - If  running i n stand-al one mode,  don't chec k.
  11893   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  11894   -- *
  11895   -- ******* ********** ********** ********** ********** ********** ********** ********
  11896  
  11897     IF NOT P B_run_stan dalone THE N
  11898  
  11899       BEGIN
  11900  
  11901         VD_l og_date :=  SYSDATE;
  11902         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11903                                      PD_job_l og_date =>  VD_log_da te,
  11904                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  11905                                      PD_date1  => VD_rec _group_dat e,
  11906                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11907  
  11908         SELE CT    COUN T(*)
  11909         INTO       VN_r ec_count
  11910         FROM       ADRM GT.Job_Pro cess_Logs
  11911         WHER E     Job_ name = CC_ process_na me
  11912         AND        Date 1 = VD_rec _group_dat e
  11913         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  11914  
  11915         IF V N_rec_coun t > 0 THEN
  11916  
  11917           VD _log_date  := SYSDATE ;
  11918           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  11919                                        PD_job _log_date  => VD_log_ date,
  11920                                        PC_job _status =>  SUBSTR('W ARNING      - This da te has alr eady been  processed' ,1,60),
  11921                                        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),
  11922                                        PD_dat e1 => VD_r ec_group_d ate,
  11923                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  11924  
  11925           RE TURN;
  11926  
  11927         END  IF;
  11928  
  11929       EXCEPT ION
  11930  
  11931         WHEN  OTHERS TH EN
  11932  
  11933           VD _log_date  := SYSDATE ;
  11934           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  11935                                        PD_job _log_date  => VD_log_ date,
  11936                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  11937                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  11938                                        PD_dat e1 => VD_r ec_group_d ate,
  11939                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  11940  
  11941           RE TURN;
  11942  
  11943       END;
  11944  
  11945     END IF;
  11946  
  11947   -- ******* ********** ********** ********** ********** ********** ********** ********
  11948   -- *
  11949   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  11950   -- *  - If  yes, then  end this  job.
  11951   -- *
  11952   -- ******* ********** ********** ********** ********** ********** ********** ********
  11953  
  11954     SELECT C OUNT(*)
  11955     INTO   V N_job_coun t
  11956     FROM   S YS.DBA_JOB S_RUNNING  R,
  11957            S YS.DBA_JOB S J
  11958     WHERE  J .JOB = R.J OB
  11959     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  11960  
  11961     IF VN_jo b_count >  1 THEN
  11962  
  11963       VD_log _date := S YSDATE;
  11964       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  11965                                    PD_job_log _date => V D_log_date ,
  11966                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  11967                                    PC_job_log _message = > SUBSTR(' There is a nother '
  11968                                                                || C C_sp_name
  11969                                                                || '  job runni ng.'
  11970                                                                || '  Exiting j ob without  running.' ,1,2000),
  11971                                    PD_date1 = > VD_rec_g roup_date,
  11972                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  11973  
  11974       RETURN ;
  11975  
  11976     ELSE
  11977  
  11978       IF VB_ run_standa lone THEN
  11979  
  11980         VD_l og_date :=  SYSDATE;
  11981         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11982                                      PD_job_l og_date =>  VD_log_da te,
  11983                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  11984                                      PD_date1  => VD_rec _group_dat e,
  11985                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  11986  
  11987       ELSE
  11988  
  11989         SELE CT    MAX( J.Job)
  11990         INTO       VN_j ob_number
  11991         FROM       SYS. DBA_JOBS_R UNNING R,
  11992                    SYS. DBA_JOBS J
  11993         WHER E     J.JO B = R.JOB
  11994         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  11995  
  11996         VD_l og_date :=  SYSDATE;
  11997         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  11998                                      PD_job_l og_date =>  VD_log_da te,
  11999                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  12000                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  12001                                                                      || VN_job _number,1, 2000),
  12002                                      PD_date1  => VD_rec _group_dat e,
  12003                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  12004  
  12005       END IF ;
  12006  
  12007     END IF;
  12008  
  12009   -- ******* ********** ********** ********** ********** ********** ********** ********
  12010   -- *
  12011   -- * Main  processing  loop
  12012   -- *
  12013   -- ******* ********** ********** ********** ********** ********** ********** ********
  12014  
  12015     VN_pass_ count := 0 ;
  12016     VN_updat e_count :=  0;
  12017     VD_proce ss_start_d ate := SYS DATE;
  12018  
  12019   -- ******* ********** ********** ********** ********** ********** ********** ********
  12020   -- * Remov e old proc ess log ro ws
  12021   -- ******* ********** ********** ********** ********** ********** ********** ********
  12022     BEGIN
  12023  
  12024       VD_log _date := S YSDATE;
  12025       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  12026                                    PD_job_log _date => V D_log_date ,
  12027                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  12028                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  12029                                                                   | | VN_parm_ log_file_a ge
  12030                                                                   | | ' days o ld',1,2000 ),
  12031                                    PD_date1 = > VD_rec_g roup_date,
  12032                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  12033  
  12034       DELETE
  12035       FROM       ADRMGT .Job_Proce ss_Logs
  12036       WHERE      Job_na me = CC_pr ocess_name
  12037       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  12038  
  12039       COMMIT ;
  12040  
  12041       VD_log _date := S YSDATE;
  12042       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  12043                                    PD_job_log _date => V D_log_date ,
  12044                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  12045                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  12046                                                                   | | VN_parm_ log_file_a ge
  12047                                                                   | | ' days o ld',1,2000 ),
  12048                                    PD_date1 = > VD_rec_g roup_date,
  12049                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  12050  
  12051  
  12052     EXCEPTIO N
  12053  
  12054       WHEN N O_DATA_FOU ND THEN
  12055  
  12056         NULL ;
  12057  
  12058       WHEN O THERS THEN
  12059  
  12060         VD_l og_date :=  SYSDATE;
  12061         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  12062                                      PD_job_l og_date  = > VD_log_d ate,
  12063                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess logs .',1,60),
  12064                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  12065                                      PD_date1  => VD_rec _group_dat e,
  12066                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  12067  
  12068     END;
  12069  
  12070   -- ******* ********** ********** ********** ********** ********** ********** ********
  12071   -- * Remov e old proc ess error  rows
  12072   -- ******* ********** ********** ********** ********** ********** ********** ********
  12073  
  12074     BEGIN
  12075  
  12076       VD_log _date := S YSDATE;
  12077       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  12078                                    PD_job_log _date => V D_log_date ,
  12079                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  12080                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  12081                                                                   | | VN_parm_ log_file_a ge
  12082                                                                   | | ' days o ld',1,2000 ),
  12083                                    PD_date1 = > VD_rec_g roup_date,
  12084                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  12085  
  12086       DELETE
  12087       FROM       ADRMGT .Job_Proce ss_Errs
  12088       WHERE      Job_na me = CC_pr ocess_name
  12089       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  12090  
  12091       COMMIT ;
  12092  
  12093       VD_log _date := S YSDATE;
  12094       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  12095                                    PD_job_log _date => V D_log_date ,
  12096                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  12097                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  12098                                                                   | | VN_parm_ log_file_a ge
  12099                                                                   | | ' days o ld',1,2000 ),
  12100                                    PD_date1 = > VD_rec_g roup_date,
  12101                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  12102  
  12103     EXCEPTIO N
  12104  
  12105       WHEN N O_DATA_FOU ND THEN
  12106  
  12107         NULL ;
  12108  
  12109       WHEN O THERS THEN
  12110  
  12111         VD_l og_date :=  SYSDATE;
  12112         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  12113                                      PD_job_l og_date  = > VD_log_d ate,
  12114                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess erro rs.',1,60) ,
  12115                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  12116                                      PD_date1  => VD_rec _group_dat e,
  12117                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  12118  
  12119     END;
  12120  
  12121   -- ******* ********** ********** ********** ********** ********** ********** ********
  12122   -- * Main  record cur sor logic
  12123   -- ******* ********** ********** ********** ********** ********** ********** ********
  12124  
  12125     BEGIN
  12126  
  12127       VN_max _log_id :=  0;
  12128       VN_pas s_count :=  0;
  12129       VN_upd ate_count  := 0;
  12130  
  12131       OPEN C _hl7_id;
  12132  
  12133       LOOP
  12134  
  12135         FETC H C_hl7_id
  12136         BULK  COLLECT I NTO T_hl7_ id
  12137         LIMI T VN_parm_ rows_to_pr ocess;
  12138  
  12139         EXIT  WHEN T_hl 7_id.COUNT  = 0;
  12140  
  12141         FORA LL I_hl7_i d IN T_hl7 _id.FIRST. .T_hl7_id. last
  12142           UP DATE    AD R.Hl7_tran saction_lo g
  12143           SE T       In ternal_err or_text =  NULL
  12144           WH ERE     Hl 7_transact ion_log_id  = T_hl7_i d(I_hl7_id );
  12145  
  12146         COMM IT;
  12147  
  12148         FOR  I_hl7_id I N T_hl7_id .FIRST..T_ hl7_id.las t LOOP
  12149  
  12150           IF  T_hl7_id( I_hl7_id)  > VN_max_l og_id THEN
  12151  
  12152              VN_max_log _id := T_h l7_id(I_hl 7_id);
  12153  
  12154           EN D IF;
  12155  
  12156         END  LOOP;
  12157  
  12158         VN_p ass_count  := VN_pass _count + 1 ;
  12159  
  12160         VN_u pdate_coun t := VN_up date_count  + T_hl7_i d.COUNT;
  12161  
  12162       END LO OP;
  12163  
  12164       CLOSE  C_hl7_id;
  12165  
  12166       BEGIN
  12167  
  12168         IF N VL(VN_max_ log_id,0)  <> 0 THEN
  12169  
  12170           UP DATE    AD RMGT.Adr_P arameter
  12171           SE T       Va lue = VN_m ax_log_id
  12172           WH ERE     Ap plication_ name = 'HL 7 NULL INT ERNAL_ERRO R_TEXT COL UMN'
  12173           AN D       Pa rameter_na me = VC_pa ra_name_la st_proc_id ;
  12174  
  12175           CO MMIT;
  12176  
  12177         ELSE
  12178  
  12179           VN _max_log_i d := VN_pa rm_last_lo g_id;
  12180  
  12181         END  IF;
  12182  
  12183       EXCEPT ION
  12184  
  12185         WHEN  OTHERS TH EN
  12186  
  12187           VD _log_date  := SYSDATE ;
  12188           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  12189                                        PD_job _log_date   => VD_log _date,
  12190                                        PC_job _status =>  SUBSTR('E RROR        - Unknown  error upd ating ' ||  VC_para_n ame_last_p roc_id ||  '.',1,60),
  12191                                        PC_job _log_messa ge => SUBS TR(VC_para _name_last _proc_id | | ': ' ||  VN_max_log _id
  12192                                                                        || '. '  || SQLERR M,1,2000),
  12193                                        PD_dat e1 => VD_r ec_group_d ate,
  12194                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  12195  
  12196           RE TURN;
  12197  
  12198       END;
  12199  
  12200   -- Process  completio n informat ion
  12201  
  12202       VD_log _date := S YSDATE;
  12203       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  12204                                    PD_job_log _date => V D_log_date ,
  12205                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  12206                                    PD_date1 = > VD_rec_g roup_date,
  12207                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  12208                                    PN_numeric 2 => VN_pa ss_count,
  12209                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  12210  
  12211       VD_log _date := S YSDATE;
  12212       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  12213                                    PD_job_log _date => V D_log_date ,
  12214                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  12215                                    PD_date1 = > VD_rec_g roup_date,
  12216                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  12217                                    PN_numeric 2 => VN_up date_count ,
  12218                                    PC_text2 = > SUBSTR(' Updated Re cord Count ',1,255));
  12219  
  12220       VD_log _date := S YSDATE;
  12221       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  12222                                    PD_job_log _date => V D_log_date ,
  12223                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  12224                                    PD_date1 = > VD_rec_g roup_date,
  12225                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  12226                                    PN_numeric 2 => VN_ma x_log_id,
  12227                                    PC_text2 = > SUBSTR(' Last proce ssed log i d',1,255)) ;
  12228  
  12229       VD_pro cess_end_d ate := SYS DATE;
  12230       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  12231                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  12232                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  12233                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  12234                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  12235  
  12236       VD_log _date := S YSDATE;
  12237       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  12238                                    PD_job_log _date => V D_log_date ,
  12239                                    PC_job_sta tus => SUB STR('SUCCE SS     - P rocessing  Completed' ,1,60),
  12240                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  12241                                    PD_date1 = > VD_rec_g roup_date,
  12242                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  12243  
  12244     EXCEPTIO N
  12245  
  12246       WHEN O THERS THEN
  12247  
  12248         VD_l og_date :=  SYSDATE;
  12249         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  12250                                      PD_job_l og_date  = > VD_log_d ate,
  12251                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror updat ing Intern al_error_t ext.',1,60 ),
  12252                                      PC_job_l og_message  => SUBSTR ('Cursor L oop Count:  ' || VN_p ass_count
  12253                                                                      || ' Upda ted Record  Count: '  || VN_upda te_count
  12254                                                                      || '. ' | | SQLERRM, 1,2000),
  12255                                      PD_date1  => VD_rec _group_dat e,
  12256                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  12257  
  12258         RETU RN;
  12259  
  12260     END;
  12261  
  12262   EXCEPTION
  12263  
  12264     WHEN OTH ERS THEN
  12265  
  12266       ROLLBA CK;
  12267  
  12268       VD_log _date := S YSDATE;
  12269       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  12270                                    PD_job_err or_date  = > VD_log_d ate,
  12271                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  12272                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Hl7_Txn_Lo g_Null_Err _Col_Sp.'
  12273                                                                  ||  SQLERRM,1 ,2000),
  12274                                    PD_date1 = > VD_rec_g roup_date,
  12275                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  12276  
  12277       VD_log _date := S YSDATE;
  12278       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  12279                                    PD_job_log _date => V D_log_date ,
  12280                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  12281                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  12282                                    PD_date1 = > VD_rec_g roup_date,
  12283                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  12284  
  12285   END Hl7_Tx n_Log_Null _Err_Col_S p_08;
  12286   /
  12287   DROP PROCE DURE ADR.C REATE_APPT _REQUEST_S P;
  12288  
  12289   CREATE OR  REPLACE PR OCEDURE AD R.CREATE_A PPT_REQUES T_SP(p_cas e NUMBER,  p_partitio n_name VAR CHAR2, p_t icket_no N UMBER)
  12290   AS
  12291  
  12292       lv_cre ate_view1_ stmnt VARC HAR2(1500) ;
  12293       lv_sel ect_vw1_st mnt VARCHA R2(3000);
  12294       lv_fro m_where_vw 1_stmnt VA RCHAR2(400 );
  12295       lv_vw1 _stmnt VAR CHAR2(6000 );
  12296  
  12297       lv_cre ate_view2_ stmnt VARC HAR2(1500) ;
  12298  
  12299       lv_sel ect_vw2_st mnt VARCHA R2(3000);
  12300       lv_fro m_where_vw 2_stmnt VA RCHAR2(400 );
  12301       lv_vw2 _stmnt VAR CHAR2(6000 );
  12302  
  12303   BEGIN
  12304  
  12305      IF p_ca se = 1 THE N
  12306  
  12307       lv_cre ate_view1_ stmnt :=
  12308       'CREAT E OR REPLA CE VIEW AD R.APPOINTM ENT_REQUES T_LOAD1_VW  AS '||CHR (10)||
  12309       'SELEC T appointm ent_reques t_h_id, ap pointment_ request_id , person_i d,'||CHR(1 0)||
  12310       ' tran saction_ty pe_code, r esponse, o rig_respon se,'||CHR( 10)||
  12311       'respo nse_date,  orig_respo nse_date,  response_c hg_date, o rig_respon se_chg_dat e,'||CHR(1 0)||
  12312       'recor d_created_ date, SUBS TR(record_ created_by ||'''||p_t icket_no | |''',1,30)  record_cr eated_by,  record_mod ified_date  , record_ modified_b y, '||CHR( 10)||
  12313       '(ROW_ NUMBER() O VER (PARTI TION BY pe rson_id  O RDER BY re cord_modif ied_date,  appointmen t_request_ h_id)-1) r ecord_modi fied_count '||CHR(10) ||
  12314       'FROM  ( ';
  12315  
  12316       lv_sel ect_vw1_st mnt :=
  12317           '  WITH perso n_case1 AS  '||CHR(10 )||
  12318           '( SELECT per son_id, mi n_person_h _id '||CHR (10)||
  12319           'F ROM ADR.CC N_PERS_ENR OLLDETR_CA SE1_TMP PA RTITION (' ||p_partit ion_name|| ')  )'||CH R(10)||
  12320          'SE LECT /* us e_hash (c  ) */  p.pe rson_h_id  appointmen t_request_ h_id, p.pe rson_id ap pointment_ request_id , p.person _id, '||CH R(10)||
  12321          --  repaced
  12322          ' C ase When (   (ROW_NUM BER() OVER  (PARTITIO N BY p.per son_id  OR DER BY rec ord_modifi ed_date ,  person_h_i d)) - 1) =  0 THEN '' I''  else  ''U'' END  transactio n_type_cod e, ' || CH R(10) ||
  12323  
  12324           '  appointmen t_was_requ ested_ind  response,' ||CHR(10)| |
  12325           'F IRST_VALUE (NVL(appoi ntment_was _requested _ind,0) )  '||CHR(10) ||
  12326           '  IGNORE NUL LS OVER (P ARTITION B Y p.person _id ORDER  BY record_ modified_d ate, perso n_h_id) or ig_respons e, '||CHR( 10)||
  12327          'ap pointment_ requested_ date respo nse_date,  '||CHR(10) ||
  12328         'FIR ST_VALUE(a ppointment _requested _date) IGN ORE NULLS  OVER (PART ITION BY p .person_id  ORDER BY  record_mod ified_date , person_h _id) orig_ response_d ate, '||CH R(10)||
  12329           'r ecord_modi fied_date  response_c hg_date, ' ||CHR(10)| |
  12330           'F IRST_VALUE (record_mo dified_dat e) IGNORE  NULLS OVER  (PARTITIO N BY p.per son_id ORD ER BY reco rd_modifie d_date, pe rson_h_id)  orig_resp onse_chg_d ate, '||CH R(10)||
  12331           '( CASE WHEN  NVL(appoin tment_was_ requested_ ind,3) = L AG(NVL(app ointment_w as_request ed_ind,3))  OVER (PAR TITION BY  p.person_i d ORDER BY  record_mo dified_dat e,person_h _id) THEN  1 '||CHR(1 0)||
  12332          'WH EN NVL(app ointment_w as_request ed_ind,3)  != LAG(NVL (appointme nt_was_req uested_ind ,3)) OVER  (PARTITION  BY p.pers on_id ORDE R BY recor d_modified _date,pers on_h_id) T HEN 0 '||C HR(10)||
  12333          'EN D) EXCLUSI ON, ROW_NU MBER() OVE R (PARTITI ON BY p.pe rson_id  O RDER BY re cord_modif ied_date ,  person_h_ id) ROWNUM BER, '||CH R(10)||
  12334          're cord_creat ed_date, r ecord_crea ted_by, re cord_modif ied_date,  record_mod ified_by';
  12335  
  12336          lv_ from_where _vw1_stmnt  :=
  12337           '  FROM PERSO N_H p, per son_case1  c '||CHR(1 0)||
  12338           'w here c.per son_id = p .person_id  '||CHR(10 )||
  12339           'a nd p.perso n_h_id >=  c.min_pers on_h_id) ' ||CHR(10)| |
  12340           'W HERE (EXCL USION = 0  OR rownumb er = 1)';
  12341  
  12342           lv _vw1_stmnt  := lv_cre ate_view1_ stmnt  ||C HR(10)||
  12343                             lv_sel ect_vw1_st mnt    ||C HR(10)||
  12344                             lv_fro m_where_vw 1_stmnt;
  12345  
  12346  
  12347         EXEC UTE IMMEDI ATE (lv_vw 1_stmnt);
  12348  
  12349      ELSE
  12350  
  12351       lv_cre ate_view2_ stmnt :=
  12352       'CREAT E OR REPLA CE VIEW AD R.APPOINTM ENT_REQUES T_LOAD2_VW  AS'||CHR( 10)||
  12353           'S ELECT  app ointment_r equest_h_i d, appoint ment_reque st_id, per son_id,  t rans_type_ code trans action_typ e_code,'|| CHR(10)||
  12354           'r esponse, o rig_respon se, respon se_date, o rig_respon se_date, r esponse_ch g_date, or ig_respons e_chg_date ,'||CHR(10 )||
  12355           'r ecord_crea ted_date,  SUBSTR(rec ord_create d_by ||''' ||p_ticket _no ||''', 1,30) reco rd_created _by, recor d_modified _date , re cord_modif ied_by,  r ecord_modi fied_count '||CHR(10) ||
  12356           'F ROM (';
  12357  
  12358       lv_sel ect_vw2_st mnt :=
  12359           'S ELECT appo intment_re quest_h_id , appointm ent_reques t_id, pers on_id,'||C HR(10)||
  12360           't rans_type_ code, resp onse, orig _response,  response_ date, orig _response_ date, resp onse_chg_d ate, orig_ response_c hg_date,'| |CHR(10)||
  12361           'r ecord_crea ted_date,  record_cre ated_by, r ecord_modi fied_date  , record_m odified_by ,'||CHR(10 )||
  12362           '( ROW_NUMBER () OVER (P ARTITION B Y person_i d  ORDER B Y record_m odified_da te, appoin tment_requ est_h_id)- 1) record_ modified_c ount'||CHR (10)||
  12363           'F ROM ('||CH R(10)||
  12364                'WITH pe rson_case1  AS'||CHR( 10)||
  12365                '(SELECT  person_id , min_pers on_h_id'|| CHR(10)||
  12366                'FROM AD R.CCN_PERS _ENROLLDET R_CASE2_TM P PARTITIO N ('||p_pa rtition_na me||')  )' ||CHR(10)| |
  12367                'SELECT  /* use_has h (c) */   p.person_h _id appoin tment_requ est_h_id,' ||CHR(10)| |
  12368                    'p.p erson_id a ppointment _request_i d,   p.per son_id,'|| CHR(10)||
  12369                    ' Ca se When (   ROW_NUMBE R() OVER ( PARTITION  BY p.perso n_id  ORDE R BY recor d_modified _date , pe rson_h_id)  - 1) = 0  THEN ''I''   else ''U '' END tra ns_type_co de, ' || C HR(10) ||
  12370                    ' ap pointment_ was_reques ted_ind re sponse,'|| CHR(10)||
  12371                    'FIR ST_VALUE(N VL(appoint ment_was_r equested_i nd,0))'||C HR(10)||
  12372                    'IGN ORE NULLS  OVER (PART ITION BY p .person_id  ORDER BY  record_mod ified_date , person_h _id) orig_ response,' ||CHR(10)| |
  12373                    'app ointment_r equested_d ate respon se_date, ' ||CHR(10)| |
  12374                    'FIR ST_VALUE(a ppointment _requested _date) IGN ORE NULLS  OVER (PART ITION BY p .person_id  ORDER BY  record_mod ified_date , person_h _id) orig_ response_d ate, '||CH R(10)||
  12375                    'rec ord_modifi ed_date re sponse_chg _date,'||C HR(10)||
  12376                    'FIR ST_VALUE(r ecord_modi fied_date)  IGNORE NU LLS OVER ( PARTITION  BY p.perso n_id ORDER  BY record _modified_ date, pers on_h_id) o rig_respon se_chg_dat e,'||CHR(1 0)||
  12377                    '(CA SE WHEN NV L(appointm ent_was_re quested_in d,3) = LAG (NVL(appoi ntment_was _requested _ind,3)) O VER (PARTI TION BY p. person_id  ORDER BY r ecord_modi fied_date, person_h_i d) THEN 1' ||CHR(10)| |
  12378                    'WHE N NVL(appo intment_wa s_requeste d_ind,3) ! = LAG(NVL( appointmen t_was_requ ested_ind, 3)) OVER ( PARTITION  BY p.perso n_id ORDER  BY record _modified_ date,perso n_h_id) TH EN 0'||CHR (10)||
  12379                    'END ) EXCLUSIO N, ROW_NUM BER() OVER  (PARTITIO N BY p.per son_id  OR DER BY rec ord_modifi ed_date ,  person_h_i d) ROWNUMB ER,'||CHR( 10)||
  12380                    'rec ord_create d_by, reco rd_created _date, rec ord_modifi ed_by,  re cord_modif ied_date ' ;
  12381  
  12382       lv_fro m_where_vw 2_stmnt :=
  12383           '  FROM PERSO N_H p, per son_case1  c'||CHR(10 )||
  12384           'W HERE c.per son_id = p .person_id '||CHR(10) ||
  12385           'A ND p.perso n_h_id >=  c.min_pers on_h_id)'| |CHR(10)||
  12386           'W HERE (EXCL USION = 0  OR rownumb er = 1))';
  12387  
  12388          lv_ vw2_stmnt  := lv_crea te_view2_s tmnt  ||CH R(10)||
  12389                            lv_sele ct_vw2_stm nt    ||CH R(10)||
  12390                            lv_from _where_vw2 _stmnt;
  12391  
  12392  
  12393     EXECUTE  IMMEDIATE  (lv_vw2_st mnt);
  12394  
  12395      END IF;
  12396   END;
  12397   /
  12398  
  12399  
  12400   CREATE OR  REPLACE PU BLIC SYNON YM CREATE_ APPT_REQUE ST_SP FOR  ADR.CREATE _APPT_REQU EST_SP;
  12401   DROP PROCE DURE ADR.C LEAN_SSN_F RM_ADDR;
  12402  
  12403   CREATE OR  REPLACE PR OCEDURE AD R.CLEAN_SS N_FRM_ADDR  IS
  12404      v_rec_c nt   INTEG ER;
  12405   BEGIN
  12406      ADRMGT. Job_Proces s_Log_Sp ( PC_job_nam e           => SUBSTR  ('CLEAN_S SN_FRM_ADD R', 1, 60) ,
  12407                                    PD_job_log _date       => SYSDAT E,
  12408                                    PC_job_sta tus         => 'STG-B EGIN',
  12409                                    PC_JOB_LOG _MESSAGE    => SUBSTR  (' Starti ng to proc ess', 1, 6 0));
  12410  
  12411      INSERT  INTO ADR.S TG_ADDRESS _SSN_CLEAN UP (ADDRES S_ID,
  12412                                                   ADDRES S_LINE1,
  12413                                                   ADDRES S_LINE2,
  12414                                                   ADDRES S_LINE3,
  12415                                                   CITY,
  12416                                                   SSN)
  12417         SELE CT address _id,
  12418                 address _line1,
  12419                 address _line2,
  12420                 address _line3,
  12421                 city,
  12422                 PERSON_ TRAITS.ssn
  12423           FR OM address , person,  adr.PERSON _TRAITS
  12424          WHE RE     add ress.perso n_id = per son.person _id
  12425                 AND per son.vpid_v alue = PER SON_TRAITS .vpid_valu e
  12426                 AND (    (INSTR (
  12427                              REGEX P_REPLACE  (address_l ine1,
  12428                                                '([[:alph a:]]|[[:sp ace:]]|[[: punct:]])* ',
  12429                                                ''),
  12430                              PERSO N_TRAITS.s sn) > 0)
  12431                      OR  (INSTR (
  12432                              REGEX P_REPLACE  (address_l ine2,
  12433                                                '([[:alph a:]]|[[:sp ace:]]|[[: punct:]])* ',
  12434                                                ''),
  12435                              PERSO N_TRAITS.s sn) > 0)
  12436                      OR  (INSTR (
  12437                              REGEX P_REPLACE  (address_l ine3,
  12438                                                '([[:alph a:]]|[[:sp ace:]]|[[: punct:]])* ',
  12439                                                ''),
  12440                              PERSO N_TRAITS.s sn) > 0)
  12441                      OR  (INSTR (
  12442                              REGEX P_REPLACE  (city, '([ [:alpha:]] |[[:space: ]]|[[:punc t:]])*', ' '),
  12443                              PERSO N_TRAITS.s sn) > 0));
  12444  
  12445      v_rec_c nt := SQL% ROWCOUNT;
  12446      COMMIT;
  12447  
  12448      ADRMGT. Job_Proces s_Log_Sp (
  12449         PC_j ob_name           =>  SUBSTR ('C LEAN_SSN_F RM_ADDR',  1, 60),
  12450         PD_j ob_log_dat e      =>  SYSDATE,
  12451         PC_j ob_status         =>  'STG-COMPL ETE',
  12452         PC_J OB_LOG_MES SAGE   =>  SUBSTR (
  12453                                         'STAG E record_c ount : '
  12454                                      || v_rec _cnt
  12455                                      || ' Com pleted col lecting AD DRESS_IDs' ,
  12456                                      1,
  12457                                      60));
  12458  
  12459      UPDATE  address tg t
  12460         SET  (address_l ine1,
  12461               address_l ine2,
  12462               address_l ine3,
  12463               city) =
  12464                 (SELECT  CASE
  12465                             WHEN ( INSTR (
  12466                                       REGEXP_ REPLACE (a ddress_lin e1,
  12467                                                        ' ([[:alpha: ]]|[[:spac e:]]|[[:pu nct:]])*',
  12468                                                        ' '),
  12469                                       ssn) >  0) THEN
  12470                                NUL L
  12471                             ELSE
  12472                                add ress_line1
  12473                          END
  12474                             addres s_line1_re p,
  12475                          CASE
  12476                             WHEN ( INSTR (
  12477                                       REGEXP_ REPLACE (a ddress_lin e2,
  12478                                                        ' ([[:alpha: ]]|[[:spac e:]]|[[:pu nct:]])*',
  12479                                                        ' '),
  12480                                       ssn) >  0) THEN
  12481                                NUL L
  12482                             ELSE
  12483                                add ress_line2
  12484                          END
  12485                             addres s_line2_re p,
  12486                          CASE
  12487                             WHEN ( INSTR (
  12488                                       REGEXP_ REPLACE (a ddress_lin e3,
  12489                                                        ' ([[:alpha: ]]|[[:spac e:]]|[[:pu nct:]])*',
  12490                                                        ' '),
  12491                                       ssn) >  0) THEN
  12492                                NUL L
  12493                             ELSE
  12494                                add ress_line3
  12495                          END
  12496                             addres s_line3_re p,
  12497                          CASE
  12498                             WHEN ( INSTR (
  12499                                       REGEXP_ REPLACE (c ity,
  12500                                                        ' ([[:alpha: ]]|[[:spac e:]]|[[:pu nct:]])*',
  12501                                                        ' '),
  12502                                       ssn) >  0) THEN
  12503                                NUL L
  12504                             ELSE
  12505                                cit y
  12506                          END
  12507                             city_r ep
  12508                    FROM  STG_ADDRE SS_SSN_CLE ANUP src
  12509                   WHERE  src.addre ss_id = tg t.address_ id),
  12510              record_mod ified_by =  '581393',
  12511              record_mod ified_date  = SYSDATE ,
  12512              record_mod ified_coun t = record _modified_ count + 1
  12513       WHERE  EXISTS
  12514                 (SELECT  1
  12515                    FROM  STG_ADDRE SS_SSN_CLE ANUP src
  12516                   WHERE  src.addre ss_id = tg t.address_ id);
  12517  
  12518      v_rec_c nt := SQL% ROWCOUNT;
  12519      COMMIT;
  12520  
  12521      ADRMGT. Job_Proces s_Log_Sp (
  12522         PC_j ob_name           =>  SUBSTR ('C LEAN_SSN_F RM_ADDR',  1, 60),
  12523         PD_j ob_log_dat e      =>  SYSDATE,
  12524         PC_j ob_status         =>  'COMPLETE' ,
  12525         PC_J OB_LOG_MES SAGE   =>  SUBSTR (
  12526                                         'Upda ted record _count : '
  12527                                      || v_rec _cnt
  12528                                      || ' Sta rting to p rocess',
  12529                                      1,
  12530                                      60));
  12531   EXCEPTION
  12532      WHEN NO _DATA_FOUN D THEN
  12533         ADRM GT.Job_Pro cess_Log_S p (
  12534            P C_job_name            => SUBSTR  ('CLEAN_SS N_FRM_ADDR ', 1, 60),
  12535            P D_job_log_ date       => SYSDATE ,
  12536            P C_job_stat us         => 'WARN',
  12537            P C_JOB_LOG_ MESSAGE    => SUBSTR  ('Nothing  to remove;  no record  FOUND', 1 , 60));
  12538      WHEN OT HERS THEN
  12539         ADRM GT.Job_Pro cess_Log_S p (
  12540            P C_job_name            => SUBSTR  ('CLEAN_SS N_FRM_ADDR ', 1, 60),
  12541            P D_job_log_ date       => SYSDATE ,
  12542            P C_job_stat us         => 'FAILED ',
  12543            P C_JOB_LOG_ MESSAGE    => SUBSTR  (
  12544                                            DB MS_UTILITY .FORMAT_CA LL_STACK
  12545                                         || DB MS_UTILITY .format_er ror_stack
  12546                                         || DB MS_UTILITY .format_er ror_backtr ace,
  12547                                         1,
  12548                                         60));
  12549   END CLEAN_ SSN_FRM_AD DR;
  12550   /
  12551  
  12552  
  12553   CREATE OR  REPLACE PU BLIC SYNON YM CLEAN_S SN_FRM_ADD R FOR ADR. CLEAN_SSN_ FRM_ADDR;
  12554   DROP PROCE DURE ADR.U PD_QRTZTRG _CLOCK_ST_ TIME_SP;
  12555  
  12556   CREATE OR  REPLACE PR OCEDURE AD R.UPD_QRTZ TRG_CLOCK_ ST_TIME_SP  (
  12557      p_in_nu m_days        IN         NUMBER,
  12558      p_in_nu m_hours       IN         NUMBER,
  12559      p_in_vp id            IN         VARCHAR 2,
  12560      p_in_tr igger_nm      IN         VARCHAR 2,
  12561      p_out_n um_updated    OUT NUM BER,
  12562      p_out_e rr_msg        OUT   V ARCHAR2)
  12563   IS
  12564  
  12565      -- **** ********** ********** ********** ********** ********** ********** ********** ********** *****
  12566      -- * Pr ocedure: U PD_QRTZTRG _CLOCK_ST_ TIME_SP
  12567      -- *
  12568      -- *
  12569      -- *  D escription : - This p rocedure w ill be use  to update  the start  time of a ny clock t rigger
  12570      -- *                              in QRT Z_TRIGGER  table to m ature the  clock. Thi s procedur e will inv oke by
  12571      -- *                             clockTr iggerBatch Process fo r non prod uciton DBs .
  12572      -- * Pa rameters:
  12573      -- *
  12574      -- *  p i_in_num_d ays           Day whe n trigger  is going t o expire.
  12575      -- *  p i_in_num_h ours         Hours wh en trigger  is going  to fire. I t counts h ours from  midnight.
  12576      -- *  p i_in_vpid                        VPID_VALUE  - for whi ch trigger  time will  change.
  12577      -- *  p i_in_Trigg er_nm          Name o f the trig ger.
  12578      -- *  p _out_num_u pdated   N umber of r ows update d
  12579      -- *  p _out_err_m sg              Error  message/I nfo messag e
  12580      -- *
  12581      -- Crea ted Date            C reated By
  12582      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  12583      -- 04/2 5/2017                Mita Panda
  12584      --
  12585      --***** ********** ********** ********** ********** ********** ********** ********** ********** ***
  12586      --- loc al variabl es
  12587      v_vpid                        PERSON.VPI D_VALUE%TY PE;
  12588      v_start _time            NUMB ER;
  12589      v_perso n_id            NUMBE R;
  12590      v_trigg er_name      QRTZ_TRI GGERS.TRIG GER_NAME%T YPE;
  12591      v_new_s tart_time    NUMBER;
  12592      v_new_d ate             VARCH AR2 (60);
  12593      e_no_da ta_found     EXCEPTIO N;
  12594   BEGIN
  12595      BEGIN
  12596         SELE CT person_ id
  12597           IN TO v_perso n_id
  12598           FR OM person
  12599          WHE RE vpid_va lue = p_in _vpid;
  12600  
  12601      EXCEPTI ON
  12602         WHEN  NO_DATA_F OUND
  12603         THEN
  12604  
  12605            - -DBMS_OUTP UT.PUT_LIN E('This VP ID does no t exists i n Person t able' );
  12606            R AISE e_no_ data_found ;
  12607      END;
  12608  
  12609  
  12610      --- Set  the trigg er name
  12611  
  12612      v_trigg er_name :=  v_person_ id || p_in _trigger_n m;
  12613  
  12614      --Set t he trigger  start tim e
  12615      v_start _time :=
  12616           (   TRUNC (SY SDATE + p_ in_num_day s)
  12617            +  p_in_num_ hours / 24
  12618            -  TO_DATE ( '01011970' , 'DDMMYYY Y'))
  12619            *  60
  12620           *  60
  12621           *  24
  12622           *  1000;
  12623  
  12624      UPDATE  qrtz_trigg ers
  12625         SET  START_TIME  = v_start _time, NEX T_FIRE_TIM E = v_star t_time
  12626       WHERE  trigger_na me = v_tri gger_name;
  12627  
  12628      p_out_n um_updated  := SQL%RO WCOUNT;
  12629  
  12630  
  12631      SELECT  start_time ,
  12632              TO_CHAR (
  12633                   TO_DA TE ('1970- 01-01', 'y yyy-mm-dd  hh:mi:ss')
  12634                 + (star t_TIME / 8 6400000),
  12635                 'yyyy-m m-dd hh24: mi:ss am')
  12636        INTO  v_new_star t_time, v_ new_date
  12637        FROM  QRTZ_TRIGG ERS
  12638       WHERE  trigger_na me = v_tri gger_name;
  12639  
  12640      --DBMS_ OUTPUT.PUT _LINE(' TR IGGER NEW_ DATE_TIME: - '||v_new _date||',  NEW_START_ TIME:-'||v _new_start _time);
  12641  
  12642      p_out_e rr_msg :=
  12643            ' No errors,  For VPID: - '
  12644         || p _in_vpid
  12645         || ' , For Trig ger:-'
  12646         || v _trigger_n ame
  12647         || '  the NEW_D ATE_TIME:-  '
  12648         || v _new_date;
  12649      COMMIT;
  12650  
  12651   EXCEPTION
  12652  
  12653      WHEN e_ no_data_fo und
  12654      THEN
  12655         p_ou t_err_msg  := 'This V PID does n ot exists  in Person  table';
  12656         p_ou t_num_upda ted := 0;
  12657      WHEN NO _DATA_FOUN D
  12658  
  12659      THEN
  12660         ---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.');
  12661         p_ou t_num_upda ted := 0;
  12662         p_ou t_err_msg  :=
  12663            ' No trigger  found for  this VPID  in QRTZ_T RIGGERS ta ble.';
  12664      WHEN OT HERS
  12665      THEN
  12666         --   DBMS_OUTPU T.PUT_LINE (sqlcode|| substr(sql errm,1,100 ));
  12667  
  12668         p_ou t_num_upda ted := 0;
  12669         p_ou t_err_msg  := SQLCODE  || SUBSTR  (SQLERRM,  1, 100);
  12670   END UPD_QR TZTRG_CLOC K_ST_TIME_ SP;
  12671   /
  12672  
  12673  
  12674   CREATE OR  REPLACE PU BLIC SYNON YM UPD_QRT ZTRG_CLOCK _ST_TIME_S P FOR ADR. UPD_QRTZTR G_CLOCK_ST _TIME_SP;
  12675  
  12676  
  12677   GRANT EXEC UTE ON ADR .UPD_QRTZT RG_CLOCK_S T_TIME_SP  TO EEATUSR ;
  12678  
  12679   GRANT EXEC UTE ON ADR .UPD_QRTZT RG_CLOCK_S T_TIME_SP  TO EEUSR;
  12680   DROP PROCE DURE ADR.A CTIVEAGG_T RACKER_PRO C;
  12681  
  12682   CREATE OR  REPLACE PR OCEDURE AD R.ACTIVEAG G_TRACKER_ PROC
  12683   IS
  12684      gc_sche ma_owner_n ame         VARCHAR2  (20) := 'A DR';
  12685      v_parti tion_high_ val_date    DATE;
  12686      v_sql                          VARCHAR2  (2000);
  12687      v_cut_o ff_date                INTEGER : = 6;
  12688      v_CURRE NT_ACTIVE_ DATE        DATE;
  12689      v_PREVI OUS_ACTIVE _DATE       DATE;
  12690   BEGIN
  12691      SELECT  CURRENT_AC TIVE_DATE,  PREVIOUS_ ACTIVE_DAT E
  12692        INTO  v_CURRENT_ ACTIVE_DAT E, v_PREVI OUS_ACTIVE _DATE
  12693        FROM  ADR.ACTIVE AGG_TRACKE R
  12694       WHERE  LOADING_ST ATUS = 'YE S';
  12695  
  12696      ADRMGT. Job_Proces s_Log_Sp ( PC_job_nam e           => SUBSTR  ('ACTIVEA GG_TRACKER _AUR_TRGR' , 1, 60),
  12697                                    PD_job_log _date       => SYSDAT E,
  12698                                    PC_job_sta tus         => 'SUCCE SS',
  12699                                    PC_JOB_LOG _MESSAGE    => SUBSTR  (   'v_CU RRENT_ACTI VE_DATE :  '
  12700                                                                       || v_CUR RENT_ACTIV E_DATE
  12701                                                                       || ' v_P REVIOUS_AC TIVE_DATE:  '
  12702                                                                       || v_PRE VIOUS_ACTI VE_DATE,
  12703                                                                       1,
  12704                                                                       60));
  12705  
  12706      FOR r I N (SELECT  table_name ,
  12707                         partition_ name,
  12708                         high_value ,
  12709                         interval
  12710                   FROM  user_tab_p artitions
  12711                  WHERE  UPPER (tab le_name) =  ('ACTIVEA GG'))
  12712      LOOP
  12713         EXEC UTE IMMEDI ATE
  12714                'SELECT  '
  12715            | | r.high_v alue
  12716            | | ' from d ual'
  12717            I NTO v_part ition_high _val_date;
  12718  
  12719         IF      (TRUNC  (v_partiti on_high_va l_date) <  TRUNC (v_C URRENT_ACT IVE_DATE -  v_cut_off _date))
  12720            A ND TRUNC ( v_partitio n_high_val _date) <>  TRUNC (v_P REVIOUS_AC TIVE_DATE)
  12721         THEN
  12722            I F r.interv al = 'NO'
  12723            T HEN
  12724                v_sql :=
  12725                      'A LTER TABLE  '
  12726                   || gc _schema_ow ner_name
  12727                   || '. '
  12728                   || r. table_name
  12729                   || '  TRUNCATE P ARTITION '
  12730                   || r. partition_ name;
  12731  
  12732                ADRMGT.J ob_Process _Log_Sp (P C_job_name            => SUBSTR  ('ACTIVEAG G_TRACKER_ AUR_TRGR',  1, 60),
  12733                                             P D_job_log_ date       => SYSDATE ,
  12734                                             P C_job_stat us         => 'SUCCES S',
  12735                                             P C_JOB_LOG_ MESSAGE    => SUBSTR  (   v_sql
  12736                                                                                 || ' '
  12737                                                                                 || v_part ition_high _val_date,
  12738                                                                                 1,
  12739                                                                                 60));
  12740  
  12741                EXECUTE  IMMEDIATE  v_sql;
  12742            E LSE
  12743                v_sql :=
  12744                      'A LTER TABLE  '
  12745                   || gc _schema_ow ner_name
  12746                   || '. '
  12747                   || r. table_name
  12748                   || '  DROP PARTI TION '
  12749                   || r. partition_ name;
  12750  
  12751                ADRMGT.J ob_Process _Log_Sp (P C_job_name            => SUBSTR  ('ACTIVEAG G_TRACKER_ AUR_TRGR',  1, 60),
  12752                                             P D_job_log_ date       => SYSDATE ,
  12753                                             P C_job_stat us         => 'SUCCES S',
  12754                                             P C_JOB_LOG_ MESSAGE    => SUBSTR  (   v_sql
  12755                                                                                 || ' '
  12756                                                                                 || v_part ition_high _val_date,
  12757                                                                                 1,
  12758                                                                                 60));
  12759  
  12760                EXECUTE  IMMEDIATE  v_sql;
  12761            E ND IF;
  12762         END  IF;
  12763      END LOO P;
  12764   EXCEPTION
  12765      WHEN NO _DATA_FOUN D
  12766      THEN
  12767         ADRM GT.Job_Pro cess_Log_S p (
  12768            P C_job_name            => SUBSTR  ('ACTIVEAG G_TRACKER_ AUR_TRGR',  1, 60),
  12769            P D_job_log_ date       => SYSDATE ,
  12770            P C_job_stat us         => 'SUCCES S',
  12771            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) );
  12772      WHEN OT HERS
  12773      THEN
  12774         ADRM GT.Job_Pro cess_Log_S p (PC_job_ name           => SUB STR ('ACTI VEAGG_TRAC KER_AUR_TR GR', 1, 60 ),
  12775                                       PD_job_ log_date       => SYS DATE,
  12776                                       PC_job_ status         => 'PA RTITION DR OP FAILED' ,
  12777                                       PC_JOB_ LOG_MESSAG E   => SUB STR (   DB MS_UTILITY .FORMAT_CA LL_STACK
  12778                                                                          || DB MS_UTILITY .format_er ror_stack
  12779                                                                          || DB MS_UTILITY .format_er ror_backtr ace,
  12780                                                                          1,
  12781                                                                          60));
  12782   END ACTIVE AGG_TRACKE R_PROC;
  12783   /
  12784   DROP PROCE DURE ADR.B ATCH_ACA_P ROCESSED_S P;
  12785  
  12786   CREATE OR  REPLACE PR OCEDURE AD R.BATCH_AC A_PROCESSE D_SP
  12787   AS
  12788      VF_FILE _HANDLE UT L_FILE.FIL E_TYPE;
  12789  
  12790      VC_log_ step           VARCHA R2(500);
  12791      gc_job_ name           VARCHA R2(30) :=  'BATCH_ACA _PROCESSED _JOB';
  12792  
  12793      CC_BATC H_ACA_TOPR OCESS_DIR    VARCHAR2 (30):= 'BA TCH_ACA_TO PROCESS_DI R';
  12794      CC_BATC H_ACA_LOG_ DIR          VARCHAR2 (30):= 'BA TCH_ACA_LO G_DIR';
  12795  
  12796      VC_file _name          VARCHA R2(30):= ' cms_addres s_file.txt ';
  12797      VC_log_ file_name      VARCHA R2(30):= ' cms_addres s_file.log ';
  12798  
  12799      VN_rows _count_id1     NUMBER  := 0;
  12800      VN_rows _count_id2     NUMBER  := 0;
  12801      VN_elap sed_time       NUMBER  := 0;
  12802      VN_temp                NUMBER  := 0;
  12803  
  12804      time_a      INTEGE R;
  12805      time_b      INTEGE R;
  12806      time_c      INTEGE R;
  12807      time_d      INTEGE R;
  12808  
  12809      gc_inte ration         NUMBER := 0;
  12810      vn_fetc h_lim          NUMBER := 10000;
  12811      VN_rowc nt_fetched     NUMBER  := 0;
  12812      vn_tota l_rows_tob e_processe d NUMBER:=  0;
  12813  
  12814      VN_EXCE PTION_CNT      NUMBER  ;
  12815      VC_erro r_msg          VARCHA R2(5000);
  12816  
  12817      TYPE ID _RECORD IS  RECORD (
  12818          COR RESPONDENC E_NUM    V ARCHAR2(30 ),
  12819          COR RESPONDENC E_ID1    N UMBER,
  12820          COR RESPONDENC E_ID2    N UMBER
  12821        );
  12822  
  12823      TYPE ID _REC_TAB I S TABLE OF  ID_RECORD  INDEX BY  BINARY_INT EGER;
  12824        ID_RE CORD_TAB I D_REC_TAB;
  12825  
  12826      CURSOR  corres_id_ C IS
  12827         SELE CT corresp ondence_nu m,
  12828           CA SE INSTR(c orresponde nce_num,'- ')
  12829           WH EN 0 THEN
  12830              TO_NUMBER( correspond ence_num)
  12831           WH EN 1 THEN
  12832                 TO_NUMB ER('1')
  12833           EL SE
  12834                    TO_N UMBER(SUBS TR(corresp ondence_nu m,1, INSTR (correspon dence_num, '-')-1))
  12835          END  corresp_i d1 ,
  12836          CAS E INSTR(co rresponden ce_num,'-' )
  12837            W HEN
  12838                LENGTH(c orresponde nce_num) T HEN
  12839                     TO_ NUMBER('1' )
  12840              ELSE
  12841                   TO_NU MBER(SUBST R(correspo ndence_num , INSTR(co rresponden ce_num,'-' )+1))
  12842          END  corresp_i d2
  12843        FROM  ADR.ACA_MA IL_RESPONS E_EXT;
  12844  
  12845   BEGIN
  12846  
  12847       VF_FIL E_HANDLE : = UTL_FILE .fopen('BA TCH_ACA_TO PROCESS_DI R',VC_file _name,'R') ;
  12848       IF UTL _FILE.IS_O PEN(VF_FIL E_HANDLE)  THEN
  12849  
  12850            U TL_FILE.FC LOSE(VF_FI LE_HANDLE) ;
  12851  
  12852       END IF ;
  12853  
  12854       EXECUT E IMMEDIAT E 'ALTER S ESSION SET  PARALLEL_ FORCE_LOCA L=TRUE';
  12855  
  12856       SELECT  COUNT(1)
  12857          INT O vn_total _rows_tobe _processed
  12858       FROM A DR.ACA_MAI L_RESPONSE _EXT;
  12859  
  12860       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'));
  12861       time_a  := dbms_u tility.get _time;
  12862  
  12863  
  12864       VC_log _step := ' BULK LOAD  BEGINS';
  12865  
  12866       -- === ========== ========== ========== ========== ========== ===
  12867       --
  12868       -- Beg in Bulk Co llect Fetc h
  12869       --
  12870       -- === ========== ========== ========== ========== ========== ===
  12871       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => gc_jo b_name,
  12872                                      PD_job_l og_date =>  SYSDATE,
  12873                                      PC_job_s tatus => ' INFORMATIO N - Proces s Initiati on',
  12874                                      PC_job_l og_message  => gc_job _name||' S tarted',
  12875                                      pc_text1  => 'Total  Rows From  File '||  vn_total_r ows_tobe_p rocessed | |' - BULK  LIMIT: '||  vn_fetch_ lim,
  12876                                      PD_date1  => SYSDAT E
  12877            ) ;
  12878  
  12879       OPEN c orres_id_C ;
  12880       LOOP
  12881  
  12882          FET CH corres_ id_C BULK  COLLECT IN TO ID_RECO RD_TAB LIM IT vn_fetc h_lim;
  12883          EXI T WHEN ID_ RECORD_TAB .COUNT = 0 ;
  12884          gc_ interation  := gc_int eration +  1;
  12885  
  12886          VC_ log_step : = 'Process  ID1 - Ite ration# '| |gc_intera tion;
  12887  
  12888          VN_ rowcnt_fet ched := VN _rowcnt_fe tched + ID _RECORD_TA B.COUNT;
  12889  
  12890          tim e_b := dbm s_utility. get_time;
  12891  
  12892          FOR ALL indx I N ID_RECOR D_TAB.FIRS T.. ID_REC ORD_TAB.LA ST SAVE EX CEPTIONS
  12893              UPDATE ADR .correspon dence
  12894              SET corres pondence_s tatus_id =  8,
  12895              correspond ence_statu s_date  =  SYSDATE,
  12896               record_mo dified_by         = ' 557606',
  12897              record_mod ified_date         =  SYSDATE,
  12898              record_mod ified_coun t       =  record_mod ified_coun t +1
  12899              WHERE corr espondence _id = ID_R ECORD_TAB( indx).CORR ESPONDENCE _ID1;
  12900  
  12901            V C_log_step  := 'Row C ounts ID1  - Iteratio n# '||gc_i nteration;
  12902  
  12903           FO R I IN 1.. ID_RECORD_ TAB.COUNT  LOOP
  12904               VN_rows_c ount_id1:=  VN_rows_c ount_id1 +  SQL%BULK_ ROWCOUNT(i );
  12905           EN D LOOP;
  12906  
  12907           CO MMIT;
  12908  
  12909           VC _log_step  := 'Proces s ID2 - It eration# ' ||gc_inter ation;
  12910           FO RALL indx  IN ID_RECO RD_TAB.FIR ST.. ID_RE CORD_TAB.L AST SAVE E XCEPTIONS
  12911                    UPDA TE ADR.cor respondenc e
  12912                    SET  correspond ence_statu s_id = 8,
  12913                    corr espondence _status_da te = SYSDA TE,
  12914                    reco rd_modifie d_by = '55 7606',
  12915                    reco rd_modifie d_date = S YSDATE,
  12916                    reco rd_modifie d_count =  record_mod ified_coun t +1
  12917               WHERE cor respondenc e_id = ID_ RECORD_TAB (indx).COR RESPONDENC E_ID2;
  12918  
  12919           VC _log_step  := 'Row Co unts ID2 -  Iteration # '||gc_in teration;
  12920  
  12921           FO R I IN 1.. ID_RECORD_ TAB.COUNT  LOOP
  12922               VN_rows_c ount_id2:=  VN_rows_c ount_id2 +  SQL%BULK_ ROWCOUNT(i );
  12923           EN D LOOP;
  12924  
  12925           CO MMIT;
  12926  
  12927           ti me_c := db ms_utility .get_time;
  12928           VN _elapsed_t ime := ROU ND((time_c  - time_b) /100/60,2) ;
  12929  
  12930           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');
  12931  
  12932           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => g c_job_name ,
  12933                                         PD_jo b_log_date  => SYSDAT E,
  12934                                         PC_jo b_status = > 'INFORMA TION - Ite ration: '| | gc_inter ation||'-  Elapse: '| |VN_elapse d_time||'  min',
  12935                                         PC_jo b_log_mess age => 'Ro ws Updated : ID1: '|| VN_rows_co unt_id1 || ' - ID2: ' ||VN_rows_ count_id2,
  12936                                         PD_da te1 => SYS DATE
  12937                                 );
  12938  
  12939  
  12940           EX IT WHEN ID _RECORD_TA B.COUNT =  0;
  12941  
  12942        END L OOP;
  12943  
  12944        CLOSE  corres_id _C;
  12945  
  12946        VC_lo g_step :=  'Process C ompleted -  Iteration # '||gc_in teration;
  12947  
  12948        time_ d := dbms_ utility.ge t_time;
  12949  
  12950        VN_el apsed_time  := ROUND( (time_d -  time_a)/10 0/60,2);
  12951  
  12952        ADRMG T.Job_Proc ess_Log_Sp (PC_job_na me => gc_j ob_name,
  12953                              PD_jo b_log_date  => SYSDAT E,
  12954                              PC_jo b_status = > 'INFORMA TION - Pro cess Compl eted ', -- - Rows TO  BE Process ed: '||vn_ total_rows _tobe_proc essed,
  12955                              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,
  12956                              pc_te xt1 => 'To tal Rows F rom File ' || vn_tota l_rows_tob e_processe d,
  12957                              PD_da te1 => SYS DATE
  12958           );
  12959  
  12960        VC_lo g_step :=  'Checking  External L og File ';
  12961  
  12962        SELEC T COUNT(1)
  12963            I NTO VN_tem p
  12964        FROM  ADR.ACA_MA IL_RESPONS E_LOG_EXT
  12965        WHERE  upper(tex t) LIKE '% ORA%'
  12966        OR up per(text)  LIKE '%ERR OR%'
  12967        OR up per(text)  LIKE '%FAI L%';
  12968  
  12969        IF VN _temp >= 1  THEN
  12970  
  12971           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => g c_job_name ,
  12972                              PD_jo b_log_date  => SYSDAT E,
  12973                              PC_jo b_status = > 'WARNING  - Process  Completed , Found Er ror in Log  ',
  12974                              PC_jo b_log_mess age => 'ER OR FOUND I N LOG FILE  - PLEASE  REVIEW LOG  FILE ON S ERVER',
  12975                              pc_te xt1 => 'To tal Rows U pdated ID1 : '||VN_ro ws_count_i d1||' ID2:  '||VN_row s_count_id 2,
  12976                              PD_da te1 => SYS DATE
  12977                  );
  12978        ELSE
  12979  
  12980            A DRMGT.Job_ Process_Lo g_Sp(PC_jo b_name =>  gc_job_nam e,
  12981                                       PD_job_ log_date = > SYSDATE,
  12982                                       PC_job_ status =>  'INFORMATI ON - Proce ss Complet ed SUCCESS FULLY!',
  12983                                       PC_job_ log_messag e => 'NO E ROR FOUND  IN EXTERNA L LOG FILE ',
  12984                                       PD_date 1 => SYSDA TE
  12985                  );
  12986        END I F;
  12987  
  12988  
  12989       -- === ========== ========== ========== ========== ========== =====
  12990       --
  12991       -- Mov ing file n ame to Pro cessed dir  from toPr ocess fold er
  12992       --
  12993       -- === ========== ========== ========== ========== ========== =====
  12994       UTL_FI LE.fremove (CC_BATCH_ ACA_TOPROC ESS_DIR, V C_file_nam e);
  12995       --UTL_ FILE.fremo ve(CC_BATC H_ACA_LOG_ DIR, VC_lo g_file_nam e);
  12996  
  12997  
  12998       EXCEPT ION
  12999  
  13000         WHEN  UTL_FILE. INVALID_PA TH THEN
  13001                 DBMS_OU TPUT.put_l ine('Error  : INVALID  PATH (' | | CC_BATCH _ACA_TOPRO CESS_DIR | |') ') ;
  13002                 ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (gc_job_na me,1,60),
  13003                                        PD_job _log_date  => SYSDATE ,
  13004                                        PC_job _status =>  'ERROR -  INVALID PA TH - '||VC _file_name ,
  13005                                        PC_job _log_messa ge => 'PLE ASE MAKE S URE FILE E XISTED PRI OR TO RUNN ING THE JO B',
  13006                                        pc_tex t1 => 'INV ALID PATH  '||CC_BATC H_ACA_TOPR OCESS_DIR,
  13007                                        PD_dat e1 => SYSD ATE
  13008                                 );
  13009  
  13010         WHEN  UTL_FILE. INVALID_OP ERATION TH EN
  13011                 DBMS_OU TPUT.put_l ine('Error  : INVALID  FILE OPER ATION - FI LE NOT FOU ND '|| VC_ file_name  );
  13012                 ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (gc_job_na me,1,60),
  13013                                        PD_job _log_date  => SYSDATE ,
  13014                                        PC_job _status =>  'ERROR -  FILE NOT F OUND, '||V C_file_nam e,
  13015                                        PC_job _log_messa ge => 'PLE ASE MAKE S URE FILE E XISTED',
  13016                                        pc_tex t1 => CC_B ATCH_ACA_T OPROCESS_D IR||'.'||V C_file_nam e||' NOT E XISTED!',
  13017                                        PD_dat e1 => SYSD ATE
  13018                                 );
  13019            I F UTL_FILE .IS_OPEN(V F_FILE_HAN DLE) THEN
  13020                 UTL_FIL E.FCLOSE(V F_FILE_HAN DLE);
  13021            E ND IF;
  13022  
  13023         WHEN  UTL_FILE. INVALID_MO DE THEN
  13024                 DBMS_OU TPUT.Put_l ine('Error  : Invalid  Mode ' ||  CC_BATCH_ ACA_TOPROC ESS_DIR );
  13025  
  13026                 ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (gc_job_na me,1,60),
  13027                                        PD_job _log_date  => SYSDATE ,
  13028                                        PC_job _status =>  'ERROR -  INVALID MO DE, '||VC_ file_name,
  13029                                        PC_job _log_messa ge => 'PLE ASE MAKE S URE FILE E XISTED',
  13030                                        pc_tex t1 => CC_B ATCH_ACA_T OPROCESS_D IR||'.'||V C_file_nam e||' NOT E XISTED!',
  13031                                        PD_dat e1 => SYSD ATE
  13032                                 );
  13033                 UTL_FIL E.FCLOSE(V F_FILE_HAN DLE);
  13034  
  13035         WHEN  NO_DATA_F OUND THEN
  13036           AD RMGT.Job_P rocess_Log _Sp(
  13037                    PC_j ob_name =>  SUBSTR(gc _job_name, 1,60),
  13038                    PD_j ob_log_dat e => SYSDA TE,
  13039                    PC_j ob_status  => 'WARNIN G - No DAT A FOUND -  '||SUBSTR( VC_log_ste p,1,60),
  13040                    PC_j ob_log_mes sage => 'W ARNING - ' || SUBSTR( SQLCODE,1, 60)||' - '  ||SUBSTR( SQLERRM,1, 254),
  13041                    PD_d ate1 => SY SDATE,
  13042                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  13043  
  13044               UTL_FILE. FCLOSE(VF_ FILE_HANDL E);
  13045  
  13046         WHEN  OTHERS TH EN
  13047  
  13048            V N_EXCEPTIO N_CNT := S QL%BULK_EX CEPTIONS.C OUNT;
  13049            F OR I IN 1  .. VN_EXCE PTION_CNT  LOOP
  13050  
  13051            V C_error_ms g :=
  13052                  'ERROR  BULK EXCE PTION: ' | | VC_log_s tep||CHR(1 0) || SQL% BULK_EXCEP TIONS(I).E RROR_INDEX  ||
  13053                  ' ID1:  ' || ID_R ECORD_TAB( I).CORRESP ONDENCE_ID 1 || ' - I DX2: '||ID _RECORD_TA B(I).CORRE SPONDENCE_ ID2||
  13054                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  13055  
  13056                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(gc_job_n ame,1,60),
  13057                                                PD_job_lo g_date =>  SYSDATE,
  13058                                                PC_job_st atus => 'E RROR BULK  EXCEPTION  - Row# '|| SQL%BULK_E XCEPTIONS( I).ERROR_I NDEX,
  13059                                                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,
  13060                                                PC_text1  => ID_RECO RD_TAB(I). CORRESPOND ENCE_ID1||  ' - IDX2:  '||ID_REC ORD_TAB(I) .CORRESPON DENCE_ID2,
  13061                                                PD_date1  => SYSDATE
  13062                                 );
  13063  
  13064                 DBMS_OU TPUT.put_l ine(VC_err or_msg);
  13065  
  13066            E ND LOOP;
  13067  
  13068            A DRMGT.Job_ Process_Lo g_Sp(
  13069                    PC_j ob_name =>  SUBSTR(gc _job_name, 1,60),
  13070                    PD_j ob_log_dat e => SYSDA TE,
  13071                    PC_j ob_status  => 'ERROR:  Unknown E xception -  '||SUBSTR (VC_log_st ep,1,60),
  13072                    PC_j ob_log_mes sage => 'E RROR CODE  '|| SUBSTR (SQLCODE,1 ,60)||' -  ' ||SUBSTR (SQLERRM,1 ,254),
  13073                    PD_d ate1 => SY SDATE,
  13074                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  13075  
  13076            U TL_FILE.FC LOSE(VF_FI LE_HANDLE) ;
  13077  
  13078    END BATCH _ACA_PROCE SSED_SP;
  13079   /
  13080  
  13081  
  13082   CREATE OR  REPLACE PU BLIC SYNON YM BATCH_A CA_PROCESS ED_SP FOR  ADR.BATCH_ ACA_PROCES SED_SP;
  13083   DROP PROCE DURE ADR.L OAD_CORRES PONDENCE_I NFO_SP;
  13084  
  13085   CREATE OR  REPLACE PR OCEDURE AD R.LOAD_COR RESPONDENC E_INFO_SP(
  13086       p_bulk _limit         NUMBER  DEFAULT 1 000,
  13087       p_effe ctive_date     DATE)
  13088   IS
  13089  
  13090      -- 5562 66: Add jo b(s) to po pulate ACA  mail queu e records  into Corre spondence  table
  13091      gc_job_ name              VAR CHAR2 (40)  := 'LOAD_ CORRESPOND ENCE_INFO_ JOB';
  13092  
  13093      CC_LETT ER_TEMPLAT E_ID         CONSTANT  NUMBER :=  103031;
  13094      p_corr_ effective_ date         DATE;
  13095      p_corr_ year                    NUMBER;
  13096  
  13097  
  13098      c_limit   CONSTANT  PLS_INTEG ER := p_bu lk_limit;
  13099      gc_inte ration  PL S_INTEGER  := 0;
  13100  
  13101      VC_msg_ step           VARCHA R2(200);
  13102      VC_erro r_msg          VARCHA R2(200);
  13103      VN_tota l_count        NUMBER  := 0;
  13104      VN_elap sed_time       NUMBER ;
  13105      VN_rowc nt_fetched     NUMBER  := 0;
  13106  
  13107  
  13108      time_a      INTEGE R;
  13109      time_b      INTEGE R;
  13110      time_c      INTEGE R;
  13111      time_d      INTEGE R;
  13112  
  13113  
  13114      dml_err ors         EXCEPTION ;
  13115      PRAGMA  EXCEPTION_ INIT(dml_e rrors, -24 381);
  13116      VN_EXCE PTION_CNT   PLS_INTEG ER;
  13117  
  13118      TYPE CO RRSD_PERSO NID IS TAB LE OF ADR. correspond ence.perso n_id%TYPE  INDEX BY B INARY_INTE GER;
  13119  
  13120      CORRSD_ PERSONID_T AB  CORRSD _PERSONID;
  13121  
  13122  
  13123      CURSOR  GetCorresp ondenceInf o_C (l_eff _date DATE , l_eff_ye ar NUMBER)  IS
  13124      SELECT  DISTINCT p erson_id
  13125      FROM (
  13126           SE LECT m.per son_id
  13127                 FROM me c_period m
  13128                WHERE (    m.mec_en d_date IS  NULL
  13129                       O R m.mec_en d_date >=  l_eff_date )
  13130               MINUS
  13131               SELECT pe rson_id
  13132                 FROM co rresponden ce c
  13133                WHERE      c.com_le tter_templ ate_id = C C_LETTER_T EMPLATE_ID
  13134                   AND E XTRACT( YE AR FROM c. correspond ence_effec tive_date) = l_eff_ye ar
  13135       )
  13136       ;
  13137  
  13138  
  13139   BEGIN
  13140  
  13141       SELECT  TO_DATE(( TO_CHAR(p_ effective_ date,'DD-M ON-YYYY')| |' 00:00:0 0'),'DD-MO N-YYYY HH2 4:MI:SS'),
  13142       EXTRAC T (YEAR FR OM  p_effe ctive_date )
  13143           IN TO  p_corr _effective _date, p_c orr_year
  13144       FROM D UAL;
  13145  
  13146  
  13147       -- === ========== ========== ========== ========== ========== ===
  13148       --
  13149       -- Beg in Bulk Co llect Fetc h
  13150       --
  13151       -- === ========== ========== ========== ========== ========== ===
  13152       EXECUT E IMMEDIAT E 'ALTER S ESSION for ce paralle l dml para llel 4';
  13153       EXECUT E IMMEDIAT E 'ALTER S ESSION for ce paralle l query pa rallel 4';
  13154       EXECUT E IMMEDIAT E 'ALTER S ESSION set  DB_FILE_M ULTIBLOCK_ READ_COUNT =256';
  13155       EXECUT E IMMEDIAT E 'ALTER S ESSION SET  PARALLEL_ FORCE_LOCA L=TRUE';
  13156  
  13157       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'));
  13158  
  13159       time_a  := dbms_u tility.get _time;
  13160       VN_tot al_count : = 0;
  13161  
  13162       VC_msg _step := ' OPEN CURSO R';
  13163  
  13164      ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => gc_job _name,
  13165                                      PD_job_l og_date =>  SYSDATE,
  13166                                      PC_job_s tatus => ' INFORMATIO N - Proces s Initiati on',
  13167                                      PC_job_l og_message  => gc_job _name,
  13168                                      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,
  13169                                      PD_date1  => SYSDAT E
  13170                                 );
  13171  
  13172       OPEN G etCorrespo ndenceInfo _C (p_corr _effective _date, p_c orr_year)  ;
  13173       LOOP
  13174            g c_interati on := gc_i nteration  + 1;
  13175  
  13176            F ETCH GetCo rresponden ceInfo_C B ULK COLLEC T INTO COR RSD_PERSON ID_TAB LIM IT c_limit ;
  13177  
  13178            V N_rowcnt_f etched :=  VN_rowcnt_ fetched +  CORRSD_PER SONID_TAB. COUNT;
  13179  
  13180            V C_msg_step  := 'BULK  LOAD BEGIN S';
  13181  
  13182                time_b : = dbms_uti lity.get_t ime;
  13183  
  13184            F ORALL indx  IN CORRSD _PERSONID_ TAB.FIRST. . CORRSD_P ERSONID_TA B.LAST SAV E EXCEPTIO NS
  13185  
  13186  
  13187                INSERT / *+ APPEND  */ INTO AD R.CORRESPO NDENCE (
  13188                  CORRES PONDENCE_I D,
  13189                           CORRESPO NDENCE_TYP E_ID,
  13190                           CORRESPO NDENCE_STA TUS_ID,
  13191                           PERSON_I D,
  13192                           CORRESPO NDENCE_STA TUS_DATE,
  13193                           CORRESPO NDENCE_EFF ECTIVE_DAT E,
  13194                           COM_LETT ER_TEMPLAT E_ID,
  13195                          -- ADDRES S_H_ID ,
  13196                           RECORD_C REATED_BY,
  13197                           RECORD_C REATED_DAT E ,
  13198                           RECORD_M ODIFIED_BY  ,
  13199                           RECORD_M ODIFIED_DA TE ,
  13200                           RECORD_M ODIFIED_CO UNT )
  13201                    VALU ES(
  13202                         CORRESPOND ENCE_S.NEX TVAL ,
  13203                         1,
  13204                         4,
  13205                         CORRSD_PER SONID_TAB( indx),
  13206                         TRUNC(SYSD ATE),
  13207                         p_effectiv e_date,
  13208                         CC_LETTER_ TEMPLATE_I D,
  13209                         '556266',
  13210                         SYSDATE,
  13211                         '556266',
  13212                         SYSDATE,
  13213                         0
  13214                       )  ;
  13215  
  13216            c ommit;
  13217  
  13218            V C_msg_step  := 'Displ aying row  count';
  13219  
  13220            - - Rows cou nt added
  13221  
  13222            F OR I IN 1. .CORRSD_PE RSONID_TAB .COUNT LOO P
  13223                  VN_tot al_count : = VN_total _count + S QL%BULK_RO WCOUNT(I);
  13224            E ND LOOP;
  13225  
  13226            t ime_c := d bms_utilit y.get_time ;
  13227            V N_elapsed_ time := RO UND((time_ c - time_b )/100/60,2 );
  13228  
  13229            D BMS_APPLIC ATION_INFO .set_clien t_info('It eration# ' || gc_inte ration||'  - Rows: '| |VN_total_ count ||'  - '||VN_el apsed_time ||' min');
  13230  
  13231            A DRMGT.Job_ Process_Lo g_Sp(PC_jo b_name =>  gc_job_nam e,
  13232                                                PD_job_lo g_date =>  SYSDATE,
  13233                                                PC_job_st atus => 'I NFORMATION  - Iterati on: '|| gc _interatio n,
  13234                                                PC_job_lo g_message  => 'Total  Rows Added : '||VN_to tal_count| |' - Elap( min): '||V N_elapsed_ time,
  13235                                                PD_date1  => SYSDATE
  13236                                 );
  13237  
  13238            E XIT WHEN C ORRSD_PERS ONID_TAB.C OUNT = 0;
  13239  
  13240  
  13241       END LO OP;
  13242  
  13243       CLOSE  GetCorresp ondenceInf o_C;
  13244  
  13245       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')) ;
  13246  
  13247       time_d  := dbms_u tility.get _time;
  13248  
  13249       VN_ela psed_time  := ROUND(( time_d - t ime_a)/100 /60,2);
  13250  
  13251  
  13252       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => gc_jo b_name,
  13253                                                PD_job_lo g_date =>  SYSDATE,
  13254                                                PC_job_st atus => 'I NFORMATION  - Process  Ended - E lap(min):  '||VN_elap sed_time,
  13255                                                PC_job_lo g_message  => 'Total  Rows Added /Rows Proc essed: '|| VN_total_c ount||'/'| |VN_rowcnt _fetched,
  13256                                                PD_date1  => SYSDATE
  13257                                 );
  13258  
  13259  
  13260     EXCEPTIO N
  13261  
  13262       WHEN d ml_errors  THEN
  13263  
  13264         VN_E XCEPTION_C NT := SQL% BULK_EXCEP TIONS.COUN T;
  13265  
  13266         FOR  I IN 1 ..  VN_EXCEPTI ON_CNT LOO P
  13267              VC_error_m sg :=
  13268                  'ERROR  BULK EXCE PTION: ' | | VC_msg_s tep||CHR(1 0) || SQL% BULK_EXCEP TIONS(I).E RROR_INDEX  ||
  13269                  ' Pers on ID: ' | | CORRSD_P ERSONID_TA B(I) ||
  13270                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  13271  
  13272                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => gc_jo b_name,
  13273                                                PD_job_lo g_date =>  SYSDATE,
  13274                                                PC_job_st atus => 'E RROR BULK  EXCEPTION  - Row# '|| SQL%BULK_E XCEPTIONS( I).ERROR_I NDEX,
  13275                                                PC_job_lo g_message  => 'Total  Rows Added /Rows Proc essed: '|| VN_total_c ount||'/'| |VN_rowcnt _fetched|| ' Elapsed:  '||VN_ela psed_time,
  13276                                                PC_text1  => SUBSTR( VC_error_m sg,1,200),
  13277                                                PD_date1  => SYSDATE
  13278                                 );
  13279  
  13280               DBMS_OUTP UT.put_lin e(VC_error _msg);
  13281  
  13282         END  LOOP;
  13283  
  13284      WHEN OT HERS THEN
  13285  
  13286         VC_e rror_msg : ='ERROR EX CEPTION -  '||VC_msg_ step||CHR( 10)|| SUBS TR('Unkown  Error: '| |SQLERRM,1 ,200);
  13287  
  13288         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => gc_ job_name,
  13289                                                        P D_job_log_ date => SY SDATE,
  13290                                                        P C_job_stat us => 'ERR OR EXCEPTI ON',
  13291                                                        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,
  13292                                                        P C_text1 =>  SUBSTR(VC _error_msg ,1,200),
  13293                                                        P D_date1 =>  SYSDATE
  13294                                 );
  13295  
  13296          DBM S_OUTPUT.P UT_LINE(VC _error_msg );
  13297  
  13298  
  13299   END LOAD_C ORRESPONDE NCE_INFO_S P;
  13300   /
  13301  
  13302  
  13303   CREATE OR  REPLACE PU BLIC SYNON YM LOAD_CO RRESPONDEN CE_INFO_SP  FOR ADR.L OAD_CORRES PONDENCE_I NFO_SP;
  13304   DROP PROCE DURE ADR.L OAD_MISSIN G_RESIDENT _ADDR_SP;
  13305  
  13306   CREATE OR  REPLACE PR OCEDURE AD R.LOAD_MIS SING_RESID ENT_ADDR_S P(
  13307       p_bulk _limit         NUMBER  DEFAULT 1 000)
  13308   IS
  13309  
  13310      -- 5492 34: Create  A Job to  Insert Res idential A ddresses f or Persons  with Perm anent but   without R esidential  addresses
  13311      --gc_sc hema_owner _name         VARCHAR 2 (10) :=  'ADR';
  13312      gc_prog ram_name               VARCHAR2  (40) := 'L OAD_MISSIN G_RESIDENT _ADDR_SP';
  13313  
  13314      dml_err ors         EXCEPTION ;
  13315      PRAGMA  EXCEPTION_ INIT(dml_e rrors, -24 381);
  13316  
  13317      time_a      INTEGE R;
  13318      time_b      INTEGE R;
  13319      time_c      INTEGE R;
  13320      time_d      INTEGE R;
  13321  
  13322      VC_msg_ step        VARCHAR2( 200);
  13323      VC_erro r_msg   VA RCHAR2(200 );
  13324      VN_tota l_count      NUMBER : = 0;
  13325  
  13326      VN_elap sed_time    NUMBER;
  13327  
  13328      VN_rowc nt_fetched   NUMBER : = 0;
  13329      VN_EXCE PTION_CNT   PLS_INTEG ER;
  13330  
  13331      C_PERM_ ADDRESSTYP E_ID CONST ANT NUMBER  := 144901 2;
  13332      C_RESI_ ADDRESSTYP E_ID CONST ANT NUMBER  := 180741 2;
  13333  
  13334  
  13335      TYPE NE W_RESIDENT _ADDRESS_T AB IS TABL E OF ADDRE SS%ROWTYPE   INDEX BY  BINARY_IN TEGER;
  13336      L_new_r esident_ad dr_tab     NEW_RESIDE NT_ADDRESS _TAB;
  13337  
  13338      c_limit   CONSTANT  PLS_INTEG ER := p_bu lk_limit;
  13339      gc_inte ration  PL S_INTEGER  := 0;
  13340  
  13341      CURSOR  GetPermAdd rInfo_C  I S
  13342      WITH AD D_RES_ADDR  AS
  13343        ( SEL ECT  perso n_id
  13344          FRO M (
  13345              SELECT DIS TINCT pers on_id
  13346              FROM addre ss a
  13347              WHERE STD_ ADDRESSTYP E_ID = C_P ERM_ADDRES STYPE_ID   -- permane nt addr
  13348              AND person _id IS NOT  NULL
  13349           MI NUS
  13350              SELECT DIS TINCT pers on_id
  13351              FROM addre ss a
  13352              WHERE  STD _ADDRESSTY PE_ID = C_ RESI_ADDRE SSTYPE_ID   -- reside ntial addr
  13353              AND person _id IS NOT  NULL
  13354          )
  13355        )
  13356      SELECT  *
  13357      FROM AD DRESS a
  13358      WHERE E XISTS (SEL ECT 1
  13359                    FROM  ADD_RES_A DDR d
  13360                    WHER E a.person _id = d.pe rson_id)
  13361      AND a.S TD_ADDRESS TYPE_ID =  C_PERM_ADD RESSTYPE_I D  -- perm anent addr
  13362      AND a.p erson_id I S NOT NULL ;
  13363  
  13364   BEGIN
  13365  
  13366       -- === ========== ========== ========== ========== ========== ===
  13367       --
  13368       -- Beg in Bulk Co llect Fetc h
  13369       --
  13370       -- === ========== ========== ========== ========== ========== ===
  13371       EXECUT E IMMEDIAT E 'ALTER S ESSION SET  PARALLEL_ FORCE_LOCA L=TRUE';
  13372  
  13373       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' ));
  13374  
  13375       time_a  := dbms_u tility.get _time;
  13376       VN_tot al_count : = 0;
  13377  
  13378       VC_msg _step := ' OPEN CURSO R';
  13379  
  13380      ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => gc_pro gram_name,
  13381                                      PD_job_l og_date =>  SYSDATE,
  13382                                      PC_job_s tatus => ' INFORMATIO N - Proces s Initiati on',
  13383                                      PC_job_l og_message  => 'Load  missing re sident add resses ',
  13384                                      pc_text1  => 'BULK  LIMIT: '||  c_limit,
  13385                                      PD_date1  => SYSDAT E
  13386                                 );
  13387  
  13388       OPEN G etPermAddr Info_C ;
  13389       LOOP
  13390            g c_interati on := gc_i nteration  + 1;
  13391  
  13392            F ETCH GetPe rmAddrInfo _C BULK CO LLECT INTO  L_new_res ident_addr _tab LIMIT  c_limit;
  13393  
  13394            V N_rowcnt_f etched :=  VN_rowcnt_ fetched +  L_new_resi dent_addr_ tab.COUNT;
  13395  
  13396            V C_msg_step  := 'BULK  LOAD BEGIN S';
  13397  
  13398            t ime_b := d bms_utilit y.get_time ;
  13399  
  13400            F ORALL indx  IN L_new_ resident_a ddr_tab.FI RST.. L_ne w_resident _addr_tab. LAST SAVE  EXCEPTIONS
  13401  
  13402                INSERT / *+ APPEND  */ INTO AD DRESS (
  13403                         ADDRESS_ID  ,
  13404                         PERSON_ID,
  13405                         INSURANCE_ ID,
  13406                         STD_ADDRES STYPE_ID,
  13407                         ADDRESS_CH ANGE_SRC_T YPE_ID,
  13408                         STD_INSTIT UTION_ID,
  13409                         ADDRESS_IN VALID_TYPE _ID,
  13410                         NCOA_STATU S_TYPE_ID,
  13411                         NCOA_DELIV ERY_TYPE_I D,
  13412                         NCOA_ZIP_M ATCH_TYPE_ ID,
  13413                         NCOA_ZIP_N O_MATCH_TY PE_ID,
  13414                         ADDRESS_LI NE1,
  13415                         ADDRESS_LI NE2,
  13416                         ADDRESS_LI NE3,
  13417                         CITY,
  13418                         STATE_CODE ,
  13419                         COUNTY_COD E,
  13420                         PROVINCE_C ODE,
  13421                         ZIP_CODE,
  13422                         ZIP_PLUS_4 ,
  13423                         POSTAL_COD E,
  13424                         COUNTRY_CO DE,
  13425                         ADDRESS_CH ANGE_EFFEC TIVE_DATE,
  13426                         ADDRESS_IN VALIDATED_ DATE,
  13427                         NCOA_ADDRE SS_CHECK_D ATE,
  13428                         ADDRESS_ST ART_DATE_T XT,
  13429                         ADDRESS_EN D_DATE_TXT ,
  13430                         ADDRESS_PH ONE_NUMBER ,
  13431                         RECORD_CRE ATED_BY,
  13432                         RECORD_CRE ATED_DATE,
  13433                         RECORD_MOD IFIED_BY,
  13434                         RECORD_MOD IFIED_DATE ,
  13435                         RECORD_MOD IFIED_COUN T,
  13436                         RECORD_MOD IFIED_SRC_ NAME,
  13437                         PERSON_REL ATION_ID,
  13438                         CASSCERTIF IEDTYPE_ID ,
  13439                         CASS_CERTI FIED_DATE,
  13440                         PURPOSE_OF _USE_TYPE_ ID)
  13441                    VALU ES(
  13442                         TRANSACTIO N_S.NEXTVA L ,
  13443                         L_new_resi dent_addr_ tab(indx). PERSON_ID,
  13444                         L_new_resi dent_addr_ tab(indx). INSURANCE_ ID,
  13445                         1807412,
  13446                         L_new_resi dent_addr_ tab(indx). ADDRESS_CH ANGE_SRC_T YPE_ID,
  13447                         L_new_resi dent_addr_ tab(indx). STD_INSTIT UTION_ID,
  13448                         L_new_resi dent_addr_ tab(indx). ADDRESS_IN VALID_TYPE _ID,
  13449                         L_new_resi dent_addr_ tab(indx). NCOA_STATU S_TYPE_ID,
  13450                         L_new_resi dent_addr_ tab(indx). NCOA_DELIV ERY_TYPE_I D,
  13451                         L_new_resi dent_addr_ tab(indx). NCOA_ZIP_M ATCH_TYPE_ ID,
  13452                         L_new_resi dent_addr_ tab(indx). NCOA_ZIP_N O_MATCH_TY PE_ID,
  13453                         L_new_resi dent_addr_ tab(indx). ADDRESS_LI NE1,
  13454                         L_new_resi dent_addr_ tab(indx). ADDRESS_LI NE2,
  13455                         L_new_resi dent_addr_ tab(indx). ADDRESS_LI NE3,
  13456                         L_new_resi dent_addr_ tab(indx). CITY,
  13457                         L_new_resi dent_addr_ tab(indx). STATE_CODE ,
  13458                         L_new_resi dent_addr_ tab(indx). COUNTY_COD E,
  13459                         L_new_resi dent_addr_ tab(indx). PROVINCE_C ODE,
  13460                         L_new_resi dent_addr_ tab(indx). ZIP_CODE,
  13461                         L_new_resi dent_addr_ tab(indx). ZIP_PLUS_4 ,
  13462                         L_new_resi dent_addr_ tab(indx). POSTAL_COD E,
  13463                         L_new_resi dent_addr_ tab(indx). COUNTRY_CO DE,
  13464                         L_new_resi dent_addr_ tab(indx). ADDRESS_CH ANGE_EFFEC TIVE_DATE,
  13465                         L_new_resi dent_addr_ tab(indx). ADDRESS_IN VALIDATED_ DATE,
  13466                         L_new_resi dent_addr_ tab(indx). NCOA_ADDRE SS_CHECK_D ATE,
  13467                         L_new_resi dent_addr_ tab(indx). ADDRESS_ST ART_DATE_T XT,
  13468                         L_new_resi dent_addr_ tab(indx). ADDRESS_EN D_DATE_TXT ,
  13469                         L_new_resi dent_addr_ tab(indx). ADDRESS_PH ONE_NUMBER ,
  13470                         '549234',
  13471                         SYSDATE,
  13472                         '549234',
  13473                         SYSDATE,
  13474                         0,
  13475                         L_new_resi dent_addr_ tab(indx). RECORD_MOD IFIED_SRC_ NAME,
  13476                         L_new_resi dent_addr_ tab(indx). PERSON_REL ATION_ID,
  13477                         L_new_resi dent_addr_ tab(indx). CASSCERTIF IEDTYPE_ID ,
  13478                         L_new_resi dent_addr_ tab(indx). CASS_CERTI FIED_DATE,
  13479                         L_new_resi dent_addr_ tab(indx). PURPOSE_OF _USE_TYPE_ ID) ;
  13480  
  13481            c ommit;
  13482  
  13483            V C_msg_step  := 'Displ aying row  count';
  13484  
  13485            - - Rows cou nt added
  13486            F OR I IN 1. .L_new_res ident_addr _tab.COUNT  LOOP
  13487                  VN_tot al_count : = VN_total _count + S QL%BULK_RO WCOUNT(I);
  13488            E ND LOOP;
  13489  
  13490            t ime_c := d bms_utilit y.get_time ;
  13491            V N_elapsed_ time := RO UND((time_ c - time_b )/100/60,2 );
  13492  
  13493            D BMS_APPLIC ATION_INFO .set_clien t_info('It eration# ' || gc_inte ration||'  - Rows: '| |VN_total_ count ||'  - '||VN_el apsed_time ||' min');
  13494  
  13495            A DRMGT.Job_ Process_Lo g_Sp(PC_jo b_name =>  gc_program _name,
  13496                                                PD_job_lo g_date =>  SYSDATE,
  13497                                                PC_job_st atus => 'I NFORMATION  - Iterati on: '|| gc _interatio n,
  13498                                                PC_job_lo g_message  => 'Rows A dded: '||V N_total_co unt||' - E lap(min):  '||VN_elap sed_time,
  13499                                                PD_date1  => SYSDATE
  13500                                 );
  13501  
  13502            E XIT WHEN L _new_resid ent_addr_t ab.COUNT =  0;
  13503  
  13504  
  13505       END LO OP;
  13506  
  13507       CLOSE  GetPermAdd rInfo_C;
  13508  
  13509       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')) ;
  13510  
  13511       time_d  := dbms_u tility.get _time;
  13512  
  13513       VN_ela psed_time  := ROUND(( time_d - t ime_a)/100 /60,2);
  13514  
  13515  
  13516       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => gc_pr ogram_name ,
  13517                                                PD_job_lo g_date =>  SYSDATE,
  13518                                                PC_job_st atus => 'I NFORMATION  - Process  Ended - E lap(min):  '||VN_elap sed_time,
  13519                                                PC_job_lo g_message  => 'Total  Rows Added /Rows Proc essed: '|| VN_total_c ount||'/'| |VN_rowcnt _fetched,
  13520                                                PD_date1  => SYSDATE
  13521                                 );
  13522  
  13523  
  13524     EXCEPTIO N
  13525  
  13526       WHEN d ml_errors  THEN
  13527  
  13528         VN_E XCEPTION_C NT := SQL% BULK_EXCEP TIONS.COUN T;
  13529  
  13530         FOR  I IN 1 ..  VN_EXCEPTI ON_CNT LOO P
  13531              VC_error_m sg :=
  13532                  'ERROR  BULK EXCE PTION: ' | | VC_msg_s tep||CHR(1 0) || SQL% BULK_EXCEP TIONS(I).E RROR_INDEX  ||
  13533                  ' Pers on ID: ' | | L_new_re sident_add r_tab(I).p erson_id | |
  13534                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  13535  
  13536                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => gc_pr ogram_name ,
  13537                                                PD_job_lo g_date =>  SYSDATE,
  13538                                                PC_job_st atus => 'E RROR BULK  EXCEPTION  - Row# '|| SQL%BULK_E XCEPTIONS( I).ERROR_I NDEX,
  13539                                                PC_job_lo g_message  => 'Total  Rows Added /Rows Proc essed: '|| VN_total_c ount||'/'| |VN_rowcnt _fetched|| ' Elapsed:  '||VN_ela psed_time,
  13540                                                PC_text1  => SUBSTR( VC_error_m sg,1,200),
  13541                                                PD_date1  => SYSDATE
  13542                                 );
  13543  
  13544               DBMS_OUTP UT.put_lin e(VC_error _msg);
  13545  
  13546         END  LOOP;
  13547  
  13548      WHEN OT HERS THEN
  13549  
  13550         VC_e rror_msg : ='ERROR EX CEPTION -  '||VC_msg_ step||CHR( 10)|| SUBS TR('Unkown  Error: '| |SQLERRM,1 ,200);
  13551  
  13552         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => gc_ program_na me,
  13553                                                        P D_job_log_ date => SY SDATE,
  13554                                                        P C_job_stat us => 'ERR OR EXCEPTI ON',
  13555                                                        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,
  13556                                                        P C_text1 =>  SUBSTR(VC _error_msg ,1,200),
  13557                                                        P D_date1 =>  SYSDATE
  13558                                 );
  13559  
  13560          DBM S_OUTPUT.P UT_LINE(VC _error_msg );
  13561  
  13562  
  13563   END LOAD_M ISSING_RES IDENT_ADDR _SP;
  13564   /
  13565  
  13566  
  13567   CREATE OR  REPLACE PU BLIC SYNON YM LOAD_MI SSING_RESI DENT_ADDR_ SP FOR ADR .LOAD_MISS ING_RESIDE NT_ADDR_SP ;