DBA Data[Home] [Help]

PACKAGE BODY: APPS.FND_CP_RT_PKG

Source


1 package body FND_CP_RT_PKG as
2 /* $Header: AFCPPRTB.pls 120.2 2007/12/18 22:23:51 ckclark ship $ */
3  --
4  -- Package
5  --   FND_CP_RT_PKG
6  --
7  -- Purpose
8  --   Concurrent processing PL/SQL regression testing
9  --
10  -- History
11  --   XX-XXX-02	Christina Clark         Created
12  --
13 
14   --
15   -- PRIVATE VARIABLES
16   --
17 
18   --
19   -- EXCEPTION INFO
20   --
21 
22   --
23   -- PRIVATE PROCEDURES/FUNCTIONS
24   --
25 
26   -- --
27   -- Name
28   --   section_title
29   -- Purpose
30   --   Called to print title for each section
31   -- Parameters
32   --   which - log or output file? Either FND_FILE.LOG or FND_FILE.OUTPUT
33   --   title - title of section
34   --
35   -- --
36 
37   procedure section_title (which IN number,
38                            title IN varchar2) is
39 
40   begin
41      FND_FILE.NEW_LINE(which);
42      FND_FILE.PUT_LINE(which, '----------------------------------------------------------------');
43      FND_FILE.PUT_LINE(which, title);
44      FND_FILE.PUT_LINE(which, '----------------------------------------------------------------');
45   end section_title;
46 
47   --
48   -- PUBLIC PROCEDURES/FUNCTIONS
49   --
50 
51   /* Sleep for duration seconds */
52   procedure sleep (               duration IN varchar2) is
53     begin
54       FND_FILE.PUT_LINE(FND_FILE.LOG, 'Sleeping for '
55                                       || duration
56                                       || ' seconds... Current time: '
57                                       || to_char(sysdate, 'DD-MON-RR HH24:MI:SS'));
58 
59       DBMS_LOCK.SLEEP(TO_NUMBER(duration));
60 
61       FND_FILE.PUT_LINE(FND_FILE.LOG, 'Sleep finished... Current time: '
62                                       || to_char(sysdate, 'DD-MON-RR HH24:MI:SS'));
63       FND_FILE.NEW_LINE(FND_FILE.LOG);
64     end sleep;
65 
66   /* Run program in stripped down fashion */
67   procedure basic(                errbuf  OUT NOCOPY varchar2,
68                                   retcode OUT NOCOPY varchar2) is
69     begin
70 
71         FND_FILE.PUT_LINE(FND_FILE.LOG, 'Start of Concurrent Processing Regression Test...');
72         FND_FILE.PUT_LINE(FND_FILE.LOG, 'End of Concurrent Processing Regression Test...');
73         -- -----------------------------
74         -- Set errbuf and retcode
75         -- -----------------------------
76         errbuf := 'Success';
77         retcode := 0 ;
78         return;
79     end basic;
80 
81   /* Select and display data */
82   procedure verify_values (       run_mode IN varchar2,
83                                   duration IN varchar2,
84                                   p_num IN varchar2,
85                                   p_date IN varchar2,
86                                   p_varchar IN varchar2) is
87 
88     l_nls_lang          nls_session_parameters.value%TYPE;
89     l_nls_terr          nls_session_parameters.value%TYPE;
90     l_nls_num_char      nls_session_parameters.value%TYPE;
91     l_nls_date_fmt      nls_session_parameters.value%TYPE;
92     l_nls_date_lang     nls_session_parameters.value%TYPE;
93     l_db_inst           v$instance.instance_name%TYPE;
94 
95   begin
96     -- ----------------------------------------------
97     -- Use FND_FILE to output messages at each stage
98     -- ----------------------------------------------
99 
100     FND_FILE.PUT_LINE(FND_FILE.LOG, 'Start of Concurrent Processing Regression Test...');
101     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Start of Concurrent Processing Regression Test...');
102     FND_FILE.NEW_LINE(FND_FILE.OUTPUT);
103 
104     --
105     -- Verify IN parameter values
106     -- Right now we simply print out all three as varchar parameters.  May find value
107     -- later in adding some verification for dates and numbers...
108     --
109     FND_FILE.NEW_LINE(FND_FILE.LOG);
110     FND_FILE.PUT_LINE(FND_FILE.LOG, 'Verify IN parameter values...');
111     section_title(FND_FILE.OUTPUT, 'Verify IN parameter values...');
112     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'run_mode = ' || run_mode);
113     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'duration = ' || duration);
114     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'p_num = ' ||  nvl(p_num, 'NULL'));
115     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'p_date = ' || nvl(p_date, 'NULL'));
116     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'p_varchar ' || nvl(p_varchar, 'NULL'));
117 
118     --
119     -- Verify the FND_GLOBAL values
120     --
121     FND_FILE.NEW_LINE(FND_FILE.LOG);
122     FND_FILE.PUT_LINE(FND_FILE.LOG, 'Verify FND_GLOBAL values...');
123     SECTION_TITLE(FND_FILE.OUTPUT, 'Verify FND_GLOBAL values...');
124 
125     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'User name = ' || fnd_global.user_name);
126     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'User id = ' || fnd_global.user_id);
127     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Resp name = ' || fnd_global.resp_name);
128     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Resp id = ' || fnd_global.resp_id);
129     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Resp app name = ' || fnd_global.application_name);
130     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Resp app short name = ' || fnd_global.application_short_name);
131     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Resp app id = ' || fnd_global.resp_appl_id);
132     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Security group id = ' || fnd_global.security_group_id);
133     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Login id = ' || fnd_global.login_id);
134     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Conc login id = ' || fnd_global.conc_login_id);
135     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Prog app id = ' || fnd_global.prog_appl_id);
136     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Conc program id = ' || fnd_global.conc_program_id);
137     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Conc request id = ' || fnd_global.conc_request_id);
138     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Conc priority request = ' || fnd_global.conc_priority_request);
139     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Per business group id = ' || fnd_global.per_business_group_id);
140     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Per security profile id = ' || fnd_global.per_security_profile_id);
141     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Language count = ' || fnd_global.language_count);
142     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Current language = ' || fnd_global.current_language);
143     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Base language = ' || fnd_global.base_language);
144 
145     --
146     -- Verify NLS session parameter values
147     --
148     FND_FILE.NEW_LINE(FND_FILE.LOG);
149     FND_FILE.PUT_LINE(FND_FILE.LOG, 'Verify NLS session parameter values...');
150     SECTION_TITLE(FND_FILE.OUTPUT, 'Verify NLS session parameter values...');
151 
152     Select Value Into l_nls_lang
153     From   Nls_Session_Parameters
154     Where  Upper(Parameter) = 'NLS_LANGUAGE';
155     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'NLS_LANGUAGE = ' || l_nls_lang);
156 
157     Select Value Into l_nls_terr
158     From   Nls_Session_Parameters
159     Where  Upper(Parameter) = 'NLS_TERRITORY';
160     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'NLS_TERRITORY = ' || l_nls_terr);
161 
162     Select Value Into l_nls_num_char
163     From   Nls_Session_Parameters
164     Where  Upper(Parameter) = 'NLS_NUMERIC_CHARACTERS';
165     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'NLS_NUMERIC_CHARACTERS = ' || l_nls_num_char);
166 
167     Select Value Into l_nls_date_fmt
168     From   Nls_Session_Parameters
169     Where  Upper(Parameter) = 'NLS_DATE_FORMAT';
170     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'NLS_DATE_FORMAT = ' || l_nls_date_fmt);
171 
172     Select Value Into l_nls_date_lang
173     From   Nls_Session_Parameters
174     Where  Upper(Parameter) = 'NLS_DATE_LANGUAGE';
175     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'NLS_DATE_LANGUAGE = ' || l_nls_date_lang);
176 
177     --
178     -- Verify current database instance
179     --
180     Select Instance_Name Into l_db_inst
181     From   V$Instance;
182     FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Current DB Instance = ' || l_db_inst);
183 
184 
185   end verify_values;
186 
187   /* Submit a single request */
188   procedure submit_single_request(errbuf  OUT NOCOPY varchar2,
189                                   retcode OUT NOCOPY varchar2) is
190 
191     l_rpt_end_time      varchar2(30);
192     l_printer           fnd_printer.printer_name%TYPE;
193     reqid               fnd_concurrent_requests.request_id%TYPE;
194 
195   begin
196 
197          -- -----------------------
198          -- Submit a single request
199          -- -----------------------
200          FND_FILE.NEW_LINE(FND_FILE.OUTPUT);
201          FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Submit a single request...');
202          SECTION_TITLE(FND_FILE.LOG, 'Submit a single request...');
203          FND_FILE.PUT_LINE(FND_FILE.LOG, 'Prepare to submit a single request...');
204 
205          -- Set repeat options
206          FND_FILE.PUT_LINE(FND_FILE.LOG, 'Set repeat options...2 resubmissions, 1 min apart, increment dates.');
207 
208          Select to_char(SYSDATE + (3/1440), 'DD-MON-YYYY HH24:MI:SS')
209          Into   l_rpt_end_time
210          From   Dual;
211          if (not fnd_request.set_repeat_options(
212                                      repeat_interval => 1,
213                                      repeat_unit => 'MINUTES',
214                                      repeat_end_time => l_rpt_end_time,
215                                      increment_dates => 'Y'))
216          then
217             errbuf := substr(fnd_message.get, 1, 240);
218             retcode := 2;
219             rollback;
220             return;
221          end if;
222 
223          -- Set print options
224 
225          FND_PROFILE.GET('PRINTER', l_printer);
226          if l_printer IS NULL then
227             FND_FILE.PUT_LINE (FND_FILE.LOG, 'Printer is null, will not set print options.');
228          else
229             FND_FILE.PUT_LINE (FND_FILE.LOG, 'Printer is ' || l_printer );
230             FND_FILE.PUT_LINE(FND_FILE.LOG, 'Set print options...one copy to default printer.');
231          end if;
232          if (not fnd_request.set_print_options(
233                                      printer => l_printer,
234                                      style => 'PORTRAIT',
235                                      copies => 1,
236                                      save_output => TRUE,
237                                      print_together => NULL))
238          then
239             errbuf := substr(fnd_message.get, 1, 240);
240             retcode := 2;
241             rollback;
242             return;
243          end if;
244 
245          -- Add a notification to SYSADMIN user
246          FND_FILE.PUT_LINE(FND_FILE.LOG, 'Add notification to SYSADMIN user...');
247 
248          if (not fnd_request.add_notification(user => 'SYSADMIN')) then
249              errbuf := substr(fnd_message.get, 1, 240);
250              retcode := 2;
251              rollback;
252              return;
253          end if;
254 
255          -- Submit the request for FNDCPRT_PLSQL with run_mode='BASIC'
256          FND_FILE.PUT_LINE(FND_FILE.LOG, 'Submit a request for FNDCPRT_PLSQL in BASIC run_mode...');
257 
258          reqid := fnd_request.submit_request(application => 'FND',
259                                              program => 'FNDCPRT_PLSQL',
260                                              description => 'Test of Single Request Submission',
261                                              argument1 => 'BASIC');  -- run_mode = 'BASIC'
262 
263          if reqid = 0 then
264             errbuf := substr(fnd_message.get, 1, 240);
265             retcode := 2;
266             rollback;
267             return;
268          end if;
269 
270          FND_FILE.PUT_LINE(FND_FILE.LOG, 'Single submission request id = ' || reqid);
271          FND_FILE.PUT_LINE(FND_FILE.LOG, 'Single request submission completed successfully.');
272   end submit_single_request;
273 
274   /* Submit a single child request */
275   procedure submit_sub_request(   errbuf  OUT NOCOPY varchar2,
276                                   retcode OUT NOCOPY varchar2) is
277 
278     reqid               fnd_concurrent_requests.request_id%TYPE;
279 
280   begin
281          -- ---------------------------
282          -- Submit a single sub-request
283          -- ---------------------------
284          FND_FILE.NEW_LINE(FND_FILE.OUTPUT);
285          FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Submit a single sub-request...');
286          SECTION_TITLE(FND_FILE.LOG, 'Submit a single sub-request...');
287          FND_FILE.PUT_LINE(FND_FILE.LOG, 'Submit a single sub-request...');
288          -- Submit the child request.  The sub_request parameter must be set to 'Y'.
289          reqid := fnd_request.submit_request(application => 'FND',
290                                              program => 'FNDCPRT_PLSQL',
291                                              description => 'Test of Single Sub-request Submission',
292                                              sub_request => TRUE,
293                                              argument1 => 'BASIC');  -- run_mode = 'BASIC'
294 
295          if reqid = 0 then
296            -- If request submission failed, exit with error.
297            errbuf := fnd_message.get;
298            retcode := 2;
299          else
300            FND_FILE.PUT_LINE(FND_FILE.LOG, 'Single sub-request submission completed successfully.');
301 
302            errbuf := 'Phase 1 complete:';
303            retcode := 0 ;
304          end if;
305 
306          return;
307 
308   end submit_sub_request;
309 
310   /* Submit a request set */
311   procedure submit_request_set(   errbuf  OUT NOCOPY varchar2,
312                                   retcode OUT NOCOPY varchar2) is
313 
314     l_success           boolean;
315     reqid               fnd_concurrent_requests.request_id%TYPE;
316     req_data            varchar2(10);
317     srs_failed          exception;
318     submitprog_failed   exception;
319     submitset_failed    exception;
320 
321   begin
322 
323        -- --------------------
324        -- Submit a request set
325        -- --------------------
326 
327        FND_FILE.NEW_LINE(FND_FILE.OUTPUT);
328        FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'Submit a request set...');
329        SECTION_TITLE(FND_FILE.LOG, 'Submit a request set...');
330 
331        -- Step 1 - call set_request_set
332        FND_FILE.PUT_LINE(FND_FILE.LOG, 'Call set_request_set...');
333 
334        l_success := fnd_submit.set_request_set('FND', 'FNDCPRT_SET');
335        if ( not l_success ) then
336           raise srs_failed;
337        end if;
338 
339        -- Step 2 - call submit program for each program in the set
340 
341        FND_FILE.PUT_LINE(FND_FILE.LOG, 'Call submit program first time...');
342 
343        l_success := fnd_submit.submit_program('FND','FNDCPRT_PLSQL', 'STAGE10', 'BASIC', '0',  chr(0));
344        if ( not l_success ) then
345           raise submitprog_failed;
346        end if;
347 
348        FND_FILE.PUT_LINE(FND_FILE.LOG, 'Call submit program second time...');
349 
350        l_success := fnd_submit.submit_program('FND','FNDCPRT_SQLPLUS', 'STAGE20', 'BASIC', '0', '', '', '', chr(0));
351        if ( not l_success ) then
352           raise submitprog_failed;
353        end if;
354 
355        FND_FILE.PUT_LINE(FND_FILE.LOG, 'Call submit program third time...');
356 
357        l_success := fnd_submit.submit_program('FND','FNDCPRT_HOST', 'STAGE30', 'BASIC', '0', chr(0));
358        if ( not l_success ) then
359           raise submitprog_failed;
360        end if;
361 
362        FND_FILE.PUT_LINE(FND_FILE.LOG, 'Call submit program fourth time...');
363 
364        l_success := fnd_submit.submit_program('FND','FNDCPRT_SQLLOAD', 'STAGE40', '$FND_TOP/patch/115/import/fndcpldr.dat', chr(0));
365        if ( not l_success ) then
366           raise submitprog_failed;
367        end if;
368 
369        FND_FILE.PUT_LINE(FND_FILE.LOG, 'Call submit program fifth time...');
370 
371        l_success := fnd_submit.submit_program('FND','FNDCPRT_JAVA', 'STAGE50', 'BASIC', '0', chr(0));
372        if ( not l_success ) then
373           raise submitprog_failed;
374        end if;
375 
376        FND_FILE.PUT_LINE(FND_FILE.LOG, 'Call submit program sixth time...');
377 
378        l_success := fnd_submit.submit_program('FND','FNDCPRT_SPWN', 'STAGE60', 'BASIC', '0', chr(0));
379        if ( not l_success ) then
380           raise submitprog_failed;
381        end if;
382 
383        FND_FILE.PUT_LINE(FND_FILE.LOG, 'Call submit program seventh time...');
384 
385        l_success := fnd_submit.submit_program('FND','FNDCPRT_RPTTXT', 'STAGE70', 'BASIC', '0', chr(0));
386        if ( not l_success ) then
387           raise submitprog_failed;
388        end if;
389 
390        FND_FILE.PUT_LINE(FND_FILE.LOG, 'Call submit program eighth time...');
391 
392        l_success := fnd_submit.submit_program('FND','FNDCPRT_RPTPS', 'STAGE80', 'BASIC', '0', chr(0));
393        if ( not l_success ) then
394           raise submitprog_failed;
395        end if;
396 
397 	   FND_FILE.PUT_LINE(FND_FILE.LOG, 'Call submit program ninth time...');
398 
399        l_success := fnd_submit.submit_program('FND','FNDCPRT_PERL', 'STAGE90', 'BASIC', '0', chr(0));
400        if ( not l_success ) then
401           raise submitprog_failed;
402 	   end if;
403 
404        -- Step 3 - call submit_set
405        FND_FILE.PUT_LINE(FND_FILE.LOG, 'Call submit_set...');
406 
407        -- ----------------------------------------------
408        -- If we are running as a PL/SQL concurrent program, submit the set as a sub-request.
409        -- If we are running as a standalone PL/SQL procedure, submit the set as an in indivdual request.
410        -- Check req_data: if NULL, we are running as a standalone
411        -- ----------------------------------------------
412        req_data := fnd_conc_global.request_data;
413        if (req_data IS NULL) then
414          reqid := fnd_submit.submit_set(null,false);
415        else
416          reqid := fnd_submit.submit_set(null,true);
417        end if;
418 
419        if (reqid = 0 ) then
420           raise submitset_failed;
421        end if;
422 
423        FND_FILE.PUT_LINE(FND_FILE.LOG, 'Request set submission completed successfully.');
424 
425        errbuf := 'Phase 2 complete:';
426        retcode := 0 ;
427 
428        return;
429   exception
430       when srs_failed then
431         errbuf := 'Call to set_request_set failed: ' || fnd_message.get;
432         retcode := 2;
433         fnd_file.put_line(fnd_file.log, errbuf);
434       when submitprog_failed then
435         errbuf := 'Call to submit_program failed: ' || fnd_message.get;
436         retcode := 2;
437         fnd_file.put_line(fnd_file.log, errbuf);
438       when submitset_failed then
439         errbuf := 'Call to submit_set failed: ' || fnd_message.get;
440         retcode := 2;
441         fnd_file.put_line(fnd_file.log, errbuf);
442       when others then
443         errbuf := 'Request set submission failed - unknown error: ' || sqlerrm;
444         retcode := 2;
445         fnd_file.put_line(fnd_file.log, errbuf);
446 
447   end submit_request_set;
448 
449   /* Write a message that all phases complete */
450   procedure finish(               errbuf  OUT NOCOPY varchar2,
451                                   retcode OUT NOCOPY varchar2) is
452 
453   begin
454 
455       FND_FILE.NEW_LINE(FND_FILE.LOG, 2);
456       FND_FILE.PUT_LINE(FND_FILE.LOG, 'All tests complete!');
457       FND_FILE.PUT_LINE(FND_FILE.LOG, 'End of Concurrent Processing Regression Test...');
458       FND_FILE.NEW_LINE(FND_FILE.OUTPUT);
459       FND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'End of Concurrent Processing Regression Test...');
460 
461 
462       errbuf := 'Success:';
463       retcode := 0 ;
464       return;
465 
466   end finish;
467 
468   /* Main concurrent program procedure */
469   procedure fnd_cp_rt_proc(
470                                   errbuf    out NOCOPY varchar2,
471                                   retcode   out NOCOPY varchar2,
472                                   run_mode  in  varchar2 default 'BASIC',
473                                   duration  in  varchar2 default '0',
474                                   p_num     in  varchar2 default NULL,
475                                   p_date    in  varchar2 default NULL,
476                                   p_varchar in  varchar2 default NULL) is
477 
478     req_data            varchar2(10);
479 
480   begin
481 
482     -- ----------------------------------------------
483     --   Check req_data:
484     --   if req_data IS NULL, first time into the program - Phase 1
485     --   if req_data = 'Phase_2' reawakened after sub-request has completed - Phase 2
486     --   if req_data = 'Phase_3' reawakened after request set has completed - Phase 3
487     -- ----------------------------------------------
488     req_data := fnd_conc_global.request_data;
489     FND_FILE.PUT_LINE(FND_FILE.LOG, 'req_data = ' || req_data);
490 
491     if (req_data IS NULL and TO_NUMBER(duration) > 0) then
492       sleep (duration);
493     end if;
494 
495     if (upper(run_mode) = 'FULL') then
496 
497       if (req_data IS NULL) then
498         /*------------------------------------------------------------------------------+
499         | PHASE 1                                                                       |
500         +-------------------------------------------------------------------------------*/
501         sleep(duration);
502         verify_values(run_mode, duration, p_num, p_date, p_varchar);
503         submit_single_request(errbuf, retcode);
504         submit_sub_request(errbuf, retcode);
505 
506         -- Set the globals to put the program into the PAUSED status on exit,
507         -- and to save the state in request_data.
508         fnd_conc_global.set_req_globals(conc_status => 'PAUSED',
509                                         request_data => 'Phase_2') ;
510 
511       elsif (req_data = 'Phase_2') then -- Phase 1 has completed
512         /*------------------------------------------------------------------------------+
513         | PHASE 2                                                                       |
514         +-------------------------------------------------------------------------------*/
515         submit_request_set(errbuf, retcode);
516         -- Here we set the globals to put the program into the PAUSED status on exit,
517         -- and to save the state in request_data.
518         fnd_conc_global.set_req_globals(conc_status => 'PAUSED',
519                                         request_data => 'Phase_3') ;
520 
521       else                              -- Phase 2 has completed
522         /*-------------------------------------------------------------------------------+
523          | PHASE 3                                                                       |
524          +-------------------------------------------------------------------------------*/
525         finish(errbuf, retcode);
526         -- Set globals to set request_data for program into FINISHED state
527         fnd_conc_global.set_req_globals(request_data => 'Finished');
528       end if;
529 
530     elsif (upper(run_mode) = 'BASIC') then
531       basic(errbuf, retcode);
532     else
533       -- -----------------------------
534       -- Set errbuf and retcode
535       -- -----------------------------
536       errbuf := 'Failure: Invalid RUN_MODE parameter:  '|| run_mode;
537       retcode := 2 ;
538       return;
539     end if;
540 
541   end fnd_cp_rt_proc;
542 
543 end fnd_cp_rt_pkg;