× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



<comments at bottom>

On Mon, 22 Oct 2001, Albino Sousa wrote:
>
> Can someome help me with this: I have a nine digits field (9,0 S), I must
> validate.
> The 3 first positions of that field must be diferent from 0. OTH the remains
> 6 positions can contain a zero, but not in all 6 positions.
> Like this: 234670739 - this is ok
>               034670739 - wrong
>               004670739 - wrong
>               000670739 - wrong
>               234000000 - wrong
> Is there a easy way to handle with this. An array?
>
> A. Sousa

Here's how I would do it, along with some code to demonstrate how
to use it:


     D IsValid         PR             1N
     D   ZonedNum                     9S 0 value

     D TestNum         S              9S 0
     D msg             S             52A

     c                   eval      TestNum = 234670739
     c                   if        IsValid(TestNum)
     c                   eval      msg = %char(TestNum) + ' is valid'
     c                   dsply                   msg
     c                   else
     c                   eval      msg = %char(TestNum) + ' is wrong'
     c                   dsply                   msg
     c                   endif

     c                   eval      TestNum = 034670739
     c                   if        IsValid(TestNum)
     c                   eval      msg = %char(TestNum) + ' is valid'
     c                   dsply                   msg
     c                   else
     c                   eval      msg = %char(TestNum) + ' is wrong'
     c                   dsply                   msg
     c                   endif

     c                   eval      TestNum = 004670739
     c                   if        IsValid(TestNum)
     c                   eval      msg = %char(TestNum) + ' is valid'
     c                   dsply                   msg
     c                   else
     c                   eval      msg = %char(TestNum) + ' is wrong'
     c                   dsply                   msg
     c                   endif

     c                   eval      TestNum = 000670739
     c                   if        IsValid(TestNum)
     c                   eval      msg = %char(TestNum) + ' is valid'
     c                   dsply                   msg
     c                   else
     c                   eval      msg = %char(TestNum) + ' is wrong'
     c                   dsply                   msg
     c                   endif

     c                   eval      TestNum = 234000000
     c                   if        IsValid(TestNum)
     c                   eval      msg = %char(TestNum) + ' is valid'
     c                   dsply                   msg
     c                   else
     c                   eval      msg = %char(TestNum) + ' is wrong'
     c                   dsply                   msg
     c                   endif

     c                   eval      *inlr = *on


      *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      *  Check to see if a field is valid.
      *     field will be valid if:
      *       - There are no zeroes in the 1st 3 digits.
      *     AND The last 6 digits are not all zeroes.
      *
      *  You can pass any numeric field to this procedure, it doesn't
      *  matter if it's zoned, packed, or binary because it's passed
      *  by value.
      *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     P IsValid         B
     D IsValid         PI             1N
     D   InputData                    9S 0 value

     D                 ds
     D CharFld                        9A
     D Zoned                          9S 0 overlay(CharFld:1)

     c                   eval      Zoned = InputData

     c                   if        %subst(CharFld:1:1) = '0'
     c                               or %subst(CharFld:2:1) = '0'
     c                               or %subst(CharFld:3:1) = '0'
     c                               or %subst(CharFld:4:6) = '000000'
     c                   return    *Off
     c                   endif

     c                   return    *On
     P                 E



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.