Cómo: |
Lenguajes disponibles: informes
La función POSITV halla la posición inicial de una subcadena dentro de una cadena más larga. Por ejemplo, la posición inicial de la subcadena DUCT dentro de la cadena PRODUCTION, es 4. Si la subcadena no está dentro de la cadena principal, la función devuelve un valor de 0. Esta función es similar a POSIT; sin embargo, las longitudes de sus parámetros AnV están basadas en las longitudes reales de aquellos parámetros comparados con otros dos parámetros que especifican su tamaño.
POSITV(source_string, upper_limit, substring, sub_limit, output)
donde:
Alfanumérico de tipo An o AnV
Es la cadena de origen que contiene la subcadena cuya posición desea hallar. Puede tratarse de la cadena entre comillas simples, o de un campo o variable que la contenga. Si es un campo en formato AnV, se toma la longitud en bytes almacenada en el campo. Si upper_limit es inferior a la longitud real, la cadena de origen queda truncada por este límite superior.
Número entero
Es un límite de longitud para la cadena de origen.
Alfanumérico de tipo AnV o An
Es la subcadena de la que se desea hallar la longitud. Puede tratarse de la subcadena entre comillas simples ('), o del campo que contiene la cadena. Si es un campo, puede estar en formato An o AnV. Si es un campo de tipo AnV, se toma la longitud en bytes almacenada en el campo. Si sub_limit es inferior a la longitud real, la cadena de origen queda truncada en este límite.
Número entero
El límite de longitud de la subcadena.
Número entero
Es el nombre del campo que contiene el resultado, o el formato del valor de salida puesto entre comillas solas (').
POSITV determina la posición inicial de un artículo final, definido o indefinido, en el título de una película (como ", THE" en SMURFS, THE). Primero, TRIMV elimina los espacios en blanco finales del título para que el artículo se convierta en el patrón final:
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 salida es:
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 |