WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Manuel d'initiation du logiciel CSPRO

( Télécharger le fichier original )
par Ortéga Wanignon DOVOEDO
Ecole nationale de la statistique et de l'analyse économique ( ENSAE ) - Sénégal - Elève ingénieur des travaux statistiques 2è année 2011
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

3-4.3. 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éfini, ils peuvent être utilisés n'importe où dans une 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 :

Valeur de retour = nom de fonction (liste de paramètre)

Exemple :

function InitRellyArray ();  {user-defined function}

  Relly (1) = 3; { enfant du CM }

  Relly (2) = 4; { parent du CM }

  Relly (3) = 9; { petit-fils du CM }

  Relly (4) = 8; { grandparent du CM }

 end;

3-4.3. Les opérateurs

Not equal to

<>

Less than

<

Less than or equal to

<=

Greater than

>

Greater than or equal to

>=

In range

in

Operation

Symbol

Keyword

Negation

!

not

Conjunction

&

and

Disjunction

|

or

3-4.4. Liste des commandes 

1. 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;

2. Advance Avance à un champ indiqué durant l'entrée de données.

Format 1:

advance [to] field-name;  

 

Format 2:

advance [to] alpha-variable;

3. Alpha Déclare des variables alphanumériques utilisées dans l'application.

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;

4. Array Déclare un tableau (ou matrice) de 1 à 3 dimensions.

Format:

array [alpha[(len)]] array-name(dim-1[,dim-2[,dim-3]]) [save];

L'option save permet d'initialiser la matrice avec les données en ligne.

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}

5. 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;

6. 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);

7. Close Ferme un fichier externe précédemment ouvert.

Format:

b = close(ext-dict-name | file-name);

8. 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.

9. concat Joint deux ou plusieurs caractères alpha.

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 "

10. Count Rend le nombre d'occurrences d'un tableau d'enregistrements répétés ou bien le nombre de fois que la condition est trouvée.

Format:

i = count(multiple-item [where condition]);

Exemple:

NBR_ENFANT = count(PERSONS where LIEN = 3);

11. Curocc Rend le numéro de l'enregistrement courant dans un tableau d'enregistrements répétés.

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;

12. Delcase Marque un enregistrement pour sa suppression dans un fichier externe basé sur une clé.

Format:

b = delcase(ext-dict-name[,var-list]);

var-list permet de définir la clé

13. Delete Supprime un enregistrement ou plusieurs enregistrements répétés dans un questionnaire en cours de lecture.

Format:

b = delete(group[occ]);

Exemple (enregistrements multiples):

do varying i = totocc(PERSON_REC) until i <= 0 by (-1)

  if rel(i) = notappl and

    sex(i) = notappl and

    age(i) = notappl then

    delete (PERSON_REC(i)); {permet d'enlever les enregistrements vides }

  endif;

enddo;

14. Demode Rend le mode d'entrée de données actuel.

Format:

 i = demode();

Il y a trois modes de saisie de données:

 


· add, pour entrer de nouveaux enregistrements; la valeur retournée par Demode est '1'

 


· modify, pour modifier un enregistrement déjà saisi; la valeur retournée par Demode est '2'.

 


· verify, pour introduire à nouveau les données et verifier qu'il y a pas de différences entre les données de la première et deuxième saisie; la valeur retournée par Demode est '3'.

 

Exemple:

if demode() = add then

  V103 = 3;

endif;

15. Do Exécute une ou plusieurs déclarations à plusieurs reprises tandis qu'une condition logique reste vraie ou bien jusqu'à ce qu'une condition logique ne soit plus vraie.

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;

16. Edit Convertit un nombre en caractère.

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);

17. Endgroup Finit l'entrée de données pour l'enregistrement courant ou le groupe d'enregistrements.

Exemple:

if KIDSBORN = 0 then

  endgroup;

endif;

18. Endlevel Finit l'entrée de données pour le niveau actuel.

Exemple:

if MORE_WOMEN = 0 then

  endlevel;

endif;

19. Enter Permet d'entrer des données à partir d'un autre formulaire.

Format:

