Localiser le début d'une sous-chaîne de longueur variable

Comment :

Langages disponibles : reporting

La fonction POSIT recherche la position de départ d'une sous-chaîne au sein d'une chaîne de caractères plus grande. Par exemple, la position de départ de la sous-chaîne DUCT dans la chaîne PRODUCTION est quatre. Si la sous-chaîne ne figure pas dans la chaîne parent, la fonction renvoie la valeur 0. Cette fonction est similaire à POSIT ; toutefois, les longueurs de ses paramètres AnV sont basées sur les longueurs actuelles de ces paramètres par rapport à deux autres paramètres qui spécifient leurs tailles.


Haut de page

x
Syntaxe : Rechercher le début d'une sous-chaîne de longueur variable
POSITV(source_string, upper_limit, substring, sub_limit, output)

où :

source_string

Alphanumérique de type An ou AnV

est la chaîne de caractères contenant la sous-chaîne dont la position doit être déterminée. Il peut s'agir de la chaîne encadrée par des guillemets simples, ou un champ ou variable contenant la chaîne source. S'il s'agit d'un champ au format AnV, sa longueur est prise de la longueur en octets du champ, est renvoyée. Si la valeur de limite_supérieure est inférieure à la longueur actuelle, la valeur de chaîne source est tronquée jusqu'à cette limite supérieure.

upper_limit

Entier

est la longueur maximale du champ chaîne_source.

substring

Alphanumérique de type An ou AnV

est la sous-chaîne dont la position est ce que vous voulez trouver. Cela peut être une sous-chaîne entre guillemets simples ('), ou le champ qui contient la chaîne. S'il s'agit d'un champ, il peut être au format An ou AnV. S'il s'agit d'un champ au format AnV, sa longueur, prise de la longueur en octets du champ, est renvoyée. Si la valeur de limite_supérieure est inférieure à la longueur actuelle, la chaîne source est tronquée jusqu'à cette limite.

sub_limit

Entier

est la longueur maximale de la sous-chaîne.

output

Entier

est le champ qui contient le résultat, ou le format de la valeur de sortie entre guillemets simples (').



Exemple : Localisation de la position de début d'un motif de longueur variable

POSITV trouve la position de départ d'un article en fin de ligne précis ou indéfini dans le titre d'un film (comme par exemple ", THE" dans SMURFS, THE). Dans un premier temps TRIMV supprime les espaces vides d'un titre afin que l'article soit le modèle en fin de ligne :

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

La sortie est :

                         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

WebFOCUS