Software">
Presentation de CS Pro
Presentation de CS Pro
Presentation de CS Pro
CAPI
Sommaire
Introduction________________________________________________________________4
Présentation de CS Pro_____________________________________________________4
Installation :______________________________________________________________5
Chapitre ii : Dispositif organisationnel et architecture technique._____________________6
4.1. Objet________________________________________________________________46
4.2. Pré-requis____________________________________________________________46
4.3. Organisation du développement_________________________________________46
4.4. Les fonctions essentielles_______________________________________________48
Run pff________________________________________________________________48
Selcase________________________________________________________________48
Loadcase______________________________________________________________48
Writecase______________________________________________________________48
Find__________________________________________________________________48
Show_________________________________________________________________48
Filecopy_______________________________________________________________48
Fileempty______________________________________________________________48
Filedelete______________________________________________________________48
setfile_________________________________________________________________48
Fileread_______________________________________________________________48
Close_________________________________________________________________48
4.5. Réalisation de l’application de collecte de la République :___________________48
4.5.1. Travaille demandé__________________________________________________48
4.5.2. DECOUPAGE DU TERRITOIRE DE LA REPUBLIQUE DE NDIAYENE____49
4.5.3. Organisation de la collecte :___________________________________________49
Fonctionnalité attendues :_________________________________________________51
INTRODUCTION
CSPro permet de réaliser des interviews assistées par ordinateur communément appelées aussi
interview CAPI (Computer-Assisted Personal Interviewing). Cette approche permet un gain de
temps énorme en combinant la collecte et la saisie. L'interview est réalisée en face-à-face, et
l'application de saisie détermine l'ordre des questions, et effectue également l'édition des
réponses.
Le CAPI offre une approche flexible de la collecte, une amélioration de la qualité des données,
des entrevues plus efficaces et un traitement plus rapide. Cependant, le déploiement d'une
enquête CAPI pourrait être une entreprise coûteuse, puisque chaque intervieweur a besoin d'un
ordinateur portable ou PDA , et peut-être plus de formation.
Pour une réussite d’une collecte sur CAPI, outre le développement des applications de collecte,
cette opération nécessite un certain dispositif organisationnel (serveurs, PDF, Ultra Portable,
clé connexion, chargeur…), une architecture technique cohérente…
L’objectif de ce document est de revenir sur les différentes étapes du processus de mise en place
d’une enquête CAPI avec l’utilisation de CSPro
PRÉSENTATION DE CS PRO
CSPRO est le produit de la fusion des logiciels « IMPS » et « ISSA». MPS intégrait trois
logiciels à savoir : le CENTRY (saisie des données), le CONCOR (des données de
Recensements) et le CENTS (Tabulation). Il a été développé par le CENSUS Bureau.
ISSA a été développé par MACRO International.
CSPRO a remplacé ces deux applications citées plus haut dans le domaine des enquêtes et
recensements. Son principal avantage se situe dans le traitement des fichiers hiérarchiques. Il
contient plusieurs modules dont :
Data Entry : Permet d’ajouter, de modifier, de vérifier et d’afficher des données
(questionnaires). Il offre entre autre la possibilité de:
Créer un nombre illimité de formulaires (écrans au écran de saisie);
Créer des contrôles de cohérence;
Affichage des messages définis à l’utilisateur au cours de la saisie;
Lire et écrire dans des fichiers secondaires;
Éviter de saisie plusieurs fois les mêmes informations;
Produire des statistiques de l'opérateur.
Batch Editing: Il permet de:
Data Dictionary :
Définir l'organisation hiérarchique de fichiers simple ou complexe;
Définir les niveaux hiérarchiques, articles d'identification, des dossiers, des éléments
(champs ou variables), des ensembles de valeurs (catégories de valeurs), et des valeurs
Export Data : Permet d’exporter les données sur d’autres formats : Excel, SAS, SPSS, Stata, R.
Nous aurons l’occasion ne revenir plus en détail sur chacun de ces composants
INSTALLATION :
La version de CSPro que nous utilisons dans cette formation est la Version 5.0. Elle est
téléchargeable gratuitement sur :
http://www.census.gov/population/international/software/cspro/csprodownload.html
CSPro s’installe comme la plupart des logiciels habituels de Windows. Il suffit de suivre la
procédure d’installation jusqu’à la fin.
CHAPITRE 2 : DISPOSITIF ORGANISATIONNEL ET ARCHITECTURE
TECHNIQUE.
Le Dot Net mis en place par Microsoft, permet le développement d’applications sur
mobiles et desktops [voir le Resencement Général de la Population, l’Habitat, de
l’élévage de l’Agriculture (RGPHAE) du Sénégal de 2013] ;
L’Andoid avec le développement d’application de collecte mobile à partir du langage
Java [voir l’enquête Listening to Senegal (L2S), 2014] ;
CSPro CAPI utilisable à la fois sur windows mobile et sur Android. La mise en œuvre
d’une enquête ou recensement avec cette dernière technologie est l’objet du présent
document.
Une coordination entre les différentes entités qui composent le dispositif de collecte :
Concernant cet aspect, il est souvent développé une plateforme Web qui permet entre
autre :
o Le recrutement des agents de terrain : Des applications de dépôt de candidature
peuvent être développées et mise à la disposition du public
o Faire la composition des équipes
o Faire le lien entre les équipes/enquêteurs avec les zones/dr de dénombres ;
o Le suivi de la collecte en temps réel, globalement, par superviseur, par enquêteur et
zone d’enquête ;
o Le téléchargement des mises à jour, en effet il arrive souvent qu’après le
déploiement des enquêteurs sur le territoire que l’on se rend compte que l’outil ou
les outils de collectes rencontrent quelques problèmes. Pour les résoudre, des mises
à jour qui permettent de corriger les défauts notés, sont mises à la disposition des
équipes sur le terrain ;
o une réactivité face aux problèmes qui vont survenir au niveau du terrain ;
o Retour de questionnaire vers un agent pour correction
o Transfert de question vers un autre agent
o Restitution des résultats de la collecte
o Envoie de notification au enquêteurs/PDA/Tablettes
Le déploiement des applications sur les terminaux de collectes ainsi que l’installation
des mises à jour :
Généralement pour les opérations du type, les équipes sont accompagnées de
techniciens informaticiens chargés de gérer l’ensemble des aspects liés à l’entretien des
matériels, à l’installation des applications et des mises à jour…
L’échange des données entre les unités de collectes et le niveau central/superviseur (pré-
chargement des applications des applications de collecte et envoie des données
collectées vers le niveau central). Ce volet est peut être géré de différentes manières
suivant la complexité du choix des répondants et le niveau de contrôle souhaité au
niveau des données transmises.
o La première manière est d’inclure toutes ces fonctionnalités dans l’application de
l’agent enquêteur aussi bien les informations à pré-chargées (au niveau central) que
la remontée des données (souvent stockées dans des cartes SD ou remontées
directement vers un serveur).
o La deuxième manière est de faire jouer au superviseur un rôle d’interface entre le
niveau central et l’agent enquêteur. Pour se faire, une application superviseur doit
être développée. Cette dernière doit lui permettre de faire le dispatching des unités
à interviewer entre ses agents enquêteurs sur le terrain mais de récupérer les
données une fois collectées, d’en faire faire une première vérification avant de les
envoyer vers le niveau central. Dans ce document cette approche sera privilégiée
dans la mesure où :
Elle permet plus de contrôles donc une meilleure qualité des données ;
Elle permet de dispatcher le travail en tenant compte des réalités du
terrain (contraintes linguistiques, rapidité de chaque enquêteur…) ;
Elle donne la possibilité de demander à un enquêteur de retourner une
unité si les données ne sont pas de bonnes qualités
Elle permet Remplacer une unité statistique non
disponible/refus/introuvable
3.2. ARCHITECTURE TECHNIQUE PROPOSÉE
L’architecture dépend souvent du type de la technologie utilisée et du dispositif mis en place.
Toutefois nous pensons que le ci-dessous est adéquat dans la plupart des cas. Cependant, il peut
être plus ou moins allégé selon les besoins :
CHAPITRE 3 :
DÉVELOPPEMENT D’UNE APPLICATION CAPI
A quelques différences prés, le développement d’une application CAPI passe par les mêmes étapes
que celles d’un masque de saisie émanant d’un questionnaire papier sous CSPro à savoir :
La définition du dictionnaire des données ;
La génération du masque de saisie ;
L’implémentation des contrôles de cohérence ;
En plus de ces points, il faut ajouter l’activation du mode CAPI, la définition des types de
captures, la segmentation des différents dictionnaires de données et l’implémentation de
quelques fonctions avancées de CSPro. Nous aborderons ces différents points dans ce qui suit.
Le chapitre 4 est consacré à une étude de cas de l’utilisation du CAPI pour la collecte. Il est
basé sur les questionnaires du recensement agricole du Mali. Ce chapitre 4, abordera
l’ensemble des dispositions à prendre pour réussir le développement d’une application CAPI
sous CSPro.
Si les informations données sont conformes à celles affichées, faire terminer. A défaut, faire
précédent pour modifier les erreurs éventuelles. On obtient alors l’environnement de travail
suivant :
Pour ajouter un record, il est conseillé de cliquer sur le bouton questionnaire de la fenêtre de
gauche. L’environnement de travail se présente alors comme suit :
En utilisant les menus contextuels dans la fenêtre de droite, on a la possibilité d’ajouter, de modifier
ou de supprimer un record. Les propriétés d’un record sont les suivantes :
Record Name : correspond au nom logique du record, c’est lui qui sera utilisé le cas échéant dans
les procédures de contrôle pour faire référence au record. Il est composé d’au plus 32 caractères.
Les caractères possibles sont : A-Z, 0-9, et le _. Rmq : la première position est réservée pour les
lettres de A à Z. Par ailleurs, la dernière position ne saurait être le _. Il faut noter pour finir que
CSPRO possède des noms réservés1 qui ne peuvent être utilisés au niveau du dictionnaire.
Type value : C’est un alphanumérique qui permet d’identifier les lignes du fichier des données qui
représentent un record donné.
Required : prend deux valeurs possibles : Yes/No. Il s’agit de dire si pour chaque questionnaire, on
a au moins une occurrence de ce record. Pour le cas du questionnaire ECAM, les sections où il y a
des conditions d’éligibilité prennent la valeur No pour cet attribut.
Max: Précise le nombre maximum d’occurrences possibles pour une section donnée. Si ce nombre
est supérieur à 1, on pourra générer des rosters au niveau du masque de saisie.
Dans la fenêtre de gauche, il faut cliquer sur le record à l’intérieur duquel on aimerait ajouter des
items. La fenêtre de droite prend alors l’apparence suivante :
1
Utiliser le menu contextuel dans la fenêtre de droite pour ajouter, supprimer ou modifier un
item. Les propriétés des items sont différentes de celles des records. On ne s’étendra pas ici sur les
propriétés Item label et Item Name qui rejoignent le cas record label et record Name.
Start : Champ très important, précise la position du fichier à partir de laquelle la réponse à la
question sera stockée. Il est conseillé de laisser CSPRO gérer automatiquement ce champ, sauf
pour le cas des SubItems (à voir plus loin).
Data Type : permet de préciser le type de donnée du champ en cours. Les types possibles sont :
numériques et alphanumériques.
Item Type : Par défaut, ce champ prend la valeur Item. Il existe des questions dont les réponses
peuvent être subdivisées en sous réponses. L’exemple typique est celui de la date qui est composée
du jour, du mois et de l’année. On peut demander à CSPRO de gérer le jour, le mois et l’année
comme des Subitems de la variable date. Lorsqu’on choisit Subitem, il faut modifier les propriétés
Start et Len de telle sorte que la position du Subitem coïncide avec la partie de l’item qu’il
représente.
Occ : permet de préciser le nombre d’occurrence de l’item dans le record. Si on décide par exemple
que cette valeur vaut 5 pour une variable qui tient sur deux (02) positions (Len), CSPRO va
réserver 10 positions pour la saisie des informations sur ce champ.
Dec char : Vaut Yes ou No, précise pour les variables numériques avec décimale s’il faut une
virgule pour séparer la partie entière de la partie décimale.
Zéro Fill : Prend deux valeurs possibles : Yes ou No. Lorsque la valeur choisie est Yes, CSPRO
complète (le cas échéant) les saisies par des zéro à gauche.
A partir du dictionnaire des variables, sur la variable (item) concernée faites avec un clic droit, le
un menu contextuel s’affiche comme le montre la figure ci-dessus et il faut alors cliquer sur «Add
Value Set» pour définir les valeurs valides.
Cette dernière action donne accès à une page où est inscrit par défaut le nom de la variable
concernée. Appuyez deux fois sur « entrer », ensuite saisissez les différentes modalités en prenant
le soin d’attribuer à chaque modalité le code correspondant. Ce code sera utilisé pour la saisie des
données. La figure 8 (ci-dessous) en donne une bonne illustration.
From : doit être renseigné par le code correspondant à la modalité. En outre, pour les variables
numériques dont les modalités sont regroupées en classe, on saisit dans le champ «From», la borne
inférieure
En suivant les trois étapes définies ci-dessus, vous parviendrez à concevoir aisément un
dictionnaire de variable.
achevé, faire File/New . Ensuite au niveau de la boite de dialogue qui s’affiche, choisir
comme type d’objet «Data Entry Application», qui permet de créer un fichier d’extension
«ent». Puis cliquer sur OK. A cette étape, il faut choisir le dossier où l’on aimerait enregistrer
le fichier, préciser le nom du fichier et cliquer enfin sur « Create/Créer ». Cette dernière
action conduit à l’affichage de la boîte de dialogue ci-dessous qui permet de choisir le
dictionnaire correspondant.
Il est important de choisir le dictionnaire adéquat. il vous revient de trouver le bon dictionnaire
en cliquant sur le bouton en face du chemin d’accès. Une fois le dictionnaire adéquat choisi,
cliquer sur OK. Un message s’affiche vous demandant si vous désirez générer le masque de saisie
à partir du dictionnaire sélectionné, cliquer sur «Oui». L’étape suivante est l’affichage de la boîte
de dialogue suivante :
Cliquer enfin sur Ok et le masque de saisie est généré.
Permet de choisir le nom (Label ou Name) de la variable qui figurera dans le masque de saisie et l’option
Text Options Text left et Text Right aide à disposer le Label/Name par rapport au champ de saisie (à droite ou à
gauche)
L’option conduit à une présentation très conviviale des records sous forme de tableau lorsque ceux-ci ont
Roster Options plus d’une occurrence. Selon la disposition recherchée, choisissez horizontale, verticale ou pas de Roster
du tout.
Require « Enter » L’option ci-avant, si elle est sélectionnée, impose que la saisie de chaque variable soit validée avant de
Key on Entry passer à un autre champ.
Use Subitems Lorsqu’elle est cochée, cette option permet d’affiche dans le masque de saisie les Subitems. l’item pourra
When present être déduit comme étant la concaténation de ses Subitems.
L’expérience montre que très souvent, le premier masque de saisie généré est loin d’être acceptable.
« Pour la convivialité du travail et dans l’esprit de limiter les erreurs dues à la saisie, il convient de faire
une mise en forme du masque de saisie (selon le besoin afin qu’il ressemble parfaitement au
questionnaire administré) et d’introduire des contrôles de cohérence en respectant les règles de la
programmation sous CSPro. »
Sous CSPro, la mise en forme consiste à ajouter des textes, changer le positionnement des variables
et trace des cadres.
Pour ajouter un texte, il suffit de faire un clic droit sur la page du formulaire et choisir «Add text»
dans le menu contextuel ci-dessous. Il conviendra ensuite de saisir dans la boite qui s’affichera
le texte souhaité.
Champ-miroir :
Des champs miroir peuvent être introduits. Un champ-miroir est une variable qui est présente dans
un écran de saisie sans qu’on puisse la modifier. Les identifiants sont très souvent placés comme
champs-miroirs. Pour créer un champ miroir, on fait glisser la variable concernée du dictionnaire des
données vers l’emplacement souhaité à l’écran de saisie.
Texte et encadré
Des textes peuvent être ajoutés dans l’écran de saisie afin de rendre le masque de saisie très
convivial. L’on peut aussi tracer des traits ou dessiner des encadrés. Un clic droit sur l’écran de
saisie donne accès au menu contextuel ci-dessous. Add Text pour ajouter un texte et Add Boxes
pour tracer un trait ou dessiner un encadré.
Propriétés Libellé
Permet de modifier le Label, le nom et
Form Properties la couleur du Formulaire
Delete Form Permet de supprimer le Formulaire
Add Text Aide à ajouter des textes dans le Formulaire
Add Boxes Aide à ajouter des encadrés, des traits
Add Form Permet d’ajouter des Formulaires
La saisie contrôlée permet de minimiser les erreurs de saisie. Les vérifications automatiques
prennent en compte les contrôles de validité de code, les amplitudes des valeurs, les cohérences
avec d’autres variables du même questionnaire. Les sauts automatiques seront
g é r é e s à c e n i v e a u . Il convient de préciser que lavitesse de la saisie est inversement
proportionnelle au nombre de contrôles. Afin de ne pas ralentir (ou même de bloquer) la saisie,
leur nombre est souvent volontairement limité.
Sous CSPro, le bouton ci-après dans la barre d’outils permet d’accéder à l’environnement de
travail relatif à la rédaction des procédures de contrôle. Ces deux icônes permettent de
basculer tour à tour de l’écran de saisie à la zone de rédaction des procédures de contrôle.
3.4.1. GÉNÉRALITÉS.
Le langage de programmation sous CSPRO est assez proche du Pascal. Chaque objet (record,
roster, item, etc.) pour lequel on souhaite établir une procédure de contrôle, doit obligatoirement
posséder une procédure Preproc et/ou une procédure Postproc. Preproc permet de rédiger les
contrôles que l’on souhaite effectuer avant la saisie d’une quelconque information concernant l’objet
en cours. Aussi, Preproc est exécutée avant l’apparition du curseur dans ledit champ. Postproc quant
à elle, permet de spécifier les actions à faire après la saisie des données dans le champ. Toutes les
procédures débute par le mot clé PROC suivi du nom de l’objet sur lequel il s’applique. Exemple :
PROC AGE
Preproc
Instructions A
Postproc
Instructions B
Nous allons, à travers quelques exemples, 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 de valeurs permise (le milieu de résidence est compris
entre 1 et 3).
PROC MILIEU
postproc
endif ;
Le caractère $ fait référence à l’information qui est entrain d’être saisie. La fonction reenter
maintient le curseur dans le champ en cours pour une nouvelle saisie. On remarque par ailleurs que
chaque instruction se termine par un « ; ». Exemple 2 : traitons d’un cas où, on doit «sauter» à la
question S03Q9, si la réponse est 2 (non).
PROC S03Q3
postproc
if $=2 then
skip to S03Q9 ;
endif ;
Exemple 3 : Traitons d’un cas où, si le ménage n’a eu aucune naissance (S05Q1=2 ) alors on
doit terminer la section en cours et « sauter » à la section suivante.
PROC S05Q1
postproc
if $=2 then
endsect ;
endif ;
Exemple 4 : Cas où 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 ;
Exemple :
PROC GLOBAL
• Les fonctions
Des fonctions définies par l'utilisateur sont codées dans la partie de déclaration (PROC
GLOBAL) d'une application. Une fois définies, elles peuvent être utilisées n'importe où
dans l’application. Les fonctions sont utilisées pour exécuter les opérations qui sont
utilisées en plusieurs endroits différents dans une application.
Le format de la commande :
• opérateurs arithmétiques
opérateur symbole
Addition +
Soustraction -
Multiplication *
Division /
Modulo (remainder) %
Exponentiation ^
• comparateurs
comparateurs Symbole
Egal à =
Différent de <>
Dans la plage In
opérateurs logiques
Accept Rend le numéro d'un choix sur une liste proposée à l'opérateur de saisie de
données.
Exemple:
PROC UR
preproc
I = 0;
do until I in 1:2
I = accept("Area Designation?", "Urban", "Rural");
enddo;
$ = I;
noinput;
Format 1:
advance [to] field-name;
Format 2:
advance [to] alpha-variable;
Format:
alpha [(len)] var-1[, var-2[..., var-n]]);
Si la valeur de len n’est pas précisée, elle prend par défaut la valeur 16.
Exemple 1:
PROC GLOBAL
alpha a,b,c;
alpha(10) x,y;
PROC A1
x = "hi mom";
x sera égal à "hi mom "
1234567890
x = "good night, mom";
x sera égal "good night"
1234567890
Exemple 2:
PROC GLOBAL
alpha (3) reply;
alpha flag;
PROC Q5
if q5 = 1 then
reply = "Yes";
flag = "Y";
endif;
Format:
array [alpha[(len)]] array-name(dim-1[,dim-2[,dim-3]]) [save];
exemple:
PROC GLOBAL
array age_hd (2,8); {sexe par lien de parenté}
exemple:
PROC MY_PROGRAM
preproc
homme = 1;
femme = 2;
age_hd (homme,1) = 20; { CM homme }
age_hd (homme,2) = 24; { époux }
age_hd (homme,3) = 8; { enfant de sexe masculin}
age_hd (femme,1) = 26; { CM femme }
age_hd (femme,2) = 32; { épouse }
age_hd (femme,3) = 5; { enfant de sexe féminin}
Break Sortie d'une boucle, et continue l'exécution après la commande enddo spécifiant la
fin de la boucle.
Exemple :
PROC QUEST
spouse = 0;
for i in PERSON_EDT do
if relationship = 2 then
spouse = i;
break;
endif;
enddo;
Clear Initialise les valeurs en mémoire de données définies dans des fichiers externes à
zéro ou blanc.
Format:
b = clear(ext-dict);
Format:
b = close(ext-dict-name | file-name);
Cmcode Rend le nombre de mois depuis l'année 1900 d'une date donnée en mois et année.
Format:
i = cmcode(month,year);
Exemple 1:
XMONTH = 06;
XYEAR = 81;
DATE = cmcode(XMONTH,XYEAR);
La valeur de DATE avec les paramètres donnés [Juin 1981], sera (81 x 12) + 6 = 978.
Exemple 2:
XMONTH = 2;
XYEAR = 2000;
DATE = cmcode(XMONTH,XYEAR);
La valeur de DATE avec les paramètres donnés [Février 2000], sera ((2000 – 1900) * 12) + 2, ou 1202.
Format:
s = concat(string-2,string-2[,..,string-n]);
Exemple:
PROC GLOBAL
alpha 30 FIRST_NAME, LAST_NAME, FULL_NAME;
PROC ABC
FIRST_NAME = "John"
LAST_NAME = "Henry"
FULL_NAME = concat(strip(FIRST_NAME)," ", strip(LAST_NAME));
Le résultat obtenu :
FIRST_NAME = "John "
LAST_NAME = "Henry "
FULL_NAME = "John Henry "
Format:
i = count(multiple-item [where condition]);
Exemple:
Format:
i = curocc([group]);
Exemple :
PROC RELATION
if curocc(PERSON_REC) = 1 then
if (LIEN <> 1) then
errmsg("La première personne doit être le CM");
endif;
endif;
Delcase Marque un enregistrement pour sa suppression dans un fichier externe basé sur une
clé.
Format:
b = delcase(ext-dict-name[,var-list]);
Format:
b = delete(group[occ]);
Format:
i = demode();
Format:
do [[varying] var = expression] while/until condition [by expression]
instructions;
enddo;
Exemple:
HEAD = 0;
do varying i = 1 until HEAD > 0 or i > totocc(PERSON)
if RELATIONSHIP(i) = 1 then
HEAD = i;
endif;
enddo;
Le même exemple peut être réécrit en utilisant la condition « while» comme indiqué ci-dessous:
HEAD = 0;
do varying i = 1 while HEAD = 0 and i <= totocc(PERSON)
if RELATIONSHIP(i) = 1 then
HEAD = i;
endif;
enddo;
Format:
s = edit(edit-pattern,numeric-expression);
Exemple 1:
X = 87;
A1 = edit("ZZZ9",X); yields A1 = " 87"
A2 = edit("9999",X); yields A2 = "0087"
A3 = edit("Z999",X); yields A3 = " 087"
Exemple 2:
Y = 0;
A4 = edit("ZZ9",Y); yields A4 = " 0"
A5 = edit("999",Y); yields A5 = "000"
A6 = edit("ZZZ",Y); yields A6 = " "
Exemple 3:
A = edit("99:99:99",sysdate());
Exemple 4:
A = edit("99/99/99",sysdate("DDMMYY"));
Exemple 5:
A = edit("ZZZ,ZZZ,ZZ9",MONTANT);
Exemple:
if KIDSBORN = 0 then
endgroup;
endif;
Exemple:
if MORE_WOMEN = 0 then
endlevel;
endif;
Format:
enter form-file-name
Errmsg Montre ou écrit un message.
Format 1 Exemples:
Exemple 1:
errmsg("Le CM est âgé de %d", AGE);
Exemple 2:
errmsg("Plus d’un CM dans un ménage") denom = PERSON_COUNT summary;
Exemple 3:
errmsg("Le CM est âgé de %d. Son âge doit être >= 12", AGE)
Format 2 Exemple:
Exemple:
function FIRST_WOMAN();
FIRST_WOMAN = 0;
do i = 1 while i <= HH_MEMBERS
if SEX(i) = 2 then
FIRST_WOMAN = i;
exit;
endif;
enddo;
end;
Exemple:
PROC GLOBAL
File FILE_PERSON, FILE_HOUSEHOLD;
fileconcat Cumule plusieurs fichiers définis dans le même format.
Format:
b = fileconcat(result-file-name, file1[, file2[, ...]]);
Exemple:
fileconcat("c:\prov1\prov1.dat", "c:\prov1\01*.dat");
Format:
b = filecopy(file-name, result-file-name);
Exemple:
filecopy(DATA, DATACOPY);
Format:
impute (item-name, expression)
[stat (item-name1, item-name2,....,item-nameN)]
[title (alpha-expression)]
[vset (vset-number)]
[specific];
Exemple:
impute(P04_AGE, TEMPAGE) title("Age updated via TempAge") vset(2);
Format:
i = int(numeric-expression);
Exemple:
x = int(5 / 3);
La valeur de x sera 1.
invalueset Détermine si une valeur d'une variable est dans une plage de valeurs.
Format:
b = invalueset(item-name[, valueset-name]);
Exemple 1:
if not invalueset(P03_SEX) then
errmsg("Sexe est invalide. La valeur est %d", P03_SEX);
endif;
Format:
b = loadcase(ext-dict-name[, var-list]);
Exemple:
OK = loadcase(SAMPDICT,CLUSTER,HH);
La fonction retourne la valeur 1 (vrai) si l’enregistrement est trouvé et chargé, 0 (faux) dans le cas
contraire.
next Finit une boucle, une itération et continue l'exécution avec l'itération suivante dans la
boucle.
Format:
skip [to [next]] field-name;
Exemple:
if Q202 <> 1 then
skip to next Q201;
endif;
Exemple:
TOTAL_PERSONS = noccurs(PERSON);
Exemple:
PROC Q102
preproc
if Q101 <> 1 then
noinput;
endif;
PROC GLOBAL
numeric X, Y, male, female;
Format:
i = pos (substring, source);
Exemple 1:
X = pos("L","FOR THE CHILDREN");
La valeur de X sera 12;
Exemple 2:
X = pos("DRE","CHILDREN");
La valeur de X sera 5;
Exemple 3:
X = pos("DCN","CHILDREN");
La valeur de X sera 0.
postproc Déclare que les instructions qui suivent sont exécutées à la fin d'un bloc.
PROC SEX
postproc
if ($ = 2 and AGE < 5) then
reenter;
endif;
preproc Déclare que les instructions qui suivent sont exécutées au début d'un bloc.
PROC DATE
preproc
DATE = sysdate("DDMMYYYY");
Recode Assigne une valeur à une variable basée sur la valeur d'une ou plusieurs autres
variables.
Format:
recode var-1 [:var-2 [:var-n]] => var-out;
[range-1] [:range-2 [:range-n]] => exp;
[range-1] [:range-2 [:range-n]] => exp;
: : :
[: [:]] => other-exp;
endrecode;
Exemple 1:
recode AGE => AGE_GROUP;
0-19 => 1;
20-29 => 2;
30-39 => 3;
40-49 => 4;
>= 50 => 5;
=> 9;
endrecode;
Exemple 2:
recode ATTEND : ED_LEVEL => EDUC;
2,notappl : => 1;
1 : 1 => 2;
1 : 2,3 => 3;
: => 9;
endrecode;
Exemple:
if KIDS = 1 & BOYS = 0 & GIRLS = 0 then
reenter KIDS;
endif;
Format:
b = setfile(ext-dict-name | file-name, alpha-exp
[, update | append | create]);
Si les options update, append ou create qui sont optionnels, ne sont citées, le fichier est ouvert en mode
update.
Exemple 1:
OK = setfile(LOOKUP, "c:\My Lookup File.dat");
Exemple 2:
OK = setfile(REPORT, REPORT_FILE_NAME, create);
Format :
skip [to [next]] field-name;
Exemple :
if Q305 <> 2 then
skip to Q307;
endif;
Format:
i = soccurs(record-name);
Exemple:
NUM_HH_MEMBERS = soccurs(PERSON_REC);
sort Fait le tri des occurrences d'un enregistrement avec comme critère la valeur d'une
variable.
Format:
b = sort(group using item);
Exemple:
Sort(PERSON using LINE_NUM);
Format:
b = special(numeric-exp);
Format:
d = sum(multiple-item [where condition]);
Exemple:
TOTAL_INCOME = sum(INCOME);
TOTAL_FEMALE_INCOME = sum(INCOME where SEX = 2);
Format:
i = sysdate([date-format]); [ ] indique que cette partie est optionnelle.
La date courante sera retournée comme une chaine de caractères en utilisant la fonction edit comme
suit:
edit("99/99/99",sysdate("DDMMYY"));
Exemple :
Si la date courante est 17 Décembre 1999, on aura les résultats suivants:
x = sysdate("DDMMYYYY"); retourne 17121999
x = sysdate("MMYYYY"); retourne 121999
x = sysdate("DD"); retourne 17
x = sysdate();retourne 991217
systime Retourne l'heure du système comme un entier.
Format:
i = systime();
edit("99:99:99",systime());
Exemple:
TIME = systime();
HOUR = int(TIME / 10000);
MIN = int(TIME / 100) % 100;
SEC = TIME % 100;
Format:
d = tonumber(string-exp);
totocc Retourne le total des occurrences d'un tableau d'une ou de plusieurs variables.
Format:
i = totocc([group]);
Exemple 1:
if totocc(HOUSING) > 1 then
errmsg("Plus d’un enregistrement habitat");
endif;
Exemple 2:
PROC HOUSING
if totocc() > 1 then
errmsg("Plus d’un enregistrement habitat");
endif;
while Exécute une ou plusieurs instructions une ou plusieurs fois tant que la condition est
vraie.
Format:
while condition do
instructions;
enddo;
Exemple:
i = 1;
NumPeople = totocc (Person);
while i <= NumPeople do
if rel(i) = notappl and sex(i) = notappl and age(i) = notappl
then
delete (PERSON(i));
else
i = i + 1;
endif;
enddo;
Exemple:
write("Sex = %d", SEX);
Format:
b = writecase(ext-dict-name[,var-list]);
Exemple:
OK = writecase(KIDS,CLUSNUM,HHNUM,LINE);
3.3. IMPLÉMENTATION DE LA FONCTIONNALITÉ CAPI
Pour utiliser le CAPI de CSPro, vous devez cocher l’option « CAPI mode » situé au niveau des
options. Pour ce faire :
La fenêtre suivante s’ouvre, cocher les options « CAPI mode » (1) et « All fields »
située au niveau de « Use Extends Controls » (2)
A présent l’option CAPI est active et vous verrez, que pour chaque item, l’application
affichera les modalités dès que le curseur y est pointé.
Cependant, pour que l’application puisse vraiment être adaptée à la collecte, vous devez faire
un certain nombre d’opérations supplémentaires pour la rendre plus conviviale.
Pour modifier le type de capture pour un champ, Cliquez sur le champ puis appuyer surle clic
droit et « field's properties » , choisir « Capture Type » -> Change.
CSPro vous permet de sélectionner le type de capture qui est approprié pour le premier jeu de
valeur de l'élément. Pour un contrôle basé sur le programme, voir la fonction de setcapturetype.
Le concepteur CSPro montre les domaines qui utilisent des contrôles étendus par la coloration
de la frontière du champ en bleu.
Types de capture
L'attribut Zone de texte est l'option par défaut pour un champ et indique qu'aucun contrôle
étendu (modalités de réponses) ne s’affiche. En CSPro 5.0, les options « menu déroulant » et
« Combo Box » sont du même type de capture.
Bouton radio
Le bouton radio peut être sélectionné pour les variables qualitatives à réponse unique. Il se
présente comme suit :
Check Box
Cases à cocher sont utilisées pour capturer des variables de réponse multiples. Pour qu’un
champ puisse être configuré comme une case à cocher, elle doit être de type alpha. La longueur
du champ doit être égale au nombre de possibilités maximales de réponse. Chaque valeur dans
l'ensemble de valeur correspond à l'une des réponses et sera affiché comme une case à cocher
distincte. Lorsque les cases sont cochées, les valeurs correspondantes seront mises dans le
champ alpha, de gauche à droite.
Drop Down / Combo Box
Ce type de capture affiche toutes les valeurs de la valeur principale qui est prévue d'un élément
numérique ou alpha. Contrairement à la case d'option Type de capture, le menu déroulant Type
de capture permet l'affichage des gammes de valeurs (ce est-ensembles de valeurs de "valeurs").
Date
Le type date est valide pour alpha et articles numériques de longueur 4, 6 ou 8. Le choix du
format de la date affecte la façon dont la date est stockée dans le champ.
Number Pad
Certains utilisateurs le trouvent encombrant à utiliser le clavier à l'écran lors de la saisie des
données sur une tablette. Cette commande affiche un pavé numérique pour entrer des valeurs
numériques avec le doigt ou la souris.
Utilisation de la fonction « Set Attributes ».
A la place d’utiliser les captures. La fonction « Set attributes » permet de présenter la liste des
modalités sous forme de menu. Elle doit être déclarée en preproc comme suit :
l’enquêté. Pour ajouter cette description, vous devez cliquer sur l’item et cliquer sur situé au
niveau de la barre d’outils ci-après situé en haut de l’écran.
La première ligne (Indiquer une action) est le titre de la fenêtre et les lignes restantes sont les
options du menu. S’il clique sur la troisième ligne, la fonction va retourner la valeur 3. Et il faut
indiquer les instructions :
if choice=1 then
instructions ;
elseif choice=2 then
instructions ;
elseif choice=3 then
instructions ;
elseif choice=4 then
instructions ;
endif ;
3.3.4. DÉPLOIEMENT DE L’APPLICATION
Pour déploiement de l’application, on peut utiliser CS Pro soit :
Pour déployer votre application CAPI sur un ordinateur de poche ou PDA, vous devez faire ce
qui suit :
Générer une version binaire (compilé) de l'application. Pour ce faire, ouvrez votre application
dans CSPro et choisissez "Générer binaire" dans le menu de fichier. L'application binaire aura
extension de fichier .enc.
Préparez un fichier .PFF. Ce fichier indique quel fichier de données CSPro (s) à utiliser
avec votre application. Lorsque vous exécutez votre application sur l'ordinateur de
bureau, CSPro génère automatiquement un fichier .PFF pour vous. Il aura le même nom
que votre application uniquement avec une extension de fichier .PFF et un feu de
circulation pour une icône. Il sera placé dans le même répertoire que votre application.
Dans la plupart des cas, vous pouvez utiliser le fichier .PFF généré sur l'ordinateur de
bureau sur le PDA. Le seul cas où cela ne fonctionne pas, c’est si vous placez votre
fichier de données dans un répertoire différent par rapport à votre application sur le
bureau que vous faites sur le PDA. Par exemple, si votre fichier de données est sur un
autre lecteur de votre application (D: au lieu de C :), cela ne fonctionnera pas sur le PDA
car il n'y a pas de lettres de lecteur dans Windows Mobile. Si c’est le cas, alors vous
pouvez ouvrir le fichier .PFF dans un éditeur de texte tel que le bloc-notes et de modifier
le chemin d'accès au fichier de données à utiliser un répertoire qui sera valable sur le
PDA. Si votre fichier de données et votre application sont dans le même répertoire à la
fois sur le bureau et le PDA, alors vous n’aurez pas besoin de faire des changements.
Pour plus d'informations sur les fichiers .PFF, voir le Chapitre consacré à l’étude de
cas.
Copiez les fichiers .ENC et .PFF sur le PDA. La meilleure façon de le faire est d'utiliser
ActiveSync. Cliquez sur le bouton "Explorer" dans ActiveSync pour parcourir les
fichiers sur votre ordinateur de poche.
Vous pouvez ensuite faire glisser et déposer le .PFF et .enc de l'ordinateur de bureau vers le
PDA.
Vous devez placer les .PFF et les fichiers .ENC en soit le dossier Mes Documents, un sous-
dossier du dossier Mes documents ou un dossier sur la carte de stockage SD s’il y a une les
dialogues de fichiers Windows Mobile standard utilisés dans CSPro ne regardent pas dans les
dossiers autres que ceux-ci.
Une fois les fichiers ont été copiés sur le PDA, vous êtes prêt à exécuter l'application sur le
PDA.
APPLICATION CAPI
4.1. OBJET
L’objet de l’étude de cas est de réalise une application sous CAPI. Il s’agira, en plus du
développement des masques, de :
4.2. PRÉ-REQUIS
Vous devez pouvoir :
o créer un dictionnaire des variables sous CS Pro ;
o Générer et mettre en forme un masque de saisie ;
o Implémenter des contrôles de cohérences ;
o Savoir activer l’option CAPI et savoir choisir pour chaque champ les types de capture ;
o Avoir des notions en algorithmes ;
o La connaissance du langage pascal serait un plus.
Les quatre premiers points ont été développés dans la première partie de ce document.
Par ailleurs, vous devez organiser votre répertoire de travail de telle sorte à ne pas vous
perdre en cours de développement. CSPro génère des fichiers supplémentaires à chaque
fois que vous créer un dictionnaire, masque, etc (voir File Type au niveau de l’aide de
CS Pro). Donc on peut facile se perdre si tous ces fichiers sont situés dans le même
dossier. Ainsi, il est suggérer dans le développement de telles applications d’avoir une
certaine organisation des fichiers. Ces fichiers sont classés dans des sous-répertoires du
répertoire principal suivant leur nature. Souvent le répertoire de travail peut être divisé
de cette manière :
BATCH doit contenir l’ensemble des programmes de type batch utilisés dans
votre application ;
DATA doit contenir données collectés sur par les enquêteurs ;
DICTS contient les dictionnaires utilisés de l’application ;
DOCS contient les documents destinés à l’enquêteur (manuels par exemple)
ENTRY contient les outils de collectes (masques ….) ;
REPORT contient les rapports générer par l’application (rapport de suivi,
rapport de qualité…) ;
PREP contient les fichiers les fichiers statiques tels que les fichiers
échantillons, elle peut contenir aussi les fichiers reçus du superviseur comme
ces derniers peuvent être placé dans un autre fichier RECEV ;
WORK
TEMP :
FINAL :
UTILITY
RUN PFF
SELCASE
LOADCASE
WRITECASE
FIND
SHOW
FILECOPY
FILEEMPTY
FILEDELETE
SETFILE
FILEREAD
CLOSE
L’Institut Ndiayène de la Statistique (INS) avec votre concours a la charge de mener à bien
cette entreprise de grande envergure afin de répondre à l’attente des utilisateurs de données
agricoles.
Voici les informations qui sont mises à votre disposition pour la réalisation de vos tâches :
4.5.2. DECOUPAGE DU TERRITOIRE DE LA REPUBLIQUE DE NDIAYENE
• Découpage administratif
L’organisation administrative du NDIAYENE se présente comme suit : Provinces,
Départements, communes et Quartiers/Villages. Les villages et les quartiers constituent les
unités administratives de base. Le pays compte 4 provinces, chaque province compte 3
départements. Les départements sont divkisés en communes et les communes en quartiers.
C’est la plus petite unité opérationnelle du recensement. Elle compte environ 1000 habitants. La
zone de dénombrement peut prendre plusieurs formes ;
un ou plusieurs villages ;
un village et une partie d’un autre village ;
une partie d’un village / quartier ;
un quartier d’une commune
Identification
Province.......................……….................…………….. ………….….………….I___I
Département...............………………………………………… ….………..…………….I___I
Région Naturelle :……………………………… ……………….……I___I___I
Coordonnées GPS
Latitude Longitude Nom du chef de l’exploitation Type d’exploitation
Une autre personne salariée Une autre personne physique Un membre d’un
groupement
Fin de l’interview
FONCTIONNALITÉ ATTENDUES :
L’INS vous a retenu comme développeur principal des applications du recensement, voici le
cahier de charge qui vous été transmit :
Pour atteindre les objectifs fixés au niveau du cahier de charge, il faudra mettre en place2 :
Un formulaire d’authentification ;
Un menu de l’Agent Recenseur ;
Un formulaire pour le recensement des exploitations ;
2
Ces formulaires proposés ne sont qu’à titre d’exemple, vous pouvez les revoir à votre guise.
Une procédure de tirage aléatoire des 10% exploitations échantillons ;
Un formulaire pour la collecte des données démographiques des exploitations agricoles ;
Un formulaire de saisie des informations des ménages tirés.
Import.dcf
Record :
o Identification de l’enquêteur
o Identification de la ZD
Remarque :
o Nous avons préfixe les noms de l’ensemble des items de ce dictionnaire avec
« IM ». Le dictionnaire import sera utilisé comme dictionnaire externe, il est
important donc que les noms de ses items ne se répètent pas dans les autres
dictionnaires. Leur répétition créer des ambigüités qui seront considérer comme des
erreurs par CSPro.
o Le fichier devant contenir les données indentifications (de format .dat) de
l’enquêteur et de la ZD doit avoir la même structure que le dictionnaire.
Pour voir cette structure, appuyez sur le bouton , ou appuyez sur Ctrl + L.
L'écran s’affiche en base de la fenêtre :
Cette vue vous indique où, physiquement, chaque élément de chaque enregistrement se trouve,
combien d'espace lui a été alloué. La palette de couleurs utilisée est la suivante:
pour les records type (identifiants des sections) ;
pour les id items c'est-à-dire les variables d’identification enregistrement ;
pour les items c'est-à-dire les questions ;
pour les subitems. ;
Cliquez sur un élément pour déplacer le curseur sur l'élément spécifique dans la fenêtre du
dictionnaire
Simple clic sur un élément pour passer à la définition de l'élément.
Double-cliquez sur un élément pour montrer ses values-sets.
Authentification.dcf
Les sections :
Le contenu des sections
Section Id Items
Section authentification
exploitation.dcf
Les sections :
Section exploitation
Ménage.dcf
Les sections :
Section ménage
cliquez sur pour créer un nouveau fichier situé sur la barre d’outils
choisissez data entry application
Donnez un nom au masque
Formulaire d’authentification
Masque exploitation
Pour le masque destiné au recensement des exploitations agricoles, certains champs doivent être
pré-chargés et protégés de telle sorte que l’AR ne puisse les modifier. Vous devez protéger ces
champs. Pour cela :
Sélectionnez les champs concernés, faites un clic droit et choisissez « Fiel
Properties »
Cochez « Protected »
Pour le champ numéro de l’exploitation doit être protégé et incrémenté à chaque nouvelle
exploitation. Pour cela sélectionnez le champ, et en plus de l’objet « protected » cocher
« sequential » au niveau des propriétés.
Masque ménage :