|
DIGITAL% PowerBASIC Function |
|
DIGITAL% function is a predicate (logical function evaluating to "true" or "false") that evaluates to "true" (-1), if its first parameter is digital, or to "false" (0), if its first parameters is not digital. Second parameter specifies valid delimiters — set of symbols that are ignored when string is tested for digital value. Function can check for Decimal, Octal, Hexadecimal and Roman digital values. DIGITAL% Source Program Debugging program Debugging logout |
' DIGITAL%(2.0) Check Character String for Digital Value 04/28/1997-01/29/2010
' ------------------------------------------------------------------------------
' Copyright (C) 1997-2010 by Vladimir Veytsel www.davar.net
' Type -------------------------------------------------------------------------
' Function (predicate)
' Description ------------------------------------------------------------------
' DIGITAL% function is a predicate that returns digital characteristic
' of the specified string of possibly delimited digits.
' Parameters -------------------------------------------------------------------
' Strng$ - Character string to be checked for digital value
' Delim$ - Legal delimiters within digital string
' First character of the delimiter parameter may specify the
' type of the digital test to be performed, in which case it
' is considered to be a test type indicator (not a delimiter).
' "D" or "d" - Check for Decimal digits ("0123456789")
' "O" or "o" - Check for Octal digits ("01234567")
' "H" or "h" - Check for Hex digits ("0123456789AaBbCcDdEeFf")
' "R" or "r" - Check for Roman digits ("IiVvXx")
' If the first character of the delimiter parameter is none
' of the above test type characters, it is considered to be
' a delimiter and test is performed for Decimal digits.
' Value ------------------------------------------------------------------------
' IF specified string is either EMPTY or entirely DIGITAL
' (with the exception of specified legal delimiters),
' THEN -1 (true) is returned to the point of function invocation,
' ELSE 0 (false) is returned to the point of function invocation.
' Notes ------------------------------------------------------------------------
' - EMPTY string is considered to be DIGITAL in order to treat uniformly
' the default parameters.
' Roman digital test is formal - it checks that string consists only
' of "IiVvXx" characters plus whatever specified legitimate delimiters.
' Consistency of Roman numbers is NOT checked,
' E.g.: Strings like "IIV" or "XIIII" are considered Roman-digital,
' thought they are clearly not Roman-numeric.
' Examples ---------------------------------------------------------------------
' DIGITAL%("" ,"D" )=-1
' DIGITAL%("" ,".:/")=-1
' DIGITAL%("0123456789","d" )=-1
' DIGITAL%("0123456789",".:/")=-1
' DIGITAL%("0.2.4.6.8" ,"" )= 0
' DIGITAL%("0.2.4.6.8" ,"." )=-1
' DIGITAL%("0.2:4/6.8" ,"" )= 0
' DIGITAL%("0.2:4/6.8" ,".:/")=-1
' DIGITAL%("23456789" ,"O" )= 0
' DIGITAL%("01234567" ,"o" )=-1
' DIGITAL%("AbCdEfGh" ,"H" )= 0
' DIGITAL%("89AbCdEf" ,"h" )=-1
' DIGITAL%("IVX" ,"" )= 0
' DIGITAL%("IVX" ,"R" )=-1
' DIGITAL%("I V X" ,"R" )= 0
' DIGITAL%("i v x" ,"r " )=-1
' DIGITAL%("iivxiiii" ,"r" )=-1
' DIGITAL%(" IVX-12 " ,"R- ")= 0
' Start Function ---------------------------------------------------------------
FUNCTION DIGITAL%(Strng$,Delim$)
' Form and Return Function Value to the Point of Invocation --------------------
SELECT CASE (UCASE$(LEFT$(Delim$,1)))
CASE ("D")
DIGITAL%=(VERIFY(Strng$,MID$(Delim$,2)+"0123456789")=0)
CASE ("O")
DIGITAL%=(VERIFY(Strng$,MID$(Delim$,2)+"01234567")=0)
CASE ("H")
DIGITAL%=(VERIFY(Strng$,MID$(Delim$,2)+"0123456789AaBbCcDdEeFf")=0)
CASE ("R")
DIGITAL%=(VERIFY(Strng$,MID$(Delim$,2)+"IiVvXx")=0)
CASE ELSE
DIGITAL%=(VERIFY(Strng$,Delim$+"0123456789")=0)
END SELECT
' Finish Function --------------------------------------------------------------
END FUNCTION
|
DIGITAL% Debugging Program Source program Debugging logout |
' DIGITAL%(2.0) Check Char String for Digital Value 05/01/1997-01/04/2010
' --------------------------------------------------------------------------
#INCLUDE "DIGITAL"
FUNCTION PBMAIN
PRINT "DIGITAL%(2.0) Check Character String for Digital Value ";DATE$;
PRINT " ";LEFT$(TIME$,5)
PRINT STRING$(74,"-")
PRINT
PRINT "DIGITAL%('' ,'D' )="; _
DIGITAL%("" ,"D" )
PRINT "DIGITAL%('' ,'.:/')="; _
DIGITAL%("" ,".:/")
PRINT "DIGITAL%('0123456789','d' )="; _
DIGITAL%("0123456789","d" )
PRINT "DIGITAL%('0123456789','.:/')="; _
DIGITAL%("0123456789",".:/")
PRINT "DIGITAL%('0.2.4.6.8' ,'' )="; _
DIGITAL%("0.2.4.6.8" ,"" )
PRINT "DIGITAL%('0.2.4.6.8' ,'.' )="; _
DIGITAL%("0.2.4.6.8" ,"." )
PRINT "DIGITAL%('0.2:4/6.8' ,'' )="; _
DIGITAL%("0.2:4/6.8" ,"" )
PRINT "DIGITAL%('0.2:4/6.8' ,'.:/')="; _
DIGITAL%("0.2:4/6.8" ,".:/")
PRINT "DIGITAL%('23456789' ,'O' )="; _
DIGITAL%("23456789" ,"O" )
PRINT "DIGITAL%('01234567' ,'o' )="; _
DIGITAL%("01234567" ,"o" )
PRINT "DIGITAL%('AbCdEfGh' ,'H' )="; _
DIGITAL%("AbCdEfGh" ,"H" )
PRINT "DIGITAL%('89AbCdEf' ,'h' )="; _
DIGITAL%("89AbCdEf" ,"h" )
PRINT "DIGITAL%('IVX' ,'' )="; _
DIGITAL%("IVX" ,"" )
PRINT "DIGITAL%('IVX' ,'R' )="; _
DIGITAL%("IVX" ,"R" )
PRINT "DIGITAL%('I V X' ,'R' )="; _
DIGITAL%("I V X" ,"R" )
PRINT "DIGITAL%('i v x' ,'r ' )="; _
DIGITAL%("i v x" ,"r " )
PRINT "DIGITAL%('iivxiiii' ,'r' )="; _
DIGITAL%("iivxiiii" ,"r" )
PRINT "DIGITAL%(' IVX-12 ' ,'R- ')="; _
DIGITAL%(" IVX-12 " ,"R- ")
END FUNCTION
|
DIGITAL% Debugging Logout Source program Debugging program |
DIGITAL%(2.0) Check Character String for Digital Value 01-29-2010 22:09
--------------------------------------------------------------------------
DIGITAL%('' ,'D' )=-1
DIGITAL%('' ,'.:/')=-1
DIGITAL%('0123456789','d' )=-1
DIGITAL%('0123456789','.:/')=-1
DIGITAL%('0.2.4.6.8' ,'' )= 0
DIGITAL%('0.2.4.6.8' ,'.' )=-1
DIGITAL%('0.2:4/6.8' ,'' )= 0
DIGITAL%('0.2:4/6.8' ,'.:/')=-1
DIGITAL%('23456789' ,'O' )= 0
DIGITAL%('01234567' ,'o' )=-1
DIGITAL%('AbCdEfGh' ,'H' )= 0
DIGITAL%('89AbCdEf' ,'h' )=-1
DIGITAL%('IVX' ,'' )= 0
DIGITAL%('IVX' ,'R' )=-1
DIGITAL%('I V X' ,'R' )= 0
DIGITAL%('i v x' ,'r ' )=-1
DIGITAL%('iivxiiii' ,'r' )=-1
DIGITAL%(' IVX-12 ' ,'R- ')= 0
|
|
View [and save] DIGITAL.BAS text View [and save] ZDIGITAL.BAS text (Use [Back] button or [Alt]+[CL] to return here from the viewed text) Copyright © 1997–2010 by Go to: Davar site entry | Site contents | Site index | Personal Computer | PowerBASIC | Text top |