====== pears.PhoneUpdate ====== Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace. ===== Original SQL ===== COMMENT TO PRESERVE FORMAT ON PROCEDURE "pears"."PhoneUpdate" IS {create function pears.PhoneUpdate(in Number char(50)) returns char(50) begin declare WorkNum char(50); //// Tidy up the number set WorkNum=replacestr(trim(Number),'-','',0); set WorkNum=replacestr(WorkNum,' ','',0); set WorkNum=replacestr(WorkNum,'(','',0); set WorkNum=replacestr(WorkNum,')','',0); //// Check now all numbers if patindex('%[^0-9]%',WorkNum) <> 0 then return(Number) end if; //// //// Check for London (4 char codes) case "left"(WorkNum,4) when '0171' then set WorkNum='020 7'+substr(WorkNum,5,3)+' '+substr(WorkNum,8,43); return(WorkNum) when '0181' then set WorkNum='020 8'+substr(WorkNum,5,3)+' '+substr(WorkNum,8,43); return(WorkNum) end case ; //// //// Check Martinstown, Carrickmore & Limavady (Possible confusion with Ballymena, Omagh & Londonderry below) case "left"(WorkNum,6) when '012667' then //*Martinstown*// set WorkNum='028 217'+substr(WorkNum,7,1)+' '+substr(WorkNum,8,46); return(WorkNum) when '015047' then //*Limavady*// set WorkNum='028 777'+substr(WorkNum,7,1)+' '+substr(WorkNum,8,46); return(WorkNum) when '016627' then //*Carrickmore*// set WorkNum='028 807'+substr(WorkNum,7,1)+' '+substr(WorkNum,8,46); return(WorkNum) end case ; //// //// Check for other UK Cities (5 char STD codes) case "left"(WorkNum,5) when '01222' then //*Cardiff*// set WorkNum='029 20'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45); return(WorkNum) when '01203' then //*Coventry*// set WorkNum='024 76'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45); return(WorkNum) when '01705' then //*Portsmouth*// set WorkNum='023 92'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45); return(WorkNum) when '01703' then //*Southampton*// set WorkNum='023 80'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45); return(WorkNum) when '01232' then //*Belfast*// set WorkNum='028 90'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45); return(WorkNum) when '01266' then //*Ballymena - check 5 or 6 digit local number*// if length(WorkNum) = 10 then set WorkNum='028 256'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46) else set WorkNum='028 25'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45) end if; return(WorkNum) when '01754' then //*Larne*// set WorkNum='028 28'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45); return(WorkNum) when '01504' then //*Londonderry*// set WorkNum='028 71'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45); return(WorkNum) when '01265' then //*Colraine - check 5 or 6 digit local number*// if length(WorkNum) = 10 then set WorkNum='028 703'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46) else set WorkNum='028 70'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45) end if; return(WorkNum) when '01648' then //*Magherafelt - check 5 or 6 digit local number*// if length(WorkNum) = 10 then set WorkNum='028 796'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46) else set WorkNum='028 79'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45) end if; return(WorkNum) when '01247' then //*Bangor*// set WorkNum='028 91'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45); return(WorkNum) when '01846' then //*Lisburn*// set WorkNum='028 92'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45); return(WorkNum) when '01960' then //*Ballyclare*// set WorkNum='028 93'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45); return(WorkNum) when '01849' then //*Antrim*// set WorkNum='028 94'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45); return(WorkNum) when '01238' then //*Saintfield*// set WorkNum='028 97'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45); return(WorkNum) when '01662' then //*Omagh*// set WorkNum='028 82'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45); return(WorkNum) when '01868' then //*Dungannon*// set WorkNum='028 87'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45); return(WorkNum) when '01396' then //*Downpatrick*// set WorkNum='028 44'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45); return(WorkNum) when '01693' then //*Newry - check 5 or 6 digit local number*// if length(WorkNum) = 10 then set WorkNum='028 302'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46) else set WorkNum='028 30'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45) end if; return(WorkNum) when '01861' then //*Armagh*// set WorkNum='028 37'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45); return(WorkNum) when '01762' then //*Portadown*// set WorkNum='028 38'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45); return(WorkNum) when '01365' then //*Enniskillen*// set WorkNum='028 66'+substr(WorkNum,6,2)+' '+substr(WorkNum,8,45); return(WorkNum) end case ; //// Check for other UK Cities (6 char STD codes) case "left"(WorkNum,6) when '012657' then //*Ballycastle*// set WorkNum='028 207'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46); return(WorkNum) when '012656' then //*Ballymoney*// set WorkNum='028 276'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46); return(WorkNum) when '012665' then //*Kilrea*// set WorkNum='028 295'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46); return(WorkNum) when '016626' then //*Newtonstewart*// set WorkNum='028 816'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46); return(WorkNum) when '016625' then //*Ballygawley*// set WorkNum='028 855'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46); return(WorkNum) when '016487' then //*Cookstown*// set WorkNum='028 867'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46); return(WorkNum) when '013655' then //*Fivemiletown*// set WorkNum='028 895'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46); return(WorkNum) when '018206' then //*Banbridge*// set WorkNum='028 406'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46); return(WorkNum) when '016937' then //*Rostrevor*// set WorkNum='028 417'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46); return(WorkNum) when '012477' then //*Kircubbin*// set WorkNum='028 427'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46); return(WorkNum) when '013967' then //*Newcastle*// set WorkNum='028 437'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46); return(WorkNum) when '013657' then //*Lisnaskea*// set WorkNum='028 677'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46); return(WorkNum) when '013656' then //*Kesh*// set WorkNum='028 686'+substr(WorkNum,6,1)+' '+substr(WorkNum,7,46); return(WorkNum) end case ; //// Check for old style mobile numbers if "left"(WorkNum,4) = '0374' and "left"(WorkNum,5) <> '03745' then set WorkNum='07'+substr(WorkNum,2,3)+' '+substr(WorkNum,5,46); return(WorkNum) end if; if "left"(WorkNum,2) = '04' then set WorkNum='07'+substr(WorkNum,2,3)+' '+substr(WorkNum,5,46); return(WorkNum) end if; if "left"(WorkNum,4) in('0585','0589','0705','0802','0831','0850','0860','0881','0973','0976','0966') then set WorkNum='07'+substr(WorkNum,2,3)+' '+substr(WorkNum,5,46); return(WorkNum) end if; if "left"(WorkNum,5) in('08362','08363','08365','08366','08367') then set WorkNum='07'+substr(WorkNum,2,3)+' '+substr(WorkNum,5,46); return(WorkNum) end if; return(Number) end }