License [fr]
English version [en]

DEBOGAGE, COMPILATION  ET  PORTABILITE


1. DĂ©bogage de l'importation des noms de variable-labels-informats

En cas de problème à l'importation des informations inscrites sur les lignes de commentaires, la première mesure à prendre est de vérifier le source HTML du questionnaire. Les champs de la zone de commentaire introduite par // doivent être séparés par des balises HTML contiguës, éventuellement séparées par le séparateur de code hexadécimal 0xA0 (cas de figure fréquent sous MS-Word).

Ne pas utiliser les caractères < > ou blanc insĂ©cable dans les champs du commentaire // (le code sera tronquĂ©  Ă   l'importation).

2. Débogage de la base à séparateurs générée par l'option -B

Si le dessin d'enregistrement utilisé pour la création de la base à séparateurs n'est pas le bon :

    a) vĂ©rifier ce dessin d'enregistrement en produisant les tables de correspondance par l'option -t combinĂ©e avec les options -N -L -F
    b) Ă©ventuellement, remplir un questionnaire et vĂ©rifier les sorties sur la table de correspondance obtenue par l'option -fo
    c) en cas de problème persistant, il reste possible d'importer la base sous SAS (R) en utilisant une Ă©tape DATA
(options -T, -Te, -To, -Ts) à condition de spécifier les informats manuellement en ligne de commentaire. L'option -A ne doit pas être utilisée dans ce cas.

En cas de problème lié à la gestion de la mémoire, il est possible de recompiler IDSS en ajustant les directives de compilation qui permettent de réserver l'espace mémoire nécessaire au calcul du dessin d'enregistrement.

3. DĂ©bogage par positionnement des descripteurs de fichier

La lecture des questionnaires doit impérativement ignorer l'ensemble du code HTML qui apparaît entre les balises <head>...</head>, au moins sous MS-Word.
Cette fonctionnalité est automatisée mais il peut être opportun de la contrôler, ou d'étendre les sauts effectués pour n'analyser que des parties de questionnaire et ainsi mieux isoler les difficultés de lecture éventuelles. L'option -j (offset hexadécimal) assure que les questionnaires seront lus à partir de l'offset hexadécimal indiqué en argument.

4. Directives de compilation

Il est rappelé qu'un compilateur compatible avec la norme C99 est nécessaire (option -std=c99 avec GCC).
Les directives suivantes sont spécifiées dans les projets Code::Blocks ainsi que dans les Makefile livrés avec le logiciel. Elles peuvent être utilisées avec d'autres compilateurs :

POSIX
    Environnement POSIX
WIN
    Environnement WINDOWS. L'une des deux directives de compilation POSIX ou WIN doit ĂŞtre spĂ©cifiĂ©e.

STRICT
    Comportement plus strict de la fonction de lecture pick(FILE) du source static functions.h. Les erreurs de lecture sont contrĂ´lĂ©es.
 
FRANCAIS
    Aide en ligne et interactions conversationnelles en français.
ENGLISH
    Aide en ligne et interactions conversationnelles en anglais.
LANGUAGE=(char*) localisation
    Langue utilisĂ©e pour la fonction de localisation setlocale (pour le français, LANGUAGE="fr_FR" est automatiquement spĂ©cifiĂ© si    FRANCAIS est choisi)

DIACRITIC1=(char) caractère
    Caractère diacritique supplĂ©mentaire
DIACRITIC2=(char) caractère
    Caractère diacritique supplĂ©mentaire

KOMPOZER
    Prise en compte du codage HTML sous KOMPOZER (ou NVU)
MSWORD
    Prise en compte du codage HTML sous  Microsoft WORD (R)

MAXIMUM_LINES=(int)
    Nombre maximum de lignes du questionnaire.
MAXIMUM_ITEMS=(int)
    Nombre maximum d'items de saisie (nombre de caractères) dans le questionnaire.
MAXIMUM_QUESTIONS=(int)
    Nombre maximum de questions dans le questionnaire (commençant par un nombre suivi d'un point). Doit ĂŞtre infĂ©rieur Ă 
    MAXIMUM_LINES.
MAXIMUM_MODIF=(int)
    Indique le nombre de caractères maximum lus pour chaque modification portĂ©e sur la ligne de commentaires.
VARIABLE_LENGTH=(int)
    Indique le nombre de caractères maximum lus pour chaque nom de variable de la ligne de commentaires, ou automatiquement gĂ©nĂ©rĂ© (option -A).
INFORMAT_LENGTH=(int)
    Indique le nombre de caractères maximum lus pour chaque informat de la ligne de commentaires, ou automatiquement gĂ©nĂ©rĂ©
   (option -A).
LABEL_LENGTH=(int)
    Indique le nombre de caractères maximum lus pour chaque label de la ligne de commentaires ou sĂ©parĂ© entre accolades dans le texte.
VALUE_WIDTH=(int)
    Doit ĂŞtre supĂ©rieur ou Ă©gal Ă  10. Indique le nombre de caractères de l'affichage de la valeur des champs
   dans la table de correspondance (option -fo)

COUNT_SPACING=(char*) chaîne de caractères
    ChaĂ®ne de caractères prĂ©cĂ©dant les compteurs d'items insĂ©rĂ©s dans les questionnaires mis en forme (option -n ).
    Sous GCC il est nĂ©cessaire d'Ă©chapper les guillemets qui entourent la chaĂ®ne : COUNT_SPACING="\"   ****      \""

Les valeurs par dĂ©faut des variables non dĂ©finies par les directives de compilation sont donnĂ©es par le fichier constants.h

Revenir au début

5. Fonctions en ligne et optimisation sous GCC

Les optimisations -fomit-frame-pointer et -fexpensive-optimizations ont été testées ; elles diminuent très peu le temps d'exécution.
En fonction de la taille de la mémoire cache disponible, il peut être préférable d'augmenter le degré d'utilisation des fonctions en ligne (inline), qui ne sont pas systématiquement incorporées au code objet par la directive de compilation -O3 du compilateur GNU GCC.
Il est possible d'augmenter la mise en ligne effective des fonctions dĂ©finies notamment dans les fichier static functions.h par les directives GCC suivantes :

-Winline --param large-function-growth=100000 --param inline-unit-growth=2000 --param max-inline-insns-single=10000

Les fonctions qui ne seraient pas mises en ligne sont indiquées grâce à l'option -Winline.
L'exécutable qui résulte de cette optimisation est environ trois fois plus gros que l'exécutable livré, compilé avec l'option -O3.
Il ne donnera de meilleurs temps d'exécution qu'à la condition de disposer d'une quantité de mémoire cache importante.

6. Portabilité

IDSS a été testé sous Linux, Windows XP et Cygwin (environnement XP).
Il est rappelé qu'un compilateur compatible avec le standard C99 est nécessaire.
Avec le compilateur GCC, les directives de compilation WIN et POSIX suffisent pour passer d'un environnement Ă  l'autre, sans modification du source ou des autres directives de compilation.
L'ensemble des ajustements liés à la portabilité est rassemblé dans les fichiers Winport.c et Winport.h