DIGITAL% PowerBASIC Function |
DIGITAL% function is a predicate 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 Char String for Digital Value 04/28/1997-03/27/2002 ' -------------------------------------------------------------------------- ' Copyright (C) 1997-2002 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. ' Declaration -------------------------------------------------------------- ' DECLARE FUNCTION DIGITAL%(Strng$,Delim$) ' 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$) PUBLIC ' 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-03/27/2002 ' -------------------------------------------------------------------------- $INCLUDE "DIGITAL" DECLARE FUNCTION DIGITAL%(Strng$,Delim$) CLS 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- ") PRINT PRINT "Execution completed - hit [Enter] to continue..."
DIGITAL% Debugging Logout Source program Debugging program |
DIGITAL%(2.0) Check Character String for Digital Value 03-27-2002 19:16 -------------------------------------------------------------------------- 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 Execution completed - hit [Enter] to continue... |
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–2002 by Go to: Davar site entry | Site contents | Site index | Personal Computer | PowerBASIC | Text top |