Pat

pat allows you to check the conformity of a string according to a pattern.

Syntax

   pat(EXPR_STR,EXPR_PAT)
  • EXPR_STR is a string or CLOB expression that contains the string to be tested.
  • EXPR_PAT is a string or CLOB expression that contains the pattern used for the verification.

Examples

   # Does the string MY_STRING contain the word SAGE ?
    If pat(MY_STRING, "*SAGE*")
       # SAGE is contained in the MY_STRING value
    Endif
   # Verify that MY_STRING starts with a letter, followed by exactly 3 characters and a digit
    If pat(MY_STRING, "!???#")<>0
       # pattern verified
    Endif
   # Use a "like" clause on the database
   Local File BPCUSTOMER Where pat(BPCNAM,"*SAGE*")<>0 : # Where BPCNAM like '%SAGE%'
   # If <>0 is not given, the result is the same, but the filter is not transmitted to the database
   # abnd is performed by the engine, which is less efficient
   Local File BPCUSTOMER Where pat(BPCNAM,"*SAGE*") : # X3 engine filter

Description

pat allows you to verify that a string corresponds to a pattern. A pattern is a set of characters including meta characters.

Any character that is not a meta character must correspond to the character found in the string. The meta characters are the following:

  • * represents any number of characters (possibly no character).
  • ? represents exactly one character.
  • # represents a digit.
  • ! represents a letter.

pat returns an Integer value that can be 1 (if the string is conform), or 0 (if the string does not correspond to the pattern).

In a where clause used on File or Filter, the result of the function pat must be followed by =0 or <>0 to send to the database a "like" or a "not like" condition.

Comment

The function format$ can also be used in complex cases to check the validity of a string against a format. The result of the formatting will be a blank string if the format does not work.

For example, if you need to check that a string has three uppercase letters followed by 2 digits, the corresponding test can be written:
  If format$("KA:3A3#",MY_STRING)=space$(6)
    # MY_STRING is not conform to the format
  Endif

Associated errors

Error codeDescription
10At least one of the arguments is not a string.

See also

format$.