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

SCR/AL1 - TOME I. Les programmes

2. SCR4 : outils de prototypage et de maintenance

Le programme scr4 est, avec scr4_e, un des deux utilitaires de base de SCR/AL1. Il a deux champs d'actions principaux :

La syntaxe, décrite brièvement ci-dessous, peut être découpée en deux grandes parties correspondant à ces deux champs d'applications. Les paramètres spécifiques à chacune des parties sont décrits dans un chapitre séparé ci-dessous.

Le comportement de scr4 dépend en partie de variables d'environnements. Celles-ci sont décrites dans le chapitre "Variables d'environnement" du manuel "SCR/AL1 : fichiers auxiliaires et variables d'environnement".

Syntaxe

scr4 -option args ...

Options Args Description
------------------------------------
-a action : execute action
-ab abar : edit action bar
-af file... : load ascii file(s)
-ai page : edit isam page (Abar)
-ap appl : edit application
-b bc : edit BC file
-ba bc : edit bc with a_bar
-break : set break off
+break : set break on
-C line col : clock at (line, col)
-cmt file : set comments in file
-drwmem : all draws in memory
-dump is fil : dump is in ascii file
-load is fil : load is from asc file
-fldmem : all flds in memory
-h : display this message
-icp is1 is2 : copy is2 into is1
-ic isam... : create isam files
-icall : create all isam files
-id isam... : delete isam files
-ia isam lg : add lg bytes to isam
-idump isam file: dump isam in ascii file
-iload isam file: load isam from ascii file
-ir isam ... : rebuild isam files
-k line col : display WAIT/INPUT msg
-l extension : set file extension
-m menu : edit menu
-M line col : available MEM (line, col)
-of file : load obj file
-optmem : all menu options in mem
-P mpage : edit multi page
-pd page : edit page
-pe page : edit isam from page
-itsf is1 is2 : copy common flds is1->is2
-H helpfile : edit helpfile
-t term : set termcap name
-u nnn : set user category
-sync- : do NOT sync each record
-DT line col : set date at (line, col)
-{pg|is}align : pg|is flds alignment
-irf is f1 f2 ..: rebuild is named f1, f2
-icf is f1 f2 ..: create is named f1, f2
-dumpint is ofile : dump is in internal format file ofile
-loadint is ifile : load is in internal format from ifile
-dumpintf is f1 ofile : dump is (name f1) in internal format file ofile
-loadintf is f1 ifile : load is (name f1) in internal format from ifile
-idx index_nb : index number for dump
-first value : first index value for dump
-last value : last index value for dump
-nbr max_recs : maximum number of record to dump
-cond LE | GE | EQ | DB : search condition for dump
-nodebug
-sql filename

Outil de prototypage

scr4 permet de lancer une application définie sur base des objets SCR et de la faire tourner en test. Le layout de PAGES peut ainsi être facilement testé. Autre exemple : la modification rapide des bases de données ne nécessite pas la définition d'une application complète.

Il est clair que les fonctions C définies dans les sources ne pourront pas être exécutées, puisqu'elles ne sont pas linkées avec scr4. Dans la cas où une fonction C est rencontrée en cours d'exécution, elle est ignorée par le programme.

Chargement des objets

Pour pouvoir lancer une application à l'aide de scr4, il faut d'abord spécifier où et comment les objets sont définis.

Ils peuvent être définis de deux façons : soit dans des sources ascii, auquel cas le processus commencera par une compilation (en mémoire) des objets, soit dans un module précompilé (.scr). Cette dernière option est plus rapide, car ne nécessitant plus d'interprétation des sources ascii.

Le paramètre -l détermine l'extension des fichiers ascii de définition des objets (.f par défaut).

    -l nl : l'extension par défaut des fichiers ascii est .nl

En l'absence de -l, la variable d'environnement LANGUAGE détermine l'extension des fichiers.

Les options -af et -of permettent de charger les objets en mémoire.

    -af file1 file2  : chargement des fichiers ASCII file1.f et file2.f
-of file : chargement du fichier compilé file.scr

Les options -af et -of sont mutuellement exclusives. Les extensions par défaut des fichiers sont toujours ".f" dans le cas du paramètre -af, sauf si la variable d'environnement LANGUAGE est fixée autrement ou si le paramètre -l indique une autre extension. L'option par défaut du fichier d'objets compilés (-of) est toujours .scr.

Certains objets standard sont définis dans le fichier scr.f. Ce fichier est chargé en mémoire uniquement dans le cas du paramètre -af et AVANT les autres fichiers de description d'objets.

L'option -cmt permet de déterminer le nom du fichier qui contiendra les définition des SCREENS, des FIELDS, des DRAWS et des OPTIONS. Ce fichier est fixé par défaut à scr.cmt. Ces définitions seront chargées en mémoire à chaque fois qu'elles seront utiles, et supprimées dès la fin de leur utilisation. Cela permet de gagner une place considérable en mémoire en cours de traitement.

    -cmt ex.cmt  : le fichier ex.cmt contiendra les définitions des
