Comment : |
La fonction SELECTS décode une valeur à partir d'une pile.
target SELECTS (code, result, code, result, ... [ELSE default])
où :
est une expression valide. Il peut s'agir d'un nom de champ ou d'une variable qui se résoud en une cellule unique empilée.
est la valeur que SELECTS recherche. Une fois que la valeur est trouvée, l'expression d'entrée est affecté au résultat correspondant. La virgule entre le code et le résultat est facultative.
est la valeur attribuée lorsque l'expression d'entrée contient le code correspondant.
Valeur à affecter lorsque le code ne figure pas dans la liste des codes. Si la valeur par défaut est omise, un espace ou un zéro est attribué aux codes non correspondants.
Ce qui suit calcule un champ défini par l'utilisateur sur la base des valeurs dans une pile :
COMPUTE Square = Stk(Cnt).Number SELECTS (1 1, 2 4, 3 9);
Parce SELECTS est un opérateur binaire, il peut également être utilisé dans une expression :
COMPUTE Square_Plus = Stk(Cnt).Number SELECTS (1 1, 2 4, 3 9) +1;
L'exemple suivant utilise MASK pour extraire le premier caractère du champ CURR_JOBCODE du champ dans le fichier EMPLOYEE. SELECTS crée ensuite une valeur pour le champ JOB_CATEGORY :
MAINTAIN FILE Employee
Case Top
FOR ALL NEXT EMPINFO.EMP_ID INTO EmpStack;
COMPUTE
DEPX_CODE/A1 = MASK(EmpStack().CURR_JOBCODE,'9$$');
JOB_CATEGORY/A15 = DEPX_CODE SELECTS (A 'ADMINISTRATIVE'
B 'DATA PROCESSING') ;
EndCase
END
La table suivante montre des exemples de valeurs pour CURR_JOBCODE et les valeurs correspondantes pour JOB_CATEGORY :
CURR_JOBCODE JOB_CATEGORY ------------ ------------ A01 ADMINISTRATIVE A07 ADMINISTRATIVE A15 ADMINISTRATIVE A17 ADMINISTRATIVE B02 DATA PROCESSING B03 DATA PROCESSING B04 DATA PROCESSING B14 DATA PROCESSING
Information Builders |