SUBSTV: Estrazione di una sottostringa di lunghezza variabile

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.


Inizio pagina

x
Sintassi: Come estrarre una sottostringa di lunghezza variabile
SUBSTV(upper_limit, source_string, start, sub_limit, output)

dove:

upper_limit

Valore intero

Limite per la lunghezza della stringa d'origine.

source_string

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).

inizio

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.

sub_limit

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.

emissione

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.



Esempio: Estrazione di una sottostringa di lunghezza variabile

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