2011년 7월 8일 금요일

[루틴] 주민번호 체크하는 서버 루틴

* Arg1 형식 : 0123456789012 형식으로 입력
* JUMINCHK Function의 Return Code
* 0 = 정상
* 1 = 길이 오류(13자리 미만)
* 2 = 숫자 오류(0-9외 문자)
* 3 = 날짜 오류(YYMMDD)
* 4 = 체크숫자 오류(Check Digit)
      Ans = ""
* 길이 검사
      Begin Case
         Case LEN(TRIM(Arg1)) = 13
* 숫자 검사[0-9]
* NUM 함수 : 숫자이면 1, 그외는 0 을 Return 함
            Begin Case
               Case (NUM(Substrings(Arg1,1,1)) + NUM(Substrings(Arg1,2,1)) + NUM(Substrings(Arg1,3,1))+ NUM(Substrings(Arg1,4,1)) + NUM(Substrings(Arg1,5,1))+ NUM(Substrings(Arg1,6,1)) + NUM(Substrings(Arg1,7,1))+ NUM(Substrings(Arg1,8,1)) + NUM(Substrings(Arg1,9,1))+ NUM(Substrings(Arg1,10,1)) + NUM(Substrings(Arg1,11,1)) + NUM(Substrings(Arg1,12,1)) + NUM(Substrings(Arg1,13,1))) = 13
* 날짜 검사[YYMMDD]
                  Begin Case
                     Case Substrings(Arg1,3,2) > '12'
                        Ans = "3"
                     Case Substrings(Arg1,3,2) = '00'
                        Ans = "3"
                     Case Substrings(Arg1,5,2) > '31'
                        Ans = "3"
                     Case Substrings(Arg1,5,2) = '00'
                        Ans = "3"
                     Case Substrings(Arg1,3,2) = '02' AND Substrings(Arg1,5,2) > '29'
                        Ans = "3"
* 체크숫자 검사[Check Digit]
                     Case @True
                        Begin Case
                           Case Substrings(Arg1,13,1) = Right(Oconv((11 - Mod((Int(Substrings(Arg1,1,1)) * 2 + Int(Substrings(Arg1,2,1)) * 3 + Int(Substrings(Arg1,3,1)) * 4 + Int(Substrings(Arg1,4,1)) * 5 + Int(Substrings(Arg1,5,1)) * 6 + Int(Substrings(Arg1,6,1)) * 7 + Int(Substrings(Arg1,7,1)) * 8 + Int(Substrings(Arg1,8,1)) * 9 + Int(Substrings(Arg1,9,1)) * 2 + Int(Substrings(Arg1,10,1)) * 3 + Int(Substrings(Arg1,11,1)) * 4 + Int(Substrings(Arg1,12,1)) * 5),11)),"MD0"),1)
                              Ans = "0"
* 체크숫자 검사[Check Digit]에서 오류인 것
                           Case @True
                              Ans = "4"
                        End Case
                  End Case
* 숫자 검사[0-9]에서 오류인 것
               Case @True
                  Ans = "2"
            End Case
* 길이 검사에서 오류인 것
         Case @True
            Ans = "1"
      End Case
      Return(Ans)

댓글 없음:

댓글 쓰기