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

SCR/AL1 - Evolutions récentes

11. Modifications apportées dans la version 4.39-4.40 (octobre 97)

Programmes

SCR4_E

Les messages d'erreur sont à nouveau complets (plus de %s dans les messages).

En cas de compilation scr4_e avec -isimem les formats indiqués dans les isam sont gardés en mémoire.

SCR4_H

Une Nouvelle option -esc ch permet de spécifier le caractère d'escape utilisé dans le fichier d'aide. Cette option permet, en conjonction avec -s, de supprimer dans un manuel en ligne (caractères) les séquences de mise en gras, italique, etc.

SCR4_A2R

Le format des fichier a2m (et donc help) permet l'incorporation d'images. Les images de tous les types sont correctement gérées en format RTF à destination d'un document (Word par exemple). Ces images sont limitées aux format BMP pour les fichiers RTF destinées à la gérénation d'aide via hcw.

Les formats RTF "document" contiennent des références aux fichiers images, tandis que les formats RTF "help" incorporent les fichiers BMP (compressés par hcw).

SCR4W_AT

Nouvelles options présentes dans les écrans :

Toutes ces options sont utilisables dans les programmes à partir de variables globales.

Nouveaux programmes Windows

Quatre nouveaux programmes sont intégrés dans cette version de SCR. Ces programmes sont rendus disponibles pour permettre la gestion des ISAM ou des TABLES sans devoir lancer les programmes s32w* qui présentent l'inconvénient de démarrer une nouvelle fenêtre et de ne pas bloquer le programme appelant.

Ainsi, si dans un fichier .bat ou dans un makefile il faut par exemple recontruire des index, l'utilisation de ces nouvelles versions permet de bloquer le .bat ou le makefile tant que la reconstruction n'est pas terminée.

Les nouvelles versions sont :

Langage SCR

ACTIONS

Correction : si plusieurs sous-actions s'enchaînent et qu'une des premières retourne une valeur non nulle, le code retour de l'ensemble des ACTIONS reste 0 et non -1 comme on s'y attendrait. Cette erreur est corrigée. Par exemple :

        BEGIN_FN {
C_FN return(-1);
PG_edit pg_test
}

Dans ce cas, la PAGE pg_test ne s'affiche pas (ce qui est correct) mais la BEGIN_FN retournait erronnément 0. A partir de cette version, cette erreur est corrigée et la BEGIN_FN retourne bien -1.

MPAGE

Lorsqu'on passe des LPG (dans les MPAGE) à la APG la dernière valeur sélectionnée est automatiquement remise dans la APG.

ISAM : BUF_SEARCH

Ajout d'un mot-clé dans la définition des ISAM : BUF_SEARCH permet à IS_search() de ne pas rechercher deux fois de suite le même record. Par exemple, lors d'un scan sur le ficher client où le code pays est presque toujours BEL - BELGIQUE le requête SQL ne sera traîtée que si la recherche change.

Attention : n'utiliser ce mot-clé que si les bases de données ne changent presque pas ou ne sont changées que par une seule personne.

ISAM : DEF_MAX

Les defines pour les valeurs directes du type is_max_NUM sont générés seulement si le mot-clé DEF_MAX est défini dans l'isam.

Version Win32

Plusieurs groupes de fonction ont été ajoutés dans cette version. D'autres fonctions se sont ajoutées ou ont été modifiées.

PG_edit_obj() et PG_edit_vobj()

Il est possible d'éditer un champ seul d'une page en mode Windows à partir d'un appel à fonction:

    PG_edit_obj(obj) ou PG_edit_vobj(obj, i)

Si on désire éditer un champ et sortir de l'édition par ENTER, il suffit de mettre:

    FNKEY {ENTER {RECORD F10}}

Gestion des imprimantes Windows

Ce groupe permet de rechercher la liste des imprimantes installées, de modifier celle définie par défaut, de changer certains attributs, etc.

Les différences d'implémentation entre Windows 95 et Windows NT, notamment au niveau des privilèges d'accès, rendent certaines actions impossibles dans certaines circonstances. Toutes les fonctions ci-dessous ont été testées uniquement en Windows 95.

Le groupe s_wddlg

Le groupe s_wddlg a été implémenté pour permettre de créer des boîtes de dialogue Windows de façon dynamique.

Les fonctions permettent à l'utilisateur de créer très simplement une structure au format Windows qui sera ensuite utilisée pour éditer les valeurs des différents champs construits.

La méthode à suivre se décompose en quatre parties

