Come: |
Lingue disponibili: reporting
La funzione SUBSTV estrae una stringa secondaria da una strinha ed è simile a SUBSTR. Tuttavia, la posizione finale per la stringa viene calcolata dalla posizione iniziale e dalla lunghezza della stringa secondaria. Quindi, sono presenti meno parametri di SUBSTR. Inoltre, la lunghezza effettiva del campo di immissione, se si tratta di un campo AnV, si determina a seconda della lunghezza della stringa secondaria.
SUBSTV(upper_limit, source_string, start, sub_limit, output)
dove:
Valore intero
Limite per la lunghezza della stringa d'origine.
Alfanumerico di tipo An o AnV
Stringa di caratteri che contiene la sottostringa che si desidera estrarre. Si potrebbe trattare della stringa di caratteri racchiusa tra virgolette singole ('), oppure di un campo che contiene la stringa di caratteri. Se si tratta di un campo, è possibile avere il formato An O AnV. Se si tratta di un campo di tipo AnV, la sua lunghezza viene presa dalla lunghezza byte memorizzata nel campo. Se upper_limit è inferiore alla lunghezza, la stringa d'origine è troncata al limite superiore. Il valore della lunghezza finale determinato da questo paragone è indicato come p_length (vedere la descrizione del parametro output per informazioni correlate).
Valore intero
Posizione iniziale della sottostringa nella stringa d'origine. La posizione iniziale è in grado di superare la lunghezza della stringa di origine, che risulta in spazi restituiti.
Valore intero
Lunghezza, in caratteri, della stringa secondaria. Notare che la posizione finale è in grado di superare la lunghezza della stringa di immissione a seconda dei valori forniti per inizio e sub_limit.
Alfanumerico di tipo An o AnV
Campo che contiene il risultato restituito, o il formato del valore di emissione racchiuso tra virgolette singole ('). Questo campo è in grado di essere in formato An o AnV.
Se il formato di emissione è AnV e assumendo che fine sia la posizione finale della stringa secondaria, la lunghezza effettiva, outlen si calcola come segue dai valori per fine, inizio e p_lenght (consultare il parametro source_string per informazioni correlate):
Se fine >p_lenght o fine < inizio, quindi outlen= 0. Altrimenti, outlen = fine - inizio+ 1.
La seguente richiesta estrae un articolo determinativo o indeterminativo finale dal titolo di un film (come ", THE" in "SMURFS, THE"). Prima di tutto la funzione ritaglia gli spazi finali, per far risultare l'articolo come modello finale. Poi, ricerca la posizione iniziale e la lunghezza del modello. Quindi, SUBSTV estrae il modello e TRIMV ritaglia il modello dal titolo:
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;
PATTERN/A20V= SUBSTV(39, TITLEV, PSTART, PLEN, PATTERN);
NEWTIT/A39V = TRIMV('T',TITLEV,39,PATTERN,LENV(PATTERN,'I4'), NEWTIT);
END
TABLE FILE MOVIES
PRINT TITLE
PSTART AS 'Pattern,Start' IN 25
PLEN AS 'Pattern,Length'
NEWTIT AS 'Trimmed,Title' IN 55
BY CATEGORY NOPRINT
WHERE PLEN NE 0
END
L'emissione è:
Pattern Pattern Trimmed TITLE Start Length Title ----- ------ ------- ------- SMURFS, THE 7 5 SMURFS SHAGGY DOG, THE 11 5 SHAGGY DOG MALTESE FALCON, THE 15 5 MALTESE FALCON PHILADELPHIA STORY, THE 19 5 PHILADELPHIA STORY TIN DRUM, THE 9 5 TIN DRUM FAMILY, THE 7 5 FAMILY CHORUS LINE, A 12 3 CHORUS LINE MORNING AFTER, THE 14 5 MORNING AFTER BIRDS, THE 6 5 BIRDS BOY AND HIS DOG, A 16 3 BOY AND HIS DOG
WebFOCUS |