3-4. Les commandes de
contrôle CSpro
3-4.1. Généralités.
Le langage de programmation sous CSPRO est assez proche du
Pascal. Chaque objet (record, roster, item, etc.) sur lequel on veut
écrire une procédure de contrôle doit avoir une
preproc et/ou une postproc. La preproc permet
de rédiger les contrôles que l'on souhaite effectuer avant la
saisie de toute information concernant l'objet. La preproc est
exécutée avant l'apparition du curseur dans le champ. La postproc
quant à elle permet de spécifier les actions à faire
après la saisie dans le champ.
Toute procédure commence par le mot clé PROC
suivi du nom de l'objet sur lequel il s'applique. Exemple :
PROC AGE
Préproc
Instructions A
Postproc
Instructions B
C'est à travers quelques exemples que l'on va asseoir
les notions de programmation sous CSPRO.
Exemple 1 : Voici une procédure
qui affiche le message « donnée erronée » et
impose une nouvelle saisie si la valeur saisie ne respecte pas la plage (le
milieu de résidence est compris entre 1 et 3).
PROC MILIEU
postproc
if $<1 or $>3 then
x= errmsg(001) ;
reenter ;
endif ;
Dans la fenêtre message, taper : 001
Donnée erronée
Le caractère $ fait référence à
l'information qui a été saisie. La fonction
reenter maintien le curseur dans le champ en cours. On
remarque par ailleurs que chaque instruction se termine par un
« ; ».
Exemple 2 : traitons d'un cas où
on fait un saut à la question S03Q9 si la réponse est 2 (non).
PROC S03Q3
postproc
if $=2 then
skip to S03Q9 ;
endif ;
Exemple 3 : Cas de la question Q1 de la
sous-section 05.1 du questionnaire de ECAM 2 (Cette sous-section est un record
au niveau du dictionnaire). Si le ménage n'a eu aucune naissance
(S05Q1=2= ) alors on doit changer de section.
PROC S05Q1
postproc
if $=2 then
endsect ;
endif ;
Exemple 4 : Cas de la question Q15 du
questionnaire de ECAM2. le code de l'équipement correspond au
numéro de ligne de l'enregistrement. Pour gagner du temps à la
saisie, il sera « pré imprimé ».
PROC S05Q1
preproc
S07Q15(noccurs(LOGE_B)+1)= noccurs(LOGE_B)+1;
noinput ;
LOGE_B est le nom logique du record correspondant à la
sous-section 07.2. l'instruction noinput fait passer de la
preproc à la postproc. Ceci interdit toute saisie dans le champ
concerné.
3-4.2. Section de déclaration (PROC GLOBAL)
Les déclarations et les définitions sont
définies dans la procédure globale. Dans cette section vous
déclarez le mode de fonctionnement (implicite ou explicite), des
variables, des tableaux et des fonctions définies par l'utilisateur. La
procédure globale apparaît toujours au début du fichier de
logique et commence par la ligne "PROC GLOBAL". À part les fonctions
définies par l'utilisateur, il n'y a aucune déclaration
exécutable dans cette section. Vous pouvez éditer la section PROC
GLOBAL en cliquant sur la plus haute entrée de l'entrée de
données édite l'arbre ou le lot édite l'arbre.
Exemple :
PROC GLOBAL
set explicit; {mode}
numeric x, xage; (numeric variables)
alpha flag; (alphanumeric variable)
array Relly(5); (numeric array)
|