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.3 SC_scan_page_gn (file s_scpage.c:122)

Syntax

long SC_scan_page_gn(pg, is, cmp_nb, fn, disp, stop, rev)
PAGE *pg;
ISAM *is;
int cmp_nb;
int (*fn)();
int disp, stop, rev;

Description

Lit tout le fichier is dans l'ordre de l'index cmp_nb à partir du premier record qui satisfait aux contraintes indiquées dans la page pg. 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.

La PAGE pg peut contenir un nombre quelconque de champs de l'ISAM is. Pour chaque champ de is, on trouvera 0, 1 ou 2 occurences dans la PAGE.

La sélection des records s'effectue comme suit : tous les champs de l'ISAM présents dans la PAGE 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 la PAGE pg.

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()
{
PG_edit_window(p_clients);
if(SCR_LKEY != SCR_F10) return;
PR_select(pr1);
SC_scan_page(p_clients, is_clients, 0, PrintClients_1, 1);
PR_send();
}

Valeur retournée

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

Voir également

SC_scan_isam()

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