📄 plggen.tst
字号:
/* Programs to encapsulate keywords */
FUNCTION bracketedval
(text_in IN VARCHAR2,
startval IN VARCHAR2,
endval IN VARCHAR2 := objtagopen) RETURN VARCHAR2
IS
BEGIN
RETURN RTRIM (PLGstr.betwn
(text_in, startval, endval, inclusive=>FALSE, gotoend=>TRUE));
END;
/* 99.2 Reverse to simply see if there is no open bracket to
process. */
FUNCTION no_openobjtag (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN INSTR (text_in, objtagopen) = 0;
END;
FUNCTION is_cgml_start_command (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN (INSTR (c_cgml_start_commands, text_in || ',') > 0);
END;
FUNCTION is_cgml_set_option (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
/* Can always set a packaged variable. */
IF INSTR (text_in, '.') > 0
THEN
RETURN TRUE;
ELSE
RETURN (INSTR (c_cgml_set_options, text_in || ',') > 0);
END IF;
END;
FUNCTION defining_array (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN text_in = c_defarray OR text_in = c_deftabarray;
END;
FUNCTION including (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN text_in = c_INCLUDE OR text_in = c_SPECIAL;
END;
FUNCTION is_special (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN text_in = c_SPECIAL;
END;
FUNCTION including_header (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN text_in = c_header;
END;
FUNCTION iscomment (line_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN LTRIM (line_in) LIKE c_comment;
END;
FUNCTION raising_exception (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN text_in = c_RAISE;
END;
FUNCTION handling_exception (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN text_in = c_HANDLE;
END;
FUNCTION start_if_clause (
text_in IN VARCHAR2, true_start_in IN BOOLEAN) RETURN BOOLEAN
IS
retval BOOLEAN := text_in IN (c_if, c_ifnot);
BEGIN
IF NOT true_start_in
THEN
retval := retval OR text_in IN (c_elsif, c_elsifnot);
END IF;
RETURN retval;
END;
FUNCTION end_if_clause (
text_in IN VARCHAR2, true_start_in IN BOOLEAN) RETURN BOOLEAN
IS
retval BOOLEAN := text_in IN (c_endif, c_end_if, c_endif2);
BEGIN
IF NOT true_start_in
THEN
retval := retval OR
text_in IN (c_else, c_elsif, c_elsifnot, c_elseif, c_elseifnot);
END IF;
RETURN retval;
END;
FUNCTION startsif (
text_in IN VARCHAR2,
true_start_in IN BOOLEAN := FALSE)
RETURN BOOLEAN
IS
BEGIN
RETURN start_if_clause (text_in, true_start_in);
/* 99.2 No longer needed
ELSE
RETURN start_if_clause (
PLGstr.betwn (text_in, objtagopen, objtagclose, inclusive=>FALSE),
true_start_in);
END IF;
*/
END;
FUNCTION endsif (
text_in IN VARCHAR2, true_end_in IN BOOLEAN := FALSE)
RETURN BOOLEAN
IS
BEGIN
RETURN end_if_clause (
text_in,
/* 99.2 Already parsed...
PLGstr.betwn (text_in,
objtagopen, objtagclose, inclusive=>FALSE),
*/
true_end_in);
END;
FUNCTION endsforeach (text_in IN VARCHAR2)
RETURN BOOLEAN
IS
BEGIN
RETURN text_in = c_endforeach OR text_in = c_endforeach2;
END;
FUNCTION endsdefarray (text_in IN VARCHAR2)
RETURN BOOLEAN
IS
BEGIN
RETURN text_in = c_enddefarray OR text_in = c_enddefarray2;
END;
FUNCTION startstotarget (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN text_in = c_TOTEMP OR
text_in = c_TOFILE OR
text_in = c_TOTARGET OR
text_in = c_RTO;
END;
FUNCTION endstotarget (start_in IN VARCHAR2, text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN (
(text_in = c_ENDTOTEMP AND start_in = c_TOTEMP) OR
(text_in = c_ENDTOFILE AND start_in = c_TOFILE) OR
(text_in = c_ENDTOTARGET AND start_in = c_TOTARGET) OR
(text_in = c_ENDTOTEMP2 AND start_in = c_TOTEMP) OR
(text_in = c_ENDTOFILE2 AND start_in = c_TOFILE) OR
(text_in = c_ENDRTO AND start_in = c_RTO) OR
(text_in = c_ENDRTO2 AND start_in = c_RTO) OR
(text_in = c_ENDTOTARGET2 AND start_in = c_TOTARGET)
);
END;
FUNCTION startscleanup (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN text_in = c_cleanup;
END;
FUNCTION endscleanup (start_in IN VARCHAR2, text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN (
(text_in = c_endcleanup AND start_in = c_cleanup) OR
(text_in = c_endcleanup2 AND start_in = c_cleanup)
);
END;
FUNCTION requestscleanup (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN text_in = c_docleanup;
END;
FUNCTION storein (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN text_in = c_STOREIN;
END;
FUNCTION close_storein (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN text_in = c_CLOSE_cmd;
END;
FUNCTION exec_cmd (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN (text_in IN (c_exec, c_execrto));
END;
FUNCTION execrto_cmd (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN text_in = c_execrto;
END;
FUNCTION execfile_cmd (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN text_in = c_execfile;
END;
FUNCTION stop_cmd (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN text_in = c_stop;
END;
FUNCTION settingvar (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN text_in = c_set;
END;
FUNCTION settingalias (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN text_in = c_SETALIAS;
END;
FUNCTION ends_read_ahead
(starttext_in IN VARCHAR2, currtext_in IN VARCHAR2) RETURN BOOLEAN
IS
retval BOOLEAN;
BEGIN
IF debugging
THEN
pl ('ends read ahead start curr ' || starttext_in || '-' || currtext_in);
END IF;
IF starttext_in = c_FOREACH
THEN
retval := endsforeach (currtext_in);
ELSIF starttext_in = c_if
THEN
retval := endsif (currtext_in);
ELSIF starttext_in = c_else
THEN
retval := endsif (currtext_in, TRUE);
ELSIF starttext_in = c_defarray
THEN
retval := endsdefarray (currtext_in);
ELSIF startstotarget (starttext_in)
THEN
retval := endstotarget (starttext_in, currtext_in);
ELSIF startscleanup (starttext_in)
THEN
retval := endscleanup (starttext_in, currtext_in);
ELSE
PLGerr.raise (
PLGerr.unmatched_readahead,
'No [END***] statement found for ' || starttext_in);
END IF;
RETURN retval;
END;
/* Embedded tag functions */
FUNCTION appendloc (text_in IN VARCHAR2) RETURN PLS_INTEGER
IS
BEGIN
RETURN INSTR (text_in, vt_APPEND);
END;
FUNCTION replaceloc (text_in IN VARCHAR2) RETURN PLS_INTEGER
IS
BEGIN
RETURN INSTR (text_in, vt_replace);
END;
FUNCTION appending (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN appendloc (text_in) > 0;
END;
FUNCTION replacetarget (text_in IN VARCHAR2) RETURN BOOLEAN
IS
BEGIN
RETURN replaceloc (text_in) > 0;
END;
/* Array characteristics functions */
FUNCTION nested_loop (lt IN VARCHAR2) RETURN BOOLEAN
IS
retval BOOLEAN;
BEGIN
retval := lt IN
(c_fkycol, c_uindcol, c_fkydesc, c_fkydesccol, c_conscol);
RETURN retval;
END;
FUNCTION offset_loop (lt IN VARCHAR2) RETURN BOOLEAN
IS
retval BOOLEAN;
BEGIN
retval := lt IN (c_arg, c_argsep, c_argfromsep, c_retarg);
RETURN retval;
END;
FUNCTION alias_loop (lt IN VARCHAR2) RETURN BOOLEAN
IS
retval BOOLEAN;
BEGIN
retval := lt IN (c_argfromsep);
RETURN retval;
END;
FUNCTION indirect_loop (lt IN VARCHAR2) RETURN BOOLEAN
/* Not just a pointer to gencol. */
IS
retval BOOLEAN;
BEGIN
retval := lt IN
(c_pkycol, c_fkycol, c_uindcol, c_desccol, c_fkydesccol, c_conscol);
RETURN retval;
END;
FUNCTION redirect_loop (lt IN VARCHAR2) RETURN BOOLEAN
/* Just a pointer to gencol. */
IS
retval BOOLEAN;
BEGIN
retval := lt IN
(c_updcol, c_notnullcol, c_nonpkycol, c_uconscol);
RETURN retval;
END;
FUNCTION outer_loop (looptype IN VARCHAR2) RETURN VARCHAR2
IS
retval PLGadmin.identifier;
BEGIN
IF looptype = c_uindcol
THEN
retval := c_uind;
ELSIF looptype = c_conscol
THEN
retval := c_cons;
ELSIF looptype = c_fkycol
THEN
retval := c_fky;
ELSIF looptype = c_fkydesc
THEN
retval := c_fky;
ELSIF looptype = c_fkydesccol
THEN
retval := c_fkydesc;
END IF;
RETURN retval;
END;
FUNCTION same_as_outer_loop (
innerloop IN VARCHAR2,
outerloop IN VARCHAR2
) RETURN BOOLEAN
IS
retval BOOLEAN := FALSE;
BEGIN
IF innerloop = c_fkydesc AND outerloop = c_fky
THEN
retval := TRUE;
END IF;
RETURN retval;
END;
/* Generation Programs */
FUNCTION globalname (name_in IN VARCHAR2) RETURN VARCHAR2
IS
retval PLGadmin.dbmaxvc2 := LTRIM (name_in);
BEGIN
IF retval LIKE objtagopen || '%'
THEN
retval := PLGstr.betwn (retval, objtagopen, objtagclose, inclusive=>FALSE);
END IF;
IF INSTR (retval, '.') = 0
THEN
retval := 'PLGgenv.genrec.' || retval;
END IF;
RETURN retval;
END;
FUNCTION genrec_ptr (str IN VARCHAR2) RETURN PLS_INTEGER
IS
BEGIN
/* Now look up hash value on qualifier. */
BEGIN
RETURN loop_hash (plghash (str));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -