Comment : |
La fonction MNTGETTOK divise une chaîne de caractères en sous-chaînes, appelés jetons. De façon à utiliser MNTGETTOK, la données doit avoir un caractère spécifique appelé délimiteur, qui est présent dans la chaîne et sépare la chaîne en jetons. 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
Information Builders |