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