enter form-file-name

20. 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:

 OK = errmsg (1,"June"30,31);

 

Le fichier message va contenir le texte suivant:

 

 1 %s est de %d jours. Vous avez introduit %d!

21. Exit Finit une procédure avant que le traitement normal finisse.

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;

22. File Déclare un ou plusieurs fichiers utilisés dans l'application.

Exemple:

PROC GLOBAL

  File FILE_PERSON, FILE_HOUSEHOLD;

23. 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");

24. Filecopy Copie un fichier dans un autre fichier.

Format:

b = filecopy(file-name, result-file-name);

Exemple:

filecopy(DATA, DATACOPY);

25. impute Assigne une valeur à une variable et enregistre la fréquence d'assignation.

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);

26. int Rend la partie entière d'une expression numérique.

Format:

i = int(numeric-expression);

Exemple:

x = int(5 / 3);

 

La valeur de x sera 1.

27. 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;

28. Loadcase Charge un enregistrement d'un fichier externe dans la mémoire à partir de variables servant de clé.

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.

29. 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;

30. noccurs Rend le nombre de présences (d'occurrences) pour un formulaire se répétant ou une liste.

Exemple:

TOTAL_PERSONS = noccurs(PERSON);

31. noinput Empêche la saisie pour le champ actuel pendant l'entrée de données.

Exemple:

PROC Q102

preproc

 if Q101 <> 1 then

   noinput;

 endif;

32. numeric Déclare des variables numériques utilisées dans l'application.

PROC GLOBAL

  

  numeric X, Y, male, female;

33. pos Rend la position d'un caractère dans une série de caractères.

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.

34. 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;

 

35. preproc Déclare que les instructions qui suivent sont exécutées au début d'un bloc.

PROC DATE

 preproc

 DATE = sysdate("DDMMYYYY");

 

36. 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;

37. reenter Force l'agent de saisie à ré-entrer le champ actuel ou précédent.

Format :

reenter [field-name];  

Exemple:

if KIDS = 1 & BOYS = 0 & GIRLS = 0 then

  reenter KIDS;

endif;

38. setfile Assigne un fichier de données à un dictionnaire ou à un fichier déclaré.

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);

39. skip Permet de sauter jusqu'à la variable spécifiée au moment de la saisie.

Format :

skip [to [next]] field-name;

Exemple :

if Q305 <> 2 then

  skip to Q307;

endif;

40. soccurs Retourne le nombre d'occurrences d'un enregistrement.

Format:

i = soccurs(record-name);

Exemple:

NUM_HH_MEMBERS = soccurs(PERSON_REC);

41. 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);

42. special Détermine si la valeur d'une variable est MISSING, NOTAPPL, or DEFAULT.

Format:

b = special(numeric-exp);

le numeric-exp peut être une variable, un champ ou une expression numérique.

43. sum Retourne la somme d'une variable répétée plusieurs fois.

Format:

d = sum(multiple-item [where condition]);

Exemple:

TOTAL_INCOME = sum(INCOME);

TOTAL_FEMALE_INCOME = sum(INCOME where SEX = 2);

44. sysdate Retourne la date du système comme un entier.

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

45. 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;

46. tonumber Convertit un caractère alpha en numérique.

Format:

d = tonumber(string-exp);

47. 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;

48. 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;

49. write Ecrit dans un fichier texte.

Format:

[b =] write(alpha-exp[,p1[,p2[,...,pn]]]);

  

In the string expression

%[n]d  = insérer un nombre et l'afficher comme un entier

%[n.d]f = insérer un nombre et l'afficher comme une valeur décimale

%[n.d]s = insérer du caractère texte

 

"n" est la taille du champ et "d" représente la valeur à afficher.

Exemple:

write("Sex = %d", SEX);

50. writecase Ecrit un enregistrement de la mémoire dans un fichier externe.

Format:

b = writecase(ext-dict-name[,var-list]);

Exemple:

OK = writecase(KIDS,CLUSNUM,HHNUM,LINE);

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Tu supportes des injustices; Consoles-toi, le vrai malheur est d'en faire"   Démocrite