preciso de instrrução que procura texto dentro de variavel, assim: procura ("gilmar", no texto c-texto, a partir da posicao x do c-texto, e retorno onde achou -1ra posicao do c-texto.
Nesse caso você terá que usar duas funções INDEX e SUBSTRING. Exemplo: message index(substring("4Each Forum Progress",7,14),"progress") view-as alert-box.
Implementei em procedure, mas vc pode colocar numa função tb.. DEFINE VARIABLE vTextoAProcurar AS CHARACTER NO-UNDO. DEFINE VARIABLE vTextoCompleto AS CHARACTER NO-UNDO. DEFINE VARIABLE vPosicaoInicial AS INTEGER NO-UNDO. DEFINE VARIABLE vPosicaoEncontrada AS INTEGER NO-UNDO. DEFINE VARIABLE vEncontrou AS LOGICAL NO-UNDO. UPDATE vTextoAProcurar vTextoCompleto vPosicaoInicial WITH 2 COL. RUN buscaTexto(INPUT vTextoAProcurar, /* texto a ser pesquisado */ INPUT vTextoCompleto, /* texto completo onde deve ser procurada a vTextoAProcurar */ INPUT vPosicaoInicial, /* posição onde deve iniciar a busca */ OUTPUT vPosicaoEncontrada, /* posição inicial onde foi encontrada a vTextoAProcurar */ OUTPUT vEncontrou). /* retorna se encontrou ou não a vTextoAProcurar */ DISP vEncontrou vPosicaoEncontrada WITH 2 COL. PROCEDURE buscaTexto: DEFINE INPUT PARAMETER pTextoAProcurar AS CHARACTER NO-UNDO. DEFINE INPUT PARAMETER pTextoCompleto AS CHARACTER NO-UNDO. DEFINE INPUT PARAMETER pPosicaoInicial AS INTEGER NO-UNDO. DEFINE OUTPUT PARAMETER pPosicaoEncontrada AS INTEGER NO-UNDO. DEFINE OUTPUT PARAMETER pEncontrou AS LOGICAL NO-UNDO. IF pPosicaoInicial = 0 THEN ASSIGN pPosicaoInicial = 1. IF SUBSTRING(pTextoCompleto, pPosicaoInicial, -1) MATCHES('*' + pTextoAProcurar + '*') THEN DO: ASSIGN pEncontrou = TRUE /* posição encontrada na substring, somado à posição inicial - 1 (se simplesmente procurar no texto todo pode achar algum antes da posição inicial e se não somar, acha a posição na substring e não no texto todo) */ pPosicaoEncontrada = INDEX(SUBSTRING(pTextoCompleto, pPosicaoInicial, -1), pTextoAProcurar) + pPosicaoInicial - 1. END. END PROCEDURE.