create or replace function overpunch (str_in varchar2) return number is
begin
if nvl(length(translate(str_in,'^}JKLMNOPQR','^')),0) = length(str_in)-1 then
return to_number(substr(str_in,1,length(str_in)-1)||
translate(substr(str_in,-1),'}JKLMNOPQR','0123456789')) * -1;
else
return to_number(substr(str_in,1,length(str_in)-1)||
translate(substr(str_in,-1),'{ABCDEFGHI','0123456789'));
end if;
exception
when others then
raise_application_error(-20000,'"'||str_in||'"'||' contains either an '||
'invalid overpunch character or some other non-numeric character.');
end;
/
Function created.
*********************************************************************************