DBA Data[Home] [Help]

PACKAGE BODY: APPS.CZ_LC_MGR

Source


1 PACKAGE BODY CZ_LC_MGR AS
2 /*  $Header: czlcmgrb.pls 115.21 2004/05/17 19:46:48 skudravs ship $	*/
3 
4 PROCEDURE get_BATCH_size IS
5 BEGIN
6 SELECT TO_NUMBER(VALUE) INTO BATCH_size FROM CZ_DB_SETTINGS
7 WHERE UPPER(SETTING_ID)='BATCHSIZE';
8 EXCEPTION
9 WHEN NO_DATA_FOUND THEN
10      BATCH_size:=5000;
11 WHEN OTHERS THEN
12      BATCH_size:=5000;
13 END;
14 
15 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
16 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
17 
18 PROCEDURE assess_data IS
19 BEGIN
20 NULL;
21 END;
22 
23 
24 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
25 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
26 
27 PROCEDURE redo_statistics IS
28 BEGIN
29 cz_base_mgr.REDO_STATISTICS('LC');
30 END;
31 
32 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
33 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
34 
35 PROCEDURE triggers_enabled
36 (Switch IN VARCHAR2) IS
37 BEGIN
38 cz_base_mgr.TRIGGERS_ENABLED('LC',Switch);
39 END;
40 
41 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
42 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
43 
44 PROCEDURE constraints_enabled
45 (Switch IN VARCHAR2) IS
46 BEGIN
47 cz_base_mgr.CONSTRAINTS_ENABLED('LC',Switch);
48 END;
49 
50 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
51 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
52 
53 PROCEDURE redo_sequences
54 (RedoStart_Flag IN VARCHAR2,
55  incr           IN INTEGER DEFAULT NULL) IS
56 BEGIN
57 cz_base_mgr.REDO_SEQUENCES('LC',RedoStart_Flag,incr);
58 END;
59 
60 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
61 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
62 
63 PROCEDURE Propogate_DeletedFlag IS
64 BEGIN
65   CZ_BASE_MGR.exec('CZ_LCE_HEADERS','where deleted_flag='''||'0'||''' AND '||
66                  'component_id in(select ps_node_id from CZ_PS_NODES where deleted_flag='''||'1'||''')',
67                  'lce_header_id',FALSE);
68 
69   CZ_BASE_MGR.exec('CZ_LCE_LOAD_SPECS','where deleted_flag='''||'0'||''' AND '||
70                  'lce_header_id in(select lce_header_id from CZ_LCE_HEADERS where deleted_flag='''||'1'||''')',
71                  'lce_header_id','attachment_expl_id','required_expl_id',FALSE);
72 
73   CZ_BASE_MGR.exec('CZ_LCE_TEXTS','where '||
74                  'lce_header_id in(select lce_header_id from CZ_LCE_HEADERS where deleted_flag='''||'1'||''')',
75                  'lce_header_id','seq_nbr',TRUE);
76 END;
77 
78 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
79 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
80 
81 PROCEDURE purge IS
82 BEGIN
83 Propogate_DeletedFlag;
84 cz_base_mgr.PURGE('LC');
85 END;
86 
87 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
88 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
89 
90 PROCEDURE RESET_CLEAR IS
91 BEGIN
92 NULL;
93 END;
94 
95 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
96 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
97 
98 PROCEDURE modified
99 (AS_OF IN OUT NOCOPY DATE) IS
100 BEGIN
101 cz_base_mgr.MODIFIED('LC',AS_OF);
102 END;
103 
104 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
105 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
106 
107 FUNCTION makeOperator(inCode IN NUMBER) RETURN VARCHAR2 IS
108 v_operator_return VARCHAR2(20);
109 BEGIN
110 
111 IF inCode = OPERATOR_LT THEN
112       v_operator_return := '<';
113 ELSIF inCode = OPERATOR_GT THEN
114       v_operator_return := '>';
115 ELSIF inCode = OPERATOR_EQUALS THEN
116       v_operator_return := '=';
117 ELSIF inCode = OPERATOR_NOTEQUALS THEN
118   v_operator_return := '!=';
119 ELSIF inCode = OPERATOR_NOT THEN
120   v_operator_return := '!=';
121 ELSIF inCode = OPERATOR_LE THEN
122   v_operator_return := '<=';
123 ELSIF inCode = OPERATOR_GE THEN
124       v_operator_return := '>=';
125 ELSIF inCode = OPERATOR_ADD THEN
126   v_operator_return := '+';
127 ELSIF inCode = OPERATOR_SUB THEN
128       v_operator_return := '-';
129 ELSIF inCode = OPERATOR_MULT THEN
130   v_operator_return := '*';
131 ELSIF inCode = OPERATOR_DIV THEN
132       v_operator_return := '/';
133 ELSIF inCode = OPERATOR_MIN THEN
134   v_operator_return := 'min';
135 ELSIF inCode = OPERATOR_MAX THEN
136   v_operator_return := 'max';
137 ELSE
138       v_operator_return := null;
139 END IF;
140 RETURN v_operator_return;
141 END;
142 
143 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
144 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
145 
146 
147 PROCEDURE generate_lce_varchar(lce_header_id IN  NUMBER)
148 AS
149 
150 p_lce_header_id   NUMBER;
151 Batch_Counter     INTEGER:=0;
152 
153 CURSOR   header_cursor  IS
154         SELECT lce_header_id,
155                desc_text,
156                                component_id,
157                                gen_version
158         FROM   cz_lce_headers
159         WHERE  Lce_header_id = p_lce_header_id;
160 
161 CURSOR  lines_cursor(p_lce_header_id NUMBER) IS
162                 SELECT  lce_line_id,
163                         int_operand1,
164                     int_operand2,
165                     fp_operand,
166                     operator, name,
167                     prior_line_id,
168                     line_type,
169                     intl_text_id,
170                     int_operand3
171                 FROM    cz_lce_lines
172                 WHERE   lce_header_id = p_lce_header_id
173                     ORDER BY    lce_line_id ;
174 
175 CURSOR operands_cursor(p_lce_header_id NUMBER ) IS
176                 SELECT  lce_line_id,
177                     operand_seq,
178                     operand_type,
179                     name
180                 FROM    cz_lce_operands
181                 WHERE   lce_header_id = p_lce_header_id
182                 ORDER BY    lce_line_id, operand_seq;
183 
184   v_header_cursor   header_cursor%ROWTYPE;
185   v_lines_cursor    lines_cursor%ROWTYPE;
186   v_operands_cursor operands_cursor%ROWTYPE;
187   v_op_type   cz_lce_operands.operand_type%TYPE;
188   v_name      VARCHAR2(255);
189   v_generic_type    CHAR(1);
190   v_line_type     CHAR(1);
191   v_op1       VARCHAR2(255);
192   v_op2       VARCHAR2(255);
193   v_op3       VARCHAR2(255);
194   v_operator    NUMBER;
195   v_right_op    VARCHAR2(255);
196   v_result_op     VARCHAR2(255);
197   v_operator_return   VARCHAR2(3);
198   v_op      VARCHAR2(255);
199   v_buffer    VARCHAR2(2000):=' ';
200   text      VARCHAR2(2000);
201   v_xx_count    NUMBER:= 0;
202   v_buffer_length   NUMBER:=0;
203   counter     NUMBER := 1;
204   init_counter    NUMBER := 1;
205   line_id_found   BOOLEAN:= FALSE;
206   v_seq_no    INTEGER:=0;
207       var_sgn                 VARCHAR2(3);
208   v_prop          VARCHAR2(255);
209       v_withcell_value        VARCHAR2(255);
210 
211   TYPE  t_operandsRecord IS RECORD (
212   lce_line_id   cz_lce_operands.lce_line_id%TYPE,
213   operand_seq   cz_lce_operands.operand_seq%TYPE,
214   operand_type  cz_lce_operands.operand_type%TYPE,
215   name      cz_lce_operands.name%TYPE
216   );
217 
218   TYPE operandsTable IS TABLE OF t_operandsRecord INDEX BY BINARY_INTEGER;
219   TYPE text_field_Table IS TABLE OF cz_lce_texts.lce_text%TYPE INDEX BY BINARY_INTEGER;
220   v_operandsTable   operandsTable;
221   v_text_field_Table  text_field_Table;
222   text_field_counter  NUMBER:=0;
223 
224   BEGIN
225         get_BATCH_size;
226     p_lce_header_id := lce_header_id;
227 
228     OPEN header_cursor;
229     LOOP
230       FETCH header_cursor
231       INTO v_header_cursor ;
232       EXIT WHEN header_cursor%NOTFOUND ;
233     END LOOP;
234     CLOSE header_cursor;
235 
236 
237     OPEN operands_cursor(v_header_cursor.lce_header_id);
238     LOOP
239       FETCH operands_cursor INTO v_operands_cursor;
240       EXIT WHEN operands_cursor%NOTFOUND;
241       v_operandsTable(counter).lce_line_id  := v_operands_cursor.lce_line_id;
242       v_operandsTable(counter).operand_seq  := v_operands_cursor.operand_seq;
243       v_operandsTable(counter).operand_type := v_operands_cursor.operand_type;
244       v_operandsTable(counter).name     := v_operands_cursor.name;
245       counter := counter +1;
246     END LOOP;
247     CLOSE operands_cursor;
248 
249     text_field_counter := text_field_counter + 1;
250     v_text_field_Table(text_field_counter) :='REM Generated LCE file';
251     text_field_counter := text_field_counter + 1;
252           v_text_field_Table(text_field_counter) := ENDOFLINE1;
253     text_field_counter := text_field_counter + 1;
254     v_text_field_Table(text_field_counter) :='REM DO NOT EDIT THIS FILE';
255     text_field_counter := text_field_counter + 1;
256           v_text_field_Table(text_field_counter) := ENDOFLINE1;
257     text_field_counter := text_field_counter + 1;
258     v_text_field_Table(text_field_counter) :='CONTROL NOSPEC';
259     text_field_counter := text_field_counter + 1;
260           v_text_field_Table(text_field_counter) := ENDOFLINE1;
261     text_field_counter := text_field_counter + 1;
262     v_text_field_Table(text_field_counter) :='VERSION 3 3';
263     text_field_counter := text_field_counter + 1;
264           v_text_field_Table(text_field_counter) := ENDOFLINE1;
265           text_field_counter := text_field_counter + 1;
266        v_text_field_Table(text_field_counter):='SETDEFAULTDELTA F';
267     text_field_counter := text_field_counter + 1;
268     v_text_field_Table(text_field_counter) := ENDOFLINE1;
269 
270            text_field_counter := text_field_counter + 1;
271        v_text_field_Table(text_field_counter):='REM -- Component: '||to_char(v_header_cursor.component_id)||ENDOFLINE1;
272     text_field_counter := text_field_counter + 1;
273     v_text_field_Table(text_field_counter) := ENDOFLINE1;
274            text_field_counter := text_field_counter + 1;
275        v_text_field_Table(text_field_counter):='REM -- Description: '||v_header_cursor.desc_text||ENDOFLINE1;
276     text_field_counter := text_field_counter + 1;
277     v_text_field_Table(text_field_counter) := ENDOFLINE1;
278 
279     OPEN lines_cursor(v_header_cursor.lce_header_id);
280     LOOP
281       FETCH lines_cursor  INTO v_lines_cursor;
282       EXIT WHEN lines_cursor%NOTFOUND;
283 
284       IF (v_lines_cursor.line_type = LOGIC_VERB_OBJECT) THEN
285         text_field_counter := text_field_counter + 1;
286             v_text_field_Table(text_field_counter) :='OBJECT '||v_lines_cursor.name ;
287                        IF (v_lines_cursor.int_operand3=1) THEN
288                          v_text_field_Table(text_field_counter):=v_text_field_Table(text_field_counter)||' R';
289                        END IF;
290            LOOP
291           EXIT WHEN (init_counter >=counter);
292           EXIT WHEN(( v_operandsTable(init_counter).lce_line_id > v_lines_cursor.lce_line_id )OR (init_counter =counter));
293           text_field_counter := text_field_counter + 1;
294           v_text_field_Table(text_field_counter) :=' '||v_operandsTable(init_counter).name;
295           init_counter := init_counter + 1;
296         END LOOP;
297         text_field_counter := text_field_counter + 1;
298         v_text_field_Table(text_field_counter) := ENDOFLINE1;
299 
300       ELSIF ( v_lines_cursor.line_type = LOGIC_VERB_TOTAL) THEN
301         text_field_counter := text_field_counter + 1;
302         v_text_field_Table(text_field_counter) :='TOTAL '||v_lines_cursor.name;
303 
304         IF (v_lines_cursor.int_operand2 = 1) THEN
305           text_field_counter := text_field_counter + 1;
306           v_text_field_Table(text_field_counter) :=' R';
307         END IF;
308 
309         IF (v_lines_cursor.int_operand3 <> -1) THEN
310           text_field_counter := text_field_counter + 1;
311           v_text_field_Table(text_field_counter) :=' '||v_lines_cursor.fp_operand;
312         END IF;
313         IF (v_lines_cursor.int_operand1 = 1) THEN
314           text_field_counter := text_field_counter + 1;
315           v_text_field_Table(text_field_counter) :=' D+';
316         END IF;
317 
318         text_field_counter := text_field_counter + 1;
319         v_text_field_Table(text_field_counter):= ENDOFLINE1;
320 
321        ELSIF (v_lines_cursor.line_type = LOGIC_VERB_SG0) THEN
322         text_field_counter := text_field_counter + 1;
323         v_text_field_Table(text_field_counter) :='SGO '||v_lines_cursor.name ;
324         LOOP
325           EXIT WHEN (init_counter >=counter);
326           EXIT WHEN((v_operandsTable(init_counter).lce_line_id > v_lines_cursor.lce_line_id ) OR (init_counter =counter));
327           text_field_counter := text_field_counter + 1;
328           v_text_field_Table(text_field_counter):=' '||v_operandsTable(init_counter).name;
329           init_counter := init_counter + 1;
330         END LOOP;
331         IF ( v_lines_cursor.intl_text_id IS NOT NULL ) THEN
332           text_field_counter := text_field_counter + 1;
333           v_text_field_Table(text_field_counter):= ' ... '||v_lines_cursor.intl_text_id;
334         END IF;
335         text_field_counter := text_field_counter + 1;
336         v_text_field_Table(text_field_counter)  := ENDOFLINE1;
337 
338        ELSIF (v_lines_cursor.line_type = LOGIC_VERB_SG1) THEN
339         text_field_counter := text_field_counter + 1;
340         v_text_field_Table(text_field_counter) :='SG1 '||v_lines_cursor.name;
341 
342         LOOP
343           EXIT WHEN (init_counter >=counter);
344           EXIT WHEN( (v_operandsTable(init_counter).lce_line_id > v_lines_cursor.lce_line_id ) OR (init_counter =counter));
345           text_field_counter := text_field_counter + 1;
346           v_text_field_Table(text_field_counter) :=' '||v_operandsTable(init_counter).name;
347           init_counter := init_counter + 1;
348         END LOOP;
349         IF ( v_lines_cursor.intl_text_id IS NOT NULL ) THEN
350           text_field_counter := text_field_counter + 1;
351           v_text_field_Table(text_field_counter):=' ... '||v_lines_cursor.intl_text_id;
352         END IF;
353         text_field_counter := text_field_counter + 1;
354         v_text_field_Table(text_field_counter)  := ENDOFLINE1;
355 
356        ELSIF (v_lines_cursor.line_type = LOGIC_VERB_SG) THEN
357         text_field_counter := text_field_counter + 1;
358         v_text_field_Table(text_field_counter) :='SG '||v_lines_cursor.name;
359 
360         LOOP
361           EXIT WHEN (init_counter >=counter);
362           EXIT WHEN( (v_operandsTable(init_counter).lce_line_id > v_lines_cursor.lce_line_id ) OR (init_counter =counter));
363           text_field_counter := text_field_counter + 1;
364           v_text_field_Table(text_field_counter) :=' '||v_operandsTable(init_counter).name;
365           init_counter := init_counter + 1;
366         END LOOP;
367         IF ( v_lines_cursor.intl_text_id IS NOT NULL ) THEN
368           text_field_counter := text_field_counter + 1;
369           v_text_field_Table(text_field_counter):=' ... '||v_lines_cursor.intl_text_id;
370         END IF;
371 
372         text_field_counter := text_field_counter + 1;
373         v_text_field_Table(text_field_counter)  := ENDOFLINE1;
374 
375          ELSIF (v_lines_cursor.line_type = LOGIC_VERB_MINMAX) THEN
376          text_field_counter := text_field_counter + 1;
377          v_text_field_Table(text_field_counter) :='MINMAX '||v_lines_cursor.int_operand1||' '||v_lines_cursor.int_operand2;
378         LOOP
379           EXIT WHEN (init_counter >=counter);
380           EXIT WHEN( (v_operandsTable(init_counter).lce_line_id > v_lines_cursor.lce_line_id ) OR (init_counter =counter));
381           text_field_counter := text_field_counter + 1;
382           v_text_field_Table(text_field_counter) :=' '||v_operandsTable(init_counter).name;
383           init_counter := init_counter + 1;
384         END LOOP;
385         IF ( v_lines_cursor.intl_text_id IS NOT NULL ) THEN
386           text_field_counter := text_field_counter + 1;
387           v_text_field_Table(text_field_counter):=' ... '||v_lines_cursor.intl_text_id;
388         END IF;
389         text_field_counter := text_field_counter + 1;
390         v_text_field_Table(text_field_counter)  := ENDOFLINE1;
391 
392         ELSIF (v_lines_cursor.line_type = LOGIC_VERB_COMBO) THEN
393         text_field_counter := text_field_counter + 1;
394         v_text_field_Table(text_field_counter) :='COMBO '||v_lines_cursor.name||' '||v_lines_cursor.int_operand1||' '||v_lines_cursor.int_operand2||' '||v_lines_cursor.int_operand3;
395         LOOP
396           EXIT WHEN (init_counter >=counter);
397           EXIT WHEN( (v_operandsTable(init_counter).lce_line_id > v_lines_cursor.lce_line_id ) OR (init_counter =counter));
398           text_field_counter := text_field_counter + 1;
399           v_text_field_Table(text_field_counter) :=' '||v_operandsTable(init_counter).name;
400           init_counter := init_counter + 1;
401         END LOOP;
402         IF ( v_lines_cursor.intl_text_id IS NOT NULL ) THEN
403           text_field_counter := text_field_counter + 1;
404           v_text_field_Table(text_field_counter):=' ... '||v_lines_cursor.intl_text_id;
405         END IF;
406 
407         text_field_counter := text_field_counter + 1;
408         v_text_field_Table(text_field_counter)  := ENDOFLINE1;
409 
410       ELSIF (v_lines_cursor.line_type = LOGIC_VERB_CI) THEN
411         text_field_counter := text_field_counter + 1;
412         v_text_field_Table(text_field_counter) :='CI '||v_lines_cursor.int_operand1||' '||v_lines_cursor.name||' '||v_lines_cursor.int_operand2;
413         text_field_counter := text_field_counter + 1;
414         v_text_field_Table(text_field_counter)  := ENDOFLINE1;
415 
416       ELSIF (v_lines_cursor.line_type = LOGIC_VERB_CC) THEN
417         text_field_counter := text_field_counter + 1;
418         v_text_field_Table(text_field_counter) :='CC '||v_lines_cursor.int_operand1||' '||v_lines_cursor.int_operand2||' '||v_lines_cursor.int_operand3||' '||v_lines_cursor.name;
419         text_field_counter := text_field_counter + 1;
420         v_text_field_Table(text_field_counter)  := ENDOFLINE1;
421 
422       ELSIF (v_lines_cursor.line_type = LOGIC_VERB_CR) THEN
423         text_field_counter := text_field_counter + 1;
424         v_text_field_Table(text_field_counter) :='CR '||v_lines_cursor.int_operand1;
425         LOOP
426           EXIT WHEN (init_counter >=counter);
427           EXIT WHEN( (v_operandsTable(init_counter).lce_line_id > v_lines_cursor.lce_line_id ) OR (init_counter =counter));
428           text_field_counter := text_field_counter + 1;
429           v_text_field_Table(text_field_counter) :=' '||v_operandsTable(init_counter).name;
430           init_counter := init_counter + 1;
431         END LOOP;
432 
433         IF ( v_lines_cursor.intl_text_id IS NOT NULL ) THEN
434           text_field_counter := text_field_counter + 1;
435           v_text_field_Table(text_field_counter):=' ... '||v_lines_cursor.intl_text_id;
436         END IF;
437         text_field_counter := text_field_counter + 1;
438         v_text_field_Table(text_field_counter)  := ENDOFLINE1;
439 
440       ELSIF (v_lines_cursor.line_type = LOGIC_VERB_COMBO_END) THEN
441         text_field_counter := text_field_counter + 1;
442         v_text_field_Table(text_field_counter) :='COMBO_END';
443         text_field_counter := text_field_counter + 1;
444         v_text_field_Table(text_field_counter)  := ENDOFLINE1;
445 
446 
447       ELSIF (v_lines_cursor.line_type = LOGIC_VERB_GS) THEN
448         IF v_lines_cursor.name IS NULL THEN
449           v_name := '';
450         ELSE
451           v_name := ' '||v_lines_cursor.name;
452         END IF;
453         IF v_lines_cursor.int_operand1 = OPR_REQUIRES THEN
454           v_generic_type := 'R';
455         ELSIF v_lines_cursor.int_operand1 = OPR_IMPLIES THEN
456           v_generic_type := 'I';
457         ELSIF v_lines_cursor.int_operand1 = OPR_EXCLUDES THEN
458           v_generic_type := 'E';
459         ELSIF v_lines_cursor.int_operand1 = OPR_NEGATES THEN
460           v_generic_type := 'N';
461         END IF;
462         text_field_counter := text_field_counter + 1;
463         v_text_field_Table(text_field_counter) := 'GS '||v_generic_type||v_name;
464         IF ( v_lines_cursor.intl_text_id IS NOT NULL ) THEN
465           text_field_counter := text_field_counter + 1;
466           v_text_field_Table(text_field_counter):=' ... '||v_lines_cursor.intl_text_id;
467         END IF;
468         text_field_counter := text_field_counter + 1;
469         v_text_field_Table(text_field_counter)  := ENDOFLINE1;
470 
471       ELSIF (v_lines_cursor.line_type = LOGIC_VERB_GL) THEN
472         IF v_lines_cursor.int_operand1 = OPERATOR_ANYOF THEN
473           v_line_type := 'N';
474         ELSIF v_lines_cursor.int_operand1 = OPERATOR_ALLOF THEN
475           v_line_type := 'L';
476         ELSE
477           v_line_type := NULL;
478         END IF;
479         text_field_counter := text_field_counter + 1;
480         v_text_field_Table(text_field_counter) := 'GL '||v_line_type;
481         LOOP
482           EXIT WHEN (init_counter >=counter);
483           EXIT WHEN( (v_operandsTable(init_counter).lce_line_id > v_lines_cursor.lce_line_id ) OR (init_counter =counter));
484           text_field_counter := text_field_counter + 1;
485           v_text_field_Table(text_field_counter) :=' '||v_operandsTable(init_counter).name;
486           init_counter := init_counter + 1;
487         END LOOP;
488 
489         text_field_counter := text_field_counter + 1;
490         v_text_field_Table(text_field_counter)  := ENDOFLINE1;
491 
492        ELSIF (v_lines_cursor.line_type = LOGIC_VERB_GR) THEN
493         IF v_lines_cursor.int_operand1 = OPERATOR_ANYOF THEN
494           v_line_type := 'N';
495         ELSIF v_lines_cursor.int_operand1 = OPERATOR_ALLOF THEN
496           v_line_type := 'L';
497         ELSE
498           v_line_type := NULL;
499         END IF;
500         text_field_counter := text_field_counter + 1;
501         v_text_field_Table(text_field_counter) := 'GR '||v_line_type;
502 
503         LOOP
504           EXIT WHEN (init_counter >=counter);
505           EXIT WHEN( (v_operandsTable(init_counter).lce_line_id > v_lines_cursor.lce_line_id ) OR (init_counter >=counter));
506           text_field_counter := text_field_counter + 1;
507           v_text_field_Table(text_field_counter) :=' '||v_operandsTable(init_counter).name;
508           init_counter := init_counter + 1;
509         END LOOP;
510 
511         text_field_counter := text_field_counter + 1;
512         v_text_field_Table(text_field_counter)  := ENDOFLINE1;
513 
514        ELSIF (v_lines_cursor.line_type = LOGIC_VERB_CONTRIBUTE) THEN
515 
516         LOOP
517           EXIT WHEN((init_counter >= counter));
518           EXIT WHEN( (v_operandsTable(init_counter).lce_line_id > v_lines_cursor.lce_line_id ) OR (init_counter >=counter));
519           v_op1 := v_operandsTable(init_counter).name;
520           v_op2 := v_operandsTable(init_counter+1).name;
521           v_op3 := v_operandsTable(init_counter+2).name;
522           init_counter := init_counter+3;
523         END LOOP;
524 
525                         v_operator_return:=makeOperator(v_lines_cursor.operator);
526 
527                 IF v_lines_cursor.name IS NULL THEN
528           text_field_counter := text_field_counter + 1;
529           v_text_field_Table(text_field_counter) := 'CONTRIBUTE '||v_op1||' '||v_operator_return||' '||v_op2||' '||v_op3;
530         ELSE
531           text_field_counter := text_field_counter + 1;
532           v_text_field_Table(text_field_counter) := 'CONTRIBUTE '||v_op1||' '||v_operator_return||' '||v_op2||' '||v_op3||' '||v_lines_cursor.name;
533         END IF;
534         IF ( v_lines_cursor.intl_text_id IS NOT NULL ) THEN
535           text_field_counter := text_field_counter + 1;
536           v_text_field_Table(text_field_counter):=' ... '||v_lines_cursor.intl_text_id;
537         END IF;
538 
539         text_field_counter := text_field_counter + 1;
540         v_text_field_Table(text_field_counter)  := ENDOFLINE1;
541 
542       ELSIF (v_lines_cursor.line_type = LOGIC_VERB_WITH) THEN
543 
544         LOOP
545           EXIT WHEN (init_counter >=counter);
546           EXIT WHEN( (v_operandsTable(init_counter).lce_line_id > v_lines_cursor.lce_line_id ) OR (init_counter =counter));
547           text_field_counter := text_field_counter + 1;
548           v_text_field_Table(text_field_counter) :='WITH '||v_lines_cursor.name||' = '||v_operandsTable(init_counter).name;
549           text_field_counter := text_field_counter + 1;
550           v_text_field_Table(text_field_counter)  := ENDOFLINE1;
551           init_counter := init_counter + 1;
552         END LOOP;
553 
554       ELSIF (v_lines_cursor.line_type = LOGIC_VERB_WITHCELL) THEN
555 
556         LOOP
557           EXIT WHEN (init_counter >=counter);
558           EXIT WHEN( (v_operandsTable(init_counter).lce_line_id > v_lines_cursor.lce_line_id ) OR (init_counter =counter));
559           v_prop := v_operandsTable(init_counter).name;
560           v_withcell_value := v_operandsTable(init_counter + 1).name;
561           init_counter := init_counter + 2;
562         END LOOP;
563 
564           text_field_counter := text_field_counter + 1;
565           v_text_field_Table(text_field_counter) := 'WITHCELL '||v_lines_cursor.name||' '||v_prop||' = '||v_withcell_value ;
566           text_field_counter := text_field_counter + 1;
567           v_text_field_Table(text_field_counter)  := ENDOFLINE1;
568 
569 
570       ELSIF (v_lines_cursor.line_type = LOGIC_VERB_COMPARE) THEN
571 
572         LOOP
573           EXIT WHEN (init_counter >=counter);
574           EXIT WHEN( (v_operandsTable(init_counter).lce_line_id > v_lines_cursor.lce_line_id ) OR (init_counter =counter));
575           v_right_op := v_operandsTable(init_counter).name;
576           v_result_op := v_operandsTable(init_counter+1).name;
577           init_counter := init_counter + 2;
578         END LOOP;
579 
580         v_operator_return:=makeOperator(v_lines_cursor.operator);
581 
582         text_field_counter := text_field_counter + 1;
583         v_text_field_Table(text_field_counter) := 'COMPARE '||' '||v_lines_cursor.name||' '||v_operator_return||' '||v_right_op||' '||v_result_op;
584         IF ( v_lines_cursor.intl_text_id IS NOT NULL ) THEN
585           text_field_counter := text_field_counter + 1;
586           v_text_field_Table(text_field_counter):=' ... '||v_lines_cursor.intl_text_id;
587         END IF;
588 
589         text_field_counter := text_field_counter + 1;
590         v_text_field_Table(text_field_counter) := ENDOFLINE1;
591 
592       ELSIF (v_lines_cursor.line_type = LOGIC_VERB_INC) THEN
593         text_field_counter := text_field_counter + 1;
594         v_text_field_Table(text_field_counter) :='INC';
595         LOOP
596           EXIT WHEN (init_counter >=counter);
597           EXIT WHEN( (v_operandsTable(init_counter).lce_line_id > v_lines_cursor.lce_line_id ) OR (init_counter =counter));
598           text_field_counter := text_field_counter + 1;
599           v_text_field_Table(text_field_counter) :=' '||v_operandsTable(init_counter).name;
600           init_counter := init_counter + 1;
601         END LOOP;
602                     v_text_field_Table(text_field_counter) := v_text_field_Table(text_field_counter)||' '||v_lines_cursor.name;
603         IF ( v_lines_cursor.intl_text_id IS NOT NULL ) THEN
604           text_field_counter := text_field_counter + 1;
605           v_text_field_Table(text_field_counter):=' ... '||v_lines_cursor.intl_text_id;
606         END IF;
607 
608         text_field_counter := text_field_counter + 1;
609         v_text_field_Table(text_field_counter)  := ENDOFLINE1;
610       ELSIF (v_lines_cursor.line_type = LOGIC_VERB_TEXT) THEN
611         LOOP
612           EXIT WHEN (init_counter >=counter);
613           EXIT WHEN( (v_operandsTable(init_counter).lce_line_id > v_lines_cursor.lce_line_id ) OR (init_counter =counter));
614           v_op := v_operandsTable(init_counter).name;
615           init_counter := init_counter + 1;
616         END LOOP;
617 
618         IF v_op IS NULL THEN
619           text_field_counter := text_field_counter + 1;
620           v_text_field_Table(text_field_counter) :='TEXT '||v_lines_cursor.name||' ""';
621         ELSE
622           text_field_counter := text_field_counter + 1;
623           v_text_field_Table(text_field_counter) :='TEXT '||v_lines_cursor.name||' "'||v_op||'"';
624         END IF;
625         text_field_counter := text_field_counter + 1;
626         v_text_field_Table(text_field_counter)  := ENDOFLINE1;
627 
628       ELSIF ( v_lines_cursor.line_type = LOGIC_VERB_SGN ) THEN
629                         IF (v_lines_cursor.int_operand3=1) THEN
630                            var_sgn:='R ';
631                         ELSE
632                           var_sgn:='';
633                         END IF;
634         text_field_counter := text_field_counter + 1;
635         v_text_field_Table(text_field_counter) :='SGN '||v_lines_cursor.name||' '||var_sgn||v_lines_cursor.int_operand1||' '||v_lines_cursor.int_operand2;
636         LOOP
637           EXIT WHEN (init_counter >=counter);
638           EXIT WHEN( (v_operandsTable(init_counter).lce_line_id > v_lines_cursor.lce_line_id ) OR (init_counter =counter));
639           text_field_counter := text_field_counter + 1;
640           v_text_field_Table(text_field_counter) :=' '||v_operandsTable(init_counter).name;
641           init_counter := init_counter + 1;
642         END LOOP;
643         IF ( v_lines_cursor.intl_text_id IS NOT NULL ) THEN
644           text_field_counter := text_field_counter + 1;
645           v_text_field_Table(text_field_counter):=' ... '||v_lines_cursor.intl_text_id;
646         END IF;
647         text_field_counter := text_field_counter + 1;
648         v_text_field_Table(text_field_counter)  := ENDOFLINE1;
649 
650       ELSIF (v_lines_cursor.line_type = LOGIC_VERB_SET) THEN
651 
652         LOOP
653           EXIT WHEN (init_counter >=counter);
654           EXIT WHEN( (v_operandsTable(init_counter).lce_line_id > v_lines_cursor.lce_line_id ) OR (init_counter =counter));
655           v_op1 := v_operandsTable(init_counter).name;
656           init_counter := init_counter + 1;
657         END LOOP;
658         text_field_counter := text_field_counter + 1;
659         v_text_field_Table(text_field_counter) :='SET '||v_lines_cursor.name||' '||v_op1;
660         text_field_counter := text_field_counter + 1;
661         v_text_field_Table(text_field_counter)  := ENDOFLINE1;
662 
663       ELSIF (v_lines_cursor.line_type = LOGIC_VERB_BOM) THEN
664 
665         text_field_counter := text_field_counter + 1;
666         v_text_field_Table(text_field_counter) :='BOM '||v_lines_cursor.name||' ';
667 
668         IF  (v_lines_cursor.int_operand3 = 1 ) THEN
669           text_field_counter := text_field_counter + 1;
670           v_text_field_Table(text_field_counter) :='R ';
671         END IF;
672 
673         IF  (v_lines_cursor.operator = 10) THEN
674           text_field_counter := text_field_counter + 1;
675           v_text_field_Table(text_field_counter) :='M NRC';
676         ELSIF  (v_lines_cursor.operator = 11) THEN
677           text_field_counter := text_field_counter + 1;
678           v_text_field_Table(text_field_counter) :='M RC';
679         ELSIF  (v_lines_cursor.operator = 20) THEN
680           text_field_counter := text_field_counter + 1;
681           v_text_field_Table(text_field_counter) :='O NRC';
682         ELSIF  (v_lines_cursor.operator = 21) THEN
683           text_field_counter := text_field_counter + 1;
684           v_text_field_Table(text_field_counter) :='O RC';
685         ELSIF  (v_lines_cursor.operator = 30) THEN
686           text_field_counter := text_field_counter + 1;
687           v_text_field_Table(text_field_counter) :='S NRC';
688         ELSIF  (v_lines_cursor.operator = 31) THEN
689           text_field_counter := text_field_counter + 1;
690           v_text_field_Table(text_field_counter) :='S RC';
691         END IF;
692 
693         text_field_counter := text_field_counter + 1;
694         v_text_field_Table(text_field_counter) := ' '||v_lines_cursor.int_operand1||' '||v_lines_cursor.int_operand2||' ';
695 
696 
697         LOOP
698           EXIT WHEN (init_counter >=counter);
699           EXIT WHEN(( v_operandsTable(init_counter).lce_line_id > v_lines_cursor.lce_line_id )OR (init_counter =counter));
700           text_field_counter := text_field_counter + 1;
701           v_text_field_Table(text_field_counter) := v_operandsTable(init_counter).name||' ';
702           init_counter := init_counter + 1;
703         END LOOP;
704 
705         text_field_counter := text_field_counter + 1;
706         v_text_field_Table(text_field_counter)  := v_lines_cursor.fp_operand||' ';
707 
708         IF ( v_lines_cursor.intl_text_id IS NOT NULL ) THEN
709           text_field_counter := text_field_counter + 1;
710           v_text_field_Table(text_field_counter):='... '||v_lines_cursor.intl_text_id;
711         END IF;
712 
713         text_field_counter := text_field_counter + 1;
714         v_text_field_Table(text_field_counter)  := ENDOFLINE1;
715 
716       ELSIF (v_lines_cursor.line_type = LOGIC_VERB_NOTTRUE) THEN
717 
718         LOOP
719           EXIT WHEN (init_counter >=counter);
720           EXIT WHEN( (v_operandsTable(init_counter).lce_line_id > v_lines_cursor.lce_line_id ) OR (init_counter =counter));
721           v_op := v_operandsTable(init_counter).name;
722           init_counter := init_counter + 1;
723         END LOOP;
724 
725         text_field_counter := text_field_counter + 1;
726         v_text_field_Table(text_field_counter) :='NOTTRUE '||v_lines_cursor.name||' '||v_op;
727         IF ( v_lines_cursor.intl_text_id IS NOT NULL ) THEN
728           text_field_counter := text_field_counter + 1;
729           v_text_field_Table(text_field_counter):=' ... '||v_lines_cursor.intl_text_id;
730         END IF;
731 
732         text_field_counter := text_field_counter + 1;
733         v_text_field_Table(text_field_counter)  := ENDOFLINE1;
734 
735       END IF;
736 
737     END LOOP;
738 
739     text_field_counter := text_field_counter + 1;
740             v_text_field_Table(text_field_counter):='REM -- End Component: '||to_char(v_header_cursor.component_id);
741     text_field_counter := text_field_counter + 1;
742         v_text_field_Table(text_field_counter):= ENDOFLINE1;
743 
744     DELETE FROM cz_lce_texts where lce_header_id = p_lce_header_id;
745     BEGIN
746       SELECT NVL(MAX(seq_nbr),0)
747       INTO v_seq_no
748       FROM cz_lce_texts
749       WHERE lce_header_id = p_lce_header_id ;
750 
751     EXCEPTION
752       WHEN OTHERS THEN
753         v_seq_no:=0;
754     END;
755 
756     v_buffer :='';
757     FOR i  IN 1..text_field_counter LOOP
758       v_buffer_length := NVL(LENGTH(v_buffer),0);
759       IF ((v_buffer_length + NVL(LENGTH(v_text_field_Table(i)),0)) > 2000) THEN
760         v_seq_no := v_seq_no +1;
761         INSERT INTO  cz_lce_texts(LCE_HEADER_ID,SEQ_NBR,LCE_TEXT)
762         values(p_lce_header_id, v_seq_no, v_buffer);
763         v_buffer := v_text_field_Table(i);
764 
765                         IF BATCH_Counter>=BATCH_size THEN
766                            Batch_Counter:=0;
767                            COMMIT;
768                         ELSE
769                            Batch_Counter:=Batch_Counter+1;
770                         END IF;
771 
772       ELSE
773         v_buffer := v_buffer||v_text_field_Table(i);
774       END IF;
775     END LOOP;
776 
777     v_seq_no := v_seq_no +1;
778     INSERT INTO  cz_lce_texts(LCE_HEADER_ID,SEQ_NBR,LCE_TEXT)
779     values(p_lce_header_id, v_seq_no, v_buffer);
780     COMMIT;
781     CLOSE lines_cursor ;
782   EXCEPTION
783     WHEN OTHERS THEN
784       cz_base_mgr.LOG_REPORT('CZ_LC_MGR.cz_generate_lce_varchar','ERROR : '||SQLERRM);
785 
786 END;
787 
788 /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
789 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
790 
791 END;