PARAG : Diviser un texte en petite lignes

Comment :

Langages disponibles : reporting, Maintain

La fonction PARAG divise une chaîne de caractères en sous-chaînes en les marquant avec un délimiteur. Elle scanne un nombre spécifique de caractères depuis le début de la chaîne et remplace le dernier espace dans le groupe scanné avec le délimiteur, créant ainsi une première chaîne, aussi appelée ajoute Il balaye le prochain groupe de caractères de la ligne, à partir d'un délimiteur, et remplace son dernier espace avec un second délimiteur, créant un second jeton. Elle réitère ce processus jusqu'à à la fin de la ligne.

Une fois que tous les jetons ont été marqués par le délimiteur, vous pouvez utiliser la fonction GETTOK pour placer les jetons dans divers champs (voir GETTOK : Extraire une sous-chaîne (Jeton)). Si PARAG ne trouve pas d'espace dans le groupe scanné, elle remplace le premier caractère après du groupe avec le délimiteur. Par conséquent, assurez-vous que tous les groupes de caractères ont au moins un espace. Le nombre de caractères scannés fournit en tant que taille maximum de jeton.

Par exemple, si vous avez un champ appelé sous-titre qui contient une grande quantité de texte contenant des mots séparés par des espaces, vous pouvez couper le champ en sous-chaînes plus ou moins égales en spécifiant une taille de jetons maximale pour diviser le champ. Si le champ a une longueur de 350 caractères, divisez-la en trois sous-chaîne en spécifiant une taille de jeton maximale de 120 caractères. Cette technique permet d'imprimer des lignes de texte dans le paragraphe.

Conseil : si vous divisez les lignes en partie égales, vous pouvez créer plus de lignes substituts que vous ne le souhaitiez. Par exemple, supposons que vous divisez 120 caractères de lignes de texte en deux lignes de 60 caractères au maximum, mais une seule ligne est divisé de façon que la première sous ligne est de 50 caractères et la deuxième est de 55. Cela laisse place à une troisième sous-ligne de 15 caractères. Pour corriger cette situation, insérer un espace (à l'aide de faibles concaténation) au début de la sous-ligne, puis ajoutez celle-ci (à forte concaténation) à la fin de celui dont il est saisi. Remarquez que sous-ligne sera plus longue de 60 caractères.


Haut de page

x
Syntaxe : Répartir le texte en lignes plus petites
PARAG(length, source_string, 'delimiter', max_token_size, output)

où :

length

Entier

est le nombre de caractère dans source_string et output, ou dans un champ contenant la longueur.

source_string

Alphanumérique

est la chaîne à diviser en jetons encadrée par des guillemets simples, ou un champ ou une variable contenant texte.

delimiter

Alphanumérique

est le séparateur entouré par des guillemets simples. Choisissez un caractère qui ne figure pas dans le texte.

max_token_size

Entier

est la limite haute pour la taille de chaque jeton.

output

Alphanumérique

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



Exemple : Division du texte en des lignes plus petites

PARAG divise ADDRESS_LN2 en des lignes plus petites inférieures à dix caractères utilisant une virgule comme séparateur. Le résultat est ensuite stocké dans PARA_ADDR :

TABLE FILE EMPLOYEE
PRINT ADDRESS_LN2 AND COMPUTE
PARA_ADDR/A20 = PARAG(20, ADDRESS_LN2, ',', 10, PARA_ADDR);
BY LAST_NAME
WHERE TYPE EQ 'HSM';
END

La sortie est :

LAST_NAME        ADDRESS_LN2           PARA_ADDR
---------        -----------           ---------
BANNING          APT 4C                APT 4C    ,
CROSS            147-15 NORTHERN BLD   147-15,NORTHERN,BLD
GREENSPAN        13 LINDEN AVE.        13 LINDEN,AVE.
IRVING           123 E 32 ST.          123 E 32,ST.       ,
JONES            235 MURRAY HIL PKWY   235 MURRAY,HIL PKWY
MCKNIGHT         117 HARRISON AVE.     117,HARRISON,AVE.
ROMANS           271 PRESIDENT ST.     271,PRESIDENT,ST.
SMITH            136 E 161 ST.         136 E 161,ST.

WebFOCUS