Présentation
Documentation
L'équipe
Sérialisation
 
Programmes
Objets
Libs Utilitaires
Libs Internes
   
 
Editeur
Syntaxes
Windows
Versions
   

SCR/AL1 - TOME IV. Les librairies internes

3. La librairie scr4i

3.5 Scan d'un ISAM

3.5.5 SC_scan_isam_gn (file s_scan.c:119)

Syntax

long SC_scan_isam_gn(is, from, to, cmp_nb, fn, opent, disp, stop, rev)
ISAM *is;
char *from, *to;
int cmp_nb;
int (*fn)();
int opent, disp, stop, rev;

Description

Lit l'ISAM is dans l'ordre de l'index cmp_nb à partir du premier record qui satisfait aux contraintes indiquées par les deux records limites from et to.

Pour chaque record sélectionné, la fonction utilisateur fn est appelée, permettant un traitement quelconque de ce record. Pour les records rejetés, la fonction est également appelé, avec un paramètre indiquant que le record est rejeté.

Si disp n'est pas nul, un compteur indiquant le nombre de records lus et sélectionnés apparaît dans le bas de l'écran. Ce compteur est rafraîchi toutes les disp lectures. Si disp vaut 0, ce compteur n'apparaît pas.

Si stop vaut 1, la frappe de n'importe quelle touche en cours de traitement arrête celui-ci et il est demandé à l'utilisateur s'il faut ou non continuer. Si stop vaut 0, le processus se poursuit jusqu'à la fin du fichier.

rev permet, s'il vaut 1, d'inverser la sélection de records : tous ceux qui répondent aux critères sont rejetés, tous les autres sont sélectionnés.

Sélection des records

La sélection des records s'effectue comme suit : tous les champs de l'ISAM définis par une valeur non vide (nulle ou blanche) dans from ou dans to servent de "masque", de critère de sélection.

Soit un champ de l'ISAM.

La sélection s'effectue en ne retenant que les records qui satisfont à TOUS les critères définis dans les records from et to.

La fonction utilisateur fn est du type suivant :

    int fn(is, nbread, nbfound, success)
ISAM *is;
long nbread, nbfound;
int success;
{
return(0);
}

Si le pointeur de fonction fn est nul, il n'y a pas d'appel de fonction.

La fonction fn est appelée après la lecture de chaque record, sélectionné ou non. De plus, elle est appelée après le dernier record, permettant au programme de fermer des fichiers, de terminer une impression, etc.

Valeur de retour de fn

La fonction fn peut retourner 3 valeurs différentes :

Exemple

    PrintClients_1(is, nbread, nbfound, success)
ISAM *is;
long nbread, nb_found;
int success;
{
switch(success) {
case 2 :
PR_print("Total : %ld clients\n", nbfound);
return(0);

case 1 :
if(is_clients_MONTANT < 1000) return(1);
if(nbfound % 55 == 1) {
if(nbfound > 1) PR_formfeed();
PR_string("Nom Chiffre Affaire\n\n");
}
PR_string("%15.15s %ld FB\n",
is_clients_NAME, is_clients_MONTANT);
return(0);

default : return(0);
}
}

PrintClients()
{
PR_select(pr1);
SC_scan_isam_gn(p_clients, 0L, 0L, 0, PrintClients_1,
SCR_READ, 1, 1, 0)
PR_send();
}

Valeur retournée

le nombre de records sélectionnés (long).

Voir également

SC_scan_isam(), SC_scan_page_gn()

Copyright © 1998-2015 Jean-Marc Paul and Bernard PAUL - Envoyez vos remarques ou commentaires à bernard@xon.be