Présentation
Documentation
L'équipe
Sérialisation
 
Programmes
Objets
Libs Utilitaires
Libs Internes
   
 
Editeur
Syntaxes
Windows
Versions
   

SCR/AL1 - Evolutions récentes

21. Modifications apportées dans la version 4.29 (Juin 96)

CTREE6 sous Watcom C

Ctree 6 est dorénavant utilisable en DOS 32 bits (Watcom C).

Structures unifiées 16/32 bits

L'uniformisation des structures entre les versions 16 et 32 bits a entraîné certains problèmes qui sont à présent corrigés.

Option Borland de compilation

La version DOSWIN (Windows 16 bits) de SCR est compilée avec l'option -dc. Cela implique que les données statiques (strings par exemple dans les sprintf) sont placées dans le module de CODE où ils sont définis et non dans un module DATA commun à tous les modules.

En l'absence de cette option, il était difficile d'encore linker certaines applications.

Pour utiliser cette option dans une application, il faut être attentif à ce que les fonctions appelées avec des paramètres statiques ne puissent pas modifier ces paramètres. Il en résulterait un plantage rapide: en effet, il est interdit de modifier les valeurs contenues dans un module de CODE.

Une façon d'éviter ces plantages (qui n'ont lieu qu'au runtime) est de définir un prototype pour les fonctions en spécifiant const char * par exemple. Le mot-clé const empêche la fonction de modifier la valeur du paramètre.

SCR_vtom, SCR_add_ptr*

Ces fonctions sont modifiées pour éviter les problèmes énoncés ci-dessus consécutifs à l'utilisation du paramètre -dc lors des compilations.

D'autre part, des nouvelles fonctions sont ajoutées pour les cas particuliers d'utilisation de SCR_add_ptr(). Il s'agit de

        SCR_add_ptr_lg()
SCR_add_ptr_lg0()

Voir la documentation en ligne pour la description.

SCR4_E

Une erreur dans le code C généré par scr4_e -c est corrigée.

Fonctions SCR_long_to_date() et SCR_long_to_time()

Les buffers internes de ces fonctions sont modifiés suite à des comportements curieux en édition des champs DATE et TIME.

Groupe de fonction Ini*()

Un nouveau groupe de fonctions permet de gérer facilement des fichiers de type .ini. Ces fichiers se caractérisent par un certain nombre de sections dont le nom est fourni entre crochets ([Startup] par exemple) et des paramètres dans les lignes qui suivent cette entête.

Voir le manuel en ligne pour la liste et la syntaxe des fonctions.

Fonctions SCR_unix_filename(), SCR_std_filename()

Ces deux fonctions permettent d'assurer une représentation standard des noms de fichier.

Fonctions IS_init()

Cette fonction disparaît pour des raisons de compatibilité en Watcom C. En principe elle n'était utilisée qu'en interne par SCR/AL1.

Scr4_ar WC /c

Le programme scr4_ar est modifié pour prendre en compte la différence majuscules/minuscules en Watcom C.

Ctree6 pour windows, SunOS4, HP, Linux

Les portages de Ctree 6 sont effectués pour Windows, Win32s, SUNOS4, HP-UX et Linux.

Souris WC corrigée

En l'absence d'une souris MS, la sortie des programmes DOS32 (Watcom C) générait un plantage (sans gravité, mais inélégant). Cette erreur est corrigée.

DOSWIN et DOSW32 : Wprintf

Les messages envoyés dans l'écran lors de la mise en route ou en cours de travail par un programme DOSWIN ou DOSW32 sont envoyés dans la fenêtre de l'appplication.

