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

SCR/AL1 - TOME II. Les Objets

6. PAGE

6.2 Définition d'une PAGE

Ce chapitre décrit chaque mot-clé accepté dans une PAGE. Il est divisé en plusieurs parties, chacune décrivant une groupe d'instructions.

6.2.1 Informations globales de définition d'une PAGE

CENTER

Indique que la PAGE doit être centrée dans l'écran. CENTER prime sur LINE et COL qui permettent de positionner la page dans l'écran.

SCREEN

Définit l'écran dans le texte. Cette méthode présente l'avantage de ne pas devoir placer chaque champ. Par conséquent, les écrans peuvent être de topologie plus complexes en utilisant la définition du SCREEN.

NOMODIFY NOCREATE NODELETE NOSEARCH

Ces mots-clés sont utilisés dans le cadre de l'action PG_EDIT_ISAM (voir ACTION). Ils indiquent si l'ISAM sous-jacent peut ou non être modifié à l'aide de cette PAGE.

NL

Fournit le nombre de lignes de la PAGE. Par défaut, ce nombre est calculé en fonction des champs et/ou de la définition du SCREEN. En général, cette valeur ne doit pas être spécifiée. Ce paramètre est cependant utile dans les spécifications des APG des MPAGES et DE BCS (voir MPAGE et BC).

NC

Fournit le nombre de colonnes de la PAGE. Par défaut, ce nombre est calculé en fonction des champs et/ou de la définition du SCREEN. En général, cette valeur ne doit pas être spécifiée. Ce paramètre est cependant utile dans les spécifications des APG des MPAGES et DE BCS (voir MPAGE et BC).

LINE

Indique la position du coin supérieur gauche de la PAGE. Pour coller une PAGE en haut de l'écran, il faut spécifier LINE 0.

COL

Indique la position du coin supérieur gauche de la PAGE. Pour coller une PAGE à gauche de l'écran, il faut spécifier COL 0.

TITLE

Le titre de la page est centré dans le cadre supérieur de celle-ci. Dans le cas d'utilisation des SCREENS, le titre sera placé directement dans la définition du SCREEN, et ce mot-clé est inutile.

FOOTNOTE

La footnote de la page est centrée dans le cadre inférieur de celle-ci. Dans le cas d'utilisation des SCREENS, la footnote sera placée directement dans la définition du SCREEN, et ce mot-clé est inutile.

BOX

BOX permet de spécifier le cadre que l'on souhaite avoir autour de la PAGE. BOX 0 supprime le cadre, BOX 1 place un cadre avec les caractères semi-graphiques simples, BOX 2 avec les caractères semi-graphiques doubles.

Si l'écran est défini à l'aide d'un SCREEN, le contour doit être dessiné dans le SCREEN.

BEGIN_FN

