Columns permet de restreindre le nombre de colonnes (ou champs) alimentés dans ou depuis la classe [F] lors des instructions de lecture et d'écriture dans la base de données.
SYNTAXE 1
Columnsclasse [ ( champ [, champ]) ]
SYNTAXE 2
Columns classe With Mask( masque [, masque]) ]
Elément | Description | Restrictions |
classe | Abréviation d'un fichier ouvert | le fichier doit déjà être ouvert |
Champ | nom d'un champ de la table | Aucune. |
masque | Abréviation d'un masque ouvert | le masque doit déjà être ouvert |
# Lecture puis ré-écriture limitées aux 2 champs code et nom du client
Local File BPARTNER [BPR]
# Position du filtre sur le code et nom du client
Columns [BPR](BPRNUM,BPRNAM)
For [BPR]
...
Rewrite [BPR]
Next
# suppression du filtre : toutes les colonnes sont de nouveau disponibles
Columns [BPR]
# Filtre de colonnes sur la classe issue du link
Local File ORDERS [ORD]
Local File ITMMASTER [ITM]
Link [ORD] with [ITM]ITM0=[F:ORD]ITMREF as [ORI]
# Position du filtre sur la réf.article, la dés. article, le n° d'ordre
Columns [ORI]([ITM]ITMREF,[ITM]ITMDES1,[ORD]WIPNUM)
For [ORI]
...
Next
# suppression du filtre : toutes les colonnes sont de nouveau disponibles
Columns [ORI]
# Filtre de colonnes sur la classe issue du link
Local File ORDERS [ORD]
Local File ITMMASTER [ITM]
Link [ORD] with [ITM]ITM0=[F:ORD]ITMREF as [ORI]
# Position du filtre sur la réf.article, la dés. article, et tous les champs de la table [ORD]
Columns [ORI]([ITM]ITMREF,[ITM]ITMDES1,[ORD])
For [ORI]
...
Next
# suppression du filtre : toutes les colonnes sont de nouveau disponibles
Columns [ORI]
Columns permet de restreindre l'accès aux colonnes d'une table préalablement ouverte, lors des instructions de lecture et d'écriture dans la base de données. Ceci permet d'accélérer les accès aux données de cette table.
Columns [abv] sans autre argument permet d' annuler le filtre des colonnes.
Columns s'applique de la même manière :
L'instruction Columns n'est prise en compte que par les instructions For et Rewrite. Les instructions Read et Write continuent de traiter l'ensemble de la classe[F].
La classe [F] continue d'exister pour les variables exclues par l'instruction Columns, mais elles ne sont plus alimentées par l'instruction For.
Si une instruction Columns vient après une autre instruction Columns, elle annule et remplace la précédente.
Pour identifier une colonne, il est possible d'utiliser un evalue. Exemple :
Columns [LNK]([ATB]ZERO,=evalue("[ATB]INTITFIC"))
Pour un champ dimensionné, voici les différentes possibilités d'identification des colonnes :
Sélection d'un poste : Columns [LNK]([ATB]TOTO(5))
Sélection du tableau complet : Columns[LNK]([ATB]TOTO)
Sélection d'une tranche de postes : Columns[LNK]([ATB]TOTO(1..8))
La syntaxe 2 donne la possibilité de préciser un ou plusieurs masques. Dans ce cas, le principe appliqué est le suivant : une colonne est sélectionnée pour une table lorsqu'un champ de même nom est présent dans l'un des masques déclarés.
Il y a un niveau de localité attaché aux fichiers ouverts par Local File. Par contre, il n'y en a pas attaché à l'ordre Columns. Ainsi, si cet ordre apparaît dans un sous programme sur une table précédemment ouverte (et - bien sûr - non réouverte dans le sous-programme) , il sera encore actif au retour dans le traitement appelant.
On peut mettre l'instruction Columns après l'instruction link pour se limiter aux champs utiles et gagner en performance.