FIELDS, DRAWS, OPTIONS et SCREENS

Les options -fldmem, -drwmem et -optmem permettent d'éviter que les FIELDS, DRAWS et OPTIONS soient stockées dans le fichier .cmt. Ces définitions seront alors en mémoire de façon permanente. Les mots-clés FLD_MEM, DRW_MEM et OPT_MEM définis dans les PAGES et dans les MENUS permettent de limiter le stockage en mémoire des FIELDS, DRAWS et OPTIONS à certains objets (voir PAGE). Il n'est pas possible de conserver en mémoire la définition des SCREENS.

    -fldmem     : les FIELDS des PAGES sont tous conservés en mémoire
-drwmem : les DRAWS des PAGES sont tous conservés en mémoire
-optmem : les OPTIONS des MENUS sont tous conservés en mémoire

Algorithme de recherche des fichiers

Les fichiers passés comme arguments à scr4 (ou aux autres programmes) sont recherchés sur le disque de la façon suivante :

Tous les fichiers de définition ASCII des objets, les fichiers *.scr, le fichier scr.f, les fichiers help (.hlp) les drivers et le fichier d'erreurs sont tous recherchés de cette façon.

Edition

Pour éditer un objet (PAGE, A_BAR, MENU, etc), il faut spécifier le type d'édition et le nom de l'objet. On pourra également définir d'autres options d'affichages comme la position d'une horloge, de la mémoire disponible, etc.

Les objets éditables et la syntaxe à suivre sont les suivants :

    -a  action_name : exécute l'ACTION action_name
-ab abar_name : édite l'A_BAR abar_name
-m menu_name : édite menu
-ai page_name : édite le premier ISAM rencontré dans
page_name sur base d'un ACTION BAR standard
(scr_abedis) définie dans le fichier scr.f
-ap appl_name : édite l'application appl_name
-b bc_name : édite le BC bc_name (et donc les ISAMS sous-jacents)
-ba bc_name : édite le BC bc_name sur base de l'A_BAR standard
(scr_abedis) définie dans le fichier scr.f et donc
les ISAMS sous-jacents
-P mpage_name : édite la MPAGE mpage_name et donc l'ISAM sous-jacent
-pd page_name : édite la PAGE page_name
-pe page_name : édite le premier ISAM rencontré dans la PAGE
page_name à l'aide de la page est des MENUS
standard scr_bcm1 et scr_bcm2 définis dans scr.f

Les options d'édition sont :

    -t term         : fixe le nom du driver. Par défaut la variable
d'environnement SCR_TERM est utilisée ou TERM si
SCR_TERM n'est pas définie. Le fichier term.drv
doit être trouvé par l'algorithme de recherche des
fichiers (voir plus haut)
-u nnn : fixe le niveau d'accès de l'utilisateur
-break : empêche le ctrl-break (en DOS)
+break : accepte le ctrl_break (en DOS)
-k line col : affiche un des mots WAIT ou INPUT à la position
(line, col) de l'écran. WAIT est affiché pendant
le traitement, INPUT lorsque le programme est en
attente d'une touche. line et col commencent à 1.
-M line col : affiche la mémoire disponible à la position
(line, col) de l'écran. line et col commencent à 1.
-DT line col : affiche la date à la position (line, col) de l'écran.
line et col commencent à 1. Le format est "dd/mm/yy".
-C line col : affiche l'heure à la position (line, col) de l'écran.
line et col commencent à 1. Le format est "hh:mm:ss".
-k line col : affiche une horloge à la position (line, col) de
l'écran. line et col commencent à 1.
-el numlang : choix du numéro de langue pour les messages
extraits de scr_err.txt

Outil de gestion des databases

Les outils de gestion de databases permettent de :

Les paramètres de chargement des objets (ISAM) sont les mêmes pour l'utilisation de scr4 comme outil de prototypage :

    -l  : extension des fichiers ascii (.f par défaut)
-of : chargement des objets compilés
-af : chargement des objets en ASCII

Les paramètres spécifiques de gestion des ISAM sont :

-ic isam1 ...

Crée les fichiers. Si l'un d'entre eux existe, il ne sera pas détruit puis recréé.

-icall

Tente de créer tous les fichiers définis dans le .f.

-id isam1 ...

Détruit des fichiers. Aucun message n'est produit si un des fichiers n'existe pas

-ir isam1 ...

Recontruit les INDEX des databases. Cette opération est parfois longue. Elle se justifie lors d'un problème système (cela dépend des systèmes de databases), ou si la définition des INDEX ont été modifiées. Tous les index sont reconstruits.

-dump isam file

Ecrit toute la database isam dans le fichier file, un record par ligne, chaque champ séparé du précédent par le caractère |