BEGIN_FN indique l'ACTION qui doit être exécutée en début d'EDITION de la PAGE. A chaque appel à PG_edit() (via l'ACTION PG_EDIT, PG_EDIT_ISAM, etc), cette action est exécutée. Elle permet par exemple de fixer certains champs de la page, d'effectuer des vérifications, etc.

S'il s'agit d'une fonction C, et que cette fonction retourne une valeur non nulle (voir ACTION-C_FN pour plus de détails), l'édition de la PAGE n'a pas lieu. Encore une fois, cela permet de vérifier des conditions avant de permettre d'éditer la PAGE.

Voir aussi DISPLAY_FN.

END_FN

END_FN indique l'ACTION qui doit être exécutée en fin d'EDITION normale de la PAGE (touche fonction par exemple). A la fin de la fonction PG_edit(), cette action est exécutée. Elle permet par exemple de lancer un programme, un calcul, une écriture, d'effectuer des vérifications, etc.

S'il s'agit d'une fonction C, et que cette fonction retourne une valeur non nulle (voir ACTION-C_FN pour plus de détails), l'édition de la PAGE ne se termine pas. A charge du programmeur d'envoyer dans l'écran les informations adéquates.

La PAGE n'est pas encore effacée au moment de l'exécution de la END_FN.

DISPLAY_FN

DISPLAY_FN indique l'ACTION qui doit être exécutée en début d'AFFICHAGE de la PAGE. A chaque appel à PG_display() (via l'ACTION PG_EDIT, PG_EDIT_ISAM, etc), cette action est exécutée. Elle permet par exemple de fixer certains champs de la page, d'effectuer des calculs dans les champs, etc.

Cette action s'exécute avant que la PAGE et les champs ne soient affichés.

Voir aussi BEGIN_FN.

RESET_FN

RESET_FN indique l'ACTION qui doit être exécutée lors de l'exécution de la fonction PG_reset() appliquée à la PAGE passée comme paramètre.

Voir aussi DISPLAY_FN et BEGIN_FN.

BACKGROUND

Indique la couleur de la PAGE. Cette couleur prend l'une des valeurs suivantes :

WRAP ON | OFF

Indique si, le curseur étant arrivé dans le dernier champ INPUT ou ACCESSIBLE de la PAGE, il doit revenir premier champ ou si la PAGE doit être quittée. Par défaut, WRAP ON est sélectionné, ce qui rend l'édition des PAGES plus simple : il faut presser une touche fonction pour quitter la PAGE.

Dans les PAGES n'ayant qu'un seul champ, WRAP OFF est parfois plus agréable : dès que le champ est quitté (par ENTER par exemple), la PAGE est quittée.

Lorsqu'on parle de quitter la PAGE, il faut y mettre la réserve que la END_FN doit encore être exécutée, et que celle-ci peut empêcher de quitter la PAGE.

Attention

A partir de la version 4.05, les PAGES "WRAP OFF" se comportent comme suit : si en sortir d'un champ, le suivant à éditer est le même, on sort de la page. Les Pages WRAP OFF n'ont donc de sens que si un seul champ input ou accessible se trouve dans la PAGE, ce qui a (presque) toujours été le cas.

DEFAULTS

Cette instruction permet de définir des valeurs par défaut pour toutes les définitions des champs qui suivent. Le détail des informations qui peuvent être transmises aux champs par l'instruction DEFAULTS est fourni dans le chapitre FIELD.

NODEFAULTS

Annule les valeurs par défaut des champs fournies par l'instruction DEFAULTS.

ISAM

Lors des ACTION PG_CREATE, PG_NEXT, etc, l'ISAM à éditer doit être déterminé. Le mot-clé ISAM permet de spécifier celui qui doit l'être.

Par défaut, cet ISAM est le premier recontré dans les champs de la PAGE.

FILL ON | OFF | 'c'

Toute page est par défaut replie de blancs (pour éviter de voir les informations en arrière-plan au milieu de la PAGE). Elle recouvre donc entièrement une partie de l'écran.

Si on souhaite ne pas avoir cet effet, et donc conserver le texte ou les dessins en arrière-plan, il faut utiliser l'option FILL OFF. Cette option est utile pour les LPG des BCS et des MPAGES : en effet, les lignes éventuellement dessinées dans la APG de ces objets pour séparer les colonnes d'informations doivent rester visibles.

Si on veut recouvrir par un caractère autre que le blanc, on le spécifie à l'aide de FILL 'c' où c est un caractère quelconque.

FNKEY

Indique les touches fonctions globales à la PAGE. Par défaut, les FNKEYS définies dans l'objet scr_f3f10 défini dans scr.f sont utilisées. Rappelons que le fichier scr.f est toujours chargé au début d'une compilation.

Les touches fonctions reconnues sont définies dans l'objet FNKEY.

Lorsqu'une touche fonction est pressée au cours de l'édition d'une PAGE, plusieurs cas sont possibles :

Exemple

    PAGE pg_print {
END_FN {C_FN return(CheckName());}
FNKEY {
ESC {ABORT}
F10
F5 {C_FN MyPageFn();}
}

FIELD Prompt "Fichier à imprimer : " "test.f "
FNKEY {
F5 {C_FN MyFieldFn1();}
F6 {C_FN MyFieldFn2();}
}

FIELD Prompt "Nombre de copies : " natural " 1"
}

Voici quelques cas qui de touches fonctions pressées au cours de l'édition du champ "Fichier à imprimer " :

Dans le second champ "Nombre de copies", le résultat serait en partie différent :

AUTO

Ce mot-clé permet de placer la PAGE en fonction de la position de l'objet (MENU) appelant. La PAGE se déplace donc dynamiquement en cours d'application. Elle est placée sous l'option du MENU appelant avec le coin supérieur gauche centré sur le texte de l'option.

Si la même PAGE est utilisée à plusieurs endroits, elle prendra à chaque fois la position adéquate.

Cette fonctionnalité n'est effective que si le nom de la PAGE apparaît dans l'action exécutée par l'option du MENU, et pas dans le cas d'un appel en C à PG_edit() par exemple.

COMMENT

Les COMMENTS sont des textes (d'une ligne maximum) qui sont associés à des objets ou à des champs. Ils sont affichés automatiquement dans la fenêtre COMMENT définie dans l'application SCR/AL1. La syntaxe de définition de ces fenêtres se trouve dans le chapitre intitulé "Structure d'un fichier SCR/AL1".

Dès le début de l'édition de la PAGE, le texte acollé au mot-clé COMMENT est affiché dans la fenêtre. Il disparaît automatiquement en fin d'édition ou si un COMMENT est défini dans le champ en cours d'édition, ce dernier prenant le pas sur le COMMENT général de la PAGE.

Exemple

    COMMENT "Pressez F10 pour imprimer le fichier, ESC pour quitter"

HELP

Le mot-clé HELP doit être suivi du nom d'un sujet contenu dans le fichier d'aide actif (voir ACTION HELPFILE "filename").

Exemple

    HELP "PAGE"

Ce sujet sera affiché si, lors de l'édition de la PAGE, la touche HELP est appuyée par l'utilisateur. Ce même mot-clé HELP peut apparaître dans les champs également. Dans ce cas, c'est le HELP du champ qui prime.

MENU

Ce MENU associé à la PAGE n'est utile que dans deux cas :

Dans les deux cas, le choix des INDEX (voir ACTIONS PG_EDIT_ISAM, MP_EDIT_ISAM et BC_EDIT_ISAM) de recherche dans l'ISAM sera proposé à l'aide de ce menu, plutôt que par déplacement dans les champs successifs correspondant à un INDEX.

NO_OBJ

Le compilateur scr4_e construit une structure OBJ (voir ISAM) pour chaque champ de chaque PAGE. Pour alléger le programme, on peut supprimer pour la PAGE courante la définition de ces objets en plaçant le mot-clé NO_OBJ dans sa définition.

VIEW_ORDER | NO_VIEW_ORDER

L'ordre d'édition des champs dans la page est défini de la façon suivante :

Les touches TAB et s-TAB permettent le déplacement dans les champs de la PAGE comme défini ci-dessus. Les touches ENTER et LINEFEED font de même, sauf dans le cas des champs MENU et DIR, dans lesquels ENTER ouvre le MENU pour sélectionner une option.

Une option globale peut être définie dans la section GLOBAL (VIEW_ORDER) de l'application.

SHADOW0, SHADOW1, SHADOW2, SHADOW3, SHADOW4

Indique l'ombrage souhaité à la fenêtre correspondant à la PAGE.

NOSHADOW

Le mot-clé NOSHADOW est défini pour éliminer localement le SHADOW. En effet, SHADOW0 représente déjà un type d'ombrage.

FLD_MEM, DRW_MEM

Par défaut, les définitions des FIELDS et des DRAWS sont en permanence sur disque et amenés en mémoire seulement lorsqu'ils sont utiles. Pour certaines raisons de programmation pointue, il peut se produire que les définitions des champs et des dessins doivent être gardés en permanence en mémoire. Deux méthodes sont possibles :

Dans le cas des LPG des MPAGES et des BCS, il est en général nécessaire de garder les DRAWS et les FIELDS en mémoire. Placez donc FLD_MEM et DRW_MEM dans la définition de ces LPGS.

NAME_MEM

Par défaut, le nom des champs de la PAGE (s'ils sont nommés) ne se trouvent pas en mémoire. L'utilisation des fonctions de librairie PR_*(), qui nécessitent une Page de référence, exigent que les noms soient connus au moment de l'exécution du programme. En effet, c'est sur base de ces noms que les listings vont pouvoir être construits.

Par conséquent, les Pages qui servent de référence à ces fonctions doivent avoir cet attribut NAME_MEM.

DRAW, HLINE, VLINE, "string", REDRAW

Voir le chapitre DRAW pour les détails concernant la définition du dessin de l'écran.

ISAM

Indique l'ISAM de la PAGE qui doit être édité par les fonctions du type PG_edit_isam(). Normalement, l'ISAM édité est le premier rencontré dans un champ de la PAGE.

FIELD

Décrit un champ de la PAGE. Voir chapitre FIELD pour les détails.

6.2.2 Définition des FIELDS des PAGES

Les PAGES sont en général des fenêtres de saisie ou d'affichage d'informations. Ces informations variables sont placées dans les champs de la PAGE (FIELDS), contrairement aux DRAWS qui sont des textes ou des lignes, fixés une fois pour toute dans la description de la PAGE.

Le nombre d'information que l'on peut introduire dans un champ est considérable. La suite de cette section décrit un à un les paramètres possibles pour un FIELD.

De nombreux raccourcis sont prévus, de façon à ne pas obliger le programmeur à encombrer son code d'un tas de mots-clés et à lui éviter les calculs de positions souvent laborieux.

Il est donc bon d'attirer l'attention sur les valeurs par défaut des différents paramètres des FIELDS : ce sera fait au sein de chaque description de paramètre.

D'autre part, une section DEFAULTS permet de fixer les valeurs de la plupart des paramètres pour les champs qui la suivent. Cette section est également détaillée dans la suite de ce chapitre.

Limites

Chaque PAGE peut contenir au plus 512 champs à partir de la version 4.01. Auparavant, la limite était de 256.

NAME

Ce mot clé permet de nommer le champ afin de pouvoir en utiliser la valeur dans une fonction C ou une ACTION. Les noms en majuscules et en minuscules sont équivalents.

Le nom d'un champ peut être placé entre doubles quotes pour conserver une compatibilité avec la version 1.

Exemple

    FIELD NAME nom
FIELD Name "Adresse"

Valeur par défaut

Aucun nom n'est fixé par défaut

FORMAT

Un format d'édition peut être fourni pour les champs. Les champs liés aux ISAM (voir plus bas) héritent de l'éventuel format défini au niveau du champ correspondant de l'ISAM.

Suivant le type de champ, l'interprétation des lettres qui composent ce format est différente.

champs de type caractère (string) :

champs de type numériques (natural ou integer)

champs de type DATE :

les formats de ces champs reconnaissent les Y, y, M, m, D et d, correspondant aux chiffres de l'année (Year), du mois (Month) ou du jour (Day). Les autres caractères sont output dans le champ. Les combinaisons de Y, M et D sont toutes permises. Si plus de 4 Y apparaissent dans le champ, les Y excédentaires sont considérés comme des caractères normaux et affichés tels quels. Il en va de même au-delà de 2 M ou 2 D. Si moins de 4 Y, 2 M ou 2 D apparaissent, les DERNIERS chiffres de l'année sont affichés.

champs de type TIME :

les formats de ces champs reconnaissent les H, h, M, m, S et s, correspondant aux chiffres de l'heure (Hour), de la minute (Minute) ou de la seconde (Second). Les autres caractères sont output dans le champ. Les combinaisons de H, M et S sont toutes permises. Si plus de 2 Y, 2 M ou 2 D apparaissent dans le champ, les Y excédentaires sont considérés comme des caractères normaux et affichés tels quels. Si moins de 2 Y, 2 M ou 2 D apparaissent, les DERNIERS chiffres de l'année sont affichés.

Exemples

    FIELD integer FORMAT "9990"                "   0"
FIELD natural FORMAT "0/0" "0/0"
FIELD time FORMAT "HHhMM" "00h00"
FIELD time FORMAT "Time : HH:MM:SS" "Time : 00:00:00"
Field time FORMAT "ss:mm:hh" "00:00:00"
FIELD date FORMAT "YYYY/DD/MM" TODAY "1991/04/15"
FIELD date FORMAT "YY/MM" TODAY "91/04"
FIELD string FORMAT "000-0000000-00" "000-0000000-00"
FIELD string FORMAT "RCx-99000" "RC - 000"

Valeur par défaut

Les valeurs par défaut sont d'abord héritées du champ de l'ISAM (si un champ est référencé par un des mots-clés ISAM, CODE ou ISF).

Ensuite, le type de champ détermine la valeur par défaut :

"string"

Si un string est rencontré dans la définition d'un champ (autre qu'après les mots-clés demandant un string comme paramètre, comme FORMAT ou PROMPT), ce string est la valeur par défaut du champ. Il détermine notamment la longueur du champ dans le cas des champs numériques.

Exemple

    FIELD natural Prompt "Nombre de copies : " "001"

La valeur de ce champ sera mise par défaut à 1.

Valeur par défaut

Par défaut, le string est fixé à blanc s'il est de type caractère, à 0 s'il est de type numérique ou de type DATE ou TIME (voir aussi TODAY).

TODAY

Ce mot-clé permet donner aux champs DATE et TIME une valeur par défaut dépendant du jour ou de l'heure actuelle.

NB_DEC

Le nombre de décimales d'un champ réel (REAL) peut être fixé par NB_DEC. Les décimales non affichées ne sont pas pour autant perdues : la précision reste intacte au niveau de la valeur interne du champ.

Valeur par défaut

Par défaut, le nombre de décimales s'adapte à la valeur du champ.

FIX_DEC

Fixe le nombre de décimales du champ (REAL).

DEL_EOF et NO_DEL_EOF

Ces mots-clés permettent de spécifier si lors de l'entrée dans un champ, le fait de frapper une touche caractère remplace ou non le champ comme c'est le cas par défaut.

DEL_EOF indique que le champ est remplacé, NO_DEL_EOF l'inverse.

La variable globale DEL_EOF permet de spécifier cette valeur pour toute l'application (voir GLOBAL).

NL et NC

Ces deux valeurs permettent de fixer la taille du champ. Un champ de 300 caractères peut par exemple s'étendre sur 5 lignes de 60 caractères par l'instruction suivante :

    NC 60 NL 5

Valeur par défaut

Les valeurs par défaut sont d'abord héritées des ISAMS. S'il n'y a pas de champ d'ISAM lié, les valeurs sont les suivantes :

En général, ces deux valeurs ne sont pas spécifiées : elles sont le plus souvent héritées, sauf dans le cas des champs EDITOR.

NLV et NCV

Ces deux valeurs indiquent le nombre de lignes et de colonnes VISIBLES du champ. Il est effet possible de ne voir à l'écran qu'une fenêtre sur une champ de grande taille. Au cours de l'édition de ce type de champ, la touche ZOOM permet de voir et d'éditer le champ entier.

Valeur par défaut

Par défaut, ces valeurs sont fixées respectivement à NL et NC.

LINE et COL

Ces deux valeurs permettent de placer le champ dans la PAGE (dans le coin supérieur gauche, un champ est en position LINE 0 COL 0).

Elles peuvent être définies soit de manière absolue, soit de manière relative (la syntaxe est la même pour LINE et COL) :

Valeur par défaut

Par défaut, le premier champ de la PAGE est en ligne 0 et les suivants sont toujours placés une ligne plus bas que le précédent. La colonne est toujours par défaut fixée à 1.

Les valeurs définies dans DEFAULTS sont souvent utilisées lorsque plusieurs champs successifs ne doivent pas se trouver dans les positions standard.

BEGIN_FN

BEGIN_FN indique l'ACTION qui doit être exécutée en début d'EDITION du champ. A chaque entrée dans ce champ cette action est exécutée. Elle permet par exemple de fixer certains autres champs de la page, d'effectuer des vérifications, etc.

Voir aussi DISPLAY_FN.

Valeur par défaut

Aucune valeur n'est fixée par défaut, sauf éventuellement par la commande DEFAULTS.

END_FN

END_FN indique l'ACTION qui doit être exécutée en fin d'EDITION normale du champ. Elle permet par exemple de lancer une vérification, un calcul, d'afficher d'autres champs après modification, etc.

S'il s'agit d'une fonction C, et que cette fonction retourne une valeur non nulle (voir ACTION-C_FN pour plus de détails), l'édition du champ ne se termine pas. A charge du programmeur d'envoyer dans l'écran les informations adéquates.

Valeur par défaut

Aucune valeur n'est fixée par défaut, sauf éventuellement par la commande DEFAULTS.

DISPLAY_FN

DISPLAY_FN indique l'ACTION qui doit être exécutée en début d'AFFICHAGE du champ. Elle permet par exemple de fixer certains champs de la page, d'effectuer des calculs dans les champs, etc.

Cette action s'exécute avant que le champ ne soit affiché.

Voir aussi BEGIN_FN.

Valeur par défaut

Aucune valeur n'est fixée par défaut, sauf éventuellement par la commande DEFAULTS.

DEFAULT | REVERSE | UNDERLINE | BOLD | INVISIBLE | BLINKING | DIM | BLUE | GREEN | CYAN | RED | MAGENTA | YELLOW | WHITE |BLACK

Un des mots-clés indiquant la couleur (voir dans PAGE), peut être indiqué au niveau du champ.

Valeur par défaut

Par défaut, les champs ont la même couleur que la PAGE.

WRAP ON | OFF

Lorsqu'un champ est rempli ou que l'on en sort en se déplaçant à l'aide d'un touche Curseur (LEFT ou RIGHT), l'édition de ce champ se termine et l'édition du champ suivant peut commencer.

Si on souhaite qu'au contraire l'édition continue jusqu'à ce qu'une touche comme ENTER, Cursor Up, Cursor Down ou une touche fonction soit pressée, on indiquera WRAP OFF au niveau du champ.

Valeur par défaut

Par défaut, Wrap est fixé à ON.

OUTPUT | INPUT | ACCESSIBLE | HIDDEN

Quatre types d'accès sont prévus pour chaque champ :

Valeur par défaut

Par défaut les champs sont INPUT.

NATURAL | INTEGER | REAL | TIME | DATE | EDITOR | STRING | DIR | MENU | PASSWD

Le choix entre 10 types de champs est disponible dans les PAGES. L'édition des champs est adaptée au type.

Champs EDITOR

Dans le cas des champs EDITOR, l'éditeur mmt est utilisé pour permettre la modification du champ. Les mots-clés TITLE, SBAR, STBAR et BOX apparaissant dans la définition d'un champ n'ont de sens que dans le cadre de ce type de champ. Il signifient :

La taille du champ comprend les BOX, TITLE, SBAR et STBAR éventuels. Ainsi, un champ de 2 lignes ne peut contenir de BOX, ni à la fois un TITLE et une STBAR.

Valeur par défaut

Lorsque le champ est lié à un champ d'ISAM, le type est hérité de celui de l'ISAM. Sinon, le type par défaut est STRING.

UPPER ou LOWER

Les champs UPPER sont automatiquement affichés en majuscules, même si la valeur introduite (par une fonction C par exemple) est en partie en minuscules. Les lettres introduites en cours d'édition sont transformées en majuscules.

Les champ LOWER ont le comportement inverse.

Valeur par défaut

Par défaut, les caractères contenus dans les champs gardent leur valeur : ni LOWER, ni UPPER n'est sélectionné.

ALLOWED

Les champs de type caractère (STRING, DIR, ..) qui ne peuvent recevoir que certains caractères prendront l'attribut ALLOWED suivi de la liste des caractères permis.

Exemple

    FIELD Prompt "Langue : " Upper "F" Allowed "FNE"

Valeur par défaut

Par défaut tous les caractères alphanumériques sont admis dans les champs de texte.

CENTER ou LJUST ou RJUST ou SQZ ou ASIS

Le texte contenu dans un champ, quelqu'en soit le type, doit parfois être cadré à gauche, centré, etc. C'est le but de ces mots-clés. Si la valeur du champ n'est pas cadrée en conformité avec ce paramètre (par exemple si la valeur est introduite à l'aide d'une fonction C), le champ sera adapté lors du premier affichage.

Valeur par défaut

Par défaut, tous les champs sont LEFT (cadrés à gauche).

NOT_COMPULSORY ou COMPULSORY ou REQUIRED

Certains champs demandent d'être complétés avant d'être quittés ou avant la fin de l'édition de la PAGE. C'est l'objet de ces mots-clés.

Un champ de caractères est vide s'il ne contient que le caractère blanc. Un champ numérique ou DATE ou TIME est vide si sa valeur est nulle.

Attention : un champ MENU est vide si l'option sélectionnée est la première (option 0).

Valeur par défaut

Par défaut, les champs sont tous NOT_COMPULSORY.

ISAM

Le mot-clé ISAM permet d'associer le champ au champ d'un ISAM. Tous les attributs de ce champ d'ISAM sont hérités par le champ de la PAGE.

Un champ peut être lié à deux champs d'ISAM. C'est d'ailleurs souvent utile lors de l'utilisation de sous-fichiers par le biais de codes.

Exemple

    FIELD PROMPT "Code postal : " ISAM is_client post CODE is_post code
FIELD LINE = COL + 8 FIELD is_post commune OUTPUT

Le premier champ est lié d'une part au fichier des clients is_client. Il hérite donc de tous les attributs de ce champ : nombre de colonnes et type notamment.

D'autre part, il est lié à l'index CODE du fichier is_post des codes postaux. Il hérite donc de même des attributs du champ de cet index. Les tailles et types des deux champs des ISAM liés au champ de la PAGE doivent bien-entendu être compatibles (un warning ou une erreur est affiché lors de la compilation si ce n'est pas le cas).

Ce type de champ est utilisé en permanence dans les applications de bases de données. Ils rendent l'édition d'un ISAM extrêmement simple.

Valeur par défaut

Aucune valeur par défaut n'est fixée pour le paramètre ISAM.

ISF

Ce paramètre est une simplification du paramètre ISAM. Si dans les attributs fournis dans DEFAULTS se trouve le nom d'un ISAM, ISF suivi du nom du champ de l'ISAM suffit à lié le champ de la PAGE au champ nommé par ISF.

Exemple

    DEFAULTS {ISAM is_client}

FIELD Prompt "Nom : " ISF NOM
FIELD Prompt "Adresse : " ISF ADRESSE
FIELD Prompt "Code postal : " ISF POST CODE is_post code

est équivalent à

    FIELD Prompt "Nom         : " ISAM is_client NOM
FIELD Prompt "Adresse : " ISAM is_client ADRESSE
FIELD Prompt "Code postal : " ISAM is_client POST CODE is_post code

A la suite du mot-clé ISF, on peut également placer une indentation qui peut prendre une des formes suivantes :

Valeur par défaut

Aucune valeur par défaut n'est déterminée pour ISF.

CODE

Le mot-clé ISAM permet de lier un champ de PAGE et un champ d'ISAM. Le mot-clé CODE fait de même, mais en liant le champ de la PAGE au premier champ de définition d'un INDEX de l'ISAM.

Le but est de rechercher automatiquement le record de l'ISAM correspondant à l'INDEX, une fois le champ introduit.

Exemple

    FIELD PROMPT "Code postal : " ISAM is_client post CODE is_post code
FIELD LINE = COL + 8 FIELD is_post commune OUTPUT

Dès que le champ est quitté (par ENTER par exemple), le programme recherche dans l'ISAM is_post le premier record correspondant à la valeur introduite. Cette recherche a lieu dans l'ordre de l'INDEX dont le nom est code (CODE is_post code).

S'il n'y a pas de record trouvé correspondant à la valeur introduite, la valeur suivante dans l'ordre de l'INDEX code est sélectionnée et affichée dans ce champ en lieu et place de la valeur introduite. De plus, tous les autres champs de la PAGE qui sont liés au même ISAM des codes postaux d'adaptent en prenant la valeur du record trouvé dans l'ISAM.

Ainsi, le champ commune sera remplacé par la valeur correspondant au code postal introduit.

Cette technique très simple permet de réaliser des jointures de fichiers. Elle est récursive : une cascade de recherches peut être produite automatiquement en ajoutant d'autres codes dans la PAGE.

Dans le cas ou le champ est vide (blanc ou nul), la recherche n'a pas lieu et tous les champs de la PAGE liés au même ISAM sont mis à blanc au sortir du champ CODE.

Limitation des codes

Il est possible de limiter l'application des codes dans les champs : il suffit pour cela de préciser à quels champs le code doit s'appliquer en plaçant entre acollades les noms des champs en question. Par exemple :

    FIELD ISF postprive CODE is_post code {commprive}
FIELD LINE = COL + 8 FIELD is_post commune OUTPUT NAME commprive
FIELD ISF postfirme CODE is_post code {commfirme}
FIELD LINE = COL + 8 FIELD is_post commune OUTPUT NAME commfirme

Ordre de recherche

Il est possible d'ajouter un mot-clé après le nom du code pour indiquer comment la recherche doit être effectuée. Ces mot-clés sont :

Exemple

    FIELD PROMPT "Code : " ISAM is_client post CODE is_post code EQ
FIELD LINE = COL + 8 FIELD is_post commune OUTPUT

Par défaut, tous les codes sont CIRC

Valeur par défaut

Un champ n'a pas de valeur CODE par défaut.

FNKEY

Cet attribut définit les FNKEYS locales au champ. La discussion des FNKEYS de la PAGE, plus haut dans le texte, incorpore la définition des FNKEYS locales aux champs.

Valeur par défaut

Aucune FNKEY n'est définie par défaut, sauf via l'instruction optionnelle DEFAULTS.

PROMPT

Ce mot-clé permet de définir facilement le texte qui doit se trouver juste devant le champ en cours de définition. En fait, un DRAW de type texte est ajoutés à ceux déjà définis dans la PAGE.

Si un PROMPT est introduit dans le champ, la position donnée par LINE et COL est calculée pour le DRAW, le champ se plaçant juste à droite du PROMPT.

Valeur par défaut

PROMPT n'a pas de valeur par défaut. Si le champ est lié à un ISAM, un PROMPT peut être hérité s'il y en a un défini au sein du champ de l'ISAM.

NO_OBJ ou DEF_OBJ

Le compilateur scr4_e construit une structure OBJ (voir ISAM) pour chaque champ de chaque PAGE. Pour alléger le programme, on peut supprimer pour le champ courant la définition de l'objet en plaçant le mot-clé NO_OBJ dans sa définition.

Si NO_OBJ est défini dans la PAGE, mais que l'on souhaite quand-même avoir un objet défini pour le champ courant, on peut le faire en introduisant le mot-clé DEF_OBJ

Valeur par défaut

Par défaut, un OBJ est défini pour tout champ nommé (NAME), sauf si le mot-clé NO_OBJ est produit dans la PAGE.

COMMENT

Les COMMENTS sont des textes (d'une ligne maximum) qui sont associés à des objets ou à des champs. Ils sont affichés automatiquement dans la fenêtre COMMENT définie dans l'application SCR/AL1. La syntaxe de définition de ces fenêtres se trouve dans le chapitre intitulé "Structure d'un fichier SCR/AL1".

Dès le début de l'édition du champ, le texte acollé au mot-clé COMMENT est affiché dans la fenêtre. Il disparaît automatiquement en fin d'édition du champ.

Valeur par défaut

Il n'y a pas de COMMENT par défaut pour les champs des PAGES.

HELP

Le mot-clé HELP doit être suivi du nom d'un sujet contenu dans le fichier d'aide actif (voir ACTION HELPFILE "filename").

Exemple

    HELP "PAGE"

Ce sujet sera affiché si, lors de l'édition du champ, la touche HELP est appuyée par l'utilisateur.

Valeur par défaut

Par défaut, le HELP de la PAGE est actif lors de l'édition de tout champ.

FLD_IDX

Ce mot-clé est à utiliser dans une APG d'une MPAGE. Il indique que le champ courant (de type MENU) est celui par lequel l'index de recherche de la MPAGE doit être défini.

Exemple

        APG {
Center
SCREEN {
+==========================================================+
| Ordre de recherche .... $ORDRE |
| Code article .......De. $CODE1 à $CODE2 |
| De la descritpion ..... $DESC1 |
| A la descritpion ...... $DESC2 |
| Fournisseur ........... $FOUR Taille ... $TAIL |
| Prix de vente ......de. $PV1 à $PV2 S|
|----------------------------------------------------------|
| Code | Description |Four|Tail| PA | |
|------|-------------------------------|----|----|------|--|
|%CODE |%DESC |%FO |%TA |%PA |%P|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
+==========================================================+
}
DEFAULTS {ISAM cof_art bold}
FIELD name ordre MENU com_oart fld_idx
FIELD name code1 ISF code
FIELD name code2 ISF code
FIELD name desc1 ISF desc
FIELD name desc2 ISF desc
FIELD name pv1 ISF pv
FIELD name pv2 ISF pv
}

Le menu com_oart indique l'ordre des champs de l'ISAM. La sélection sera de plus limitée aux champs indiqués (de..à).

Cette version des MPAGE à sélection est en cours de test. Elle ne fonctionne que pour des recherches simples, sans possibilité de "remonter" dans l'ISAM ou de modifier le record courant.

DEFAULTS

Une série d'options et de mots-clés peuvent être définies pour tous les champs qui suivent par une instruction DEFAULTS.

Toutes les options ne sont cependant pas disponibles. Pour certaines, cela n'aurait que peu de sens.

Plusieurs intructions DEFAULTS et NODEFAULTS peuvent être définies successivement dans une PAGE. Toutes les instructions sont placées en acollades :

    DEFAULTS {COL 30 ISAM is_client}

La liste des mots-clés acceptés dans DEFAULTS est détaillée ci-dessous. Lorsque la définition d'un mot-clé est la même que dans le champ lui-même, elle n'est pas répétée.

6.2.3 Définition des DRAWS

Les DRAWS permettent de dessiner dans la PAGE des rectangles, des lignes ou simplement du texte. Ils peuvent se trouver n'importe où dans la définition de la PAGE. Certains (HLINE, VLINE, REDRAW et "string") peuvent même être placés dans la PAGE sans être précédés du mot-clé DRAW.

Il est à noter que si on utilise les définitions de SCREEN, on peut facilement se passer des DRAWS dans la définition des PAGES, sauf si on souhaite changer de couleur pour une ligne ou un texte.

En principe, les DRAWS sont définis dans la PAGE suivant la syntaxe suivante :

    DRAW draw1_type params
draw2_type params
...

Les syntaxes des différents types de DRAW sont présentés dans les sections qui suivent.

Les DRAWS sont dessinés dans l'écran au moment de l'affichage de la PAGE. Ils sont dessinés dans l'ordre de définition.

BOX

BOX dessine un rectangle dans l'écran en utilisant les caractères semi-graphiques de la table ASCII.

Syntaxe

    BOX      [color] width line col nl nc

où la couleur est un des mots-clés habituels :

    DEFAULT | REVERSE | UNDERLINE | BOLD | INVISIBLE |
BLINKING | DIM | BLUE | GREEN | CYAN | RED |
MAGENTA | YELLOW | WHITE |BLACK

width vaut 1 ou 2 et indique si les caractères semi-graphiques utilisés doivent être simples ou doubles.

line et col indiquent la position du coin supérieur gauche du rectangle, à l'intérieur de la PAGE. Les valeurs nulles correspondent à la première ligne et la première colonne de la PAGE.

nl et nc indiquent respectivement le nombre de lignes et de colonnes du rectangle, en ce incluses les lignes elles-mêmes.

VLINE

VLINE permet de dessiner une ligne verticale.

Syntaxe

    VLINE [color] width line  col [nl]

où la couleur est un des mots-clés habituels :

    DEFAULT | REVERSE | UNDERLINE | BOLD | INVISIBLE |
BLINKING | DIM | BLUE | GREEN | CYAN | RED |
MAGENTA | YELLOW | WHITE |BLACK

width vaut 1 ou 2 et indique si les caractères semi-graphiques utilisés doivent être simples ou doubles.

line et col indiquent la position du coin supérieur gauche de la ligne à l'intérieur de la PAGE. Les valeurs nulles correspondent à la première ligne et la première colonne de la PAGE.

nl indique le nombre de lignes de l'écran couvertes par la VLINE. Si nl n'est pas spécifiée, la ligne court jusqu'à la fin de l'écran.

HLINE

HLINE permet de dessiner une ligne horizontale.

Syntaxe

    HLINE [color] width line [col [nc]]

où la couleur est un des mots-clés habituels :

    DEFAULT | REVERSE | UNDERLINE | BOLD | INVISIBLE |
BLINKING | DIM | BLUE | GREEN | CYAN | RED |
MAGENTA | YELLOW | WHITE |BLACK

width vaut 1 ou 2 et indique si les caractères semi-graphiques utilisés doivent être simples ou doubles.

line et col indiquent la position du coin supérieur gauche de la ligne à l'intérieur de la PAGE. Les valeurs nulles correspondent à la première ligne et la première colonne de la PAGE.

nc indique le nombre de colonnes de l'écran couvertes par la HLINE. Si nc n'est pas spécifiée, la ligne court jusqu'à la fin de l'écran.

"string"

Le texte compris entre quotes sera affiché dans l'écran à la position indiquée.

Syntaxe

    "string" [color] line  col

Le texte est affiché, éventuellement dans une couleur différente de celle de la PAGE à la position line col.

FILL

FILL remplit un rectangle de la PAGE avec un caractère d'ombrage.

Syntaxe

 FILL     [color]       line  col  nl  nc

où color est un des mots-clés habituels :

    DEFAULT | REVERSE | UNDERLINE | BOLD | INVISIBLE |
BLINKING | DIM | BLUE | GREEN | CYAN | RED |
MAGENTA | YELLOW | WHITE |BLACK

line et col indiquent la position du coin supérieur gauche du rectangle, à l'intérieur de la PAGE. Les valeurs nulles correspondent à la première ligne et la première colonne de la PAGE.

nl et nc indiquent respectivement le nombre de lignes et de colonnes du rectangle, en ce incluses les lignes elles-mêmes.

REDRAW

Les HLINES, VLINES et BOX, une fois dessinés dans la PAGE se croisent éventuellement. La fonction de REDRAW est de changer les caractères d'intersection de façon à obtenir des caractères de croisement adéquats.

Redraw peut être limité à une portion de la PAGE. Plusieurs REDRAW successifs peuvent être effectués.

Syntaxe

    REDRAW [line  col  nl  nc]

line et col indiquent la position du coin supérieur gauche de la portion de PAGE à redessiner. Les valeurs nulles correspondent à la première ligne et la première colonne de la PAGE.

nl et nc indiquent respectivement le nombre de lignes et de colonnes de cette portion de PAGE.

CLOSEBOX

Cette option indique qu'un "close box" doit être affiché sur le coin supérieur gauche de la page. Ce close box pourra être activé par la souris lors de l'exécution de l'application.

Il vaut mieux éviter le close box dans le cas des Multi-Pages et des BC.

Ce mot-clé prend le pas sur la définition éventuelle de CLOSEBOX dans la section GLOBAL.

NOCLOSEBOX

Cette option indique qu'un "close box" ne doit pas être affiché sur le coin supérieur gauche de la page.

Ce mot-clé prend le pas sur la définition éventuelle de CLOSEBOX dans la section GLOBAL.

IMPORT_REQUIRED

Si Yes, indique que les valeurs REQUIRED ou COMPULSORY sont importées des ISAM vers la PAGE.

IMPORT_TODAY

Si Yes, indique que les valeurs TODAY sont importées des ISAM vers la PAGE.

6.2.4 Définition des SCREENS

Les SCREENS, apparus avec la version 3 de SCR/AL1 permettent de dessiner la PAGE de façon tout-à-fait libre.

L'utilisation des SCREENS rend obsolètes une série de mot-clés comme les DRAWS ou encore LINE, COL dans la définition des champs.

Le texte qui se trouve dans la définition de l'écran est analysé et certaines portions sont considérées comme des positions de champs qui peuvent être détaillés plus loin dans la définition des FIELDS de la PAGE.

Ces portions de texte commencent par un des caractères suivants :

Collés à l'un de ces caractères se trouve le nom du champ. La position du champ est donc déterminée par sa position dans la définition du SCREEN.

Après le nom du champ, et toujours collé, on peut trouver des attributs supplémentaires :

Exemple

    DEFAULTS {ISAM is_art}
SCREEN {

Couleur Taille Description

$color $size *descr(15
$color+1 $size+1 *descr+1(15
$color+2 $size+2 *descr+2(15
#OK

}

Neuf champs sont définis et positionnés de la sorte dans l'écran. Les champs sont liés directement par le nom à ceux de l'ISAM is_art. Les champs des deuxième et troisième lignes sont les champs qui suivent dans l'ISAM les champs color, size et descr.

D'autre part, les champs descr sont output et limités à 15 caractères (alors que dans l'ISAM ils peuvent être de 30 caractères par exemple).

Pour réaliser la même PAGE sans utiliser les SCREENS, il faudrait entrer le code suivant :

    BOX 1
DEFAULTS {ISAM is_art}
DRAW "Couleur" 0 1
DRAW "Taille" 0 17
DRAW "Description" 0 34
VLINE 1 0 15
VLINE 1 0 32
HLINE 1 1
REDRAW

FIELD ISF color line 2
FIELD ISF color+1
FIELD ISF color+2
FIELD ISF size col 17 line 2
FIELD ISF size+1 col 17
FIELD ISF size+2 col 17
FIELD ISF descr col 34 line 2
FIELD ISF descr+1 col 34
FIELD ISF descr+2 col 34

Dans le cas où la PAGE contient des champs non liés à des champs d'ISAM, il faut définir ces champs et les nommer avant ou après la définition du SCREEN, de façon à ce que le compilateur puisse faire le lien avec les définitions trouvées dans la PAGE.

Cas des APG des MPAGE et BC

Les PAGE qui sont utilisées comme APG dans les MPAGE et les BC peuvent également contenir des références à des champs de la LPG du même objet. Dans ce cas, le positionnement de la LPG et de ses champs peut être déduit des champs %nom qui se trouvent dans la LPG. Cette opération a lieu à la fin de la lecture du BC ou de la MPAGE.

    APG jvp_bes {
Center
...
SCREEN {
+======================= LeveringsBons ================================+
| |
|----------------------------------------------------------------------|
| Klant $KLANUM *KLANAAM |
| *KLINSTITUUT *KLTEL *KLBTW |
| Bonnummer $BONNR Taal:*T S:*SO C:*PR Munt:*MK Kort F/L:*F /*A|
| Vertegenwoordigers $VERT1 / $VERT2 |
| Datum Levering $DATLEV Korting Faktuur $KORTFAK |
| Leveringsadres $LEVADR Code Faktuur $CODFAK *X |
|Art |Aant.| Omschrijving Krt.|Prijs |
|----------------------------------------------------------------------|
|%ART %AAN %OMSNED %KR %PRIJS |
| |
| |
| |
| |
| |
| |
|----------------------------------------------------------------------|
|*OPM TOT BON *TOT |
| Korting Aktief *KO |
+======================================================================+
}
...
}

LPG jvlpg_bes {
DEFAULTS {ISAM jvf_besl blue line 0}
FIELD name art ISF artnum CODE jvf_art artnum
FIELD name omsned ISAM jvf_art omsned
FIELD name aan ISF aantal
FIELD name kr nc 4 ISF kortart
FIELD name prijs ISF prijs
FIELD name b ISF backo upper
FIELD name ga ISF ga hidden
FIELD name artgrat ISAM jvf_art artnum_g hidden
}

Dans cette LPG, les champs référencés dans le APG doivent être nommés (ISF ne suffit pas), sans quoi le lien serait impossible.

Boutons automatiques

Il est possible de générer des boutons automatiquement dans une PAGE en insérant une ligne commençant par:

Une ligne horizontale est tirée avant les boutons et une ligne blanche en-dessous.

Le texte de boutons est pour l'instant hardcodé.

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