Si un tel message est envoyé (à l'aide de la fonction Wprintf()), le message suivant est affiché avant soit de passer au main() de l'application, soit avant de quitter la fenêtre en fin d'application.

    -- Press any key --

C'est par exemple le cas de s4w_e. Une touche est alors attendue de façon à ce que l'utilisateur puisse prendre connaissance du message avant de poursuivre ou de terminer.

Portage X11 Linux, SunOS4, HP

Le driver X-Window (X11) est porté pour les systèmes SunOS4, HP-UX et Linux. Il n'est dès lors plus nécessaires de disposer de drivers (ansi, etc) pour démarrer une application X11.

La variable d'environnement SCR_FONTPATH doit être définie et contenir le path pour le fichier Scr4_term. Ce fichier contient la définition de la police de caractères X compatible Ascii-PC.

Souris Windows : delai avant répétition

Dans les applications DOSWIN et DOSW32, le fait de presser un bouton génère des messages répétés (clics) et rapides. C'est une façon par exemple de se déplacer automatiquement dans un Scollbar.

A partir de cette version, un délai de 250 ms est introduit entre la pression sur le bouton et le deuxième clic, de façon à permettre de ne générer qu'un seul clic.

Variable SCR_COMP_RI

Si cette variable est positionnée à 1, dans l'édition d'un index de MPAGE ou de PAGE (PG_EDIT_ISAM), l'édition de l'index a lieu même si le premier champ de l'index est hidden ou output.

Par défaut, ce n'est pas le cas et cela peut poser un problème de compatibilité avec d'anciennes versions.

Variable SCR_COMP_PG_ABORT

Pour des raisons de compatibilité, on peut positionner cette variable à 1: dans ce cas, l'action ABORT est annulée après l'action PG_EDIT (mais pas après la fonction PG_edit_window()!).

Fonctions SCR_upper() et SCR_lower()

Ces deux fonctions sont corrigées: elles utilisaient la macro isupper() qui ne vérifie pas le domaine de définition des paramètres. Cela pouvait générer une erreur en Unix ou Windows.

Fonction SCR_search_path()

Correction de cette fonction qui ne libérait pas l'espace alloué pour son travail interne.

Fonctions de SCAN des ISAM

Correction importante. Lorsque la fonction exécutée sur chaque record nécessite l'intervention de l'utilisateur, la valeur du VTIME restait bloquée à 0. Cela empêchait une utilisation correcte par exemple de PG_edit_window().

Dorénavant, ce paramètre est fixé à son ancienne valeur avant l'appel de la fonction utilisateur.

Groupe de fonctions HTML

Nouveau groupe de fonctions permettant de générer facilement des fichiers au format HTML. Voir manuel en ligne pour la syntaxe et la liste de ces fonctions.

Fonction FI_file()

Nouvelle fonction permettant de déterminer le type d'un fichier.

        int FI_file(char **tbl, char *inname, char *cmt, int lg)

Analyse le fichier inname et retourne son type en fonction des paramètres passés dans tbl. Un commentaire de longueur maximum lg peut être retourné dans cmt si cette variable n'est pas nulle.

Le tableau passé comme premier paramètre indique les différents formats de fichiers reconnus. Le format de chaque ligne du tableau est déterminé par le premier caractère:

Si le type ne peut être déterminé par les données de tbl, la fonction recherche elle-même des indications dans le fichier. Dans ce cas, une valeur négative est retournée par la fonction, valeur correspondant à des define du fichier s_file.h.

Valeur retournée

numéro de l'entrée dans tbl si une entrée correspond ou valeur prédéfinie sinon

Valeurs prédéfinies

    #define FI_DIR         -1
#define FI_DATA -2
#define FI_EMPTY -3
#define FI_A2M -4
#define FI_FORTRAN -5
#define FI_ASCII -6

#define FI_C -10
#define FI_FORT -11
#define FI_MAKE -12
#define FI_PLI -13
#define FI_MACH -14
#define FI_ENG -15
#define FI_PAS -16
#define FI_MAIL -17
#define FI_NEWS -18

#define FI_UNKNOWN -100
#define FI_UNFOUND -101

Exemple

    char **MAGIC_DATA =  {
"1 string MakerFile FrameMaker document ",
"1 string MIFFile FrameMaker MIF file ",
"1 string MakerDic FrameMaker Dictionary ",
"1 string Book FrameMaker Book file ",
"0 string MZ DOS executable (EXE) ",
"0 string \037\213 gzip compressed data ",
"0 string \037\235 compressed data",
"0 string %! PostScript document ",
"1 string HTML HTML document ",
"1 string html HTML document ",
"2 string rtf RTF document ",
"0 string KOBJS IODE ",
">19 short 0 CMT file ",
">19 short 1 EQS file ",
">19 short 2 IDT file ",
">19 short 3 LST file ",
">19 short 4 SCL file ",
">19 short 5 TBL file ",
">19 short 6 VAR file ",
".obj Object Module ",
".lib Library ",
".xls Excel file ",
".doc Word File ",
".mdb Access Database ",
".scr SCR/AL1 objects ",
".cmt SCR/AL1 data ",
".f SCR/AL1 source ",
0
};

CalcFileType(fname)
char *fname;
{
return(FI_file(MAGIC_DATA, fname, 0L, 0));
}

En Unix, de nombreuses définitions de formats peuvent être trouvées dans le fichier /etc/magic.

A_expandstar() et A_init()

La syntaxe de la fonction A_expandstar est modifiée : la valeur de retour qui n'était auparavant pas testée détermine dorénavant si l'argument a été traité (retour 0). Si ce n'est pas le cas, l'argument est ajouté tel quel au tableau A_VAL résultat de A_init() ou A_initv().

Copyright © 1998-2015 Jean-Marc Paul and Bernard PAUL - Envoyez vos remarques ou commentaires à bernard@xon.be