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