1 PACKAGE BODY HR_AU_BANK_ACCT_VALIDATION AS
2 /* $Header: peauavbk.pkb 120.0.12000000.1 2007/08/17 10:48:26 vamittal noship $ */
3 /*
4 ******************************************************************
5 * *
6 * Copyright (C) 1999 Oracle Corporation Australia Ltd., *
7 * Brisbane, Australia. *
8 * *
9 * All rights reserved. *
10 * *
11 * This material has been provided pursuant to an agreement *
12 * containing restrictions on its use. The material is also *
13 * protected by copyright law. No part of this material may *
14 * be copied or distributed, transmitted or transcribed, in *
15 * any form or by any means, electronic, mechanical, magnetic, *
16 * manual, or otherwise, or disclosed to third parties without *
17 * the express written permission of Oracle Corporation *
18 * Australia Ltd,. *
19 * *
20 ****************************************************************** */
21 /*
22 Name : HR_AU_BANK_ACCT_VALIDATION (BODY)
23
24 Description : This package declares a function to validate
25 AU Bank Account Number.
26
27 Change List
28 -----------
29
30 Version Date Author ER/CR No. Description of Change
31 -------+---------+----------+---------+--------------------------
32 115.0 03-Aug-07 vamittal Created
33 115.1 09-Aug-07 vamittal 6315194 Comment for Ascii Code is added
34 Trace is removed.return_val is initialized with TRUE
35
36 ================================================================= */
37
38 /******************************
39 Ascii Values for characters
40 *******************************
41
42 Characters Ascii Value
43 ------------------------------
44 A-Z 65-90
45 a-z 97-122
46 0-9 48-57
47 <space> 32
48 hyphen 45
49
50 *******************************/
51
52 g_debug boolean;
53
54 FUNCTION VALIDATE_ACC_NUM(acc_num VARCHAR2)
55 RETURN VARCHAR2 AS
56 len INTEGER := 0;
57 i INTEGER;
58 asciivar INTEGER;
59 charvar VARCHAR(30);
60 return_val VARCHAR(30) := 'TRUE';
61 digit_char_count INTEGER := 0;
62 zero_count INTEGER := 0;
63 g_debug boolean;
64 BEGIN
65
66 g_debug := hr_utility.debug_enabled;
67 IF g_debug THEN
68 hr_utility.set_location('Entering FUNCTION VALIDATE_ACC_NUM',1);
69 hr_utility.set_location('In Parameter acc_num '||acc_num,1);
70 END if;
71
72
73 len:= LENGTH(acc_num);
74
75 i := 1;
76
77 WHILE(i < len + 1)
78 LOOP
79 asciivar := ASCII(SUBSTR(acc_num, i, 1));
80 charvar := SUBSTR(acc_num, i, 1);
81
82 IF ((asciivar = 45)
83 OR ((asciivar = 32) AND ((i > 1) AND (i < len)))
84 OR ((asciivar >= 65) AND (asciivar <= 90))
85 OR ((asciivar >= 97) AND (asciivar <= 122))
86 OR ((asciivar >= 48) AND (asciivar <= 57)))
87 THEN
88 IF ( asciivar <> 32 AND asciivar <> 45) /* id character is number of alphabet then increment counter */
89 THEN
90 digit_char_count := digit_char_count + 1;
91 IF (asciivar = 48 ) /* to count number of zeros */
92 THEN
93 zero_count := zero_count + 1;
94 END IF;
95 END IF;
96 ELSE
97 return_val := 'FALSE';
98 exit;
99 END IF;
100 i := i + 1;
101
102 END LOOP;
103 IF ( zero_count = digit_char_count) /* if all character are zeros */
104 THEN
105 return_val := 'FALSE';
106 END IF;
107
108 IF g_debug THEN
109 hr_utility.set_location('Leaving FUNCTION VALIDATE_ACC_NUM',1);
110 hr_utility.set_location('Retutning Value : ' || return_val,1);
111 END if;
112
113 RETURN return_val;
114 END VALIDATE_ACC_NUM;
115
116 END HR_AU_BANK_ACCT_VALIDATION;