3. Structure d'un fichier SCR/AL1
Le mot-clé GLOBAL précède une section définissant une série de paramètres globaux qui prennent effet à partir de leur position dans les sources et jusqu'à la prochaine définition ou jusqu'à la fin du fichier.
Plusieurs sections GLOBAL peuvent être définies dans des sources SCR. La syntaxe d'une telle section est la suivante :
Syntaxe
GLOBAL {
DATE_FORMAT format_defn
| TIME_FORMAT format_defn
| NB_DEC nn
| CLOCK_POS line col
| DATE_POS line col
| MEM_POS line col
| KEY_POS line col
| FLD_MEM YES | NO
| DRW_MEM YES | NO
| OPT_MEM YES | NO
| DEF_OBJ YES | NO
| ONE_OBJ YES | NO
| NAME_MEM YES | NO
| NO_DEF YES | NO
| PAGE_CENTER YES | NO
| PAGE_AUTO YES | NO
| MENU_AUTO YES | NO
| CONFIRM_CREATE YES | NO
| CONFIRM_DELETE YES | NO
| FIX_DEC YES | NO
| DEL_EOF YES | NO
| SYNC YES | NO
| CLOCK_SECS YES | NO
| BOX_1 YES | NO
| IMPORT_REQUIRED Yes | NO
| IMPORT_TODAY YES | No
| BC_AUTO_CREATE YES | No
| MP_AUTO_CREATE YES | No
| MP_LPG_MEM YES | No
| BC_LPG_MEM YES | No
| GE2EQ Yes | NO
| MENU_COLOR color
| PAGE_COLOR color
| FIELD_COLOR color
| PAGE_BOX 0 | 1 | 2 | 3
| PAGE_SHADOW 0 | 1 | 2 | 3
| HELPFILE filename
| TRANS_FILE filename
| USER_NAME "nom"
| APPL_NAME "nom"
| SERIAL_NB "sn"
| LIM_DATE date
| ISI_MEM {Yes | No}
| WIN_VLINE {Yes | No}
| WIN_HLINE {Yes | No}
| WIN_NCP nn
| WIN_FIXED {Yes | No}
| CHECK_BOX_TXT "string"
| CHECK_BOX_CHAR "letter"
| RADIO_TXT "string"
| RADIO_CHAR "letter"
| WIN_SKIP nn
| WIN_NLPFLD nn
| WIN_NLPTXT nn
| WIN_NLPVLINE nn
| WIN_NLPHLINE nn
| WIN_NLPNULL nn
| WIN_ATTR color attr
| WIN_NCPFLD nc ncp
| WIN_NOCOLOR {Yes | No}
}
où
color ::= DEFAULT | REVERSE | UNDERLINE | BOLD | INVISIBLE |
BLINKING | DIM | BLUE | GREEN | CYAN | RED |
MAGENTA | YELLOW | WHITE |BLACK
date ::= yyyymmdd
Les éléments d'une section global peuvent être en nombre quelconque. Si une seule définition doit être donnée, les acollades ne sont pas indispensables.
Mots-clés d'une section GLOBAL
Les mots-clés suivants peuvent apparaître dans une section GLOBAL :
Format par défaut des dates dans tous les champs des PAGES définies après la section GLOBAL courante. Ce format est du type :
"yyyy/mm/dd"
Format par défaut des heures dans tous les champs des PAGES définies après la section GLOBAL courante. Ce format est du type :
"hh:mm:ss"
Nombre de décimales des champs REAL qui suivent cette section GLOBAL.
Position de l'horloge dans l'écran. Si plusieurs définitions de ce mot-clé apparaissent dans différentes sections GLOBAL d'un même programme, seule la dernière est retenue.
Syntaxe
CLOCK_POS line col
Position de la date dans l'écran. Si plusieurs définitions de ce mot-clé apparaissent dans différentes sections GLOBAL d'un même programme, seule la dernière est retenue.
Syntaxe
DATE_POS line col
Position de la mémoire disponible dans l'écran. Si plusieurs définitions de ce mot-clé apparaissent dans différentes sections GLOBAL d'un même programme, seule la dernière est retenue.
Syntaxe
MEM_POS line col
Position du mot INPUT ou WAIT dans l'écran. Si plusieurs définitions de ce mot-clé apparaissent dans différentes sections GLOBAL d'un même programme, seule la dernière est retenue.
Syntaxe
KEY_POS line col
La définition des champs des PAGES peuvent ou non être conservés en mémoire de façon permanente. Par défaut, ce n'est pas le cas.
Plusieurs définitions de ce mot-clé peuvent apparaître dans différentes sections GLOBAL d'un même programme. La plus récente est utilisée pour les PAGES qui suivent.
Syntaxe
FLD_MEM yes | no
La définition des DRAWS des PAGES peuvent ou non être conservés en mémoire de façon permanente. Par défaut, ce n'est pas le cas.
Plusieurs définitions de ce mot-clé peuvent apparaître dans différentes sections GLOBAL d'un même programme. La plus récente est utilisée pour les PAGES qui suivent.
Syntaxe
DRW_MEM yes | no
La définition des options des MENUS peuvent ou non être conservés en mémoire de façon permanente. Par défaut, ce n'est pas le cas.
Plusieurs définitions de ce mot-clé peuvent apparaître dans différentes sections GLOBAL d'un même programme. La plus récente est utilisée pour les MENUS qui suivent.
Syntaxe
OPT_MEM yes | no
Les champs des PAGES et les champs des ISAMS donnent lieu à la génération dans le fichier .c d'un objet de type OBJ. Ce mot-clé permet d'éviter ou de forcer cette génération.
Plusieurs définitions de ce mot-clé peuvent apparaître dans différentes sections GLOBAL d'un même programme. La plus récente est utilisée pour les PAGES et les ISAMS qui suivent.
Syntaxe
DEF_OBJ yes | no
Le compilateur scr4_e génère par défaut plusieurs fichiers .c pour accélérer le processus de compilation. On peut grouper tout le code .c en un seul fichier à l'aide de cette option.
Syntaxe
ONE_OBJ yes | no
Les noms des champs des PAGES sont utilisés en cours de compilation pour permettre d'établir des liens entre les objets. Ils sont ensuite supprimés de la mémoire et ne sont pas rechargés lors de l'exécution du programme. Les noms peuvent être conservés en mémoire à l'aide de cette option. Il est indispensable de le spécifier si la PAGE en question est susceptible d'être utilisée comme page de référence par le fonction PR_listing().
Plusieurs définitions de ce mot-clé peuvent apparaître dans différentes sections GLOBAL d'un même programme. La plus récente est utilisée pour les PAGES qui suivent.
Syntaxe
NAME_OBJ yes | no
Les champs des PAGES et les champs des ISAMS donnent lieu à la génération dans le fichier .h d'un define permettant d'accéder à la valeur directe de l'objet, sans recourir à une fonction. Ce mot-clé permet d'éviter ou de forcer cette génération.
Plusieurs définitions de ce mot-clé peuvent apparaître dans différentes sections GLOBAL d'un même programme. La plus récente est utilisée pour les PAGES et les ISAMS qui suivent.
Syntaxe
NO_OBJ yes | no
Les PAGES ne sont pas centrées par défaut. Ce mot-clé permet de forcer le centrage de toutes les PAGES qui suivent.
Plusieurs définitions de ce mot-clé peuvent apparaître dans différentes sections GLOBAL d'un même programme. La plus récente est utilisée pour les PAGES qui suivent.
Syntaxe
PAGE_CENTER yes | no
Les PAGES sont placées en colonne 0, ligne 0 par défaut. Ce mot-clé permet de forcer le mot-clé AUTO dans toutes les PAGES qui suivent, ce qui placera les PAGES en fonction de la position de l'option du MENU qui l'utilise.
Plusieurs définitions de ce mot-clé peuvent apparaître dans différentes sections GLOBAL d'un même programme. La plus récente est utilisée pour les PAGES qui suivent.
Syntaxe
PAGE_AUTO yes | no
Les MENUS sont placées en colonne 0, ligne 0 par défaut. Ce mot-clé permet de forcer le mot-clé AUTO dans tous les MENUS qui suivent, ce qui placera les MENUS en fonction de la position de l'option du MENU qui l'appelle.
Plusieurs définitions de ce mot-clé peuvent apparaître dans différentes sections GLOBAL d'un même programme. La plus récente est utilisée pour les MENUS qui suivent.
Syntaxe
MENU_AUTO yes | no
Lors de la création d'un record soit via une PAGE (PG_edit_isam), soit via une MPAGE ou SMPAGE (MP_edit_isam), une confirmation est normalement demandée à l'utilisateur. On peut éviter ce comportement en utilisant ce mot-clé.
Syntaxe
CONFIRM_CREATE yes | no
Lors de la destruction d'un record soit via une PAGE (PG_edit_isam), soit via une MPAGE ou SMPAGE (MP_edit_isam), une confirmation est normalement demandée à l'utilisateur. On peut éviter ce comportement en utilisant ce mot-clé.
Syntaxe
CONFIRM_DELETE yes | no
Lors de l'édition d'un champ, si la première touche frappée en entrant dans le champ est un caractère et pas une touche d'édition, le contenu du champ tout entier est remplacé par ce caractère (et les suivants). Lorsque des champs de grandes tailles sont utilisés, ce comportement est parfois sévère. Ce mot-clé permet de choisir le mode d'édition.
Plusieurs définitions de ce mot-clé peuvent apparaître dans différentes sections GLOBAL d'un même programme. La plus récente est utilisée pour les PAGES qui suivent.
Syntaxe
DEL_EOF yes | no
Lors de la mise à jour d'un ISAM, les records nouveaux ou modifiés sont toujours écrits physiquement sur disque pour éviter les problèmes en cas de panne de courant par exemple. Cette méthode est évidemment considérablement plus lente que la méthode de caching.
Cette option permet de choisir la stratégie qui convient.
Si plusieurs définitions de ce mot-clé apparaissent dans différentes sections GLOBAL d'un même programme, seule la dernière est retenue.
Syntaxe
SYNC yes | no
L'horloge qui apparaît dans l'écran (voir CLOCK_POS) peut ou non contenir un compteur de seconde. En UNIX, étant donné la lenteur d'affichage, il est parfois préférable de supprimer les secondes.
Si plusieurs définitions de ce mot-clé apparaissent dans différentes sections GLOBAL d'un même programme, seule la dernière est retenue.
Syntaxe
CLOCK_SECS yes | no
Certains terminaux et la version 5 du MS DOS posent parfois des problèmes lorsqu'il s'agit d'afficher les caractères semi-graphiques doubles. Il est éveidemment possible de modifier les définitions de ces caractères en adaptant le driver. Une façon plus simple est de placer BOX_1 dans la section GLOBAL du programme. Tous les caractères semi-graphiques doubles seront automatiquement remplacés en cours d'edxécution par leur équivalent en simples lignes.
Syntaxe
BOX_1 yes | no
Ce mot-clé permet de fixer le background des MENUS par défaut à la couleur choisie.
Plusieurs définitions de ce mot-clé peuvent apparaître dans différentes sections GLOBAL d'un même programme. La plus récente est utilisée pour les MENUS qui suivent.
Syntaxe
MENU_COLOR color
color est un mot parmi les suivants :
DEFAULT | REVERSE | UNDERLINE | BOLD | INVISIBLE |
BLINKING | DIM | BLUE | GREEN | CYAN | RED |
MAGENTA | YELLOW | WHITE |BLACK
Ce mot-clé permet de fixer le background des PAGES par défaut à la couleur choisie.
Plusieurs définitions de ce mot-clé peuvent apparaître dans différentes sections GLOBAL d'un même programme. La plus récente est utilisée pour les PAGES qui suivent.
Syntaxe
PAGE_COLOR color
color est un mot parmi les suivants :
DEFAULT | REVERSE | UNDERLINE | BOLD | INVISIBLE |
BLINKING | DIM | BLUE | GREEN | CYAN | RED |
MAGENTA | YELLOW | WHITE |BLACK
Ce mot-clé permet de fixer le background des champs des PAGES par défaut à la couleur choisie.
Plusieurs définitions de ce mot-clé peuvent apparaître dans différentes sections GLOBAL d'un même programme. La plus récente est utilisée pour les PAGES qui suivent.
Syntaxe
FIELD_COLOR color
color est un mot parmi les suivants :
DEFAULT | REVERSE | UNDERLINE | BOLD | INVISIBLE |
BLINKING | DIM | BLUE | GREEN | CYAN | RED |
MAGENTA | YELLOW | WHITE |BLACK
Le cadre des PAGES est par défaut nul (pas de cadre). Ce mot-clé fixe une valeur par défaut au cadre des toutes les PAGES qui suivent la section GLOBAL.
Plusieurs définitions de ce mot-clé peuvent apparaître dans différentes sections GLOBAL d'un même programme. La plus récente est utilisée pour les PAGES qui suivent.
Syntaxe
PAGE_BOX 0 | 1 | 2 | 3
L'ombrage des PAGES est par défaut nul (pas d'ombrage). Ce mot-clé fixe une valeur par défaut pour toutes les PAGES qui suivent la section GLOBAL.
Plusieurs définitions de ce mot-clé peuvent apparaître dans différentes sections GLOBAL d'un même programme. La plus récente est utilisée pour les PAGES qui suivent.
Syntaxe
PAGE_SHADOW 0 | 1 | 2 | 3
Fixe le nom du fichier d'aide associé au programme.
Si plusieurs définitions de ce mot-clé apparaissent dans différentes sections GLOBAL d'un même programme, seule la dernière est retenue.
Syntaxe
HELPFILE "filename"
Non implémenté.
En l'absence de définition d'une BPG dans une SMPAGE, la PAGE de définition de l'ISAM défini par défaut est utilisée (p_<isam_name>).
La directive SMPAGE_BPG dans une section GLOBAL permet de forcer (YES par défaut) ou non (NO) une BPG dans la MPAGE générée à partir de la SMPAGE. De cette façon, si on souhaite qu'un SMPAGE n'ait pas de BPG (cas sans édition par exemple), il suffit de placer une section GLOBAL avant la définition de cette SMPAGE :
GLOBAL SMPAGE_BPG NO
SMPAGE xxx {
.. définition de la SMPAGE ..
}
GLOBAL SMPAGE_BPG YES
Syntaxe
SMPAGE_BPG yes | no
Ce mot-clé est utilisé dans le cadre d'une sérialisation du programme. Il permet de fixer le nom de l'utilisateur de l'application. Ce nom est affiché à chaque lancement du programme, lors de l'appel à SCR_init().
Le nom de l'utilisateur, le numéro de série et la date limite d'utilisation sont encryptés dans le programme et permettent de construire une clé d'activation qui sera vérifiée à chaque lancement de programme.
Si plusieurs définitions de ce mot-clé apparaissent dans différentes sections GLOBAL d'un même programme, seule la dernière est retenue.
Syntaxe
USER_NAME "nom de l'utilisateur"
Ce mot-clé permet de fixer le nom de l'application. Ce nom est affiché à chaque lancement du programme, lors de l'appel à SCR_init().
Si plusieurs définitions de ce mot-clé apparaissent dans différentes sections GLOBAL d'un même programme, seule la dernière est retenue.
Syntaxe
APPL_NAME "Nom de l'application"
Ce mot-clé est utilisé dans le cadre d'une sérialisation du programme. Il permet de fixer le numéro de série de l'application. Celui-ci est affiché à chaque lancement du programme, lors de l'appel à SCR_init().
Le nom de l'utilisateur, le numéro de série et la date limite d'utilisation sont encryptés dans le programme et permettent de construire une clé d'activation qui sera vérifiée à chaque lancement de programme.
Si plusieurs définitions de ce mot-clé apparaissent dans différentes sections GLOBAL d'un même programme, seule la dernière est retenue.
Syntaxe
SERIAL_NB "numéro de série"
Ce mot-clé est utilisé dans le cadre d'une sérialisation du programme. Il permet de fixer la date limite d'utilisation de l'application.
Le nom de l'utilisateur, le numéro de série et la date limite d'utilisation sont encryptés dans le programme et permettent de construire une clé d'activation qui sera vérifiée à chaque lancement de programme.
Si plusieurs définitions de ce mot-clé apparaissent dans différentes sections GLOBAL d'un même programme, seule la dernière est retenue.
Syntaxe
LIM_DATE yyyymmdd
Les applications compilées en mode C ou Ascii se comportent comme suit :
Les applications compilées en mode objet (-o) réagissent de la façon suivante :
Certains systèmes, notamment ceux à processeur RISC, ne tolèrent pas le cast de pointeurs non alignés sur une limite de mot (4 bytes) vers des pointeurs sur des valeurs numériques. Ainsi, l'expression
char Ptr[30];
...
*(long *)(Ptr + 13)
provoque une erreur au moment de son exécution et plante le programme (bus error).
Certains compilateurs possèdent une option de type "misalign" pour tolérer quand-même ces expressions, mais pas tous.
Cette situation se présente lors de l'utilisation par des programmes de valeurs directes vers les champs des PAGES ou des ISAM : l'expression
pg_VAL
est définie dans le fichier .h généré par scr4_e comme
(*(long *)(pg->pg_rec + 23))
par exemple.
Pour résoudre le problème, le programme scr4 (de même que scr4_e) offre les options -pgalign et -isalign.
Alternativement, les sections GLOBAL peuvent contenir les mots-clés
PGALIGN YES | NO
ISALIGN YES | NO
Par défaut, ces options sont inactives, ce qui rend les programmes compatibles avec les versions précédentes.
il faut noter que dans le cas des ISAMS, l'option d'alignement se traduit par une perte de place non seulement en mémoire, comme dans le cas des pages, mais également sur fichier, puisque le record de l'ISAM est adapté en conséquence.
Cette option permet d'aligner les champs sur des limites de mot. Une discussion complète peut être trouvé dans le chapitre PGALIGN.
Indique si les pages qui suivent doivent par défaut posséder un closebox, qui pourra être déclenchée à l'aide de la souris lors de l'exécution de l'application.
Cette option est par défaut fixée à No. Dans le cas des Mpages, il est préférable de positionner cette variable à No, car les Little Pages de la Multi-Page contiendraient toutes un tel close box, ce qui serait inélégant.
CLOSEBOX {Yes | No}
Le mot-clé VIEW_ORDER permet de spécifier si l'ordre d'édition de toutes les PAGES de l'application doit être l'ordre visuel ou non.
L'ordre d'édition des champs dans la page est défini de la façon suivante :
Les touches TAB et s-TAB permettent le déplacement dans les champs de la PAGE comme défini ci-dessus. Les touches ENTER et LINEFEED font de même, sauf dans le cas des champs MENU et DIR, dans lesquels ENTER ouvre le MENU pour sélectionner une option.
VIEW_ORDER {Yes | No}
La valeur par défaut définie dans la section GLOBAL peut être modifiée localement dans une page par les mots-clé VIEW_ORDER et NO_VIEW_ORDER.
L'attribut REQUIRED défini dans les champs des ISAM n'estpar défaut pas importée dans la PAGE. Il est cependant possible de l'importer soit de façon globale pour toutes les PAGE, soit localement :
GLOBAL {IMPORT_REQUIRED YES ou NO}
indique que pour toutes les PAGES dont la définition suit, les valeurs REQUIRED ou COMPULSORY sont importées (ou non) des ISAM vers les PAGES.
On peut modifier le comportement localement dans la PAGE :
PAGE {
...
IMPORT_REQUIRED YES ou NO
...
}
détermine le comportement pour la seule PAGE en cours de définition.
En l'absence de définition, REQUIRED ou COMPULSORY n'est PAS importé pour maintenir la compatibilité avec les versions pré-4.19.
Contrairement à REQUIRED, cette valeur est importée par défaut des champs des ISAM vers les PAGES. On peut annuler ce comportement localement ou globalement par la directive IMPORT_TODAY:
GLOBAL {IMPORT_TODAY NO ou YES}
Au sein d'une PAGE :
PAGE {
...
IMPORT_TODAY NO ou YES
...
}
Lors du début de l'édition des lignes d'un BC, si aucun n'enregistrement n'est définit, un nouveau est automatiquement créé.
Pour éviter ce traitement, on peut spécifier :
BC_AUTO_CREATE No
dans la section GLOBAL ou
BC_AUTO_CREATE No ou AUTO_CREATE No
dans la définition du BC.
Lors du début de l'affichage d'une MPAGE, il se peut qu'aucun record ne soit trouvé. Dans ce cas, soit une création est automatiquement proposée (c'est le cas par défaut), soit aucun affichage ne peut être réalisé. Ce sera alors à l'utilisateur de presser INSERT pour en créer un nouveau ou ESCAPE pour quitter.
En spécifiant dans la section GLOBAL
MP_AUTO_CREATE No
ou
MP_AUTO_CREATE No ou AUTO_CREATE No
dans la définition d'une MPAGE, la création n'est pas proposée automatiquement.
Tous les enregistrements des lignes de BC sont conservés en mémoire en permanence. Comme les LPG peuvent contenir des champs CODEISAM, à chaque affichage d'une ligne, il faut relire un ou plusieurs ISAM pour compléter la LPG.
Pour éviter les lenteurs dues à ce processus (répété en permanence), on peut conserver en mémoire le contenu des LPG.
Cependant, pour les applications pour lesquelles la mémoire est une denrée précieuse, on peut souhaiter ne pas conserver le contenu des LPG en mémoire.
En spécifiant dans la section GLOBAL
BC_LPG_MEM No
ou
BC_LPG_MEM No ou LPG_MEM No
dans la définition d'un BC, le contenu des LPG n'est pas conservé en mémoire.
"LPG_MEM No" permet de gagner de la mémoire, mais génère une perte de temps. Par défaut, les LPG sont conservées en mémoire.
Comme la MPAGE affiche plusieurs records simultanément, un certain nombre sont conservés en mémoire (BUF_SIZE). Comme les LPG peuvent contenir des champs CODEISAM, à chaque affichage d'une ligne, il faut relire un ou plusieurs ISAM pour compléter la PAGE.
Pour éviter les lenteurs dues à ce processus (répété en permanence), on conserve en mémoire le contenu des LPG.
Cependant, pour les applications pour lesquelles la mémoire est une denrée précieuse, on peut souhaiter ne pas conserver le contenu des LPG en mémoire.
En spécifiant dans la section GLOBAL
MP_LPG_MEM No
ou
MP_LPG_MEM No ou LPG_MEM No
dans la définition d'une MPAGE, le contenu des LPG n'est pas conservé en mémoire.
"LPG_MEM No" permet de gagner de la mémoire, mais génère une perte de temps. Par défaut, les LPG sont conservées en mémoire.
Conserver en mémoire les infos des ISAM. Utilisé pour construire des bases Ctree+.
Cadre des radio buttons. Les directives GLOBAL permettent de modifier en mode caractère les caractères qui encadrent le bouton et le caractère qui indique que le bouton est coché. Par défaut, il s'agit des crochets et d'un X.
On peut les modifier comme dans l'exemple suivant.
Exemple
GLOBAL CHECK_BOX_TXT "| |"
GLOBAL CHECK_BOX_CHAR "O"
Caractère Check_Box ON. Les directives GLOBAL permettent de modifier en mode caractère les caractères qui encadrent le bouton et le caractère qui indique que le bouton est coché. Par défaut, il s'agit des crochets et d'un X.
On peut les modifier comme dans l'exemple suivant.
Exemple
GLOBAL CHECK_BOX_TXT "| |"
GLOBAL CHECK_BOX_CHAR "O"
Cadre des radio buttons. Les directives GLOBAL permettent de modifier en mode caractère les caractères qui encadrent le bouton et le caractère qui indique que le bouton est coché. Par défaut, il s'agit des crochets et d'un X.
On peut les modifier comme dans l'exemple suivant.
Exemple
GLOBAL RADIO_TXT "{ }"
GLOBAL RADIO_CHAR "+"
Caractère Radio button ON. Les directives GLOBAL permettent de modifier en mode caractère les caractères qui encadrent le bouton et le caractère qui indique que le bouton est coché. Par défaut, il s'agit des crochets et d'un X.
On peut les modifier comme dans l'exemple suivant.
Exemple
GLOBAL RADIO_TXT "{ }"
GLOBAL RADIO_CHAR "+"
Garde les DRAW VLINE sous Windows.
Garde les DRAW HLINE sous Windows.
Fixe la largeur de colonnes en points Windows
Police non proportionnelle dans les boîtes de dialogue sous Windows.
hauteur d'une ligne contenant un champ editable
hauteur d'une ligne contenant un DRAW texte
Hauteur d'une ligne contenant un DRAW VLINE
hauteur d'une ligne contenant un DRAW HLINE
hauteur d'une ligne ne contenant rien
Suppression générale des couleurs héritées de la définition des champs dans les boîtes de dialogue.
Si on veut éviter les couleurs pour certains champs de certaines pages seulement, il faut donner l'attribut DEFAULT aux champs concernés.
Syntaxe
WIN_NOCOLOR {Yes | No}
Lors de la recherche sur un index composite multi-champ dans une base de données, limite la recherche GE au dernier champ non vide (SQL). Tous les premiers champs définis sont recherchés sur EQ, le dernier seul sur GE. De plus, la requête effectue un ORDER BY uniquement sur le champ dont la contrainte est GE.
Cette valeur est fixée par défaut pour tous les index de tous les ISAM dont la définition suit.
Syntaxe
GLOBAL GE2EQ {Yes|No}
Supposons par exemple l'INDEX suivant :
INDEX {fld1 fld2 fld3} DUP ASC Name idx1 Ge2Eq Yes
La requête générée pour IS_search(is, ..., SCR_GE) (si tous les champs sont non vides) est:
Select * From tbl
WHERE fld1 = val1 AND fld2 = val2 AND fld3 >= val2
ORDER BY fld3
Dans le cas ou Ge2Eq vaut No, on aurait :
Select * From tbl
WHERE fld1 >= val1 AND fld2 >= val2 AND fld3 >= val2
ORDER BY fld1, fld2, fld3
La différence en temps pour la deuxième requête peut être considérable pour des grandes tables.
Copyright © 1998-2015 Jean-Marc Paul and Bernard PAUL - Envoyez vos remarques ou commentaires à bernard@xon.be