La plupart des contrôles, outre les différents attributs qui les caractérisent, sont associés à un pointeur qui contient la valeur du champ. Par exemple, pour un contrôle de type EDIT, le pointeur vers le buffer contenant la valeur du champ sera passé par l'utilisateur au programme. Le programme se chargera d'en modifier le contenu en fonction du texte saisi en cours d'édition.

Fonctions d'initialisation et de fin

Ajout de contrôles

Modification des contrôles

Edition et affichage

Fonctions système

Impressions

Fonctions du groupe PR_*()

Implémentation sous Windows des attributs typographiques d'impression. Deux variables permettent de définir les tailles des polices Enlarged et Condensed:

        int WprChCONDENSED (dft = 8)
int WprChENLARGED (dft = 14)

DDE

Nouvelle fonction WscrDdeExecute() qui établit une conversation avec un serveur DDE et exécute des fonctions de ce serveur. Elle permet par exemple de lancer Word ou Excel et de charger un fichier, de l'imprimer, puis de quitter le programme.

Edition d'applications

Autres fonctions

Les fonctions suivantes sont nouvelles ou ont été modifiées.

A2M

Correction dans les unités de définition des largeurs des tableaux en MIF et RTF. Les unités sont fournies en mm et plus en 10è de mm.

De nouvelles variables globales permettent un contrôle plus fin de l'output généré.

ORACLE

Oracle est intégré dans SCR à partir de cette version.

Exécutables

Les exécutables utilisant le serveur Oracle sont :

Nouveaux paramètres de scr4wor

Plusieurs nouveaux paramètres permettent de tirer profit de la puissance d'Oracle :

    scr4wor ... -ic is -noidx (idem ctree4&6)
    scr4wor ... -icix is
   scr4wor -af dbd.f -dix  is [is2 is3 ... ] (supprime les index de is)
scr4wor -af dbd.f -d1ix is i (supprime l'index i de is)

Librairie

La librairie à utiliser est s32wior. Elle intègre ociw32 de Oracle.

Variables d'environnement

Variables globales

    SCR_MODE_SQL = 0  recherche en mode ISAM (classique)

SCR_MODE_SQL = 1 recherche en mode SQL mais simple :
ne demande que l'ordre de recherche
si un seul champ de la page a été introduit
il ne demande pas d'ordre et considère que l'ordre
doit ce faire par le champs sélectionné.

SCR_MODE_SQL = 2 Recherche en mode SQL complexe
possiblité de rechercher par des ordres différents
et multiple ainsi que d'introduire sa propre
requête SQL.

Nouvelles fonctions et fonctions modifiées

IS_search()

La recherche IS_search avec un index se fait de la même manière avec ORACLE qu'avec CTREE. Il ne reprend plus dans sa sélection que les champs faisant partie de l'index et étant non vides.

Suppression d'index

Possibilité de supprimer un ou plusieurs index via les fonctions suivantes :

Record maximum

Ajout d'un record is_maxrec dans l'ISAM donnant les valeurs maximum à rechercher dans une table (plus particulièrement avec SQL mais sera implémenté en CTREE dans une version ultérieure).

Le code suivant :

        is_NUM = 5;
is_max_NUM = 100;
OBJ_search(is_num_i, SCR_GE + SCR_MINMAX);

fait en sorte que le programme de recherche génére automatiquement une séquence de recherche de type :

    SELECT * FROM IS WHERE NUM >= 5 AND NUM <= 100

dans le cadre de recherche SQL. Cette fonctionnalite ne s'adresse pas uniquement au champs de l'index de recherche mais à tous les champs de la table.

Exemple

        is_NUM = 5;
is_max_NUM = 100;
strcpy(is_CP, "75000");
strcpy(is_max_CP, "75999");
OBJ_search(is_num_i, SCR_GE + SCR_MINMAX);

Le programme de recherche génére automatiquement une séquence de recherche de type :

    SELECT * FROM IS WHERE NUM >= 5 AND NUM <= 100 AND
CP >= '75000' AND CP <= '75999'

Cela évite de devoir lire des records inutiles comme avec un ISAM et de devoir tester à chaque lecture les limites de sélection.

IS_empty_rec

La fonction IS_empty_rec(is) vide aussi le record maxrec.

La fonction IS_empty_max_rec(is) vide seulement le record maxrec.

IS_search() et OBJ_search()

Possibilité en mode SQL de définir sa propre requête SQL avec les fonctions IS_search ou OBJ_search.

    IS_search(is, 0, SCR_SQL1,
"WHERE num >= 100 and num <= 200
and cp = '75000' order by nom");

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