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.
POSITV(source_string, upper_limit, substring, sub_limit, output)
où :
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.
Entier
est la longueur maximale du champ chaîne_source.
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.
Entier
est la longueur maximale de la sous-chaîne.
Entier
est le champ qui contient le résultat, ou le format de la valeur de sortie entre guillemets simples (').
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
Information Builders |