Comment : |
La fonction MNTGETTOK divise une chaîne de caractères en sous-chaînes, appelés jetons. Pour utiliser MNTGETTOK, les données doivent avoir un caractère spécifique appelé délimiteur qui se trouve dans la chaîne et la sépare en jeton. MNTGETTOK renvoie le jeton spécifié par l'argument token_number.
Par exemple, vous pouvez utiliser MNTGETTOK pour extraire les valeurs individuelles d'une liste délimitée par deux points, en désignant les deux points comme délimiteur.
Pour utiliser cette fonction, vous devez importer la bibliothèque de fonctions MNTUWS.
Remarque :
Module Import(mntuws)
MNTGETTOK(infield,"delim",token_number) où :
Alphanumérique
est le champ contenant la chaîne de caractères d'origine ou une chaîne de caractères encadrée par des guillemets simples ou doubles.
Alphanumérique
est le séparateur dans la chaîne parente entouré par des guillemets simples. Si vous spécifiez plus d'un caractère, seul le premier caractère est utilisé. Le séparateur n'est pas inclus dans le jeton.
Entier
est le nombre de jetons à extraire. Si cet argument est positif, les jetons sont comptées de gauche à droite. Si cet argument est négatif, les jetons sont comptées de droite à gauche. Par exemple, -2 extrait le deuxième jeton à partir de la droite. Lorsque l'argument est 0, la fonction renvoie une chaîne d'espaces.
MNTGETTOK extrait les jetons d'une chaîne de caractères de longueur variable SKILLSTRING et stocke le résultat dans la chaîne de caractères de longueur variable TOKENX. Le délimiteur est un espace vide. Le numéro du jeton est basé sur la valeur de la variable de compte i, qui s'incrémente avec chaque transmition dans la boucle d'itération :
MAINTAIN MODULE IMPORT(MNTUWS) SKILLSTRING/A0="Typing Steno Filing Bkkping"; COMPUTE i/i2 = 1; TYPE "Job skills required are:" REPEAT 6 COMPUTE TOKENX/A0=MNTGETTOK(SKILLSTRING, ' ', i ); TYPE "<<TOKENX"; COMPUTE i = i+1; ENDREPEAT END
La sortie est :
Job skills required are: Typing Steno Filing Bkkping
La procédure suivante contre la source de données EMPLOYEE récupère le segment EMPINFO et la première instance de ADDRESS_LN3 pour chaque employé, puis extrait le dernier jeton (code postal) de ADDRESS_LN3 :
MAINTAIN FILE EMPLOYEE MODULE IMPORT(MNTUWS) REPEAT ALL; NEXT EMP_ID INTO ESTACK IF FOCFETCH NE 0 THEN GOTO EXITREPEAT; NEXT ADDRESS_LN3 INTO ASTACK TYPE "<<ESTACK.FIRST_NAME <<ESTACK.LAST_NAME"; TYPE "<<ASTACK.ADDRESS_LN3"; COMPUTE ZIP/A0=MNTGETTOK(ASTACK.ADDRESS_LN3, " ", -1 ); TYPE "ZIP CODE IS: <<ZIP"; TYPE " "; ENDREPEAT END
La sortie est :
ALFRED STEVENS
NEW YORK NY 10001
ZIP CODE IS: 10001
MARY SMITH
NEW YORK NY 10001
ZIP CODE IS: 10001
DIANE JONES
NEW YORK NY 10001
ZIP CODE IS: 10001
RICHARD SMITH
NEW YORK NY 10001
ZIP CODE IS: 10001
JOHN BANNING
FREEPORT NY 11520
ZIP CODE IS: 11520
JOAN IRVING
NEW YORK NY 10001
ZIP CODE IS: 10001
ANTHONY ROMANS
NEW YORK NY 10001
ZIP CODE IS: 10001
JOHN MCCOY
NEW YORK NY 10001
ZIP CODE IS: 10001
ROSEMARIE BLACKWOOD
NEW YORK NY 10001
ZIP CODE IS: 10001
ROGER MCKNIGHT
NEW YORK NY 10001
ZIP CODE IS: 10001
MARY GREENSPAN
NEW YORK NY 10001
ZIP CODE IS: 10001
BARBARA CROSS
NEW YORK NY 10001
ZIP CODE IS: 10001
| WebFOCUS |