2010-12-06 19 views
0

J'utilise généralement BASICTYPE 'P' dans notre boutique mais j'ai eu l'occasion d'utiliser 'U' pour un projet et j'ai remarqué que je ne pouvais pas faire de recherche sur un tableau dynamique délimité par des marques d'attribut.Comment faites-vous un LOCATE dans Unidata avec BASICTYPE 'U' pour @ AM?

En référence aux docs, il est clairement indiqué que dans le type U, ne pas spécifier une expression d'attribut est une erreur de syntaxe. Cela me semble être un énorme oubli.

Comment cela se ferait-il sans avoir recours à une boucle for pour rechercher ces éléments?

+0

Je pense que la question est un peu trompeuse. Le titre donne l'impression que vous cherchez à trouver des marques d'attributs. Le détail de la question est assez clair que vous cherchez à localiser dans un attribut marqué tableau dynamique. –

Répondre

0

Il existe deux formes de la déclaration LOCATE

On prend la forme de situer xxx dans un cadre yyy zzz aaa autre bbb et l'autre Locate (xxx, yyy, zzz) aaa autre bbb

+1

Cela ne semble pas répondre à ma question. Est-ce que la version funtion de LOCATE() n'a pas cette différence BASICTYPE? – slestak

0

En BASICTYPE 'U', vous pouvez utiliser l'instruction FIND à la place.

Dans le manuel:

Syntaxe
FIND expr IN dyn.array[,occur] SETTING f [,v[,s]] {THEN statements | ELSE statements}

description
La commande UniBasic TROUVER détermine la position de l'expression donnée dans un tableau dynamique . FIND renvoie l'attribut, la valeur et la position sous-valeur de la chaîne trouvée. L'expression doit correspondre à l'ensemble de l'élément de tableau pour faire un matc

1

Si votre tableau est délimité par des points d'attributs, il vous suffit de faire votre localisation dans la syntaxe suivante:

LOCATE expression IN array_name SETTING position_var THEN | ELSE ... 

Il est un peu plus compliqué à trouver dans un tableau délimité par une marque de valeur, qui serait: