DBA Data[Home] [Help]

PACKAGE BODY: APPS.LNS_FINANCIALS_W

Source


1 package body lns_financials_w as
2   /* $Header: LNS_FINANCIALJ_B.pls 120.7.12010000.3 2009/01/07 13:35:38 gparuchu ship $ */
3   procedure rosetta_table_copy_in_p1(t out nocopy lns_financials.rate_schedule_tbl, a0 JTF_NUMBER_TABLE
4     , a1 JTF_DATE_TABLE
5     , a2 JTF_DATE_TABLE
6     , a3 JTF_NUMBER_TABLE
7     , a4 JTF_NUMBER_TABLE
8     , a5 JTF_NUMBER_TABLE
9     , a6 JTF_NUMBER_TABLE
10     , a7 JTF_VARCHAR2_TABLE_100
11     , a8 JTF_VARCHAR2_TABLE_100
12     , a9 JTF_VARCHAR2_TABLE_100
13     ) as
14     ddindx binary_integer; indx binary_integer;
15   begin
16   if a0 is not null and a0.count > 0 then
17       if a0.count > 0 then
18         indx := a0.first;
19         ddindx := 1;
20         while true loop
21           t(ddindx).rate_id := a0(indx);
22           t(ddindx).begin_date := a1(indx);
23           t(ddindx).end_date := a2(indx);
24           t(ddindx).annual_rate := a3(indx);
25           t(ddindx).spread := a4(indx);
26           t(ddindx).begin_installment_number := a5(indx);
27           t(ddindx).end_installment_number := a6(indx);
28           t(ddindx).interest_only_flag := a7(indx);
29           t(ddindx).phase := a8(indx);
30           t(ddindx).floating_flag := a9(indx);
31           ddindx := ddindx+1;
32           if a0.last =indx
33             then exit;
34           end if;
35           indx := a0.next(indx);
36         end loop;
37       end if;
38    end if;
39   end rosetta_table_copy_in_p1;
40   procedure rosetta_table_copy_out_p1(t lns_financials.rate_schedule_tbl, a0 out nocopy JTF_NUMBER_TABLE
41     , a1 out nocopy JTF_DATE_TABLE
42     , a2 out nocopy JTF_DATE_TABLE
43     , a3 out nocopy JTF_NUMBER_TABLE
44     , a4 out nocopy JTF_NUMBER_TABLE
45     , a5 out nocopy JTF_NUMBER_TABLE
46     , a6 out nocopy JTF_NUMBER_TABLE
47     , a7 out nocopy JTF_VARCHAR2_TABLE_100
48     , a8 out nocopy JTF_VARCHAR2_TABLE_100
49     , a9 out nocopy JTF_VARCHAR2_TABLE_100
50     ) as
51     ddindx binary_integer; indx binary_integer;
52   begin
53   if t is null or t.count = 0 then
54     a0 := JTF_NUMBER_TABLE();
55     a1 := JTF_DATE_TABLE();
56     a2 := JTF_DATE_TABLE();
57     a3 := JTF_NUMBER_TABLE();
58     a4 := JTF_NUMBER_TABLE();
59     a5 := JTF_NUMBER_TABLE();
60     a6 := JTF_NUMBER_TABLE();
61     a7 := JTF_VARCHAR2_TABLE_100();
62     a8 := JTF_VARCHAR2_TABLE_100();
63     a9 := JTF_VARCHAR2_TABLE_100();
64   else
65       a0 := JTF_NUMBER_TABLE();
66       a1 := JTF_DATE_TABLE();
67       a2 := JTF_DATE_TABLE();
68       a3 := JTF_NUMBER_TABLE();
69       a4 := JTF_NUMBER_TABLE();
70       a5 := JTF_NUMBER_TABLE();
71       a6 := JTF_NUMBER_TABLE();
72       a7 := JTF_VARCHAR2_TABLE_100();
73       a8 := JTF_VARCHAR2_TABLE_100();
74       a9 := JTF_VARCHAR2_TABLE_100();
75       if t.count > 0 then
76         a0.extend(t.count);
77         a1.extend(t.count);
78         a2.extend(t.count);
79         a3.extend(t.count);
80         a4.extend(t.count);
81         a5.extend(t.count);
82         a6.extend(t.count);
83         a7.extend(t.count);
84         a8.extend(t.count);
85         a9.extend(t.count);
86         ddindx := t.first;
87         indx := 1;
88         while true loop
89           a0(indx) := t(ddindx).rate_id;
90           a1(indx) := t(ddindx).begin_date;
91           a2(indx) := t(ddindx).end_date;
92           a3(indx) := t(ddindx).annual_rate;
93           a4(indx) := t(ddindx).spread;
94           a5(indx) := t(ddindx).begin_installment_number;
95           a6(indx) := t(ddindx).end_installment_number;
96           a7(indx) := t(ddindx).interest_only_flag;
97           a8(indx) := t(ddindx).phase;
98           a9(indx) := t(ddindx).floating_flag;
99           indx := indx+1;
100           if t.last =ddindx
101             then exit;
102           end if;
103           ddindx := t.next(ddindx);
104         end loop;
105       end if;
106    end if;
107   end rosetta_table_copy_out_p1;
108 
109   procedure rosetta_table_copy_in_p3(t out nocopy lns_financials.amortization_tbl, a0 JTF_NUMBER_TABLE
110     , a1 JTF_DATE_TABLE
111     , a2 JTF_DATE_TABLE
112     , a3 JTF_DATE_TABLE
113     , a4 JTF_NUMBER_TABLE
114     , a5 JTF_NUMBER_TABLE
115     , a6 JTF_NUMBER_TABLE
116     , a7 JTF_NUMBER_TABLE
117     , a8 JTF_NUMBER_TABLE
118     , a9 JTF_NUMBER_TABLE
119     , a10 JTF_NUMBER_TABLE
120     , a11 JTF_NUMBER_TABLE
121     , a12 JTF_NUMBER_TABLE
122     , a13 JTF_NUMBER_TABLE
123     , a14 JTF_NUMBER_TABLE
124     , a15 JTF_NUMBER_TABLE
125     , a16 JTF_NUMBER_TABLE
126     , a17 JTF_NUMBER_TABLE
127     , a18 JTF_NUMBER_TABLE
128     , a19 JTF_NUMBER_TABLE
129     , a20 JTF_NUMBER_TABLE
130     , a21 JTF_VARCHAR2_TABLE_100
131     , a22 JTF_VARCHAR2_TABLE_100
132     , a23 JTF_VARCHAR2_TABLE_100
133     , a24 JTF_NUMBER_TABLE
134     , a25 JTF_NUMBER_TABLE
135     , a26 JTF_NUMBER_TABLE
136     ) as
137     ddindx binary_integer; indx binary_integer;
138   begin
139   if a0 is not null and a0.count > 0 then
140       if a0.count > 0 then
141         indx := a0.first;
142         ddindx := 1;
143         while true loop
144           t(ddindx).installment_number := a0(indx);
145           t(ddindx).due_date := a1(indx);
146           t(ddindx).period_start_date := a2(indx);
147           t(ddindx).period_end_date := a3(indx);
148           t(ddindx).principal_amount := a4(indx);
149           t(ddindx).interest_amount := a5(indx);
150           t(ddindx).normal_int_amount := a6(indx);
151           t(ddindx).add_prin_int_amount := a7(indx);
152           t(ddindx).add_int_int_amount := a8(indx);
153           t(ddindx).penal_int_amount := a9(indx);
154           t(ddindx).fee_amount := a10(indx);
155           t(ddindx).other_amount := a11(indx);
156           t(ddindx).begin_balance := a12(indx);
157           t(ddindx).end_balance := a13(indx);
158           t(ddindx).total := a14(indx);
159           t(ddindx).interest_cumulative := a15(indx);
160           t(ddindx).principal_cumulative := a16(indx);
161           t(ddindx).fees_cumulative := a17(indx);
162           t(ddindx).other_cumulative := a18(indx);
163           t(ddindx).rate_id := a19(indx);
164           t(ddindx).rate_unadj := a20(indx);
165           t(ddindx).rate_change_freq := a21(indx);
166           t(ddindx).source := a22(indx);
167           t(ddindx).grand_total_flag := a23(indx);
168           t(ddindx).unpaid_prin := a24(indx);
169           t(ddindx).unpaid_int := a25(indx);
170           t(ddindx).interest_rate := a26(indx);
171           ddindx := ddindx+1;
172           if a0.last =indx
173             then exit;
174           end if;
175           indx := a0.next(indx);
176         end loop;
177       end if;
178    end if;
179   end rosetta_table_copy_in_p3;
180   procedure rosetta_table_copy_out_p3(t lns_financials.amortization_tbl, a0 out nocopy JTF_NUMBER_TABLE
181     , a1 out nocopy JTF_DATE_TABLE
182     , a2 out nocopy JTF_DATE_TABLE
183     , a3 out nocopy JTF_DATE_TABLE
184     , a4 out nocopy JTF_NUMBER_TABLE
185     , a5 out nocopy JTF_NUMBER_TABLE
186     , a6 out nocopy JTF_NUMBER_TABLE
187     , a7 out nocopy JTF_NUMBER_TABLE
188     , a8 out nocopy JTF_NUMBER_TABLE
189     , a9 out nocopy JTF_NUMBER_TABLE
190     , a10 out nocopy JTF_NUMBER_TABLE
191     , a11 out nocopy JTF_NUMBER_TABLE
192     , a12 out nocopy JTF_NUMBER_TABLE
193     , a13 out nocopy JTF_NUMBER_TABLE
194     , a14 out nocopy JTF_NUMBER_TABLE
195     , a15 out nocopy JTF_NUMBER_TABLE
196     , a16 out nocopy JTF_NUMBER_TABLE
197     , a17 out nocopy JTF_NUMBER_TABLE
198     , a18 out nocopy JTF_NUMBER_TABLE
199     , a19 out nocopy JTF_NUMBER_TABLE
200     , a20 out nocopy JTF_NUMBER_TABLE
201     , a21 out nocopy JTF_VARCHAR2_TABLE_100
202     , a22 out nocopy JTF_VARCHAR2_TABLE_100
203     , a23 out nocopy JTF_VARCHAR2_TABLE_100
204     , a24 out nocopy JTF_NUMBER_TABLE
205     , a25 out nocopy JTF_NUMBER_TABLE
206     , a26 out nocopy JTF_NUMBER_TABLE
207     ) as
208     ddindx binary_integer; indx binary_integer;
209   begin
210   if t is null or t.count = 0 then
211     a0 := JTF_NUMBER_TABLE();
212     a1 := JTF_DATE_TABLE();
213     a2 := JTF_DATE_TABLE();
214     a3 := JTF_DATE_TABLE();
215     a4 := JTF_NUMBER_TABLE();
216     a5 := JTF_NUMBER_TABLE();
217     a6 := JTF_NUMBER_TABLE();
218     a7 := JTF_NUMBER_TABLE();
219     a8 := JTF_NUMBER_TABLE();
220     a9 := JTF_NUMBER_TABLE();
221     a10 := JTF_NUMBER_TABLE();
222     a11 := JTF_NUMBER_TABLE();
223     a12 := JTF_NUMBER_TABLE();
224     a13 := JTF_NUMBER_TABLE();
225     a14 := JTF_NUMBER_TABLE();
226     a15 := JTF_NUMBER_TABLE();
227     a16 := JTF_NUMBER_TABLE();
228     a17 := JTF_NUMBER_TABLE();
229     a18 := JTF_NUMBER_TABLE();
230     a19 := JTF_NUMBER_TABLE();
231     a20 := JTF_NUMBER_TABLE();
232     a21 := JTF_VARCHAR2_TABLE_100();
233     a22 := JTF_VARCHAR2_TABLE_100();
234     a23 := JTF_VARCHAR2_TABLE_100();
235     a24 := JTF_NUMBER_TABLE();
236     a25 := JTF_NUMBER_TABLE();
237     a26 := JTF_NUMBER_TABLE();
238   else
239       a0 := JTF_NUMBER_TABLE();
240       a1 := JTF_DATE_TABLE();
241       a2 := JTF_DATE_TABLE();
242       a3 := JTF_DATE_TABLE();
243       a4 := JTF_NUMBER_TABLE();
244       a5 := JTF_NUMBER_TABLE();
245       a6 := JTF_NUMBER_TABLE();
246       a7 := JTF_NUMBER_TABLE();
247       a8 := JTF_NUMBER_TABLE();
248       a9 := JTF_NUMBER_TABLE();
249       a10 := JTF_NUMBER_TABLE();
250       a11 := JTF_NUMBER_TABLE();
251       a12 := JTF_NUMBER_TABLE();
252       a13 := JTF_NUMBER_TABLE();
253       a14 := JTF_NUMBER_TABLE();
254       a15 := JTF_NUMBER_TABLE();
255       a16 := JTF_NUMBER_TABLE();
256       a17 := JTF_NUMBER_TABLE();
257       a18 := JTF_NUMBER_TABLE();
258       a19 := JTF_NUMBER_TABLE();
259       a20 := JTF_NUMBER_TABLE();
260       a21 := JTF_VARCHAR2_TABLE_100();
261       a22 := JTF_VARCHAR2_TABLE_100();
262       a23 := JTF_VARCHAR2_TABLE_100();
263       a24 := JTF_NUMBER_TABLE();
264       a25 := JTF_NUMBER_TABLE();
265       a26 := JTF_NUMBER_TABLE();
266       if t.count > 0 then
267         a0.extend(t.count);
268         a1.extend(t.count);
269         a2.extend(t.count);
270         a3.extend(t.count);
271         a4.extend(t.count);
272         a5.extend(t.count);
273         a6.extend(t.count);
274         a7.extend(t.count);
275         a8.extend(t.count);
276         a9.extend(t.count);
277         a10.extend(t.count);
278         a11.extend(t.count);
279         a12.extend(t.count);
280         a13.extend(t.count);
281         a14.extend(t.count);
282         a15.extend(t.count);
283         a16.extend(t.count);
284         a17.extend(t.count);
285         a18.extend(t.count);
286         a19.extend(t.count);
287         a20.extend(t.count);
288         a21.extend(t.count);
289         a22.extend(t.count);
290         a23.extend(t.count);
291         a24.extend(t.count);
292         a25.extend(t.count);
293         a26.extend(t.count);
294         ddindx := t.first;
295         indx := 1;
296         while true loop
297           a0(indx) := t(ddindx).installment_number;
298           a1(indx) := t(ddindx).due_date;
299           a2(indx) := t(ddindx).period_start_date;
300           a3(indx) := t(ddindx).period_end_date;
301           a4(indx) := t(ddindx).principal_amount;
302           a5(indx) := t(ddindx).interest_amount;
303           a6(indx) := t(ddindx).normal_int_amount;
304           a7(indx) := t(ddindx).add_prin_int_amount;
305           a8(indx) := t(ddindx).add_int_int_amount;
306           a9(indx) := t(ddindx).penal_int_amount;
307           a10(indx) := t(ddindx).fee_amount;
308           a11(indx) := t(ddindx).other_amount;
309           a12(indx) := t(ddindx).begin_balance;
310           a13(indx) := t(ddindx).end_balance;
311           a14(indx) := t(ddindx).total;
312           a15(indx) := t(ddindx).interest_cumulative;
313           a16(indx) := t(ddindx).principal_cumulative;
314           a17(indx) := t(ddindx).fees_cumulative;
315           a18(indx) := t(ddindx).other_cumulative;
316           a19(indx) := t(ddindx).rate_id;
317           a20(indx) := t(ddindx).rate_unadj;
318           a21(indx) := t(ddindx).rate_change_freq;
319           a22(indx) := t(ddindx).source;
320           a23(indx) := t(ddindx).grand_total_flag;
321           a24(indx) := t(ddindx).unpaid_prin;
322           a25(indx) := t(ddindx).unpaid_int;
323           a26(indx) := t(ddindx).interest_rate;
324           indx := indx+1;
325           if t.last =ddindx
326             then exit;
327           end if;
328           ddindx := t.next(ddindx);
329         end loop;
330       end if;
331    end if;
332   end rosetta_table_copy_out_p3;
333 
334   procedure rosetta_table_copy_in_p6(t out nocopy lns_financials.payoff_tbl, a0 JTF_NUMBER_TABLE
335     , a1 JTF_NUMBER_TABLE
336     , a2 JTF_NUMBER_TABLE
337     , a3 JTF_NUMBER_TABLE
338     , a4 JTF_NUMBER_TABLE
339     , a5 JTF_NUMBER_TABLE
340     , a6 JTF_NUMBER_TABLE
341     , a7 JTF_NUMBER_TABLE
342     , a8 JTF_NUMBER_TABLE
343     , a9 JTF_DATE_TABLE
344     ) as
345     ddindx binary_integer; indx binary_integer;
346   begin
347   if a0 is not null and a0.count > 0 then
348       if a0.count > 0 then
349         indx := a0.first;
350         ddindx := 1;
351         while true loop
352           t(ddindx).total_principal_remaining := a0(indx);
353           t(ddindx).unpaid_principal := a1(indx);
354           t(ddindx).unbilled_principal := a2(indx);
355           t(ddindx).total_interest_remaining := a3(indx);
356           t(ddindx).unpaid_interest := a4(indx);
357           t(ddindx).additional_interest_due := a5(indx);
358           t(ddindx).total_fees_remaining := a6(indx);
359           t(ddindx).unpaid_fees := a7(indx);
360           t(ddindx).additional_fees_due := a8(indx);
361           t(ddindx).due_date := a9(indx);
362           ddindx := ddindx+1;
363           if a0.last =indx
364             then exit;
365           end if;
366           indx := a0.next(indx);
367         end loop;
368       end if;
369    end if;
370   end rosetta_table_copy_in_p6;
371   procedure rosetta_table_copy_out_p6(t lns_financials.payoff_tbl, a0 out nocopy JTF_NUMBER_TABLE
372     , a1 out nocopy JTF_NUMBER_TABLE
373     , a2 out nocopy JTF_NUMBER_TABLE
374     , a3 out nocopy JTF_NUMBER_TABLE
375     , a4 out nocopy JTF_NUMBER_TABLE
376     , a5 out nocopy JTF_NUMBER_TABLE
377     , a6 out nocopy JTF_NUMBER_TABLE
378     , a7 out nocopy JTF_NUMBER_TABLE
379     , a8 out nocopy JTF_NUMBER_TABLE
380     , a9 out nocopy JTF_DATE_TABLE
381     ) as
382     ddindx binary_integer; indx binary_integer;
383   begin
384   if t is null or t.count = 0 then
385     a0 := JTF_NUMBER_TABLE();
386     a1 := JTF_NUMBER_TABLE();
387     a2 := JTF_NUMBER_TABLE();
388     a3 := JTF_NUMBER_TABLE();
389     a4 := JTF_NUMBER_TABLE();
390     a5 := JTF_NUMBER_TABLE();
391     a6 := JTF_NUMBER_TABLE();
392     a7 := JTF_NUMBER_TABLE();
393     a8 := JTF_NUMBER_TABLE();
394     a9 := JTF_DATE_TABLE();
395   else
396       a0 := JTF_NUMBER_TABLE();
397       a1 := JTF_NUMBER_TABLE();
398       a2 := JTF_NUMBER_TABLE();
399       a3 := JTF_NUMBER_TABLE();
400       a4 := JTF_NUMBER_TABLE();
401       a5 := JTF_NUMBER_TABLE();
402       a6 := JTF_NUMBER_TABLE();
403       a7 := JTF_NUMBER_TABLE();
404       a8 := JTF_NUMBER_TABLE();
405       a9 := JTF_DATE_TABLE();
406       if t.count > 0 then
407         a0.extend(t.count);
408         a1.extend(t.count);
409         a2.extend(t.count);
410         a3.extend(t.count);
411         a4.extend(t.count);
412         a5.extend(t.count);
413         a6.extend(t.count);
414         a7.extend(t.count);
415         a8.extend(t.count);
416         a9.extend(t.count);
417         ddindx := t.first;
418         indx := 1;
419         while true loop
420           a0(indx) := t(ddindx).total_principal_remaining;
421           a1(indx) := t(ddindx).unpaid_principal;
422           a2(indx) := t(ddindx).unbilled_principal;
423           a3(indx) := t(ddindx).total_interest_remaining;
424           a4(indx) := t(ddindx).unpaid_interest;
425           a5(indx) := t(ddindx).additional_interest_due;
426           a6(indx) := t(ddindx).total_fees_remaining;
427           a7(indx) := t(ddindx).unpaid_fees;
428           a8(indx) := t(ddindx).additional_fees_due;
429           a9(indx) := t(ddindx).due_date;
430           indx := indx+1;
431           if t.last =ddindx
432             then exit;
433           end if;
434           ddindx := t.next(ddindx);
435         end loop;
436       end if;
437    end if;
438   end rosetta_table_copy_out_p6;
439 
440   procedure rosetta_table_copy_in_p8(t out nocopy lns_financials.payoff_tbl2, a0 JTF_VARCHAR2_TABLE_100
441     , a1 JTF_NUMBER_TABLE
442     , a2 JTF_NUMBER_TABLE
443     , a3 JTF_NUMBER_TABLE
444     ) as
445     ddindx binary_integer; indx binary_integer;
446   begin
447   if a0 is not null and a0.count > 0 then
448       if a0.count > 0 then
449         indx := a0.first;
450         ddindx := 1;
451         while true loop
452           t(ddindx).payoff_purpose := a0(indx);
453           t(ddindx).billed_amount := a1(indx);
454           t(ddindx).unbilled_amount := a2(indx);
455           t(ddindx).total_amount := a3(indx);
456           ddindx := ddindx+1;
457           if a0.last =indx
458             then exit;
459           end if;
460           indx := a0.next(indx);
461         end loop;
462       end if;
463    end if;
464   end rosetta_table_copy_in_p8;
465   procedure rosetta_table_copy_out_p8(t lns_financials.payoff_tbl2, a0 out nocopy JTF_VARCHAR2_TABLE_100
466     , a1 out nocopy JTF_NUMBER_TABLE
467     , a2 out nocopy JTF_NUMBER_TABLE
468     , a3 out nocopy JTF_NUMBER_TABLE
469     ) as
470     ddindx binary_integer; indx binary_integer;
471   begin
472   if t is null or t.count = 0 then
473     a0 := JTF_VARCHAR2_TABLE_100();
474     a1 := JTF_NUMBER_TABLE();
475     a2 := JTF_NUMBER_TABLE();
476     a3 := JTF_NUMBER_TABLE();
477   else
478       a0 := JTF_VARCHAR2_TABLE_100();
479       a1 := JTF_NUMBER_TABLE();
480       a2 := JTF_NUMBER_TABLE();
481       a3 := JTF_NUMBER_TABLE();
482       if t.count > 0 then
483         a0.extend(t.count);
484         a1.extend(t.count);
485         a2.extend(t.count);
486         a3.extend(t.count);
487         ddindx := t.first;
488         indx := 1;
489         while true loop
490           a0(indx) := t(ddindx).payoff_purpose;
491           a1(indx) := t(ddindx).billed_amount;
492           a2(indx) := t(ddindx).unbilled_amount;
493           a3(indx) := t(ddindx).total_amount;
494           indx := indx+1;
495           if t.last =ddindx
496             then exit;
497           end if;
498           ddindx := t.next(ddindx);
499         end loop;
500       end if;
501    end if;
502   end rosetta_table_copy_out_p8;
503 
504   procedure rosetta_table_copy_in_p10(t out nocopy lns_financials.loan_activity_tbl, a0 JTF_DATE_TABLE
505     , a1 JTF_NUMBER_TABLE
506     , a2 JTF_NUMBER_TABLE
507     , a3 JTF_NUMBER_TABLE
508     ) as
509     ddindx binary_integer; indx binary_integer;
510   begin
511   if a0 is not null and a0.count > 0 then
512       if a0.count > 0 then
513         indx := a0.first;
514         ddindx := 1;
515         while true loop
516           t(ddindx).activity_date := a0(indx);
517           t(ddindx).activity_amount := a1(indx);
518           t(ddindx).ending_balance := a2(indx);
519           t(ddindx).days_at_balance := a3(indx);
520           ddindx := ddindx+1;
521           if a0.last =indx
522             then exit;
523           end if;
524           indx := a0.next(indx);
525         end loop;
526       end if;
527    end if;
528   end rosetta_table_copy_in_p10;
529   procedure rosetta_table_copy_out_p10(t lns_financials.loan_activity_tbl, a0 out nocopy JTF_DATE_TABLE
530     , a1 out nocopy JTF_NUMBER_TABLE
531     , a2 out nocopy JTF_NUMBER_TABLE
532     , a3 out nocopy JTF_NUMBER_TABLE
533     ) as
534     ddindx binary_integer; indx binary_integer;
535   begin
536   if t is null or t.count = 0 then
537     a0 := JTF_DATE_TABLE();
538     a1 := JTF_NUMBER_TABLE();
539     a2 := JTF_NUMBER_TABLE();
540     a3 := JTF_NUMBER_TABLE();
541   else
542       a0 := JTF_DATE_TABLE();
543       a1 := JTF_NUMBER_TABLE();
544       a2 := JTF_NUMBER_TABLE();
545       a3 := JTF_NUMBER_TABLE();
546       if t.count > 0 then
547         a0.extend(t.count);
548         a1.extend(t.count);
549         a2.extend(t.count);
550         a3.extend(t.count);
551         ddindx := t.first;
552         indx := 1;
553         while true loop
554           a0(indx) := t(ddindx).activity_date;
555           a1(indx) := t(ddindx).activity_amount;
556           a2(indx) := t(ddindx).ending_balance;
557           a3(indx) := t(ddindx).days_at_balance;
558           indx := indx+1;
559           if t.last =ddindx
560             then exit;
561           end if;
562           ddindx := t.next(ddindx);
563         end loop;
564       end if;
565    end if;
566   end rosetta_table_copy_out_p10;
567 
568   procedure rosetta_table_copy_in_p12(t out nocopy lns_financials.payment_schedule_tbl, a0 JTF_DATE_TABLE
569     , a1 JTF_DATE_TABLE
570     ) as
571     ddindx binary_integer; indx binary_integer;
572   begin
573   if a0 is not null and a0.count > 0 then
574       if a0.count > 0 then
575         indx := a0.first;
576         ddindx := 1;
577         while true loop
578           t(ddindx).period_begin_date := a0(indx);
579           t(ddindx).period_end_date := a1(indx);
580           ddindx := ddindx+1;
581           if a0.last =indx
582             then exit;
583           end if;
584           indx := a0.next(indx);
585         end loop;
586       end if;
587    end if;
588   end rosetta_table_copy_in_p12;
589   procedure rosetta_table_copy_out_p12(t lns_financials.payment_schedule_tbl, a0 out nocopy JTF_DATE_TABLE
590     , a1 out nocopy JTF_DATE_TABLE
591     ) as
592     ddindx binary_integer; indx binary_integer;
593   begin
594   if t is null or t.count = 0 then
595     a0 := JTF_DATE_TABLE();
596     a1 := JTF_DATE_TABLE();
597   else
598       a0 := JTF_DATE_TABLE();
599       a1 := JTF_DATE_TABLE();
600       if t.count > 0 then
601         a0.extend(t.count);
602         a1.extend(t.count);
603         ddindx := t.first;
604         indx := 1;
605         while true loop
606           a0(indx) := t(ddindx).period_begin_date;
607           a1(indx) := t(ddindx).period_end_date;
608           indx := indx+1;
609           if t.last =ddindx
610             then exit;
611           end if;
612           ddindx := t.next(ddindx);
613         end loop;
614       end if;
615    end if;
616   end rosetta_table_copy_out_p12;
617 
618   procedure rosetta_table_copy_in_p13(t out nocopy lns_financials.date_tbl, a0 JTF_DATE_TABLE) as
619     ddindx binary_integer; indx binary_integer;
620   begin
621   if a0 is not null and a0.count > 0 then
622       if a0.count > 0 then
623         indx := a0.first;
624         ddindx := 1;
625         while true loop
626           t(ddindx) := a0(indx);
627           ddindx := ddindx+1;
628           if a0.last =indx
629             then exit;
630           end if;
631           indx := a0.next(indx);
632         end loop;
633       end if;
634    end if;
635   end rosetta_table_copy_in_p13;
636   procedure rosetta_table_copy_out_p13(t lns_financials.date_tbl, a0 out nocopy JTF_DATE_TABLE) as
637     ddindx binary_integer; indx binary_integer;
638   begin
639   if t is null or t.count = 0 then
640     a0 := JTF_DATE_TABLE();
641   else
642       a0 := JTF_DATE_TABLE();
643       if t.count > 0 then
644         a0.extend(t.count);
645         ddindx := t.first;
646         indx := 1;
647         while true loop
648           a0(indx) := t(ddindx);
649           indx := indx+1;
650           if t.last =ddindx
651             then exit;
652           end if;
653           ddindx := t.next(ddindx);
654         end loop;
655       end if;
656    end if;
657   end rosetta_table_copy_out_p13;
658 
659   procedure rosetta_table_copy_in_p14(t out nocopy lns_financials.amount_tbl, a0 JTF_NUMBER_TABLE) as
660     ddindx binary_integer; indx binary_integer;
661   begin
662   if a0 is not null and a0.count > 0 then
663       if a0.count > 0 then
664         indx := a0.first;
665         ddindx := 1;
666         while true loop
667           t(ddindx) := a0(indx);
668           ddindx := ddindx+1;
669           if a0.last =indx
670             then exit;
671           end if;
672           indx := a0.next(indx);
673         end loop;
674       end if;
675    end if;
676   end rosetta_table_copy_in_p14;
677   procedure rosetta_table_copy_out_p14(t lns_financials.amount_tbl, a0 out nocopy JTF_NUMBER_TABLE) as
678     ddindx binary_integer; indx binary_integer;
679   begin
680   if t is null or t.count = 0 then
681     a0 := JTF_NUMBER_TABLE();
682   else
683       a0 := JTF_NUMBER_TABLE();
684       if t.count > 0 then
685         a0.extend(t.count);
686         ddindx := t.first;
687         indx := 1;
688         while true loop
689           a0(indx) := t(ddindx);
690           indx := indx+1;
691           if t.last =ddindx
692             then exit;
693           end if;
694           ddindx := t.next(ddindx);
695         end loop;
696       end if;
697    end if;
698   end rosetta_table_copy_out_p14;
699 
700   procedure rosetta_table_copy_in_p15(t out nocopy lns_financials.vchar_tbl, a0 JTF_VARCHAR2_TABLE_100) as
701     ddindx binary_integer; indx binary_integer;
702   begin
703   if a0 is not null and a0.count > 0 then
704       if a0.count > 0 then
705         indx := a0.first;
706         ddindx := 1;
707         while true loop
708           t(ddindx) := a0(indx);
709           ddindx := ddindx+1;
710           if a0.last =indx
711             then exit;
712           end if;
713           indx := a0.next(indx);
714         end loop;
715       end if;
716    end if;
717   end rosetta_table_copy_in_p15;
718   procedure rosetta_table_copy_out_p15(t lns_financials.vchar_tbl, a0 out nocopy JTF_VARCHAR2_TABLE_100) as
719     ddindx binary_integer; indx binary_integer;
720   begin
721   if t is null or t.count = 0 then
722     a0 := JTF_VARCHAR2_TABLE_100();
723   else
724       a0 := JTF_VARCHAR2_TABLE_100();
725       if t.count > 0 then
726         a0.extend(t.count);
727         ddindx := t.first;
728         indx := 1;
729         while true loop
730           a0(indx) := t(ddindx);
731           indx := indx+1;
732           if t.last =ddindx
733             then exit;
734           end if;
735           ddindx := t.next(ddindx);
736         end loop;
737       end if;
738    end if;
739   end rosetta_table_copy_out_p15;
740 
741   procedure rosetta_table_copy_in_p17(t out nocopy lns_financials.fees_tbl, a0 JTF_NUMBER_TABLE
742     , a1 JTF_VARCHAR2_TABLE_100
743     , a2 JTF_NUMBER_TABLE
744     , a3 JTF_NUMBER_TABLE
745     , a4 JTF_VARCHAR2_TABLE_300
746     , a5 JTF_NUMBER_TABLE
747     , a6 JTF_VARCHAR2_TABLE_100
748     , a7 JTF_NUMBER_TABLE
749     , a8 JTF_VARCHAR2_TABLE_100
750     , a9 JTF_VARCHAR2_TABLE_100
751     ) as
752     ddindx binary_integer; indx binary_integer;
753   begin
754   if a0 is not null and a0.count > 0 then
755       if a0.count > 0 then
756         indx := a0.first;
757         ddindx := 1;
758         while true loop
759           t(ddindx).fee_id := a0(indx);
760           t(ddindx).fee_name := a1(indx);
761           t(ddindx).fee_amount := a2(indx);
762           t(ddindx).fee_installment := a3(indx);
763           t(ddindx).fee_description := a4(indx);
764           t(ddindx).fee_schedule_id := a5(indx);
765           t(ddindx).fee_waivable_flag := a6(indx);
766           t(ddindx).waive_amount := a7(indx);
767           t(ddindx).billed_flag := a8(indx);
768           t(ddindx).active_flag := a9(indx);
769           ddindx := ddindx+1;
770           if a0.last =indx
771             then exit;
772           end if;
773           indx := a0.next(indx);
774         end loop;
775       end if;
776    end if;
777   end rosetta_table_copy_in_p17;
778   procedure rosetta_table_copy_out_p17(t lns_financials.fees_tbl, a0 out nocopy JTF_NUMBER_TABLE
779     , a1 out nocopy JTF_VARCHAR2_TABLE_100
780     , a2 out nocopy JTF_NUMBER_TABLE
781     , a3 out nocopy JTF_NUMBER_TABLE
782     , a4 out nocopy JTF_VARCHAR2_TABLE_300
783     , a5 out nocopy JTF_NUMBER_TABLE
784     , a6 out nocopy JTF_VARCHAR2_TABLE_100
785     , a7 out nocopy JTF_NUMBER_TABLE
786     , a8 out nocopy JTF_VARCHAR2_TABLE_100
787     , a9 out nocopy JTF_VARCHAR2_TABLE_100
788     ) as
789     ddindx binary_integer; indx binary_integer;
790   begin
791   if t is null or t.count = 0 then
792     a0 := JTF_NUMBER_TABLE();
793     a1 := JTF_VARCHAR2_TABLE_100();
794     a2 := JTF_NUMBER_TABLE();
795     a3 := JTF_NUMBER_TABLE();
796     a4 := JTF_VARCHAR2_TABLE_300();
797     a5 := JTF_NUMBER_TABLE();
798     a6 := JTF_VARCHAR2_TABLE_100();
799     a7 := JTF_NUMBER_TABLE();
800     a8 := JTF_VARCHAR2_TABLE_100();
801     a9 := JTF_VARCHAR2_TABLE_100();
802   else
803       a0 := JTF_NUMBER_TABLE();
804       a1 := JTF_VARCHAR2_TABLE_100();
805       a2 := JTF_NUMBER_TABLE();
806       a3 := JTF_NUMBER_TABLE();
807       a4 := JTF_VARCHAR2_TABLE_300();
808       a5 := JTF_NUMBER_TABLE();
809       a6 := JTF_VARCHAR2_TABLE_100();
810       a7 := JTF_NUMBER_TABLE();
811       a8 := JTF_VARCHAR2_TABLE_100();
812       a9 := JTF_VARCHAR2_TABLE_100();
813       if t.count > 0 then
814         a0.extend(t.count);
815         a1.extend(t.count);
816         a2.extend(t.count);
817         a3.extend(t.count);
818         a4.extend(t.count);
819         a5.extend(t.count);
820         a6.extend(t.count);
821         a7.extend(t.count);
822         a8.extend(t.count);
823         a9.extend(t.count);
824         ddindx := t.first;
825         indx := 1;
826         while true loop
827           a0(indx) := t(ddindx).fee_id;
828           a1(indx) := t(ddindx).fee_name;
829           a2(indx) := t(ddindx).fee_amount;
830           a3(indx) := t(ddindx).fee_installment;
831           a4(indx) := t(ddindx).fee_description;
832           a5(indx) := t(ddindx).fee_schedule_id;
833           a6(indx) := t(ddindx).fee_waivable_flag;
834           a7(indx) := t(ddindx).waive_amount;
835           a8(indx) := t(ddindx).billed_flag;
836           a9(indx) := t(ddindx).active_flag;
837           indx := indx+1;
838           if t.last =ddindx
839             then exit;
840           end if;
841           ddindx := t.next(ddindx);
842         end loop;
843       end if;
844    end if;
845   end rosetta_table_copy_out_p17;
846 
847   procedure shiftloandates(p_loan_id  NUMBER
848     , p_new_start_date  DATE
849     , p_phase  VARCHAR2
850     , p3_a0 out nocopy  NUMBER
851     , p3_a1 out nocopy  NUMBER
852     , p3_a2 out nocopy  VARCHAR2
853     , p3_a3 out nocopy  NUMBER
854     , p3_a4 out nocopy  VARCHAR2
855     , p3_a5 out nocopy  VARCHAR2
856     , p3_a6 out nocopy  VARCHAR2
857     , p3_a7 out nocopy  DATE
858     , p3_a8 out nocopy  DATE
859     , p3_a9 out nocopy  NUMBER
860     , p3_a10 out nocopy  NUMBER
861     , p3_a11 out nocopy  NUMBER
862     , p3_a12 out nocopy  NUMBER
863     , p3_a13 out nocopy  NUMBER
864     , p3_a14 out nocopy  NUMBER
865     , p3_a15 out nocopy  NUMBER
866     , p3_a16 out nocopy  NUMBER
867     , p3_a17 out nocopy  NUMBER
868     , p3_a18 out nocopy  DATE
869     , p3_a19 out nocopy  NUMBER
870     , p3_a20 out nocopy  NUMBER
871     , p3_a21 out nocopy  VARCHAR2
872     , p3_a22 out nocopy  VARCHAR2
873     , p3_a23 out nocopy  VARCHAR2
874     , p3_a24 out nocopy  NUMBER
875     , p3_a25 out nocopy  NUMBER
876     , p3_a26 out nocopy  NUMBER
877     , p3_a27 out nocopy  NUMBER
878     , p3_a28 out nocopy  VARCHAR2
879     , p3_a29 out nocopy  VARCHAR2
880     , p3_a30 out nocopy  NUMBER
881     , p3_a31 out nocopy  VARCHAR2
882     , p3_a32 out nocopy  VARCHAR2
883     , p3_a33 out nocopy  DATE
884     , p3_a34 out nocopy  VARCHAR2
885     , p3_a35 out nocopy  DATE
886     , p3_a36 out nocopy  VARCHAR2
887     , p3_a37 out nocopy  NUMBER
888     , p3_a38 out nocopy  NUMBER
889     , p3_a39 out nocopy  VARCHAR2
890     , p3_a40 out nocopy  VARCHAR2
891     , p3_a41 out nocopy  DATE
892     , p3_a42 out nocopy  DATE
893     , p3_a43 out nocopy  DATE
894     , p3_a44 out nocopy  VARCHAR2
895     , p3_a45 out nocopy  VARCHAR2
896     , p3_a46 out nocopy  NUMBER
897     , p3_a47 out nocopy  NUMBER
898     , p3_a48 out nocopy  VARCHAR2
899     , p3_a49 out nocopy  VARCHAR2
900     , p3_a50 out nocopy  NUMBER
901     , p3_a51 out nocopy  DATE
902     , p3_a52 out nocopy  NUMBER
903     , p3_a53 out nocopy  NUMBER
904     , p3_a54 out nocopy  NUMBER
905     , p3_a55 out nocopy  NUMBER
906     , p3_a56 out nocopy  NUMBER
907     , p3_a57 out nocopy  VARCHAR2
908     , p3_a58 out nocopy  NUMBER
909     , p3_a59 out nocopy  DATE
910     , p3_a60 out nocopy  NUMBER
911     , p3_a61 out nocopy  NUMBER
912     , p3_a62 out nocopy  NUMBER
913     , p3_a63 out nocopy  NUMBER
914     , p3_a64 out nocopy  NUMBER
915     , p3_a65 out nocopy  VARCHAR2
916     , p3_a66 out nocopy  VARCHAR2
917     , p3_a67 out nocopy  VARCHAR2
918     , p3_a68 out nocopy  VARCHAR2
919     , p3_a69 out nocopy  NUMBER
920     , p3_a70 out nocopy  NUMBER
921     , p3_a71 out nocopy  NUMBER
922     , p3_a72 out nocopy  NUMBER
923     , p3_a73 out nocopy  DATE
924     , p3_a74 out nocopy  DATE
925     , p3_a75 out nocopy  VARCHAR2
926     , p3_a76 out nocopy  VARCHAR2
927     , p3_a77 out nocopy  VARCHAR2
928     , p3_a78 out nocopy  VARCHAR2
929     , p3_a79 out nocopy  DATE
930     , p3_a80 out nocopy  VARCHAR2
931     , p3_a81 out nocopy  NUMBER
932     , p3_a82 out nocopy  NUMBER
933     , p3_a83 out nocopy  VARCHAR2
934     , p3_a84 out nocopy  NUMBER
935     , p3_a85 out nocopy  NUMBER
936     , p3_a86 out nocopy  NUMBER
937     , p3_a87 out nocopy  NUMBER
938     , p3_a88 out nocopy  NUMBER
939     , x_dates_shifted_flag out nocopy  VARCHAR2
940     , x_return_status out nocopy  VARCHAR2
941     , x_msg_count out nocopy  NUMBER
942     , x_msg_data out nocopy  VARCHAR2
943   )
944 
945   as
946     ddx_loan_details lns_financials.loan_details_rec;
947     ddindx binary_integer; indx binary_integer;
948   begin
949 
950     -- copy data to the local IN or IN-OUT args, if any
951 
952 
953 
954 
955 
956 
957 
958 
959     -- here's the delegated call to the old PL/SQL routine
960     lns_financials.shiftloandates(p_loan_id,
961       p_new_start_date,
962       p_phase,
963       ddx_loan_details,
964       x_dates_shifted_flag,
965       x_return_status,
966       x_msg_count,
967       x_msg_data);
968 
969     -- copy data back from the local variables to OUT or IN-OUT args, if any
970 
971 
972 
973     p3_a0 := ddx_loan_details.loan_id;
974     p3_a1 := ddx_loan_details.loan_term;
975     p3_a2 := ddx_loan_details.loan_term_period;
976     p3_a3 := ddx_loan_details.amortized_term;
977     p3_a4 := ddx_loan_details.amortized_term_period;
978     p3_a5 := ddx_loan_details.amortization_frequency;
979     p3_a6 := ddx_loan_details.payment_frequency;
980     p3_a7 := ddx_loan_details.first_payment_date;
981     p3_a8 := ddx_loan_details.loan_start_date;
982     p3_a9 := ddx_loan_details.requested_amount;
983     p3_a10 := ddx_loan_details.funded_amount;
984     p3_a11 := ddx_loan_details.remaining_balance;
985     p3_a12 := ddx_loan_details.principal_paid_to_date;
986     p3_a13 := ddx_loan_details.interest_paid_to_date;
987     p3_a14 := ddx_loan_details.fees_paid_to_date;
988     p3_a15 := ddx_loan_details.unpaid_principal;
989     p3_a16 := ddx_loan_details.unpaid_interest;
990     p3_a17 := ddx_loan_details.unbilled_principal;
991     p3_a18 := ddx_loan_details.maturity_date;
992     p3_a19 := ddx_loan_details.number_installments;
993     p3_a20 := ddx_loan_details.num_amortization_intervals;
994     p3_a21 := ddx_loan_details.reamortize_overpay;
995     p3_a22 := ddx_loan_details.reamortize_underpay;
996     p3_a23 := ddx_loan_details.reamortize_with_interest;
997     p3_a24 := ddx_loan_details.reamortize_amount;
998     p3_a25 := ddx_loan_details.reamortize_from_installment;
999     p3_a26 := ddx_loan_details.reamortize_to_installment;
1000     p3_a27 := ddx_loan_details.last_installment_billed;
1001     p3_a28 := ddx_loan_details.day_count_method;
1002     p3_a29 := ddx_loan_details.pay_in_arrears;
1003     if ddx_loan_details.pay_in_arrears_boolean is null
1004       then p3_a30 := null;
1005     elsif ddx_loan_details.pay_in_arrears_boolean
1006       then p3_a30 := 1;
1007     else p3_a30 := 0;
1008     end if;
1009     p3_a31 := ddx_loan_details.custom_schedule;
1010     p3_a32 := ddx_loan_details.loan_status;
1011     p3_a33 := ddx_loan_details.last_interest_accrual;
1012     p3_a34 := ddx_loan_details.last_activity;
1013     p3_a35 := ddx_loan_details.last_activity_date;
1014     p3_a36 := ddx_loan_details.loan_currency;
1015     p3_a37 := ddx_loan_details.currency_precision;
1016     p3_a38 := ddx_loan_details.open_term;
1017     p3_a39 := ddx_loan_details.open_term_period;
1018     p3_a40 := ddx_loan_details.open_payment_frequency;
1019     p3_a41 := ddx_loan_details.open_first_payment_date;
1020     p3_a42 := ddx_loan_details.open_start_date;
1021     p3_a43 := ddx_loan_details.open_maturity_date;
1022     p3_a44 := ddx_loan_details.loan_phase;
1023     p3_a45 := ddx_loan_details.balloon_payment_type;
1024     p3_a46 := ddx_loan_details.balloon_payment_amount;
1025     p3_a47 := ddx_loan_details.amortized_amount;
1026     p3_a48 := ddx_loan_details.rate_type;
1027     p3_a49 := ddx_loan_details.open_rate_chg_freq;
1028     p3_a50 := ddx_loan_details.open_index_rate_id;
1029     p3_a51 := ddx_loan_details.open_index_date;
1030     p3_a52 := ddx_loan_details.open_ceiling_rate;
1031     p3_a53 := ddx_loan_details.open_floor_rate;
1032     p3_a54 := ddx_loan_details.open_first_percent_increase;
1033     p3_a55 := ddx_loan_details.open_adj_percent_increase;
1034     p3_a56 := ddx_loan_details.open_life_percent_increase;
1035     p3_a57 := ddx_loan_details.term_rate_chg_freq;
1036     p3_a58 := ddx_loan_details.term_index_rate_id;
1037     p3_a59 := ddx_loan_details.term_index_date;
1038     p3_a60 := ddx_loan_details.term_ceiling_rate;
1039     p3_a61 := ddx_loan_details.term_floor_rate;
1040     p3_a62 := ddx_loan_details.term_first_percent_increase;
1041     p3_a63 := ddx_loan_details.term_adj_percent_increase;
1042     p3_a64 := ddx_loan_details.term_life_percent_increase;
1043     p3_a65 := ddx_loan_details.open_to_term_flag;
1044     p3_a66 := ddx_loan_details.open_to_term_event;
1045     p3_a67 := ddx_loan_details.multiple_funding_flag;
1046     p3_a68 := ddx_loan_details.secondary_status;
1047     p3_a69 := ddx_loan_details.open_projected_interest_rate;
1048     p3_a70 := ddx_loan_details.term_projected_interest_rate;
1049     p3_a71 := ddx_loan_details.initial_interest_rate;
1050     p3_a72 := ddx_loan_details.last_interest_rate;
1051     p3_a73 := ddx_loan_details.first_rate_change_date;
1052     p3_a74 := ddx_loan_details.next_rate_change_date;
1053     p3_a75 := ddx_loan_details.calculation_method;
1054     p3_a76 := ddx_loan_details.interest_compounding_freq;
1055     p3_a77 := ddx_loan_details.payment_calc_method;
1056     p3_a78 := ddx_loan_details.orig_pay_calc_method;
1057     p3_a79 := ddx_loan_details.prin_first_pay_date;
1058     p3_a80 := ddx_loan_details.prin_payment_frequency;
1059     p3_a81 := ddx_loan_details.prin_number_installments;
1060     p3_a82 := ddx_loan_details.prin_amort_installments;
1061     p3_a83 := ddx_loan_details.prin_pay_in_arrears;
1062     if ddx_loan_details.prin_pay_in_arrears_bool is null
1063       then p3_a84 := null;
1064     elsif ddx_loan_details.prin_pay_in_arrears_bool
1065       then p3_a84 := 1;
1066     else p3_a84 := 0;
1067     end if;
1068     p3_a85 := ddx_loan_details.extend_from_installment;
1069     p3_a86 := ddx_loan_details.orig_number_installments;
1070     p3_a87 := ddx_loan_details.penal_int_rate;
1071     p3_a88 := ddx_loan_details.penal_int_grace_days;
1072 
1073 
1074 
1075 
1076   end;
1077 
1078   procedure validatepayoff(p0_a0  NUMBER
1079     , p0_a1  NUMBER
1080     , p0_a2  VARCHAR2
1081     , p0_a3  NUMBER
1082     , p0_a4  VARCHAR2
1083     , p0_a5  VARCHAR2
1084     , p0_a6  VARCHAR2
1085     , p0_a7  DATE
1086     , p0_a8  DATE
1087     , p0_a9  NUMBER
1088     , p0_a10  NUMBER
1089     , p0_a11  NUMBER
1090     , p0_a12  NUMBER
1091     , p0_a13  NUMBER
1092     , p0_a14  NUMBER
1093     , p0_a15  NUMBER
1094     , p0_a16  NUMBER
1095     , p0_a17  NUMBER
1096     , p0_a18  DATE
1097     , p0_a19  NUMBER
1098     , p0_a20  NUMBER
1099     , p0_a21  VARCHAR2
1100     , p0_a22  VARCHAR2
1101     , p0_a23  VARCHAR2
1102     , p0_a24  NUMBER
1103     , p0_a25  NUMBER
1104     , p0_a26  NUMBER
1105     , p0_a27  NUMBER
1106     , p0_a28  VARCHAR2
1107     , p0_a29  VARCHAR2
1108     , p0_a30  NUMBER
1109     , p0_a31  VARCHAR2
1110     , p0_a32  VARCHAR2
1111     , p0_a33  DATE
1112     , p0_a34  VARCHAR2
1113     , p0_a35  DATE
1114     , p0_a36  VARCHAR2
1115     , p0_a37  NUMBER
1116     , p0_a38  NUMBER
1117     , p0_a39  VARCHAR2
1118     , p0_a40  VARCHAR2
1119     , p0_a41  DATE
1120     , p0_a42  DATE
1121     , p0_a43  DATE
1122     , p0_a44  VARCHAR2
1123     , p0_a45  VARCHAR2
1124     , p0_a46  NUMBER
1125     , p0_a47  NUMBER
1126     , p0_a48  VARCHAR2
1127     , p0_a49  VARCHAR2
1128     , p0_a50  NUMBER
1129     , p0_a51  DATE
1130     , p0_a52  NUMBER
1131     , p0_a53  NUMBER
1132     , p0_a54  NUMBER
1133     , p0_a55  NUMBER
1134     , p0_a56  NUMBER
1135     , p0_a57  VARCHAR2
1136     , p0_a58  NUMBER
1137     , p0_a59  DATE
1138     , p0_a60  NUMBER
1139     , p0_a61  NUMBER
1140     , p0_a62  NUMBER
1141     , p0_a63  NUMBER
1142     , p0_a64  NUMBER
1143     , p0_a65  VARCHAR2
1144     , p0_a66  VARCHAR2
1145     , p0_a67  VARCHAR2
1146     , p0_a68  VARCHAR2
1147     , p0_a69  NUMBER
1148     , p0_a70  NUMBER
1149     , p0_a71  NUMBER
1150     , p0_a72  NUMBER
1151     , p0_a73  DATE
1152     , p0_a74  DATE
1153     , p0_a75  VARCHAR2
1154     , p0_a76  VARCHAR2
1155     , p0_a77  VARCHAR2
1156     , p0_a78  VARCHAR2
1157     , p0_a79  DATE
1158     , p0_a80  VARCHAR2
1159     , p0_a81  NUMBER
1160     , p0_a82  NUMBER
1161     , p0_a83  VARCHAR2
1162     , p0_a84  NUMBER
1163     , p0_a85  NUMBER
1164     , p0_a86  NUMBER
1165     , p0_a87  NUMBER
1166     , p0_a88  NUMBER
1167     , p_payoff_date  DATE
1168     , x_return_status out nocopy  VARCHAR2
1169     , x_msg_count out nocopy  NUMBER
1170     , x_msg_data out nocopy  VARCHAR2
1171   )
1172 
1173   as
1174     ddp_loan_details lns_financials.loan_details_rec;
1175     ddindx binary_integer; indx binary_integer;
1176   begin
1177 
1178     -- copy data to the local IN or IN-OUT args, if any
1179     ddp_loan_details.loan_id := p0_a0;
1180     ddp_loan_details.loan_term := p0_a1;
1181     ddp_loan_details.loan_term_period := p0_a2;
1182     ddp_loan_details.amortized_term := p0_a3;
1183     ddp_loan_details.amortized_term_period := p0_a4;
1184     ddp_loan_details.amortization_frequency := p0_a5;
1185     ddp_loan_details.payment_frequency := p0_a6;
1186     ddp_loan_details.first_payment_date := p0_a7;
1187     ddp_loan_details.loan_start_date := p0_a8;
1188     ddp_loan_details.requested_amount := p0_a9;
1189     ddp_loan_details.funded_amount := p0_a10;
1190     ddp_loan_details.remaining_balance := p0_a11;
1191     ddp_loan_details.principal_paid_to_date := p0_a12;
1192     ddp_loan_details.interest_paid_to_date := p0_a13;
1193     ddp_loan_details.fees_paid_to_date := p0_a14;
1194     ddp_loan_details.unpaid_principal := p0_a15;
1195     ddp_loan_details.unpaid_interest := p0_a16;
1196     ddp_loan_details.unbilled_principal := p0_a17;
1197     ddp_loan_details.maturity_date := p0_a18;
1198     ddp_loan_details.number_installments := p0_a19;
1199     ddp_loan_details.num_amortization_intervals := p0_a20;
1200     ddp_loan_details.reamortize_overpay := p0_a21;
1201     ddp_loan_details.reamortize_underpay := p0_a22;
1202     ddp_loan_details.reamortize_with_interest := p0_a23;
1203     ddp_loan_details.reamortize_amount := p0_a24;
1204     ddp_loan_details.reamortize_from_installment := p0_a25;
1205     ddp_loan_details.reamortize_to_installment := p0_a26;
1206     ddp_loan_details.last_installment_billed := p0_a27;
1207     ddp_loan_details.day_count_method := p0_a28;
1208     ddp_loan_details.pay_in_arrears := p0_a29;
1209     if p0_a30 is null
1210       then ddp_loan_details.pay_in_arrears_boolean := null;
1211     elsif p0_a30 = 0
1212       then ddp_loan_details.pay_in_arrears_boolean := false;
1213     else ddp_loan_details.pay_in_arrears_boolean := true;
1214     end if;
1215     ddp_loan_details.custom_schedule := p0_a31;
1216     ddp_loan_details.loan_status := p0_a32;
1217     ddp_loan_details.last_interest_accrual := p0_a33;
1218     ddp_loan_details.last_activity := p0_a34;
1219     ddp_loan_details.last_activity_date := p0_a35;
1220     ddp_loan_details.loan_currency := p0_a36;
1221     ddp_loan_details.currency_precision := p0_a37;
1222     ddp_loan_details.open_term := p0_a38;
1223     ddp_loan_details.open_term_period := p0_a39;
1224     ddp_loan_details.open_payment_frequency := p0_a40;
1225     ddp_loan_details.open_first_payment_date := p0_a41;
1226     ddp_loan_details.open_start_date := p0_a42;
1227     ddp_loan_details.open_maturity_date := p0_a43;
1228     ddp_loan_details.loan_phase := p0_a44;
1229     ddp_loan_details.balloon_payment_type := p0_a45;
1230     ddp_loan_details.balloon_payment_amount := p0_a46;
1231     ddp_loan_details.amortized_amount := p0_a47;
1232     ddp_loan_details.rate_type := p0_a48;
1233     ddp_loan_details.open_rate_chg_freq := p0_a49;
1234     ddp_loan_details.open_index_rate_id := p0_a50;
1235     ddp_loan_details.open_index_date := p0_a51;
1236     ddp_loan_details.open_ceiling_rate := p0_a52;
1237     ddp_loan_details.open_floor_rate := p0_a53;
1238     ddp_loan_details.open_first_percent_increase := p0_a54;
1239     ddp_loan_details.open_adj_percent_increase := p0_a55;
1240     ddp_loan_details.open_life_percent_increase := p0_a56;
1241     ddp_loan_details.term_rate_chg_freq := p0_a57;
1242     ddp_loan_details.term_index_rate_id := p0_a58;
1243     ddp_loan_details.term_index_date := p0_a59;
1244     ddp_loan_details.term_ceiling_rate := p0_a60;
1245     ddp_loan_details.term_floor_rate := p0_a61;
1246     ddp_loan_details.term_first_percent_increase := p0_a62;
1247     ddp_loan_details.term_adj_percent_increase := p0_a63;
1248     ddp_loan_details.term_life_percent_increase := p0_a64;
1249     ddp_loan_details.open_to_term_flag := p0_a65;
1250     ddp_loan_details.open_to_term_event := p0_a66;
1251     ddp_loan_details.multiple_funding_flag := p0_a67;
1252     ddp_loan_details.secondary_status := p0_a68;
1253     ddp_loan_details.open_projected_interest_rate := p0_a69;
1254     ddp_loan_details.term_projected_interest_rate := p0_a70;
1255     ddp_loan_details.initial_interest_rate := p0_a71;
1256     ddp_loan_details.last_interest_rate := p0_a72;
1257     ddp_loan_details.first_rate_change_date := p0_a73;
1258     ddp_loan_details.next_rate_change_date := p0_a74;
1259     ddp_loan_details.calculation_method := p0_a75;
1260     ddp_loan_details.interest_compounding_freq := p0_a76;
1261     ddp_loan_details.payment_calc_method := p0_a77;
1262     ddp_loan_details.orig_pay_calc_method := p0_a78;
1263     ddp_loan_details.prin_first_pay_date := p0_a79;
1264     ddp_loan_details.prin_payment_frequency := p0_a80;
1265     ddp_loan_details.prin_number_installments := p0_a81;
1266     ddp_loan_details.prin_amort_installments := p0_a82;
1267     ddp_loan_details.prin_pay_in_arrears := p0_a83;
1268     if p0_a84 is null
1269       then ddp_loan_details.prin_pay_in_arrears_bool := null;
1270     elsif p0_a84 = 0
1271       then ddp_loan_details.prin_pay_in_arrears_bool := false;
1272     else ddp_loan_details.prin_pay_in_arrears_bool := true;
1273     end if;
1274     ddp_loan_details.extend_from_installment := p0_a85;
1275     ddp_loan_details.orig_number_installments := p0_a86;
1276     ddp_loan_details.penal_int_rate := p0_a87;
1277     ddp_loan_details.penal_int_grace_days := p0_a88;
1278 
1279 
1280 
1281 
1282 
1283     -- here's the delegated call to the old PL/SQL routine
1284     lns_financials.validatepayoff(ddp_loan_details,
1285       p_payoff_date,
1286       x_return_status,
1287       x_msg_count,
1288       x_msg_data);
1289 
1290     -- copy data back from the local variables to OUT or IN-OUT args, if any
1291 
1292 
1293 
1294 
1295   end;
1296 
1297   procedure calculatepayoff(p_api_version  NUMBER
1298     , p_init_msg_list  VARCHAR2
1299     , p_loan_id  NUMBER
1300     , p_payoff_date  DATE
1301     , p4_a0 out nocopy JTF_VARCHAR2_TABLE_100
1302     , p4_a1 out nocopy JTF_NUMBER_TABLE
1303     , p4_a2 out nocopy JTF_NUMBER_TABLE
1304     , p4_a3 out nocopy JTF_NUMBER_TABLE
1305     , x_return_status out nocopy  VARCHAR2
1306     , x_msg_count out nocopy  NUMBER
1307     , x_msg_data out nocopy  VARCHAR2
1308   )
1309 
1310   as
1311     ddx_payoff_tbl lns_financials.payoff_tbl2;
1312     ddindx binary_integer; indx binary_integer;
1313   begin
1314 
1315     -- copy data to the local IN or IN-OUT args, if any
1316 
1317 
1318 
1319 
1320 
1321 
1322 
1323 
1324     -- here's the delegated call to the old PL/SQL routine
1325     lns_financials.calculatepayoff(p_api_version,
1326       p_init_msg_list,
1327       p_loan_id,
1328       p_payoff_date,
1329       ddx_payoff_tbl,
1330       x_return_status,
1331       x_msg_count,
1332       x_msg_data);
1333 
1334     -- copy data back from the local variables to OUT or IN-OUT args, if any
1335 
1336 
1337 
1338 
1339     lns_financials_w.rosetta_table_copy_out_p8(ddx_payoff_tbl, p4_a0
1340       , p4_a1
1341       , p4_a2
1342       , p4_a3
1343       );
1344 
1345 
1346 
1347   end;
1348 
1349   function getweightedrate(p0_a0  NUMBER
1350     , p0_a1  NUMBER
1351     , p0_a2  VARCHAR2
1352     , p0_a3  NUMBER
1353     , p0_a4  VARCHAR2
1354     , p0_a5  VARCHAR2
1355     , p0_a6  VARCHAR2
1356     , p0_a7  DATE
1357     , p0_a8  DATE
1358     , p0_a9  NUMBER
1359     , p0_a10  NUMBER
1360     , p0_a11  NUMBER
1361     , p0_a12  NUMBER
1362     , p0_a13  NUMBER
1363     , p0_a14  NUMBER
1364     , p0_a15  NUMBER
1365     , p0_a16  NUMBER
1366     , p0_a17  NUMBER
1367     , p0_a18  DATE
1368     , p0_a19  NUMBER
1369     , p0_a20  NUMBER
1370     , p0_a21  VARCHAR2
1371     , p0_a22  VARCHAR2
1372     , p0_a23  VARCHAR2
1373     , p0_a24  NUMBER
1374     , p0_a25  NUMBER
1375     , p0_a26  NUMBER
1376     , p0_a27  NUMBER
1377     , p0_a28  VARCHAR2
1378     , p0_a29  VARCHAR2
1379     , p0_a30  NUMBER
1380     , p0_a31  VARCHAR2
1381     , p0_a32  VARCHAR2
1382     , p0_a33  DATE
1383     , p0_a34  VARCHAR2
1384     , p0_a35  DATE
1385     , p0_a36  VARCHAR2
1386     , p0_a37  NUMBER
1387     , p0_a38  NUMBER
1388     , p0_a39  VARCHAR2
1389     , p0_a40  VARCHAR2
1390     , p0_a41  DATE
1391     , p0_a42  DATE
1392     , p0_a43  DATE
1393     , p0_a44  VARCHAR2
1394     , p0_a45  VARCHAR2
1395     , p0_a46  NUMBER
1396     , p0_a47  NUMBER
1397     , p0_a48  VARCHAR2
1398     , p0_a49  VARCHAR2
1399     , p0_a50  NUMBER
1400     , p0_a51  DATE
1401     , p0_a52  NUMBER
1402     , p0_a53  NUMBER
1403     , p0_a54  NUMBER
1404     , p0_a55  NUMBER
1405     , p0_a56  NUMBER
1406     , p0_a57  VARCHAR2
1407     , p0_a58  NUMBER
1408     , p0_a59  DATE
1409     , p0_a60  NUMBER
1410     , p0_a61  NUMBER
1411     , p0_a62  NUMBER
1412     , p0_a63  NUMBER
1413     , p0_a64  NUMBER
1414     , p0_a65  VARCHAR2
1415     , p0_a66  VARCHAR2
1416     , p0_a67  VARCHAR2
1417     , p0_a68  VARCHAR2
1418     , p0_a69  NUMBER
1419     , p0_a70  NUMBER
1420     , p0_a71  NUMBER
1421     , p0_a72  NUMBER
1422     , p0_a73  DATE
1423     , p0_a74  DATE
1424     , p0_a75  VARCHAR2
1425     , p0_a76  VARCHAR2
1426     , p0_a77  VARCHAR2
1427     , p0_a78  VARCHAR2
1428     , p0_a79  DATE
1429     , p0_a80  VARCHAR2
1430     , p0_a81  NUMBER
1431     , p0_a82  NUMBER
1432     , p0_a83  VARCHAR2
1433     , p0_a84  NUMBER
1434     , p0_a85  NUMBER
1435     , p0_a86  NUMBER
1436     , p0_a87  NUMBER
1437     , p0_a88  NUMBER
1438     , p_start_date  DATE
1439     , p_end_date  DATE
1440     , p3_a0 JTF_NUMBER_TABLE
1441     , p3_a1 JTF_DATE_TABLE
1442     , p3_a2 JTF_DATE_TABLE
1443     , p3_a3 JTF_NUMBER_TABLE
1444     , p3_a4 JTF_NUMBER_TABLE
1445     , p3_a5 JTF_NUMBER_TABLE
1446     , p3_a6 JTF_NUMBER_TABLE
1447     , p3_a7 JTF_VARCHAR2_TABLE_100
1448     , p3_a8 JTF_VARCHAR2_TABLE_100
1449     , p3_a9 JTF_VARCHAR2_TABLE_100
1450   ) return number
1451 
1452   as
1453     ddp_loan_details lns_financials.loan_details_rec;
1454     ddp_rate_tbl lns_financials.rate_schedule_tbl;
1455     ddindx binary_integer; indx binary_integer;
1456     ddrosetta_retval number;
1457   begin
1458 
1459     -- copy data to the local IN or IN-OUT args, if any
1460     ddp_loan_details.loan_id := p0_a0;
1461     ddp_loan_details.loan_term := p0_a1;
1462     ddp_loan_details.loan_term_period := p0_a2;
1463     ddp_loan_details.amortized_term := p0_a3;
1464     ddp_loan_details.amortized_term_period := p0_a4;
1465     ddp_loan_details.amortization_frequency := p0_a5;
1466     ddp_loan_details.payment_frequency := p0_a6;
1467     ddp_loan_details.first_payment_date := p0_a7;
1468     ddp_loan_details.loan_start_date := p0_a8;
1469     ddp_loan_details.requested_amount := p0_a9;
1470     ddp_loan_details.funded_amount := p0_a10;
1471     ddp_loan_details.remaining_balance := p0_a11;
1472     ddp_loan_details.principal_paid_to_date := p0_a12;
1473     ddp_loan_details.interest_paid_to_date := p0_a13;
1474     ddp_loan_details.fees_paid_to_date := p0_a14;
1475     ddp_loan_details.unpaid_principal := p0_a15;
1476     ddp_loan_details.unpaid_interest := p0_a16;
1477     ddp_loan_details.unbilled_principal := p0_a17;
1478     ddp_loan_details.maturity_date := p0_a18;
1479     ddp_loan_details.number_installments := p0_a19;
1480     ddp_loan_details.num_amortization_intervals := p0_a20;
1481     ddp_loan_details.reamortize_overpay := p0_a21;
1482     ddp_loan_details.reamortize_underpay := p0_a22;
1483     ddp_loan_details.reamortize_with_interest := p0_a23;
1484     ddp_loan_details.reamortize_amount := p0_a24;
1485     ddp_loan_details.reamortize_from_installment := p0_a25;
1486     ddp_loan_details.reamortize_to_installment := p0_a26;
1487     ddp_loan_details.last_installment_billed := p0_a27;
1488     ddp_loan_details.day_count_method := p0_a28;
1489     ddp_loan_details.pay_in_arrears := p0_a29;
1490     if p0_a30 is null
1491       then ddp_loan_details.pay_in_arrears_boolean := null;
1492     elsif p0_a30 = 0
1493       then ddp_loan_details.pay_in_arrears_boolean := false;
1494     else ddp_loan_details.pay_in_arrears_boolean := true;
1495     end if;
1496     ddp_loan_details.custom_schedule := p0_a31;
1497     ddp_loan_details.loan_status := p0_a32;
1498     ddp_loan_details.last_interest_accrual := p0_a33;
1499     ddp_loan_details.last_activity := p0_a34;
1500     ddp_loan_details.last_activity_date := p0_a35;
1501     ddp_loan_details.loan_currency := p0_a36;
1502     ddp_loan_details.currency_precision := p0_a37;
1503     ddp_loan_details.open_term := p0_a38;
1504     ddp_loan_details.open_term_period := p0_a39;
1505     ddp_loan_details.open_payment_frequency := p0_a40;
1506     ddp_loan_details.open_first_payment_date := p0_a41;
1507     ddp_loan_details.open_start_date := p0_a42;
1508     ddp_loan_details.open_maturity_date := p0_a43;
1509     ddp_loan_details.loan_phase := p0_a44;
1510     ddp_loan_details.balloon_payment_type := p0_a45;
1511     ddp_loan_details.balloon_payment_amount := p0_a46;
1512     ddp_loan_details.amortized_amount := p0_a47;
1513     ddp_loan_details.rate_type := p0_a48;
1514     ddp_loan_details.open_rate_chg_freq := p0_a49;
1515     ddp_loan_details.open_index_rate_id := p0_a50;
1516     ddp_loan_details.open_index_date := p0_a51;
1517     ddp_loan_details.open_ceiling_rate := p0_a52;
1518     ddp_loan_details.open_floor_rate := p0_a53;
1519     ddp_loan_details.open_first_percent_increase := p0_a54;
1520     ddp_loan_details.open_adj_percent_increase := p0_a55;
1521     ddp_loan_details.open_life_percent_increase := p0_a56;
1522     ddp_loan_details.term_rate_chg_freq := p0_a57;
1523     ddp_loan_details.term_index_rate_id := p0_a58;
1524     ddp_loan_details.term_index_date := p0_a59;
1525     ddp_loan_details.term_ceiling_rate := p0_a60;
1526     ddp_loan_details.term_floor_rate := p0_a61;
1527     ddp_loan_details.term_first_percent_increase := p0_a62;
1528     ddp_loan_details.term_adj_percent_increase := p0_a63;
1529     ddp_loan_details.term_life_percent_increase := p0_a64;
1530     ddp_loan_details.open_to_term_flag := p0_a65;
1531     ddp_loan_details.open_to_term_event := p0_a66;
1532     ddp_loan_details.multiple_funding_flag := p0_a67;
1533     ddp_loan_details.secondary_status := p0_a68;
1534     ddp_loan_details.open_projected_interest_rate := p0_a69;
1535     ddp_loan_details.term_projected_interest_rate := p0_a70;
1536     ddp_loan_details.initial_interest_rate := p0_a71;
1537     ddp_loan_details.last_interest_rate := p0_a72;
1538     ddp_loan_details.first_rate_change_date := p0_a73;
1539     ddp_loan_details.next_rate_change_date := p0_a74;
1540     ddp_loan_details.calculation_method := p0_a75;
1541     ddp_loan_details.interest_compounding_freq := p0_a76;
1542     ddp_loan_details.payment_calc_method := p0_a77;
1543     ddp_loan_details.orig_pay_calc_method := p0_a78;
1544     ddp_loan_details.prin_first_pay_date := p0_a79;
1545     ddp_loan_details.prin_payment_frequency := p0_a80;
1546     ddp_loan_details.prin_number_installments := p0_a81;
1547     ddp_loan_details.prin_amort_installments := p0_a82;
1548     ddp_loan_details.prin_pay_in_arrears := p0_a83;
1549     if p0_a84 is null
1550       then ddp_loan_details.prin_pay_in_arrears_bool := null;
1551     elsif p0_a84 = 0
1552       then ddp_loan_details.prin_pay_in_arrears_bool := false;
1553     else ddp_loan_details.prin_pay_in_arrears_bool := true;
1554     end if;
1555     ddp_loan_details.extend_from_installment := p0_a85;
1556     ddp_loan_details.orig_number_installments := p0_a86;
1557     ddp_loan_details.penal_int_rate := p0_a87;
1558     ddp_loan_details.penal_int_grace_days := p0_a88;
1559 
1560 
1561 
1562     lns_financials_w.rosetta_table_copy_in_p1(ddp_rate_tbl, p3_a0
1563       , p3_a1
1564       , p3_a2
1565       , p3_a3
1566       , p3_a4
1567       , p3_a5
1568       , p3_a6
1569       , p3_a7
1570       , p3_a8
1571       , p3_a9
1572       );
1573 
1574     -- here's the delegated call to the old PL/SQL routine
1575     ddrosetta_retval := lns_financials.getweightedrate(ddp_loan_details,
1576       p_start_date,
1577       p_end_date,
1578       ddp_rate_tbl);
1579 
1580     -- copy data back from the local variables to OUT or IN-OUT args, if any
1581 
1582 
1583 
1584 
1585     return ddrosetta_retval;
1586   end;
1587 
1588   procedure amortizeeploan(p0_a0  NUMBER
1589     , p0_a1  NUMBER
1590     , p0_a2  VARCHAR2
1591     , p0_a3  NUMBER
1592     , p0_a4  VARCHAR2
1593     , p0_a5  VARCHAR2
1594     , p0_a6  VARCHAR2
1595     , p0_a7  DATE
1596     , p0_a8  DATE
1597     , p0_a9  NUMBER
1598     , p0_a10  NUMBER
1599     , p0_a11  NUMBER
1600     , p0_a12  NUMBER
1601     , p0_a13  NUMBER
1602     , p0_a14  NUMBER
1603     , p0_a15  NUMBER
1604     , p0_a16  NUMBER
1605     , p0_a17  NUMBER
1606     , p0_a18  DATE
1607     , p0_a19  NUMBER
1608     , p0_a20  NUMBER
1609     , p0_a21  VARCHAR2
1610     , p0_a22  VARCHAR2
1611     , p0_a23  VARCHAR2
1612     , p0_a24  NUMBER
1613     , p0_a25  NUMBER
1614     , p0_a26  NUMBER
1615     , p0_a27  NUMBER
1616     , p0_a28  VARCHAR2
1617     , p0_a29  VARCHAR2
1618     , p0_a30  NUMBER
1619     , p0_a31  VARCHAR2
1620     , p0_a32  VARCHAR2
1621     , p0_a33  DATE
1622     , p0_a34  VARCHAR2
1623     , p0_a35  DATE
1624     , p0_a36  VARCHAR2
1625     , p0_a37  NUMBER
1626     , p0_a38  NUMBER
1627     , p0_a39  VARCHAR2
1628     , p0_a40  VARCHAR2
1629     , p0_a41  DATE
1630     , p0_a42  DATE
1631     , p0_a43  DATE
1632     , p0_a44  VARCHAR2
1633     , p0_a45  VARCHAR2
1634     , p0_a46  NUMBER
1635     , p0_a47  NUMBER
1636     , p0_a48  VARCHAR2
1637     , p0_a49  VARCHAR2
1638     , p0_a50  NUMBER
1639     , p0_a51  DATE
1640     , p0_a52  NUMBER
1641     , p0_a53  NUMBER
1642     , p0_a54  NUMBER
1643     , p0_a55  NUMBER
1644     , p0_a56  NUMBER
1645     , p0_a57  VARCHAR2
1646     , p0_a58  NUMBER
1647     , p0_a59  DATE
1648     , p0_a60  NUMBER
1649     , p0_a61  NUMBER
1650     , p0_a62  NUMBER
1651     , p0_a63  NUMBER
1652     , p0_a64  NUMBER
1653     , p0_a65  VARCHAR2
1654     , p0_a66  VARCHAR2
1655     , p0_a67  VARCHAR2
1656     , p0_a68  VARCHAR2
1657     , p0_a69  NUMBER
1658     , p0_a70  NUMBER
1659     , p0_a71  NUMBER
1660     , p0_a72  NUMBER
1661     , p0_a73  DATE
1662     , p0_a74  DATE
1663     , p0_a75  VARCHAR2
1664     , p0_a76  VARCHAR2
1665     , p0_a77  VARCHAR2
1666     , p0_a78  VARCHAR2
1667     , p0_a79  DATE
1668     , p0_a80  VARCHAR2
1669     , p0_a81  NUMBER
1670     , p0_a82  NUMBER
1671     , p0_a83  VARCHAR2
1672     , p0_a84  NUMBER
1673     , p0_a85  NUMBER
1674     , p0_a86  NUMBER
1675     , p0_a87  NUMBER
1676     , p0_a88  NUMBER
1677     , p1_a0 JTF_NUMBER_TABLE
1678     , p1_a1 JTF_DATE_TABLE
1679     , p1_a2 JTF_DATE_TABLE
1680     , p1_a3 JTF_NUMBER_TABLE
1681     , p1_a4 JTF_NUMBER_TABLE
1682     , p1_a5 JTF_NUMBER_TABLE
1683     , p1_a6 JTF_NUMBER_TABLE
1684     , p1_a7 JTF_VARCHAR2_TABLE_100
1685     , p1_a8 JTF_VARCHAR2_TABLE_100
1686     , p1_a9 JTF_VARCHAR2_TABLE_100
1687     , p_based_on_terms  VARCHAR2
1688     , p_installment_number  NUMBER
1689     , p4_a0 out nocopy JTF_NUMBER_TABLE
1690     , p4_a1 out nocopy JTF_DATE_TABLE
1691     , p4_a2 out nocopy JTF_DATE_TABLE
1692     , p4_a3 out nocopy JTF_DATE_TABLE
1693     , p4_a4 out nocopy JTF_NUMBER_TABLE
1694     , p4_a5 out nocopy JTF_NUMBER_TABLE
1695     , p4_a6 out nocopy JTF_NUMBER_TABLE
1696     , p4_a7 out nocopy JTF_NUMBER_TABLE
1697     , p4_a8 out nocopy JTF_NUMBER_TABLE
1698     , p4_a9 out nocopy JTF_NUMBER_TABLE
1699     , p4_a10 out nocopy JTF_NUMBER_TABLE
1700     , p4_a11 out nocopy JTF_NUMBER_TABLE
1701     , p4_a12 out nocopy JTF_NUMBER_TABLE
1702     , p4_a13 out nocopy JTF_NUMBER_TABLE
1703     , p4_a14 out nocopy JTF_NUMBER_TABLE
1704     , p4_a15 out nocopy JTF_NUMBER_TABLE
1705     , p4_a16 out nocopy JTF_NUMBER_TABLE
1706     , p4_a17 out nocopy JTF_NUMBER_TABLE
1707     , p4_a18 out nocopy JTF_NUMBER_TABLE
1708     , p4_a19 out nocopy JTF_NUMBER_TABLE
1709     , p4_a20 out nocopy JTF_NUMBER_TABLE
1710     , p4_a21 out nocopy JTF_VARCHAR2_TABLE_100
1711     , p4_a22 out nocopy JTF_VARCHAR2_TABLE_100
1712     , p4_a23 out nocopy JTF_VARCHAR2_TABLE_100
1713     , p4_a24 out nocopy JTF_NUMBER_TABLE
1714     , p4_a25 out nocopy JTF_NUMBER_TABLE
1715     , p4_a26 out nocopy JTF_NUMBER_TABLE
1716   )
1717 
1718   as
1719     ddp_loan_details lns_financials.loan_details_rec;
1720     ddp_rate_schedule lns_financials.rate_schedule_tbl;
1721     ddx_loan_amort_tbl lns_financials.amortization_tbl;
1722     ddindx binary_integer; indx binary_integer;
1723   begin
1724 
1725     -- copy data to the local IN or IN-OUT args, if any
1726     ddp_loan_details.loan_id := p0_a0;
1727     ddp_loan_details.loan_term := p0_a1;
1728     ddp_loan_details.loan_term_period := p0_a2;
1729     ddp_loan_details.amortized_term := p0_a3;
1730     ddp_loan_details.amortized_term_period := p0_a4;
1731     ddp_loan_details.amortization_frequency := p0_a5;
1732     ddp_loan_details.payment_frequency := p0_a6;
1733     ddp_loan_details.first_payment_date := p0_a7;
1734     ddp_loan_details.loan_start_date := p0_a8;
1735     ddp_loan_details.requested_amount := p0_a9;
1736     ddp_loan_details.funded_amount := p0_a10;
1737     ddp_loan_details.remaining_balance := p0_a11;
1738     ddp_loan_details.principal_paid_to_date := p0_a12;
1739     ddp_loan_details.interest_paid_to_date := p0_a13;
1740     ddp_loan_details.fees_paid_to_date := p0_a14;
1741     ddp_loan_details.unpaid_principal := p0_a15;
1742     ddp_loan_details.unpaid_interest := p0_a16;
1743     ddp_loan_details.unbilled_principal := p0_a17;
1744     ddp_loan_details.maturity_date := p0_a18;
1745     ddp_loan_details.number_installments := p0_a19;
1746     ddp_loan_details.num_amortization_intervals := p0_a20;
1747     ddp_loan_details.reamortize_overpay := p0_a21;
1748     ddp_loan_details.reamortize_underpay := p0_a22;
1749     ddp_loan_details.reamortize_with_interest := p0_a23;
1750     ddp_loan_details.reamortize_amount := p0_a24;
1751     ddp_loan_details.reamortize_from_installment := p0_a25;
1752     ddp_loan_details.reamortize_to_installment := p0_a26;
1753     ddp_loan_details.last_installment_billed := p0_a27;
1754     ddp_loan_details.day_count_method := p0_a28;
1755     ddp_loan_details.pay_in_arrears := p0_a29;
1756     if p0_a30 is null
1757       then ddp_loan_details.pay_in_arrears_boolean := null;
1758     elsif p0_a30 = 0
1759       then ddp_loan_details.pay_in_arrears_boolean := false;
1760     else ddp_loan_details.pay_in_arrears_boolean := true;
1761     end if;
1762     ddp_loan_details.custom_schedule := p0_a31;
1763     ddp_loan_details.loan_status := p0_a32;
1764     ddp_loan_details.last_interest_accrual := p0_a33;
1765     ddp_loan_details.last_activity := p0_a34;
1766     ddp_loan_details.last_activity_date := p0_a35;
1767     ddp_loan_details.loan_currency := p0_a36;
1768     ddp_loan_details.currency_precision := p0_a37;
1769     ddp_loan_details.open_term := p0_a38;
1770     ddp_loan_details.open_term_period := p0_a39;
1771     ddp_loan_details.open_payment_frequency := p0_a40;
1772     ddp_loan_details.open_first_payment_date := p0_a41;
1773     ddp_loan_details.open_start_date := p0_a42;
1774     ddp_loan_details.open_maturity_date := p0_a43;
1775     ddp_loan_details.loan_phase := p0_a44;
1776     ddp_loan_details.balloon_payment_type := p0_a45;
1777     ddp_loan_details.balloon_payment_amount := p0_a46;
1778     ddp_loan_details.amortized_amount := p0_a47;
1779     ddp_loan_details.rate_type := p0_a48;
1780     ddp_loan_details.open_rate_chg_freq := p0_a49;
1781     ddp_loan_details.open_index_rate_id := p0_a50;
1782     ddp_loan_details.open_index_date := p0_a51;
1783     ddp_loan_details.open_ceiling_rate := p0_a52;
1784     ddp_loan_details.open_floor_rate := p0_a53;
1785     ddp_loan_details.open_first_percent_increase := p0_a54;
1786     ddp_loan_details.open_adj_percent_increase := p0_a55;
1787     ddp_loan_details.open_life_percent_increase := p0_a56;
1788     ddp_loan_details.term_rate_chg_freq := p0_a57;
1789     ddp_loan_details.term_index_rate_id := p0_a58;
1790     ddp_loan_details.term_index_date := p0_a59;
1791     ddp_loan_details.term_ceiling_rate := p0_a60;
1792     ddp_loan_details.term_floor_rate := p0_a61;
1793     ddp_loan_details.term_first_percent_increase := p0_a62;
1794     ddp_loan_details.term_adj_percent_increase := p0_a63;
1795     ddp_loan_details.term_life_percent_increase := p0_a64;
1796     ddp_loan_details.open_to_term_flag := p0_a65;
1797     ddp_loan_details.open_to_term_event := p0_a66;
1798     ddp_loan_details.multiple_funding_flag := p0_a67;
1799     ddp_loan_details.secondary_status := p0_a68;
1800     ddp_loan_details.open_projected_interest_rate := p0_a69;
1801     ddp_loan_details.term_projected_interest_rate := p0_a70;
1802     ddp_loan_details.initial_interest_rate := p0_a71;
1803     ddp_loan_details.last_interest_rate := p0_a72;
1804     ddp_loan_details.first_rate_change_date := p0_a73;
1805     ddp_loan_details.next_rate_change_date := p0_a74;
1806     ddp_loan_details.calculation_method := p0_a75;
1807     ddp_loan_details.interest_compounding_freq := p0_a76;
1808     ddp_loan_details.payment_calc_method := p0_a77;
1809     ddp_loan_details.orig_pay_calc_method := p0_a78;
1810     ddp_loan_details.prin_first_pay_date := p0_a79;
1811     ddp_loan_details.prin_payment_frequency := p0_a80;
1812     ddp_loan_details.prin_number_installments := p0_a81;
1813     ddp_loan_details.prin_amort_installments := p0_a82;
1814     ddp_loan_details.prin_pay_in_arrears := p0_a83;
1815     if p0_a84 is null
1816       then ddp_loan_details.prin_pay_in_arrears_bool := null;
1817     elsif p0_a84 = 0
1818       then ddp_loan_details.prin_pay_in_arrears_bool := false;
1819     else ddp_loan_details.prin_pay_in_arrears_bool := true;
1820     end if;
1821     ddp_loan_details.extend_from_installment := p0_a85;
1822     ddp_loan_details.orig_number_installments := p0_a86;
1823     ddp_loan_details.penal_int_rate := p0_a87;
1824     ddp_loan_details.penal_int_grace_days := p0_a88;
1825 
1826     lns_financials_w.rosetta_table_copy_in_p1(ddp_rate_schedule, p1_a0
1827       , p1_a1
1828       , p1_a2
1829       , p1_a3
1830       , p1_a4
1831       , p1_a5
1832       , p1_a6
1833       , p1_a7
1834       , p1_a8
1835       , p1_a9
1836       );
1837 
1838 
1839 
1840 
1841     -- here's the delegated call to the old PL/SQL routine
1842     lns_financials.amortizeeploan(ddp_loan_details,
1843       ddp_rate_schedule,
1844       p_based_on_terms,
1845       p_installment_number,
1846       ddx_loan_amort_tbl);
1847 
1848     -- copy data back from the local variables to OUT or IN-OUT args, if any
1849 
1850 
1851 
1852 
1853     lns_financials_w.rosetta_table_copy_out_p3(ddx_loan_amort_tbl, p4_a0
1854       , p4_a1
1855       , p4_a2
1856       , p4_a3
1857       , p4_a4
1858       , p4_a5
1859       , p4_a6
1860       , p4_a7
1861       , p4_a8
1862       , p4_a9
1863       , p4_a10
1864       , p4_a11
1865       , p4_a12
1866       , p4_a13
1867       , p4_a14
1868       , p4_a15
1869       , p4_a16
1870       , p4_a17
1871       , p4_a18
1872       , p4_a19
1873       , p4_a20
1874       , p4_a21
1875       , p4_a22
1876       , p4_a23
1877       , p4_a24
1878       , p4_a25
1879       , p4_a26
1880       );
1881   end;
1882 
1883   procedure amortizeloan(p0_a0  NUMBER
1884     , p0_a1  NUMBER
1885     , p0_a2  VARCHAR2
1886     , p0_a3  NUMBER
1887     , p0_a4  VARCHAR2
1888     , p0_a5  VARCHAR2
1889     , p0_a6  VARCHAR2
1890     , p0_a7  DATE
1891     , p0_a8  DATE
1892     , p0_a9  NUMBER
1893     , p0_a10  NUMBER
1894     , p0_a11  NUMBER
1895     , p0_a12  NUMBER
1896     , p0_a13  NUMBER
1897     , p0_a14  NUMBER
1898     , p0_a15  NUMBER
1899     , p0_a16  NUMBER
1900     , p0_a17  NUMBER
1901     , p0_a18  DATE
1902     , p0_a19  NUMBER
1903     , p0_a20  NUMBER
1904     , p0_a21  VARCHAR2
1905     , p0_a22  VARCHAR2
1906     , p0_a23  VARCHAR2
1907     , p0_a24  NUMBER
1908     , p0_a25  NUMBER
1909     , p0_a26  NUMBER
1910     , p0_a27  NUMBER
1911     , p0_a28  VARCHAR2
1912     , p0_a29  VARCHAR2
1913     , p0_a30  NUMBER
1914     , p0_a31  VARCHAR2
1915     , p0_a32  VARCHAR2
1916     , p0_a33  DATE
1917     , p0_a34  VARCHAR2
1918     , p0_a35  DATE
1919     , p0_a36  VARCHAR2
1920     , p0_a37  NUMBER
1921     , p0_a38  NUMBER
1922     , p0_a39  VARCHAR2
1923     , p0_a40  VARCHAR2
1924     , p0_a41  DATE
1925     , p0_a42  DATE
1926     , p0_a43  DATE
1927     , p0_a44  VARCHAR2
1928     , p0_a45  VARCHAR2
1929     , p0_a46  NUMBER
1930     , p0_a47  NUMBER
1931     , p0_a48  VARCHAR2
1932     , p0_a49  VARCHAR2
1933     , p0_a50  NUMBER
1934     , p0_a51  DATE
1935     , p0_a52  NUMBER
1936     , p0_a53  NUMBER
1937     , p0_a54  NUMBER
1938     , p0_a55  NUMBER
1939     , p0_a56  NUMBER
1940     , p0_a57  VARCHAR2
1941     , p0_a58  NUMBER
1942     , p0_a59  DATE
1943     , p0_a60  NUMBER
1944     , p0_a61  NUMBER
1945     , p0_a62  NUMBER
1946     , p0_a63  NUMBER
1947     , p0_a64  NUMBER
1948     , p0_a65  VARCHAR2
1949     , p0_a66  VARCHAR2
1950     , p0_a67  VARCHAR2
1951     , p0_a68  VARCHAR2
1952     , p0_a69  NUMBER
1953     , p0_a70  NUMBER
1954     , p0_a71  NUMBER
1955     , p0_a72  NUMBER
1956     , p0_a73  DATE
1957     , p0_a74  DATE
1958     , p0_a75  VARCHAR2
1959     , p0_a76  VARCHAR2
1960     , p0_a77  VARCHAR2
1961     , p0_a78  VARCHAR2
1962     , p0_a79  DATE
1963     , p0_a80  VARCHAR2
1964     , p0_a81  NUMBER
1965     , p0_a82  NUMBER
1966     , p0_a83  VARCHAR2
1967     , p0_a84  NUMBER
1968     , p0_a85  NUMBER
1969     , p0_a86  NUMBER
1970     , p0_a87  NUMBER
1971     , p0_a88  NUMBER
1972     , p1_a0 JTF_NUMBER_TABLE
1973     , p1_a1 JTF_DATE_TABLE
1974     , p1_a2 JTF_DATE_TABLE
1975     , p1_a3 JTF_NUMBER_TABLE
1976     , p1_a4 JTF_NUMBER_TABLE
1977     , p1_a5 JTF_NUMBER_TABLE
1978     , p1_a6 JTF_NUMBER_TABLE
1979     , p1_a7 JTF_VARCHAR2_TABLE_100
1980     , p1_a8 JTF_VARCHAR2_TABLE_100
1981     , p1_a9 JTF_VARCHAR2_TABLE_100
1982     , p_based_on_terms  VARCHAR2
1983     , p_installment_number  NUMBER
1984     , p4_a0 out nocopy JTF_NUMBER_TABLE
1985     , p4_a1 out nocopy JTF_DATE_TABLE
1986     , p4_a2 out nocopy JTF_DATE_TABLE
1987     , p4_a3 out nocopy JTF_DATE_TABLE
1988     , p4_a4 out nocopy JTF_NUMBER_TABLE
1989     , p4_a5 out nocopy JTF_NUMBER_TABLE
1990     , p4_a6 out nocopy JTF_NUMBER_TABLE
1991     , p4_a7 out nocopy JTF_NUMBER_TABLE
1992     , p4_a8 out nocopy JTF_NUMBER_TABLE
1993     , p4_a9 out nocopy JTF_NUMBER_TABLE
1994     , p4_a10 out nocopy JTF_NUMBER_TABLE
1995     , p4_a11 out nocopy JTF_NUMBER_TABLE
1996     , p4_a12 out nocopy JTF_NUMBER_TABLE
1997     , p4_a13 out nocopy JTF_NUMBER_TABLE
1998     , p4_a14 out nocopy JTF_NUMBER_TABLE
1999     , p4_a15 out nocopy JTF_NUMBER_TABLE
2000     , p4_a16 out nocopy JTF_NUMBER_TABLE
2001     , p4_a17 out nocopy JTF_NUMBER_TABLE
2002     , p4_a18 out nocopy JTF_NUMBER_TABLE
2003     , p4_a19 out nocopy JTF_NUMBER_TABLE
2004     , p4_a20 out nocopy JTF_NUMBER_TABLE
2005     , p4_a21 out nocopy JTF_VARCHAR2_TABLE_100
2006     , p4_a22 out nocopy JTF_VARCHAR2_TABLE_100
2007     , p4_a23 out nocopy JTF_VARCHAR2_TABLE_100
2008     , p4_a24 out nocopy JTF_NUMBER_TABLE
2009     , p4_a25 out nocopy JTF_NUMBER_TABLE
2010     , p4_a26 out nocopy JTF_NUMBER_TABLE
2011   )
2012 
2013   as
2014     ddp_loan_details lns_financials.loan_details_rec;
2015     ddp_rate_schedule lns_financials.rate_schedule_tbl;
2016     ddx_loan_amort_tbl lns_financials.amortization_tbl;
2017     ddindx binary_integer; indx binary_integer;
2018   begin
2019 
2020     -- copy data to the local IN or IN-OUT args, if any
2021     ddp_loan_details.loan_id := p0_a0;
2022     ddp_loan_details.loan_term := p0_a1;
2023     ddp_loan_details.loan_term_period := p0_a2;
2024     ddp_loan_details.amortized_term := p0_a3;
2025     ddp_loan_details.amortized_term_period := p0_a4;
2026     ddp_loan_details.amortization_frequency := p0_a5;
2027     ddp_loan_details.payment_frequency := p0_a6;
2028     ddp_loan_details.first_payment_date := p0_a7;
2029     ddp_loan_details.loan_start_date := p0_a8;
2030     ddp_loan_details.requested_amount := p0_a9;
2031     ddp_loan_details.funded_amount := p0_a10;
2032     ddp_loan_details.remaining_balance := p0_a11;
2033     ddp_loan_details.principal_paid_to_date := p0_a12;
2034     ddp_loan_details.interest_paid_to_date := p0_a13;
2035     ddp_loan_details.fees_paid_to_date := p0_a14;
2036     ddp_loan_details.unpaid_principal := p0_a15;
2037     ddp_loan_details.unpaid_interest := p0_a16;
2038     ddp_loan_details.unbilled_principal := p0_a17;
2039     ddp_loan_details.maturity_date := p0_a18;
2040     ddp_loan_details.number_installments := p0_a19;
2041     ddp_loan_details.num_amortization_intervals := p0_a20;
2042     ddp_loan_details.reamortize_overpay := p0_a21;
2043     ddp_loan_details.reamortize_underpay := p0_a22;
2044     ddp_loan_details.reamortize_with_interest := p0_a23;
2045     ddp_loan_details.reamortize_amount := p0_a24;
2046     ddp_loan_details.reamortize_from_installment := p0_a25;
2047     ddp_loan_details.reamortize_to_installment := p0_a26;
2048     ddp_loan_details.last_installment_billed := p0_a27;
2049     ddp_loan_details.day_count_method := p0_a28;
2050     ddp_loan_details.pay_in_arrears := p0_a29;
2051     if p0_a30 is null
2052       then ddp_loan_details.pay_in_arrears_boolean := null;
2053     elsif p0_a30 = 0
2054       then ddp_loan_details.pay_in_arrears_boolean := false;
2055     else ddp_loan_details.pay_in_arrears_boolean := true;
2056     end if;
2057     ddp_loan_details.custom_schedule := p0_a31;
2058     ddp_loan_details.loan_status := p0_a32;
2059     ddp_loan_details.last_interest_accrual := p0_a33;
2060     ddp_loan_details.last_activity := p0_a34;
2061     ddp_loan_details.last_activity_date := p0_a35;
2062     ddp_loan_details.loan_currency := p0_a36;
2063     ddp_loan_details.currency_precision := p0_a37;
2064     ddp_loan_details.open_term := p0_a38;
2065     ddp_loan_details.open_term_period := p0_a39;
2066     ddp_loan_details.open_payment_frequency := p0_a40;
2067     ddp_loan_details.open_first_payment_date := p0_a41;
2068     ddp_loan_details.open_start_date := p0_a42;
2069     ddp_loan_details.open_maturity_date := p0_a43;
2070     ddp_loan_details.loan_phase := p0_a44;
2071     ddp_loan_details.balloon_payment_type := p0_a45;
2072     ddp_loan_details.balloon_payment_amount := p0_a46;
2073     ddp_loan_details.amortized_amount := p0_a47;
2074     ddp_loan_details.rate_type := p0_a48;
2075     ddp_loan_details.open_rate_chg_freq := p0_a49;
2076     ddp_loan_details.open_index_rate_id := p0_a50;
2077     ddp_loan_details.open_index_date := p0_a51;
2078     ddp_loan_details.open_ceiling_rate := p0_a52;
2079     ddp_loan_details.open_floor_rate := p0_a53;
2080     ddp_loan_details.open_first_percent_increase := p0_a54;
2081     ddp_loan_details.open_adj_percent_increase := p0_a55;
2082     ddp_loan_details.open_life_percent_increase := p0_a56;
2083     ddp_loan_details.term_rate_chg_freq := p0_a57;
2084     ddp_loan_details.term_index_rate_id := p0_a58;
2085     ddp_loan_details.term_index_date := p0_a59;
2086     ddp_loan_details.term_ceiling_rate := p0_a60;
2087     ddp_loan_details.term_floor_rate := p0_a61;
2088     ddp_loan_details.term_first_percent_increase := p0_a62;
2089     ddp_loan_details.term_adj_percent_increase := p0_a63;
2090     ddp_loan_details.term_life_percent_increase := p0_a64;
2091     ddp_loan_details.open_to_term_flag := p0_a65;
2092     ddp_loan_details.open_to_term_event := p0_a66;
2093     ddp_loan_details.multiple_funding_flag := p0_a67;
2094     ddp_loan_details.secondary_status := p0_a68;
2095     ddp_loan_details.open_projected_interest_rate := p0_a69;
2096     ddp_loan_details.term_projected_interest_rate := p0_a70;
2097     ddp_loan_details.initial_interest_rate := p0_a71;
2098     ddp_loan_details.last_interest_rate := p0_a72;
2099     ddp_loan_details.first_rate_change_date := p0_a73;
2100     ddp_loan_details.next_rate_change_date := p0_a74;
2101     ddp_loan_details.calculation_method := p0_a75;
2102     ddp_loan_details.interest_compounding_freq := p0_a76;
2103     ddp_loan_details.payment_calc_method := p0_a77;
2104     ddp_loan_details.orig_pay_calc_method := p0_a78;
2105     ddp_loan_details.prin_first_pay_date := p0_a79;
2106     ddp_loan_details.prin_payment_frequency := p0_a80;
2107     ddp_loan_details.prin_number_installments := p0_a81;
2108     ddp_loan_details.prin_amort_installments := p0_a82;
2109     ddp_loan_details.prin_pay_in_arrears := p0_a83;
2110     if p0_a84 is null
2111       then ddp_loan_details.prin_pay_in_arrears_bool := null;
2112     elsif p0_a84 = 0
2113       then ddp_loan_details.prin_pay_in_arrears_bool := false;
2114     else ddp_loan_details.prin_pay_in_arrears_bool := true;
2115     end if;
2116     ddp_loan_details.extend_from_installment := p0_a85;
2117     ddp_loan_details.orig_number_installments := p0_a86;
2118     ddp_loan_details.penal_int_rate := p0_a87;
2119     ddp_loan_details.penal_int_grace_days := p0_a88;
2120 
2121     lns_financials_w.rosetta_table_copy_in_p1(ddp_rate_schedule, p1_a0
2122       , p1_a1
2123       , p1_a2
2124       , p1_a3
2125       , p1_a4
2126       , p1_a5
2127       , p1_a6
2128       , p1_a7
2129       , p1_a8
2130       , p1_a9
2131       );
2132 
2133 
2134 
2135 
2136     -- here's the delegated call to the old PL/SQL routine
2137     lns_financials.amortizeloan(ddp_loan_details,
2138       ddp_rate_schedule,
2139       p_based_on_terms,
2140       p_installment_number,
2141       ddx_loan_amort_tbl);
2142 
2143     -- copy data back from the local variables to OUT or IN-OUT args, if any
2144 
2145 
2146 
2147 
2148     lns_financials_w.rosetta_table_copy_out_p3(ddx_loan_amort_tbl, p4_a0
2149       , p4_a1
2150       , p4_a2
2151       , p4_a3
2152       , p4_a4
2153       , p4_a5
2154       , p4_a6
2155       , p4_a7
2156       , p4_a8
2157       , p4_a9
2158       , p4_a10
2159       , p4_a11
2160       , p4_a12
2161       , p4_a13
2162       , p4_a14
2163       , p4_a15
2164       , p4_a16
2165       , p4_a17
2166       , p4_a18
2167       , p4_a19
2168       , p4_a20
2169       , p4_a21
2170       , p4_a22
2171       , p4_a23
2172       , p4_a24
2173       , p4_a25
2174       , p4_a26
2175       );
2176   end;
2177 
2178   procedure amortizeloan(p_loan_id  NUMBER
2179     , p_based_on_terms  VARCHAR2
2180     , p_installment_number  NUMBER
2181     , p3_a0 out nocopy JTF_NUMBER_TABLE
2182     , p3_a1 out nocopy JTF_DATE_TABLE
2183     , p3_a2 out nocopy JTF_DATE_TABLE
2184     , p3_a3 out nocopy JTF_DATE_TABLE
2185     , p3_a4 out nocopy JTF_NUMBER_TABLE
2186     , p3_a5 out nocopy JTF_NUMBER_TABLE
2187     , p3_a6 out nocopy JTF_NUMBER_TABLE
2188     , p3_a7 out nocopy JTF_NUMBER_TABLE
2189     , p3_a8 out nocopy JTF_NUMBER_TABLE
2190     , p3_a9 out nocopy JTF_NUMBER_TABLE
2191     , p3_a10 out nocopy JTF_NUMBER_TABLE
2192     , p3_a11 out nocopy JTF_NUMBER_TABLE
2193     , p3_a12 out nocopy JTF_NUMBER_TABLE
2194     , p3_a13 out nocopy JTF_NUMBER_TABLE
2195     , p3_a14 out nocopy JTF_NUMBER_TABLE
2196     , p3_a15 out nocopy JTF_NUMBER_TABLE
2197     , p3_a16 out nocopy JTF_NUMBER_TABLE
2198     , p3_a17 out nocopy JTF_NUMBER_TABLE
2199     , p3_a18 out nocopy JTF_NUMBER_TABLE
2200     , p3_a19 out nocopy JTF_NUMBER_TABLE
2201     , p3_a20 out nocopy JTF_NUMBER_TABLE
2202     , p3_a21 out nocopy JTF_VARCHAR2_TABLE_100
2203     , p3_a22 out nocopy JTF_VARCHAR2_TABLE_100
2204     , p3_a23 out nocopy JTF_VARCHAR2_TABLE_100
2205     , p3_a24 out nocopy JTF_NUMBER_TABLE
2206     , p3_a25 out nocopy JTF_NUMBER_TABLE
2207     , p3_a26 out nocopy JTF_NUMBER_TABLE
2208   )
2209 
2210   as
2211     ddx_loan_amort_tbl lns_financials.amortization_tbl;
2212     ddindx binary_integer; indx binary_integer;
2213   begin
2214 
2215     -- copy data to the local IN or IN-OUT args, if any
2216 
2217 
2218 
2219 
2220     -- here's the delegated call to the old PL/SQL routine
2221     lns_financials.amortizeloan(p_loan_id,
2222       p_based_on_terms,
2223       p_installment_number,
2224       ddx_loan_amort_tbl);
2225 
2226     -- copy data back from the local variables to OUT or IN-OUT args, if any
2227 
2228 
2229 
2230     lns_financials_w.rosetta_table_copy_out_p3(ddx_loan_amort_tbl, p3_a0
2231       , p3_a1
2232       , p3_a2
2233       , p3_a3
2234       , p3_a4
2235       , p3_a5
2236       , p3_a6
2237       , p3_a7
2238       , p3_a8
2239       , p3_a9
2240       , p3_a10
2241       , p3_a11
2242       , p3_a12
2243       , p3_a13
2244       , p3_a14
2245       , p3_a15
2246       , p3_a16
2247       , p3_a17
2248       , p3_a18
2249       , p3_a19
2250       , p3_a20
2251       , p3_a21
2252       , p3_a22
2253       , p3_a23
2254       , p3_a24
2255       , p3_a25
2256       , p3_a26
2257       );
2258   end;
2259 
2260   procedure loanprojection(p0_a0  NUMBER
2261     , p0_a1  NUMBER
2262     , p0_a2  VARCHAR2
2263     , p0_a3  NUMBER
2264     , p0_a4  VARCHAR2
2265     , p0_a5  VARCHAR2
2266     , p0_a6  VARCHAR2
2267     , p0_a7  DATE
2268     , p0_a8  DATE
2269     , p0_a9  NUMBER
2270     , p0_a10  NUMBER
2271     , p0_a11  NUMBER
2272     , p0_a12  NUMBER
2273     , p0_a13  NUMBER
2274     , p0_a14  NUMBER
2275     , p0_a15  NUMBER
2276     , p0_a16  NUMBER
2277     , p0_a17  NUMBER
2278     , p0_a18  DATE
2279     , p0_a19  NUMBER
2280     , p0_a20  NUMBER
2281     , p0_a21  VARCHAR2
2282     , p0_a22  VARCHAR2
2283     , p0_a23  VARCHAR2
2284     , p0_a24  NUMBER
2285     , p0_a25  NUMBER
2286     , p0_a26  NUMBER
2287     , p0_a27  NUMBER
2288     , p0_a28  VARCHAR2
2289     , p0_a29  VARCHAR2
2290     , p0_a30  NUMBER
2291     , p0_a31  VARCHAR2
2292     , p0_a32  VARCHAR2
2293     , p0_a33  DATE
2294     , p0_a34  VARCHAR2
2295     , p0_a35  DATE
2296     , p0_a36  VARCHAR2
2297     , p0_a37  NUMBER
2298     , p0_a38  NUMBER
2299     , p0_a39  VARCHAR2
2300     , p0_a40  VARCHAR2
2301     , p0_a41  DATE
2302     , p0_a42  DATE
2303     , p0_a43  DATE
2304     , p0_a44  VARCHAR2
2305     , p0_a45  VARCHAR2
2306     , p0_a46  NUMBER
2307     , p0_a47  NUMBER
2308     , p0_a48  VARCHAR2
2309     , p0_a49  VARCHAR2
2310     , p0_a50  NUMBER
2311     , p0_a51  DATE
2312     , p0_a52  NUMBER
2313     , p0_a53  NUMBER
2314     , p0_a54  NUMBER
2315     , p0_a55  NUMBER
2316     , p0_a56  NUMBER
2317     , p0_a57  VARCHAR2
2318     , p0_a58  NUMBER
2319     , p0_a59  DATE
2320     , p0_a60  NUMBER
2321     , p0_a61  NUMBER
2322     , p0_a62  NUMBER
2323     , p0_a63  NUMBER
2324     , p0_a64  NUMBER
2325     , p0_a65  VARCHAR2
2326     , p0_a66  VARCHAR2
2327     , p0_a67  VARCHAR2
2328     , p0_a68  VARCHAR2
2329     , p0_a69  NUMBER
2330     , p0_a70  NUMBER
2331     , p0_a71  NUMBER
2332     , p0_a72  NUMBER
2333     , p0_a73  DATE
2334     , p0_a74  DATE
2335     , p0_a75  VARCHAR2
2336     , p0_a76  VARCHAR2
2337     , p0_a77  VARCHAR2
2338     , p0_a78  VARCHAR2
2339     , p0_a79  DATE
2340     , p0_a80  VARCHAR2
2341     , p0_a81  NUMBER
2342     , p0_a82  NUMBER
2343     , p0_a83  VARCHAR2
2344     , p0_a84  NUMBER
2345     , p0_a85  NUMBER
2346     , p0_a86  NUMBER
2347     , p0_a87  NUMBER
2348     , p0_a88  NUMBER
2349     , p1_a0 JTF_NUMBER_TABLE
2350     , p1_a1 JTF_DATE_TABLE
2351     , p1_a2 JTF_DATE_TABLE
2352     , p1_a3 JTF_NUMBER_TABLE
2353     , p1_a4 JTF_NUMBER_TABLE
2354     , p1_a5 JTF_NUMBER_TABLE
2355     , p1_a6 JTF_NUMBER_TABLE
2356     , p1_a7 JTF_VARCHAR2_TABLE_100
2357     , p1_a8 JTF_VARCHAR2_TABLE_100
2358     , p1_a9 JTF_VARCHAR2_TABLE_100
2359     , p2_a0 out nocopy JTF_NUMBER_TABLE
2360     , p2_a1 out nocopy JTF_DATE_TABLE
2361     , p2_a2 out nocopy JTF_DATE_TABLE
2362     , p2_a3 out nocopy JTF_DATE_TABLE
2363     , p2_a4 out nocopy JTF_NUMBER_TABLE
2364     , p2_a5 out nocopy JTF_NUMBER_TABLE
2365     , p2_a6 out nocopy JTF_NUMBER_TABLE
2366     , p2_a7 out nocopy JTF_NUMBER_TABLE
2367     , p2_a8 out nocopy JTF_NUMBER_TABLE
2368     , p2_a9 out nocopy JTF_NUMBER_TABLE
2369     , p2_a10 out nocopy JTF_NUMBER_TABLE
2370     , p2_a11 out nocopy JTF_NUMBER_TABLE
2371     , p2_a12 out nocopy JTF_NUMBER_TABLE
2372     , p2_a13 out nocopy JTF_NUMBER_TABLE
2373     , p2_a14 out nocopy JTF_NUMBER_TABLE
2374     , p2_a15 out nocopy JTF_NUMBER_TABLE
2375     , p2_a16 out nocopy JTF_NUMBER_TABLE
2376     , p2_a17 out nocopy JTF_NUMBER_TABLE
2377     , p2_a18 out nocopy JTF_NUMBER_TABLE
2378     , p2_a19 out nocopy JTF_NUMBER_TABLE
2379     , p2_a20 out nocopy JTF_NUMBER_TABLE
2380     , p2_a21 out nocopy JTF_VARCHAR2_TABLE_100
2381     , p2_a22 out nocopy JTF_VARCHAR2_TABLE_100
2382     , p2_a23 out nocopy JTF_VARCHAR2_TABLE_100
2383     , p2_a24 out nocopy JTF_NUMBER_TABLE
2384     , p2_a25 out nocopy JTF_NUMBER_TABLE
2385     , p2_a26 out nocopy JTF_NUMBER_TABLE
2386   )
2387 
2388   as
2389     ddp_loan_details lns_financials.loan_details_rec;
2390     ddp_rate_schedule lns_financials.rate_schedule_tbl;
2391     ddx_loan_amort_tbl lns_financials.amortization_tbl;
2392     ddindx binary_integer; indx binary_integer;
2393   begin
2394 
2395     -- copy data to the local IN or IN-OUT args, if any
2396     ddp_loan_details.loan_id := p0_a0;
2397     ddp_loan_details.loan_term := p0_a1;
2398     ddp_loan_details.loan_term_period := p0_a2;
2399     ddp_loan_details.amortized_term := p0_a3;
2400     ddp_loan_details.amortized_term_period := p0_a4;
2401     ddp_loan_details.amortization_frequency := p0_a5;
2402     ddp_loan_details.payment_frequency := p0_a6;
2403     ddp_loan_details.first_payment_date := p0_a7;
2404     ddp_loan_details.loan_start_date := p0_a8;
2405     ddp_loan_details.requested_amount := p0_a9;
2406     ddp_loan_details.funded_amount := p0_a10;
2407     ddp_loan_details.remaining_balance := p0_a11;
2408     ddp_loan_details.principal_paid_to_date := p0_a12;
2409     ddp_loan_details.interest_paid_to_date := p0_a13;
2410     ddp_loan_details.fees_paid_to_date := p0_a14;
2411     ddp_loan_details.unpaid_principal := p0_a15;
2412     ddp_loan_details.unpaid_interest := p0_a16;
2413     ddp_loan_details.unbilled_principal := p0_a17;
2414     ddp_loan_details.maturity_date := p0_a18;
2415     ddp_loan_details.number_installments := p0_a19;
2416     ddp_loan_details.num_amortization_intervals := p0_a20;
2417     ddp_loan_details.reamortize_overpay := p0_a21;
2418     ddp_loan_details.reamortize_underpay := p0_a22;
2419     ddp_loan_details.reamortize_with_interest := p0_a23;
2420     ddp_loan_details.reamortize_amount := p0_a24;
2421     ddp_loan_details.reamortize_from_installment := p0_a25;
2422     ddp_loan_details.reamortize_to_installment := p0_a26;
2423     ddp_loan_details.last_installment_billed := p0_a27;
2424     ddp_loan_details.day_count_method := p0_a28;
2425     ddp_loan_details.pay_in_arrears := p0_a29;
2426     if p0_a30 is null
2427       then ddp_loan_details.pay_in_arrears_boolean := null;
2428     elsif p0_a30 = 0
2429       then ddp_loan_details.pay_in_arrears_boolean := false;
2430     else ddp_loan_details.pay_in_arrears_boolean := true;
2431     end if;
2432     ddp_loan_details.custom_schedule := p0_a31;
2433     ddp_loan_details.loan_status := p0_a32;
2434     ddp_loan_details.last_interest_accrual := p0_a33;
2435     ddp_loan_details.last_activity := p0_a34;
2436     ddp_loan_details.last_activity_date := p0_a35;
2437     ddp_loan_details.loan_currency := p0_a36;
2438     ddp_loan_details.currency_precision := p0_a37;
2439     ddp_loan_details.open_term := p0_a38;
2440     ddp_loan_details.open_term_period := p0_a39;
2441     ddp_loan_details.open_payment_frequency := p0_a40;
2442     ddp_loan_details.open_first_payment_date := p0_a41;
2443     ddp_loan_details.open_start_date := p0_a42;
2444     ddp_loan_details.open_maturity_date := p0_a43;
2445     ddp_loan_details.loan_phase := p0_a44;
2446     ddp_loan_details.balloon_payment_type := p0_a45;
2447     ddp_loan_details.balloon_payment_amount := p0_a46;
2448     ddp_loan_details.amortized_amount := p0_a47;
2449     ddp_loan_details.rate_type := p0_a48;
2450     ddp_loan_details.open_rate_chg_freq := p0_a49;
2451     ddp_loan_details.open_index_rate_id := p0_a50;
2452     ddp_loan_details.open_index_date := p0_a51;
2453     ddp_loan_details.open_ceiling_rate := p0_a52;
2454     ddp_loan_details.open_floor_rate := p0_a53;
2455     ddp_loan_details.open_first_percent_increase := p0_a54;
2456     ddp_loan_details.open_adj_percent_increase := p0_a55;
2457     ddp_loan_details.open_life_percent_increase := p0_a56;
2458     ddp_loan_details.term_rate_chg_freq := p0_a57;
2459     ddp_loan_details.term_index_rate_id := p0_a58;
2460     ddp_loan_details.term_index_date := p0_a59;
2461     ddp_loan_details.term_ceiling_rate := p0_a60;
2462     ddp_loan_details.term_floor_rate := p0_a61;
2463     ddp_loan_details.term_first_percent_increase := p0_a62;
2464     ddp_loan_details.term_adj_percent_increase := p0_a63;
2465     ddp_loan_details.term_life_percent_increase := p0_a64;
2466     ddp_loan_details.open_to_term_flag := p0_a65;
2467     ddp_loan_details.open_to_term_event := p0_a66;
2468     ddp_loan_details.multiple_funding_flag := p0_a67;
2469     ddp_loan_details.secondary_status := p0_a68;
2470     ddp_loan_details.open_projected_interest_rate := p0_a69;
2471     ddp_loan_details.term_projected_interest_rate := p0_a70;
2472     ddp_loan_details.initial_interest_rate := p0_a71;
2473     ddp_loan_details.last_interest_rate := p0_a72;
2474     ddp_loan_details.first_rate_change_date := p0_a73;
2475     ddp_loan_details.next_rate_change_date := p0_a74;
2476     ddp_loan_details.calculation_method := p0_a75;
2477     ddp_loan_details.interest_compounding_freq := p0_a76;
2478     ddp_loan_details.payment_calc_method := p0_a77;
2479     ddp_loan_details.orig_pay_calc_method := p0_a78;
2480     ddp_loan_details.prin_first_pay_date := p0_a79;
2481     ddp_loan_details.prin_payment_frequency := p0_a80;
2482     ddp_loan_details.prin_number_installments := p0_a81;
2483     ddp_loan_details.prin_amort_installments := p0_a82;
2484     ddp_loan_details.prin_pay_in_arrears := p0_a83;
2485     if p0_a84 is null
2486       then ddp_loan_details.prin_pay_in_arrears_bool := null;
2487     elsif p0_a84 = 0
2488       then ddp_loan_details.prin_pay_in_arrears_bool := false;
2489     else ddp_loan_details.prin_pay_in_arrears_bool := true;
2490     end if;
2491     ddp_loan_details.extend_from_installment := p0_a85;
2492     ddp_loan_details.orig_number_installments := p0_a86;
2493     ddp_loan_details.penal_int_rate := p0_a87;
2494     ddp_loan_details.penal_int_grace_days := p0_a88;
2495 
2496     lns_financials_w.rosetta_table_copy_in_p1(ddp_rate_schedule, p1_a0
2497       , p1_a1
2498       , p1_a2
2499       , p1_a3
2500       , p1_a4
2501       , p1_a5
2502       , p1_a6
2503       , p1_a7
2504       , p1_a8
2505       , p1_a9
2506       );
2507 
2508 
2509     -- here's the delegated call to the old PL/SQL routine
2510     lns_financials.loanprojection(ddp_loan_details,
2511       ddp_rate_schedule,
2512       ddx_loan_amort_tbl);
2513 
2514     -- copy data back from the local variables to OUT or IN-OUT args, if any
2515 
2516 
2517     lns_financials_w.rosetta_table_copy_out_p3(ddx_loan_amort_tbl, p2_a0
2518       , p2_a1
2519       , p2_a2
2520       , p2_a3
2521       , p2_a4
2522       , p2_a5
2523       , p2_a6
2524       , p2_a7
2525       , p2_a8
2526       , p2_a9
2527       , p2_a10
2528       , p2_a11
2529       , p2_a12
2530       , p2_a13
2531       , p2_a14
2532       , p2_a15
2533       , p2_a16
2534       , p2_a17
2535       , p2_a18
2536       , p2_a19
2537       , p2_a20
2538       , p2_a21
2539       , p2_a22
2540       , p2_a23
2541       , p2_a24
2542       , p2_a25
2543       , p2_a26
2544       );
2545   end;
2546 
2547   procedure runopenprojection(p_init_msg_list  VARCHAR2
2548     , p_loan_id  NUMBER
2549     , p_based_on_terms  VARCHAR2
2550     , p3_a0 out nocopy JTF_NUMBER_TABLE
2551     , p3_a1 out nocopy JTF_DATE_TABLE
2552     , p3_a2 out nocopy JTF_DATE_TABLE
2553     , p3_a3 out nocopy JTF_DATE_TABLE
2554     , p3_a4 out nocopy JTF_NUMBER_TABLE
2555     , p3_a5 out nocopy JTF_NUMBER_TABLE
2556     , p3_a6 out nocopy JTF_NUMBER_TABLE
2557     , p3_a7 out nocopy JTF_NUMBER_TABLE
2558     , p3_a8 out nocopy JTF_NUMBER_TABLE
2559     , p3_a9 out nocopy JTF_NUMBER_TABLE
2560     , p3_a10 out nocopy JTF_NUMBER_TABLE
2561     , p3_a11 out nocopy JTF_NUMBER_TABLE
2562     , p3_a12 out nocopy JTF_NUMBER_TABLE
2563     , p3_a13 out nocopy JTF_NUMBER_TABLE
2564     , p3_a14 out nocopy JTF_NUMBER_TABLE
2565     , p3_a15 out nocopy JTF_NUMBER_TABLE
2566     , p3_a16 out nocopy JTF_NUMBER_TABLE
2567     , p3_a17 out nocopy JTF_NUMBER_TABLE
2568     , p3_a18 out nocopy JTF_NUMBER_TABLE
2569     , p3_a19 out nocopy JTF_NUMBER_TABLE
2570     , p3_a20 out nocopy JTF_NUMBER_TABLE
2571     , p3_a21 out nocopy JTF_VARCHAR2_TABLE_100
2572     , p3_a22 out nocopy JTF_VARCHAR2_TABLE_100
2573     , p3_a23 out nocopy JTF_VARCHAR2_TABLE_100
2574     , p3_a24 out nocopy JTF_NUMBER_TABLE
2575     , p3_a25 out nocopy JTF_NUMBER_TABLE
2576     , p3_a26 out nocopy JTF_NUMBER_TABLE
2577     , x_return_status out nocopy  VARCHAR2
2578     , x_msg_count out nocopy  NUMBER
2579     , x_msg_data out nocopy  VARCHAR2
2580   )
2581 
2582   as
2583     ddx_amort_tbl lns_financials.amortization_tbl;
2584     ddindx binary_integer; indx binary_integer;
2585   begin
2586 
2587     -- copy data to the local IN or IN-OUT args, if any
2588 
2589 
2590 
2591 
2592 
2593 
2594 
2595     -- here's the delegated call to the old PL/SQL routine
2596     lns_financials.runopenprojection(p_init_msg_list,
2597       p_loan_id,
2598       p_based_on_terms,
2599       ddx_amort_tbl,
2600       x_return_status,
2601       x_msg_count,
2602       x_msg_data);
2603 
2604     -- copy data back from the local variables to OUT or IN-OUT args, if any
2605 
2606 
2607 
2608     lns_financials_w.rosetta_table_copy_out_p3(ddx_amort_tbl, p3_a0
2609       , p3_a1
2610       , p3_a2
2611       , p3_a3
2612       , p3_a4
2613       , p3_a5
2614       , p3_a6
2615       , p3_a7
2616       , p3_a8
2617       , p3_a9
2618       , p3_a10
2619       , p3_a11
2620       , p3_a12
2621       , p3_a13
2622       , p3_a14
2623       , p3_a15
2624       , p3_a16
2625       , p3_a17
2626       , p3_a18
2627       , p3_a19
2628       , p3_a20
2629       , p3_a21
2630       , p3_a22
2631       , p3_a23
2632       , p3_a24
2633       , p3_a25
2634       , p3_a26
2635       );
2636 
2637 
2638 
2639   end;
2640 
2641   procedure runamortization(p_api_version  NUMBER
2642     , p_init_msg_list  VARCHAR2
2643     , p_commit  VARCHAR2
2644     , p_loan_id  NUMBER
2645     , p_based_on_terms  VARCHAR2
2646     , p5_a0 out nocopy JTF_NUMBER_TABLE
2647     , p5_a1 out nocopy JTF_DATE_TABLE
2648     , p5_a2 out nocopy JTF_DATE_TABLE
2649     , p5_a3 out nocopy JTF_DATE_TABLE
2650     , p5_a4 out nocopy JTF_NUMBER_TABLE
2651     , p5_a5 out nocopy JTF_NUMBER_TABLE
2652     , p5_a6 out nocopy JTF_NUMBER_TABLE
2653     , p5_a7 out nocopy JTF_NUMBER_TABLE
2654     , p5_a8 out nocopy JTF_NUMBER_TABLE
2655     , p5_a9 out nocopy JTF_NUMBER_TABLE
2656     , p5_a10 out nocopy JTF_NUMBER_TABLE
2657     , p5_a11 out nocopy JTF_NUMBER_TABLE
2658     , p5_a12 out nocopy JTF_NUMBER_TABLE
2659     , p5_a13 out nocopy JTF_NUMBER_TABLE
2660     , p5_a14 out nocopy JTF_NUMBER_TABLE
2661     , p5_a15 out nocopy JTF_NUMBER_TABLE
2662     , p5_a16 out nocopy JTF_NUMBER_TABLE
2663     , p5_a17 out nocopy JTF_NUMBER_TABLE
2664     , p5_a18 out nocopy JTF_NUMBER_TABLE
2665     , p5_a19 out nocopy JTF_NUMBER_TABLE
2666     , p5_a20 out nocopy JTF_NUMBER_TABLE
2667     , p5_a21 out nocopy JTF_VARCHAR2_TABLE_100
2668     , p5_a22 out nocopy JTF_VARCHAR2_TABLE_100
2669     , p5_a23 out nocopy JTF_VARCHAR2_TABLE_100
2670     , p5_a24 out nocopy JTF_NUMBER_TABLE
2671     , p5_a25 out nocopy JTF_NUMBER_TABLE
2672     , p5_a26 out nocopy JTF_NUMBER_TABLE
2673     , x_return_status out nocopy  VARCHAR2
2674     , x_msg_count out nocopy  NUMBER
2675     , x_msg_data out nocopy  VARCHAR2
2676   )
2677 
2678   as
2679     ddx_amort_tbl lns_financials.amortization_tbl;
2680     ddindx binary_integer; indx binary_integer;
2681   begin
2682 
2683     -- copy data to the local IN or IN-OUT args, if any
2684 
2685 
2686 
2687 
2688 
2689 
2690 
2691 
2692 
2693     -- here's the delegated call to the old PL/SQL routine
2694     lns_financials.runamortization(p_api_version,
2695       p_init_msg_list,
2696       p_commit,
2697       p_loan_id,
2698       p_based_on_terms,
2699       ddx_amort_tbl,
2700       x_return_status,
2701       x_msg_count,
2702       x_msg_data);
2703 
2704     -- copy data back from the local variables to OUT or IN-OUT args, if any
2705 
2706 
2707 
2708 
2709 
2710     lns_financials_w.rosetta_table_copy_out_p3(ddx_amort_tbl, p5_a0
2711       , p5_a1
2712       , p5_a2
2713       , p5_a3
2714       , p5_a4
2715       , p5_a5
2716       , p5_a6
2717       , p5_a7
2718       , p5_a8
2719       , p5_a9
2720       , p5_a10
2721       , p5_a11
2722       , p5_a12
2723       , p5_a13
2724       , p5_a14
2725       , p5_a15
2726       , p5_a16
2727       , p5_a17
2728       , p5_a18
2729       , p5_a19
2730       , p5_a20
2731       , p5_a21
2732       , p5_a22
2733       , p5_a23
2734       , p5_a24
2735       , p5_a25
2736       , p5_a26
2737       );
2738 
2739 
2740 
2741   end;
2742 
2743   procedure getinstallment(p_api_version  NUMBER
2744     , p_init_msg_list  VARCHAR2
2745     , p_commit  VARCHAR2
2746     , p_loan_id  NUMBER
2747     , p_installment_number  NUMBER
2748     , p5_a0 out nocopy  NUMBER
2749     , p5_a1 out nocopy  DATE
2750     , p5_a2 out nocopy  DATE
2751     , p5_a3 out nocopy  DATE
2752     , p5_a4 out nocopy  NUMBER
2753     , p5_a5 out nocopy  NUMBER
2754     , p5_a6 out nocopy  NUMBER
2755     , p5_a7 out nocopy  NUMBER
2756     , p5_a8 out nocopy  NUMBER
2757     , p5_a9 out nocopy  NUMBER
2758     , p5_a10 out nocopy  NUMBER
2759     , p5_a11 out nocopy  NUMBER
2760     , p5_a12 out nocopy  NUMBER
2761     , p5_a13 out nocopy  NUMBER
2762     , p5_a14 out nocopy  NUMBER
2763     , p5_a15 out nocopy  NUMBER
2764     , p5_a16 out nocopy  NUMBER
2765     , p5_a17 out nocopy  NUMBER
2766     , p5_a18 out nocopy  NUMBER
2767     , p5_a19 out nocopy  NUMBER
2768     , p5_a20 out nocopy  NUMBER
2769     , p5_a21 out nocopy  VARCHAR2
2770     , p5_a22 out nocopy  VARCHAR2
2771     , p5_a23 out nocopy  VARCHAR2
2772     , p5_a24 out nocopy  NUMBER
2773     , p5_a25 out nocopy  NUMBER
2774     , p5_a26 out nocopy  NUMBER
2775     , p6_a0 out nocopy JTF_NUMBER_TABLE
2776     , p6_a1 out nocopy JTF_VARCHAR2_TABLE_100
2777     , p6_a2 out nocopy JTF_NUMBER_TABLE
2778     , p6_a3 out nocopy JTF_NUMBER_TABLE
2779     , p6_a4 out nocopy JTF_VARCHAR2_TABLE_300
2780     , p6_a5 out nocopy JTF_NUMBER_TABLE
2781     , p6_a6 out nocopy JTF_VARCHAR2_TABLE_100
2782     , p6_a7 out nocopy JTF_NUMBER_TABLE
2783     , p6_a8 out nocopy JTF_VARCHAR2_TABLE_100
2784     , p6_a9 out nocopy JTF_VARCHAR2_TABLE_100
2785     , x_return_status out nocopy  VARCHAR2
2786     , x_msg_count out nocopy  NUMBER
2787     , x_msg_data out nocopy  VARCHAR2
2788   )
2789 
2790   as
2791     ddx_amortization_rec lns_financials.amortization_rec;
2792     ddx_fees_tbl lns_financials.fees_tbl;
2793     ddindx binary_integer; indx binary_integer;
2794   begin
2795 
2796     -- copy data to the local IN or IN-OUT args, if any
2797 
2798 
2799 
2800 
2801 
2802 
2803 
2804 
2805 
2806 
2807     -- here's the delegated call to the old PL/SQL routine
2808     lns_financials.getinstallment(p_api_version,
2809       p_init_msg_list,
2810       p_commit,
2811       p_loan_id,
2812       p_installment_number,
2813       ddx_amortization_rec,
2814       ddx_fees_tbl,
2815       x_return_status,
2816       x_msg_count,
2817       x_msg_data);
2818 
2819     -- copy data back from the local variables to OUT or IN-OUT args, if any
2820 
2821 
2822 
2823 
2824 
2825     p5_a0 := ddx_amortization_rec.installment_number;
2826     p5_a1 := ddx_amortization_rec.due_date;
2827     p5_a2 := ddx_amortization_rec.period_start_date;
2828     p5_a3 := ddx_amortization_rec.period_end_date;
2829     p5_a4 := ddx_amortization_rec.principal_amount;
2830     p5_a5 := ddx_amortization_rec.interest_amount;
2831     p5_a6 := ddx_amortization_rec.normal_int_amount;
2832     p5_a7 := ddx_amortization_rec.add_prin_int_amount;
2833     p5_a8 := ddx_amortization_rec.add_int_int_amount;
2834     p5_a9 := ddx_amortization_rec.penal_int_amount;
2835     p5_a10 := ddx_amortization_rec.fee_amount;
2836     p5_a11 := ddx_amortization_rec.other_amount;
2837     p5_a12 := ddx_amortization_rec.begin_balance;
2838     p5_a13 := ddx_amortization_rec.end_balance;
2839     p5_a14 := ddx_amortization_rec.total;
2840     p5_a15 := ddx_amortization_rec.interest_cumulative;
2841     p5_a16 := ddx_amortization_rec.principal_cumulative;
2842     p5_a17 := ddx_amortization_rec.fees_cumulative;
2843     p5_a18 := ddx_amortization_rec.other_cumulative;
2844     p5_a19 := ddx_amortization_rec.rate_id;
2845     p5_a20 := ddx_amortization_rec.rate_unadj;
2846     p5_a21 := ddx_amortization_rec.rate_change_freq;
2847     p5_a22 := ddx_amortization_rec.source;
2848     p5_a23 := ddx_amortization_rec.grand_total_flag;
2849     p5_a24 := ddx_amortization_rec.unpaid_prin;
2850     p5_a25 := ddx_amortization_rec.unpaid_int;
2851     p5_a26 := ddx_amortization_rec.interest_rate;
2852 
2853     lns_financials_w.rosetta_table_copy_out_p17(ddx_fees_tbl, p6_a0
2854       , p6_a1
2855       , p6_a2
2856       , p6_a3
2857       , p6_a4
2858       , p6_a5
2859       , p6_a6
2860       , p6_a7
2861       , p6_a8
2862       , p6_a9
2863       );
2864 
2865 
2866 
2867   end;
2868 
2869   procedure getopeninstallment(p_init_msg_list  VARCHAR2
2870     , p_loan_id  NUMBER
2871     , p_installment_number  NUMBER
2872     , p3_a0 out nocopy  NUMBER
2873     , p3_a1 out nocopy  DATE
2874     , p3_a2 out nocopy  DATE
2875     , p3_a3 out nocopy  DATE
2876     , p3_a4 out nocopy  NUMBER
2877     , p3_a5 out nocopy  NUMBER
2878     , p3_a6 out nocopy  NUMBER
2879     , p3_a7 out nocopy  NUMBER
2880     , p3_a8 out nocopy  NUMBER
2881     , p3_a9 out nocopy  NUMBER
2882     , p3_a10 out nocopy  NUMBER
2883     , p3_a11 out nocopy  NUMBER
2884     , p3_a12 out nocopy  NUMBER
2885     , p3_a13 out nocopy  NUMBER
2886     , p3_a14 out nocopy  NUMBER
2887     , p3_a15 out nocopy  NUMBER
2888     , p3_a16 out nocopy  NUMBER
2889     , p3_a17 out nocopy  NUMBER
2890     , p3_a18 out nocopy  NUMBER
2891     , p3_a19 out nocopy  NUMBER
2892     , p3_a20 out nocopy  NUMBER
2893     , p3_a21 out nocopy  VARCHAR2
2894     , p3_a22 out nocopy  VARCHAR2
2895     , p3_a23 out nocopy  VARCHAR2
2896     , p3_a24 out nocopy  NUMBER
2897     , p3_a25 out nocopy  NUMBER
2898     , p3_a26 out nocopy  NUMBER
2899     , p4_a0 out nocopy JTF_NUMBER_TABLE
2900     , p4_a1 out nocopy JTF_VARCHAR2_TABLE_100
2901     , p4_a2 out nocopy JTF_NUMBER_TABLE
2902     , p4_a3 out nocopy JTF_NUMBER_TABLE
2903     , p4_a4 out nocopy JTF_VARCHAR2_TABLE_300
2904     , p4_a5 out nocopy JTF_NUMBER_TABLE
2905     , p4_a6 out nocopy JTF_VARCHAR2_TABLE_100
2906     , p4_a7 out nocopy JTF_NUMBER_TABLE
2907     , p4_a8 out nocopy JTF_VARCHAR2_TABLE_100
2908     , p4_a9 out nocopy JTF_VARCHAR2_TABLE_100
2909     , x_return_status out nocopy  VARCHAR2
2910     , x_msg_count out nocopy  NUMBER
2911     , x_msg_data out nocopy  VARCHAR2
2912   )
2913 
2914   as
2915     ddx_amortization_rec lns_financials.amortization_rec;
2916     ddx_fees_tbl lns_financials.fees_tbl;
2917     ddindx binary_integer; indx binary_integer;
2918   begin
2919 
2920     -- copy data to the local IN or IN-OUT args, if any
2921 
2922 
2923 
2924 
2925 
2926 
2927 
2928 
2929     -- here's the delegated call to the old PL/SQL routine
2930     lns_financials.getopeninstallment(p_init_msg_list,
2931       p_loan_id,
2932       p_installment_number,
2933       ddx_amortization_rec,
2934       ddx_fees_tbl,
2935       x_return_status,
2936       x_msg_count,
2937       x_msg_data);
2938 
2939     -- copy data back from the local variables to OUT or IN-OUT args, if any
2940 
2941 
2942 
2943     p3_a0 := ddx_amortization_rec.installment_number;
2944     p3_a1 := ddx_amortization_rec.due_date;
2945     p3_a2 := ddx_amortization_rec.period_start_date;
2946     p3_a3 := ddx_amortization_rec.period_end_date;
2947     p3_a4 := ddx_amortization_rec.principal_amount;
2948     p3_a5 := ddx_amortization_rec.interest_amount;
2949     p3_a6 := ddx_amortization_rec.normal_int_amount;
2950     p3_a7 := ddx_amortization_rec.add_prin_int_amount;
2951     p3_a8 := ddx_amortization_rec.add_int_int_amount;
2952     p3_a9 := ddx_amortization_rec.penal_int_amount;
2953     p3_a10 := ddx_amortization_rec.fee_amount;
2954     p3_a11 := ddx_amortization_rec.other_amount;
2955     p3_a12 := ddx_amortization_rec.begin_balance;
2956     p3_a13 := ddx_amortization_rec.end_balance;
2957     p3_a14 := ddx_amortization_rec.total;
2958     p3_a15 := ddx_amortization_rec.interest_cumulative;
2959     p3_a16 := ddx_amortization_rec.principal_cumulative;
2960     p3_a17 := ddx_amortization_rec.fees_cumulative;
2961     p3_a18 := ddx_amortization_rec.other_cumulative;
2962     p3_a19 := ddx_amortization_rec.rate_id;
2963     p3_a20 := ddx_amortization_rec.rate_unadj;
2964     p3_a21 := ddx_amortization_rec.rate_change_freq;
2965     p3_a22 := ddx_amortization_rec.source;
2966     p3_a23 := ddx_amortization_rec.grand_total_flag;
2967     p3_a24 := ddx_amortization_rec.unpaid_prin;
2968     p3_a25 := ddx_amortization_rec.unpaid_int;
2969     p3_a26 := ddx_amortization_rec.interest_rate;
2970 
2971     lns_financials_w.rosetta_table_copy_out_p17(ddx_fees_tbl, p4_a0
2972       , p4_a1
2973       , p4_a2
2974       , p4_a3
2975       , p4_a4
2976       , p4_a5
2977       , p4_a6
2978       , p4_a7
2979       , p4_a8
2980       , p4_a9
2981       );
2982 
2983 
2984 
2985   end;
2986 
2987   procedure preprocessinstallment(p_api_version  NUMBER
2988     , p_init_msg_list  VARCHAR2
2989     , p_commit  VARCHAR2
2990     , p_loan_id  NUMBER
2991     , p_installment_number  NUMBER
2992     , p5_a0 out nocopy  NUMBER
2993     , p5_a1 out nocopy  DATE
2994     , p5_a2 out nocopy  DATE
2995     , p5_a3 out nocopy  DATE
2996     , p5_a4 out nocopy  NUMBER
2997     , p5_a5 out nocopy  NUMBER
2998     , p5_a6 out nocopy  NUMBER
2999     , p5_a7 out nocopy  NUMBER
3000     , p5_a8 out nocopy  NUMBER
3001     , p5_a9 out nocopy  NUMBER
3002     , p5_a10 out nocopy  NUMBER
3003     , p5_a11 out nocopy  NUMBER
3004     , p5_a12 out nocopy  NUMBER
3005     , p5_a13 out nocopy  NUMBER
3006     , p5_a14 out nocopy  NUMBER
3007     , p5_a15 out nocopy  NUMBER
3008     , p5_a16 out nocopy  NUMBER
3009     , p5_a17 out nocopy  NUMBER
3010     , p5_a18 out nocopy  NUMBER
3011     , p5_a19 out nocopy  NUMBER
3012     , p5_a20 out nocopy  NUMBER
3013     , p5_a21 out nocopy  VARCHAR2
3014     , p5_a22 out nocopy  VARCHAR2
3015     , p5_a23 out nocopy  VARCHAR2
3016     , p5_a24 out nocopy  NUMBER
3017     , p5_a25 out nocopy  NUMBER
3018     , p5_a26 out nocopy  NUMBER
3019     , x_return_status out nocopy  VARCHAR2
3020     , x_msg_count out nocopy  NUMBER
3021     , x_msg_data out nocopy  VARCHAR2
3022   )
3023 
3024   as
3025     ddx_amortization_rec lns_financials.amortization_rec;
3026     ddindx binary_integer; indx binary_integer;
3027   begin
3028 
3029     -- copy data to the local IN or IN-OUT args, if any
3030 
3031 
3032 
3033 
3034 
3035 
3036 
3037 
3038 
3039     -- here's the delegated call to the old PL/SQL routine
3040     lns_financials.preprocessinstallment(p_api_version,
3041       p_init_msg_list,
3042       p_commit,
3043       p_loan_id,
3044       p_installment_number,
3045       ddx_amortization_rec,
3046       x_return_status,
3047       x_msg_count,
3048       x_msg_data);
3049 
3050     -- copy data back from the local variables to OUT or IN-OUT args, if any
3051 
3052 
3053 
3054 
3055 
3056     p5_a0 := ddx_amortization_rec.installment_number;
3057     p5_a1 := ddx_amortization_rec.due_date;
3058     p5_a2 := ddx_amortization_rec.period_start_date;
3059     p5_a3 := ddx_amortization_rec.period_end_date;
3060     p5_a4 := ddx_amortization_rec.principal_amount;
3061     p5_a5 := ddx_amortization_rec.interest_amount;
3062     p5_a6 := ddx_amortization_rec.normal_int_amount;
3063     p5_a7 := ddx_amortization_rec.add_prin_int_amount;
3064     p5_a8 := ddx_amortization_rec.add_int_int_amount;
3065     p5_a9 := ddx_amortization_rec.penal_int_amount;
3066     p5_a10 := ddx_amortization_rec.fee_amount;
3067     p5_a11 := ddx_amortization_rec.other_amount;
3068     p5_a12 := ddx_amortization_rec.begin_balance;
3069     p5_a13 := ddx_amortization_rec.end_balance;
3070     p5_a14 := ddx_amortization_rec.total;
3071     p5_a15 := ddx_amortization_rec.interest_cumulative;
3072     p5_a16 := ddx_amortization_rec.principal_cumulative;
3073     p5_a17 := ddx_amortization_rec.fees_cumulative;
3074     p5_a18 := ddx_amortization_rec.other_cumulative;
3075     p5_a19 := ddx_amortization_rec.rate_id;
3076     p5_a20 := ddx_amortization_rec.rate_unadj;
3077     p5_a21 := ddx_amortization_rec.rate_change_freq;
3078     p5_a22 := ddx_amortization_rec.source;
3079     p5_a23 := ddx_amortization_rec.grand_total_flag;
3080     p5_a24 := ddx_amortization_rec.unpaid_prin;
3081     p5_a25 := ddx_amortization_rec.unpaid_int;
3082     p5_a26 := ddx_amortization_rec.interest_rate;
3083 
3084 
3085 
3086   end;
3087 
3088   procedure preprocessopeninstallment(p_init_msg_list  VARCHAR2
3089     , p_commit  VARCHAR2
3090     , p_loan_id  NUMBER
3091     , p_installment_number  NUMBER
3092     , p4_a0 out nocopy  NUMBER
3093     , p4_a1 out nocopy  DATE
3094     , p4_a2 out nocopy  DATE
3095     , p4_a3 out nocopy  DATE
3096     , p4_a4 out nocopy  NUMBER
3097     , p4_a5 out nocopy  NUMBER
3098     , p4_a6 out nocopy  NUMBER
3099     , p4_a7 out nocopy  NUMBER
3100     , p4_a8 out nocopy  NUMBER
3101     , p4_a9 out nocopy  NUMBER
3102     , p4_a10 out nocopy  NUMBER
3103     , p4_a11 out nocopy  NUMBER
3104     , p4_a12 out nocopy  NUMBER
3105     , p4_a13 out nocopy  NUMBER
3106     , p4_a14 out nocopy  NUMBER
3107     , p4_a15 out nocopy  NUMBER
3108     , p4_a16 out nocopy  NUMBER
3109     , p4_a17 out nocopy  NUMBER
3110     , p4_a18 out nocopy  NUMBER
3111     , p4_a19 out nocopy  NUMBER
3112     , p4_a20 out nocopy  NUMBER
3113     , p4_a21 out nocopy  VARCHAR2
3114     , p4_a22 out nocopy  VARCHAR2
3115     , p4_a23 out nocopy  VARCHAR2
3116     , p4_a24 out nocopy  NUMBER
3117     , p4_a25 out nocopy  NUMBER
3118     , p4_a26 out nocopy  NUMBER
3119     , x_return_status out nocopy  VARCHAR2
3120     , x_msg_count out nocopy  NUMBER
3121     , x_msg_data out nocopy  VARCHAR2
3122   )
3123 
3124   as
3125     ddx_amortization_rec lns_financials.amortization_rec;
3126     ddindx binary_integer; indx binary_integer;
3127   begin
3128 
3129     -- copy data to the local IN or IN-OUT args, if any
3130 
3131 
3132 
3133 
3134 
3135 
3136 
3137 
3138     -- here's the delegated call to the old PL/SQL routine
3139     lns_financials.preprocessopeninstallment(p_init_msg_list,
3140       p_commit,
3141       p_loan_id,
3142       p_installment_number,
3143       ddx_amortization_rec,
3144       x_return_status,
3145       x_msg_count,
3146       x_msg_data);
3147 
3148     -- copy data back from the local variables to OUT or IN-OUT args, if any
3149 
3150 
3151 
3152 
3153     p4_a0 := ddx_amortization_rec.installment_number;
3154     p4_a1 := ddx_amortization_rec.due_date;
3155     p4_a2 := ddx_amortization_rec.period_start_date;
3156     p4_a3 := ddx_amortization_rec.period_end_date;
3157     p4_a4 := ddx_amortization_rec.principal_amount;
3158     p4_a5 := ddx_amortization_rec.interest_amount;
3159     p4_a6 := ddx_amortization_rec.normal_int_amount;
3160     p4_a7 := ddx_amortization_rec.add_prin_int_amount;
3161     p4_a8 := ddx_amortization_rec.add_int_int_amount;
3162     p4_a9 := ddx_amortization_rec.penal_int_amount;
3163     p4_a10 := ddx_amortization_rec.fee_amount;
3164     p4_a11 := ddx_amortization_rec.other_amount;
3165     p4_a12 := ddx_amortization_rec.begin_balance;
3166     p4_a13 := ddx_amortization_rec.end_balance;
3167     p4_a14 := ddx_amortization_rec.total;
3168     p4_a15 := ddx_amortization_rec.interest_cumulative;
3169     p4_a16 := ddx_amortization_rec.principal_cumulative;
3170     p4_a17 := ddx_amortization_rec.fees_cumulative;
3171     p4_a18 := ddx_amortization_rec.other_cumulative;
3172     p4_a19 := ddx_amortization_rec.rate_id;
3173     p4_a20 := ddx_amortization_rec.rate_unadj;
3174     p4_a21 := ddx_amortization_rec.rate_change_freq;
3175     p4_a22 := ddx_amortization_rec.source;
3176     p4_a23 := ddx_amortization_rec.grand_total_flag;
3177     p4_a24 := ddx_amortization_rec.unpaid_prin;
3178     p4_a25 := ddx_amortization_rec.unpaid_int;
3179     p4_a26 := ddx_amortization_rec.interest_rate;
3180 
3181 
3182 
3183   end;
3184 
3185   function calculateeppayment(p_loan_amount  NUMBER
3186     , p_num_intervals  NUMBER
3187     , p_ending_balance  NUMBER
3188     , p_pay_in_arrears  number
3189   ) return number
3190 
3191   as
3192     ddp_pay_in_arrears boolean;
3193     ddindx binary_integer; indx binary_integer;
3194     ddrosetta_retval number;
3195   begin
3196 
3197     -- copy data to the local IN or IN-OUT args, if any
3198 
3199 
3200 
3201     if p_pay_in_arrears is null
3202       then ddp_pay_in_arrears := null;
3203     elsif p_pay_in_arrears = 0
3204       then ddp_pay_in_arrears := false;
3205     else ddp_pay_in_arrears := true;
3206     end if;
3207 
3208     -- here's the delegated call to the old PL/SQL routine
3209     ddrosetta_retval := lns_financials.calculateeppayment(p_loan_amount,
3210       p_num_intervals,
3211       p_ending_balance,
3212       ddp_pay_in_arrears);
3213 
3214     -- copy data back from the local variables to OUT or IN-OUT args, if any
3215 
3216 
3217 
3218 
3219     return ddrosetta_retval;
3220   end;
3221 
3222   function calculatepayment(p_loan_amount  NUMBER
3223     , p_periodic_rate  NUMBER
3224     , p_num_intervals  NUMBER
3225     , p_ending_balance  NUMBER
3226     , p_pay_in_arrears  number
3227   ) return number
3228 
3229   as
3230     ddp_pay_in_arrears boolean;
3231     ddindx binary_integer; indx binary_integer;
3232     ddrosetta_retval number;
3233   begin
3234 
3235     -- copy data to the local IN or IN-OUT args, if any
3236 
3237 
3238 
3239 
3240     if p_pay_in_arrears is null
3241       then ddp_pay_in_arrears := null;
3242     elsif p_pay_in_arrears = 0
3243       then ddp_pay_in_arrears := false;
3244     else ddp_pay_in_arrears := true;
3245     end if;
3246 
3247     -- here's the delegated call to the old PL/SQL routine
3248     ddrosetta_retval := lns_financials.calculatepayment(p_loan_amount,
3249       p_periodic_rate,
3250       p_num_intervals,
3251       p_ending_balance,
3252       ddp_pay_in_arrears);
3253 
3254     -- copy data back from the local variables to OUT or IN-OUT args, if any
3255 
3256 
3257 
3258 
3259 
3260     return ddrosetta_retval;
3261   end;
3262 
3263 end lns_financials_w;