-icp is1 is2

Copie l'ISAM is2 dans l'ISAM is1. Les deux bases de données doivent exister. Elles peuvent avoir des index différents et des longueurs différentes. Le record copié est limité à la taille de celui de is1. Cette procédure est utile pour agrandir la taille d'une base de données. Les records rejetés n'arrêtent pas le processus.

-idump isam file

Ecrit l'ISAM isam dans le fichier ascii file. Chaque record de isam correspond à une ligne de file. Les champs sont séparés par des blancs et formattés pour pouvoir être relus par la librairie s_yy. Les champs STRING et ZSTRING sont entourés de doubles quotes.

-iload isam file

Ajoute à l'ISAM isam les records lus dans le fichier ASCII file. Le format de file est celui généré par -idump. Si les champs ne correspondent pas, le processus s'arrête.

-sync-

Supprime l'écriture de chaque record et de chaque index à chaque création ou modification. Cela permet d'augmenter sensiblement la vitesse.

-itsf is1 is2

Transfère les records de la base de données is1 dans la base de données is2. Les champs sont recopiés sur base de leur nom. Cette fonction permet de prolonger des champs, de les raccourcir, d'en changer le type, d'en supprimer et d'en rajouter dans un ISAM, en créant le nouvel ISAM et en y recopiant l'ancien.

-irf is f1 f2

Reconstruit les bases de données définies sous le nom is mais stockées dans les fichiers f1, f2. Cette option a du sens lorsque le programme permet de générer plusieurs fichiers de même structure, c'est-à-dire basés sur la même définition des ISAM. L'extension éventuelle dans le nom du fichier est ignorée.

   Exemple : scr4 -af dbd -irf gf_mem ga_file/m_*.dat

-icf is f1 f2

Crée les bases de données définies dans l'ISAM is mais dans les fichiers f1, f2. Cette option a du sens lorsque le programme permet de générer plusieurs fichiers de même structure, c'est-à-dire basés sur la même définition des ISAM. L'extension éventuelle dans le nom du fichier est ignorée.

        Exemple : scr4 -af dbd -icf gf_mem mem1 mem2

-dumpint is ofile

Ecrit toute la database is dans le fichier ofile, dans le format interne.

-dumpintf is name ofile

Ecrit toute la database is dans le fichier ofile, dans le format interne. Le nom réel de la base de données n'est pas celui de la définition de is, mais name.

-loadint is ifile

Charge dans la database is le fichier ifile (en format interne).

-dumpintf is name ifile

Charge dans la database is le fichier ifile (en format interne). Le nom réel de la base de données résultat n'est pas celui de la définition de is, mais name.

-idx index_nb

Fixe l'index pour le dump suivant.

-first value

Fixe la valeur du premier index pour le dump

-last value

Fixe la valeur du premier index pour le dump

-nbr max_recs

Fixe le nombre maximum de record à dumper.

-cond LE | GE | EQ | DB

Indique la condition de sélection pour le dump.

-nodebug

Supprime les informations de debugging du SQL. Toutes les requêtes SQL sont normalement sauvegardées dans un fichier Ascii (debug.win) à des fins de debugging.

-sql filename

Exécute toutes les requêtes SQL définies dans le fichier filename.

Problèmes d'alignement

Certains systèmes, notamment ceux à processeur RISC, ne tolèrent pas le cast de pointeurs non alignés sur une limite de mot (4 bytes) vers des pointeurs sur des valeurs numériques. Ainsi, l'expression

        char    Ptr[30];
...
*(long *)(Ptr + 13)

provoque une erreur au moment de son exécution et plante le programme (bus error).

Certains compilateurs possèdent une option de type "misalign" pour tolérer quand-même ces expressions, mais pas tous.

Cette situation se présente lors de l'utilisation par des programmes de valeurs directes vers les champs des PAGES ou des ISAM : l'expression

        pg_VAL

est définie dans le fichier .h généré par scr4_e comme

        (*(long *)(pg->pg_rec + 23))

par exemple.

Pour résoudre le problème, le programme scr4 (de même que scr4_e) offre deux options :

        -pgalign qui aligne tous les champs des pages sur des limites
de 4 bytes (mot machine), sauf les champs DIR, STRING
et PASSWD
-isalign qui aligne tous les champs des isams sur des limites
de 4 bytes (mot machine) sauf les champs CHAR SHORT1
STRING et ZSTRING

Alternativement, les sections global peuvent contenir les mots-clés

        PGALIGN YES | NO
ISALIGN YES | NO

Par défaut, ces options sont inactives, ce qui rend les programmes compatibles avec les versions précédentes.

il faut noter que dans le cas des ISAMS, l'option d'alignement se traduit par une perte de place non seulement en mémoire, comme dans le cas des pages, mais également sur fichier, puisque le record de l'ISAM est adapté en conséquence.

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