Comment les associations, @NS et @NV travail dans UniData Dictionnaires?
-
22-09-2019 - |
Question
Quelqu'un aurait-il un exemple rapide de la façon dont les Associations, @NS
et @NV
travailler dans UniData?
Je suis en train de travailler sur les associations dans des éléments dans le dictionnaire, mais ne peut pas les obtenir à faire quoi que ce soit.
Par exemple, dans un enregistrement
<1,1> = A
<1,2> = B
<2,1> = Apple
<2,2> = Banana
J'ai créé 3 éléments dans le dictionnaire.LETTRE et de FRUITS, COMBO comme suit
LETTRE:
<1> = D
<2> = 1
<3> =
<3> = Letter
<4> = 6L
<5> = M
<6> = COMBO
FRUIT:
<1> = D
<2> = 1
<3> =
<3> = Letter
<4> = 6L
<5> = M
<6> = COMBO
COMBO:
<1> = PH
<2> = LETTER FRUIT
Faire un LIST LETTER FRUIT
ou LIST COMBO
a pas de différence à quand la LETTRE et les FRUITS n'ont pas une association déclarée en 6.
À ce point, j'ai pensé qu'il pourrait groupe multivalues ensemble lors de la Sélection j'ai donc créé un autre enregistrement en tant que tel:
<1,1> = A
<1,2> = B
<2,1> = Banana
<2,2> = Apple
Faire SELECT MyFile WITH LETTER = “A” and FRUIT = “Apple”
sélectionne les deux enregistrements, qui ne peut pas être non plus.
J'ai ensuite essayé de changer une LETTRE à:
<1> = I
<2> = EXTRACT(@RECORD,1,@NV,1);EXTRACT(FRUIT,1,@NV,1);@1:" (":@2:")" : @NS
<3> =
<3> = Letter
<4> = 6L
<5> = M
<6> = COMBO
En espérant qu'un LIST MyFile LETTER
permettrait de ramener toutes les différentes lettres avec leurs fruits dans les parenthèses.Qui ne fonctionne pas non plus comme maintenant la LETTRE n'a jamais affiché la première à valeurs multiples au lieu de tous.Pour Exemple:
LIST MyFile LETTER 14:05:22 26 FEB 2010 1
MyFile.... LETTER..............
RECORD2 A (Banana)1
RECORD A (Apple)1
2 records listed
Les manuels de ne pas aller plus loin que de dire le mot “association”.Quelqu'un est-il en mesure de clarifier cela pour moi?
La solution
De nombreuses fois, NV NS travaillons uniquement lors de l'utilisation PAR EXP dans votre LISTE ou SÉLECTIONNEZ consolidés.Vous devez utiliser les modificateurs examiner plus précisément à valeurs multiples et SubValues.
QUAND est l'un, et PAR-EXP en est une autre.Il y a d'autres, mais vous ne savez pas ce qu'ils sont sur le haut de ma tête.J'ai surtout l'utilisation des EXP et EXP-DSND.
LIST MyFile BY-EXP LETTER = "A" BY-EXP FRUIT ="Apple" LETTER FRUIT LETTER.COMBO
Pour ramener toutes les combinaisons, vous utilisez le besoin de faire ce qui suit:
LIST MyFile BY-EXP LETTER LETTER FRUIT LETTER.COMBO
Modifier les éléments suivants champ virtuel de la 'LETTRE' pour dire 'LETTRE.COMBO " ou quelque chose le long de ces lignes:
<1> = I
<2> = EXTRACT(@RECORD,1,@NV,1);EXTRACT(FRUIT,1,@NV,1);@1:" (":@2:")" : @NS
<3> =
<3> = Letter
<4> = 6L
<5> = M
<6> = COMBO
Espérons que cela aide.
-Nathan
Autres conseils
Pour répondre en partie à ma propre question:
Uniquement "LORSQUE" est affectée par l'association, pas avec.Si vous activez l'UDT.OPTIONS de 94 et ne
LIST MyFile WHEN LETTER = "A" AND FRUIT="Apple" COMBO
lors de l'utilisation de mon D-définition de Type de LETTRE, je reçois
LIST MyFile WHEN LETTER = "A" AND FRUIT="Apple" LETTER FRUIT 16:06:42 26 FEB 2010 1
MyFile.... LETTER.............. FRUIT...............
RECORD A Apple
1 record listed
Qui est ce que l'on pourrait attendre.
L'utilisation de la clause when vous avez besoin pour être en ECLTYPE U, pas de P.IL serait utile si c'est plus clair, mais bon...