POSITV: Como Localizar o começo de uma substring de comprimento variável

Como:

Linguagens Disponíveis: Reporting

A função POSITV localiza a posição inicial de uma substring dentro de uma string maior. Por exemplo, a posição inicial da sustring DUCT na string PRODUCTION é quatro. Se a substring não estiver na string pai, a função exibirá o valor 0. Este é similar ao POSIT; no entanto, os comprimentos de seus parâmetros AnV são baseados nos comprimentos reais destes parâmetros em comparação com dois outros que especificam seus tamanhos.


Topo da página

x
Sintaxe: Como Localizar o começo de uma substring de comprimento variável
POSITV(source_string, upper_limit, substring, sub_limit, output)

onde:

source_string

Alfanumérico do tipo An ou AnV

É a string fonte que contém a substring cuja posição você deseja localizar.pode ser a string colocada entre aspas simples (') ou um campo ou variável contendo a string.Se for um campo com o formato AnV, seu comprimento é tirado do comprimento em bytes armazenado no campo. Se o upper_limit for menor do que o comprimento, a source_string será truncada conforme este limite superior.

upper_limit

Inteiro

É um limite do comprimento da string fonte.

substring

Alfanumérico do tipo An ou AnV

É a substring cuja posição você deseja localizar.Esta pode ser a substring entre aspas simples (') ou o campo que contém a string. Se for um campo, pode possuir o formato An ou AnV.Se for um campo do tipo AnV, seu comprimento é tirado do comprimento em bytes armazenado no campo. Se o sub_limit for menor do que o comprimento, a source_string será truncada conforme este limite.

sub_limit

Inteiro

É o limite do comprimento da substring.

saída

Inteiro

É o nome do campo que contém o resultado ou o formato do valor de saída posto entre aspas simples (').



Exemplo: Como Descobrir a Posição Inicial de um padrão de Comprimento Variável

POSITV localiza a posição inicial de um artigo definido ou indefinido à direita no título de um filme (por exemplo ", THE" em SMURFS, THE). Primeiramente, TRIMV remove os espaços em branco à direita do título para que o artigo seja o padrão à direita:

DEFINE FILE MOVIES
  TITLEV/A39V = TRIMV('T',TITLE, 39,' ', 1, TITLEV);
  PSTART/I4 = POSITV(TITLEV,LENV(TITLEV,'I4'), ',', 1,'I4');
  PLEN/I4 = IF PSTART NE 0 THEN LENV(TITLEV,'I4') - PSTART +1
                    ELSE 0;
END
TABLE FILE MOVIES
  PRINT TITLE
   PSTART AS 'Pattern,Start' IN 25
   PLEN AS 'Pattern,Length'
BY CATEGORY  NOPRINT
WHERE PLEN NE 0
END

A saída é:

                         Pattern  Pattern
 TITLE                     Start   Length 
 -----                   -------  -------
 SMURFS, THE                   7        5
 SHAGGY DOG, THE              11        5
 MALTESE FALCON, THE          15        5
 PHILADELPHIA STORY, THE      19        5
 TIN DRUM, THE                 9        5
 FAMILY, THE                   7        5
 CHORUS LINE, A               12        3
 MORNING AFTER, THE           14        5
 BIRDS, THE                    6        5
 BOY AND HIS DOG, A           16        3

Information Builders