94h UT$WILD find as string in memory (with wildcards)
Input X register - Address of major buffer.
UTW_S0 - Address of minor buffer.
A register - Length of major buffer.
B register - Length of minor buffer.
Output

B register - Position within major buffer of found minor buffer.
Carry is set if not found.

Description

Finds the occurrence of the minor buffer at UTW_S0 within the major buffer at X. Works in the same way as UT$ISBF except that the wild characters '*' and '+' apply.

If found, the return value is the index within the major buffer at which the minor buffer occurs; otherwise the length of the major buffer is returned. The index of the first letter of the major buffer is 0.

For example, if the major buffer contains "APPLYING",
1. "PLYING" occurs at index 2
2. "A++LY" occurs at index 0
3. "P*Y" occurs at index 1

Note the following, where "" is a null string:

MAJOR STRING   MINOR STRING   MATCH
"ABC" "" FALSE
"" "" TRUE
"" "*" TRUE
"" "+" FALSE
Example The following finds and saves the index of MINOR_BUFFER within MAJOR_BUFFER, and then if found, makes the X register point to the found position in MAJOR_BUFFER.
MAJOR_BUFFER:
        .ASCII  "APPLYING"      ; 8-character major buffer

MINOR_BUFFER:
        .ASCII  "P*G"           ; this is at index 1 in MAJOR_BUFFER


        LDX     #MAJOR_BUFFER
        LDD     #MINOR_BUFFER   ; point to minor buffer
        STD     UTW_S0:
        LDD     #0803h          ; A=8, B=3
        OS      UT$WILD
        BCS     NOT_FOUND
FOUND:                          ; here if found
        ABX                     ; X points to found position
Errors - none -