.! .! CANEVAS RUNOFF POUR RAPPORT .! AVEC PAGE DE GARDE .! 12 CARACTERES / INCH .! .PS 62,96.RM83 .FLAG UNDERLINE.FLAG OVERSTRIKE.FLAG BOLD .EUN.EOV.EBO .NHD .ND .dhl ru,d,d,ll .nnm .fg40 .! NOM DU CLIENT .c122;^*MANUEL\* .s .! TITRE DU RAPPORT .c122;^*FORM/VAX V.10\* .s .c128;#################################### .s .c128;#################################### .c128;#################################### .s7 .! AUTEUR(S) DU RAPPORT .i5;### .s .! DATE ET NUMERO DU RAPPORT (MOIS ANNEE - Numero chronologique) .i5;###### .s .I5;##### .pg .LO 3,2 .NuMber running 1 .LM 10 .STHL ,,,,,1,1, .P 5 .AP .FG4 .C;^*#^&PRINCIPALES_ AMELIORATIONS_ ET_ CORRECTIONS\*\& .S4 Par rapport à la version initiale du logiciel fournie par DIGITAL-FRANCE et mise dans le domaine public par l'intermédiaire de la programmathèque DECUS, les améliorations et modifications suivantes ont été réalisées par J.Y. COLLOT (SOGIDEC)#: .LS1 .LE;Les champs alphabétiques acceptent les minuscules et les caractères accentués. .LE;Les terminaux VT2xx et VT3xx sont acceptés, mais seulement en mode VT100 (pas de support particulier du "keypad"). .LE;L'utilisation de VAXFORM ne nécessite plus de privilège particulier (PHY__IO ou LOG__IO). .LE;Un CTRL__W a été implémenté, mais on ne réaffiche que les champs et les libellés de l'écran courant (pas de réaffichage des autres textes et messages affichés par le programme d'application). .LE;Le fonctionnement du nouvel attribut (retour inconditionnel au programme appelant même en cas de champ à "blanc") a été vérifié et consolidé. .LE;Le paramètre IS (Status) de la routine SAIECR fonctionne correctement en entrée (positionnement sur le champ désiré). .LE;Pour l'installation#: Créer un directory [VAXFORM] qui contiendra les librairies et les fichiers utiles. La localisation de ce directory sera faite au moyen du nom logique VAXFORM__DIR, qui sera défini par la procédure START__VAXFORM.COM à lancer dans le fichier SYSSTARTUP(__V5).COM du système. Le sous-directory [VAXFORM.SOURCE] contient les sources du logiciel, et le sous-directory [VAXFORM.DEMO] contient quelques exemples de programmes d'applications. .ELS .S4 .R;Juin 1990 .PG .FIG3 .hl1 ^*#^&PREFACE\*\& .HL2 ^*#^&DEFINITION\*\& FORM/VAX permet la création et l'utilisation d'écrans de saisie sous le moniteur VAX/VMS pour des terminaux VT52 ou VT100, VT2xx et VT3xx (en mode VT100). .HL2 ^*#^&LANGAGE_ FORM/VAX\*\& L'écriture des écrans de saisie est réalisée en langage FORM/VAX à l'aide d'un éditeur de texte. Ce langage est constitué de clauses de formattage des différents éléments de l'écran. L'écran est identifié par un numéro unique dans l'application#; il peut être défini en contraste inversé. L'utilisateur peut choisir les caractères matérialisant les champs de saisie alphanumériques et numériques sur l'écran#; il peut également définir les attributs de saisie et de visualisation par défaut pour l'ensemble des éléments de l'écran. Les éléments d'un écran sont définis par leur nature (libellé, date, heure, champ de saisie ou message pré-codé), leur position, leur format et leurs attributs de visualisation ou de saisie. Les attributs de visualisation sont le clignotement, le soulignement, l'inversion de contraste et l'utilisation de caractères gras. Les attributs de saisie peuvent être#: tabulation, champ protégé, obligatoire, à remplir, alphanumérique limité au numérique ou à l'alphabétique, visualisation des zéros non significatifs, sous-programme associé, tête de chapitre. .HL2 ^*#^&COMPILATEUR_ D'ECRANS_ FORM/VAX\*\& Utilisant une syntaxe commune aux utilitaires de VAX/VMS, le compilateur VAX/FRM fournit les fichiers objet (OBJ) et listing (LIS) correspondant à la source FORM/VAX de l'écran (FRM). Il détecte les erreurs de syntaxe. L'utilitaire générateur ECR fournit un fichier image de l'écran (ECR) correspondant à la source FORM/VAX (FRM). .HL2 ^*#^&LIBRAIRIES_ D'ECRANS_ FORM/VAX\*\& L'utilitaire standard LIBR peut être utilisé pour gérer des librairies d'écrans (OLB) regroupées par application. .HL2 ^*#^&LIBRAIRIES_ DE_ SAISIE_ FRMLIB\*\& Les programmes d'application contrôlent les écrans de saisie par l'intermédiaire d'appels à un ensemble de routines regroupées dans une librairie. Ils sont écrits en assembleur MACRO/VAX ou dans les langages évolués supportant la syntaxe CALL (COBOL, BASIC, FORTRAN). .PG .FIG2 Cette librairie se compose de routines prenant en charge la saisie globale d'un écran et de routines permettant un contrôle plus fin de l'écran (saisie par champ, modification dynamique d'attributs de visualisation et de saisie, etc...). A l'édition de lien des programmes, l'utilisateur peut spécifier de façon simple la librairie de saisie et les objets d'écrans sous une forme concaténée ou sous une forme segmentée. .HL1 ^*#^&CONCEPTS_ ET_ DEFINITIONS\*\& .HL2 ^*#^&ECRANS_ DE_ SAISIE_ FORM/VAX\*\& Un ^&écran_ de_ saisie\& FORM/VAX est un guide de saisie interactive et contrôlée qui peut être accédé depuis les ^&programmes_ d'application\&. Un programme d'application fait référence à un écran de saisie FORM/VAX par son ^&numéro_ d'écran\& (1 à 255) identifiant l'écran de façon unique dans l'application. Un écran de saisie est constitué ^&d'éléments\& définissant d'une part la mise en forme sur le terminal, et d'autre part, le contenu de la saisie et les contrôles associés. Les caractères saisis de façon interactive sur le terminal sont stockés dans une table du programme d'application appelée ^&buffer_ de_ saisie\&. .HL2 ^*#^&ELEMENTS_ D'UN_ ECRAN\*\& .HL3 ^*#^&Définitions\*\& Les éléments de définition d'un écran de saisie sont regroupés en trois classes#: .S .LS1 "-" .LE;champs .LE;libellés .LE;messages .ELS Les ^*champs\* correspondent à des zones de l'écran dans lesquelles a lieu la saisie. Ces zones sont modifiables et le curseur peut être positionné et déplacé dans chacune d'entre elles, dans la mesure où elles ne sont pas protégées. Les ^*libellés\* correspondent à des zones de l'écran sur lesquelles apparaît un texte. Ces zones ne sont pas modifiables et le curseur ne peut être positionné sur aucune d'entre elles. Elles n'appartiennent pas au buffer de saisie du programme d'application. Les ^*messages\* correspondent à des textes qui sont affichés de façon ponctuelle sur la dernière ligne de l'écran. Leur apparition interrompt la saisie qui ne peut reprendre qu'après validation d'une touche appropriée. .PG .FIG5 .HL3 ^*#^&Numérotation_ des_ éléments\*\& Chaque élément de l'écran est identifié dans sa classe (champ, libellé ou message) par un numéro d'ordre (1 à 255). Ce numéro d'ordre permet de faire référence à l'élément depuis le programme d'application pour modifier ses attributs de saisie ou de visualisation par exemple, ou encore pour l'identifier lorsqu'il s'agit d'effectuer un contrôle (voir attribut de saisie S ou I,II.3.7). .HL3 ^*#^&Attributs_ de_ visualisation_ des_ éléments\*\& Chaque élément de l'écran peut être associé à un ensemble d'attributs de visualisation mettant en ÷uvre certaines caractéristiques du terminal VT100. Ces attributs de visualisation ne sont pas pris en compte sur les terminaux VT52. Les terminaux VT2xx et VT3xx sont acceptés, mais il n'existe aucun support particulier du clavier et ils doivent être utilisés en mode VT100. Les attributs de visualisation peuvent être modifiés par programme durant la saisie. .S .I0;^*Inversion de contraste (I)\*#: défaut = -#I Cet attribut permet d'inverser le contraste des éléments par rapport au fond de l'écran. .S .I0;^*Caractère gras (G)\*#: défaut = -#G Cet attribut, nécessitant l'option "advanced video" du terminal VT100 pour être pris en compte, permet d'intensifier les caractères des éléments auxquels il est associé. .S .I0;^*Clignotement (C)\*#: défaut = -#C Cet attribut, nécessitant l'option "advanced video" du terminal VT100 pour être pris en compte, permet de faire clignoter les éléments auxquels il est associé. .S .I0;^*Soulignement (S)\*#: défaut = -#S Cet attribut, nécessitant l'option "advanced video" du terminal VT100 pour être pris en compte, permet de souligner les éléments auxquels il est associé. .HL2 ^*#^&CHAMPS\*\& .HL3 ^*#^&Définition\*\& Les champs correspondent à des zones de l'écran dans lesquelles a lieu la saisie. Ces zones sont modifiables et le curseur peut être positionné et déplacé dans chacune d'entre elles dans la mesure où elles ne sont pas protégées. .PG .FIG5 .HL3 ^*#^&Buffer_ de_ saisie\*\& Le buffer de saisie est défini dans les programmes d'application. Il est équivalent à l'ensemble des champs rangés par numéro d'ordre croissant. Les champs sont transmis sous la forme de chaînes de caractères dans le buffer de saisie. .HL3 ^*#^&Etats_ d'un_ champ\*\& .S .I0;^*#^&Champ_ vide\*\& : Un champ vide est constitué de caractères blancs dans toutes les positions correspondantes du buffer de saisie. Le fait de ne frapper que des blancs laisse un champ dans l'état vide. .S .I0;^*#^&Champ_ saisi\*\& : Un champ est saisi lorsqu'au moins un caractère frappé n'est pas blanc. .HL3 ^*#^&Modes_ de_ saisie\*\& Il existe deux modes de saisie d'un écran#: .S .LS1 "-" .LE;saisie en création .LE;saisie en modification .ELS .S .I0;^*#^&Saisie_ en_ création\*\&#: Quel que soit le contenu initial du buffer de saisie, l'ensemble des positions correspondant aux champs non protégés est remis à blanc (champ vide) et les champs sont visualisés comme tels sur le terminal en début de saisie. Les positions correspondant aux champs protégés ne sont pas modifiées#; leur contenu apparaît sur le terminal sans contrôle de validité. .S .I0;^*#^&Saisie_ en_ modification\*\&#: Le contenu du buffer de saisie est visualisé sans modification sur le terminal dans les champs correspondants en début de saisie. Aucun contrôle de validité n'est effectué pour cet affichage initial. .PG .FIG5 .HL3 ^*#^&Codage_ des_ champs\*\& Le codage d'un champ définit l'ensemble des caractères qui peuvent y être saisis. .S .I0;^*Codage des champs alphanumériques (A)\*#: Les caractères autorisés dans un champ alphanumérique sont les caractères ASCII de 40 (octal) à 177 (octal). Les autres caractères (0 à 37) ne sont pas pris en compte ou bien ont un sens particulier dans la saisie (ex#: CR, ESC, LF, DELETE) (voir chapitre VII). .S .I0;^*Codage des champs numériques (D)\*#: Les caractères autorisés dans un champ numérique sont les caractères numériques (0 à 9), le caractère blanc, éventuellement le signe moins (-) et/ou la virgule(,). Une erreur de saisie entraîne l'affichage des messages internes suivants#: .S .LT CHAMP NUMERIQUE (numéricité non respectée) FORMAT ILLEGAL (erreur liée au signe ou à la virgule) .EL Les champs numériques admettent les variantes de codage suivantes#: .S .I0;^*Champs non signés (+D)\*#: Le signe moins (-) ne peut être saisi dans ces champs. .S .I0;^*Champs signés (D)\*#: Le signe moins (-) peut être saisi dans ces champs#; son absence implique le signe plus (+). .S .I0;^*Champs entiers (Dn, +Dn)\*#: Ces champs ne contiennent aucune partie décimale. La virgule (,) ne peut être saisie dans ces champs. .S .I0;^*Champs non entiers (Dn.p, +Dn.p)\*#: Ces champs contiennent une partie entière de n caractères et doivent être séparés par une virgule (,). .HL3 ^*#^&Formattage_ de_ la_ saisie\*\& Le formattage de la saisie décrit la manière dont les champs saisis sont visualisés sur le terminal et transcrits dans le buffer de saisie. .PG .FIG5 La transcription dans le buffer de saisie est dans une certaine mesure (signe et virgule) dépendante du langage utilisé par le programme d'application. Cette dépendance est matérialisée dans l'écran de saisie en langage FORM/VAX par la clause FORMAT (voir chapitre III _& III.4.1) qui permet de définir trois formats différents (COBOL, BASIC, FORTRAN). Le tableau 1.1 définit les trois formats de saisie. .S2 .C;^*#^&Tableau_ 1.1\& : formattage de la saisie\* .S .LT _________________________________________________________________________ | | | | | | | COBOL | FORTRAN | BASIC | | |---------------------|---------------------|---------------------| | | Longueur | Définit. | Longueur | DEFINIT. | Longueur | DEFINIT. | | | | PICTURE | | LOGICAL*1| | BUF $ = | |_______|__________|__________|__________|__________|__________|__________| | | | | | | | | | An | n | x(n) | n | (n) | n | n | |-------|----------|----------|----------|----------|----------|----------| | +Dn | n | 9(n) | n | (n) | n | n | |-------|----------|----------|----------|----------|----------|----------| | Dn | n | S9(n) | n | (n) | n | n | |-------|----------|----------|----------|----------|----------|----------| | +Dn.p | n + p |9(n)V9(p) | n + p + 1| (n+p+1) | n + p + 1| n + p + 1| |-------|----------|----------|----------|----------|----------|----------| | Dn.p | n + p |S9(n)V9(p)| n + p + 2| (n+p+2) | n + p + 2| n + p + 2| |_______|__________|__________|__________|__________|__________|__________| .EL .S3 .I0;^*#^&Formattage_ des_ champs_ alphanumériques\*\& .S .I0;^*Champs alphanumériques vides\* : Les champs alphanumériques vides sont matérialisés sur le terminal par une chaîne de tirets "-" par défaut. Sur la base d'un écran de saisie, le tiret peut être remplacé par tout autre caractère. Les positions correspondantes dans le buffer de saisie contiennent alors des blancs. .S .LT terminal buffer ex : - - - - - |__| |__| |__| |__| |__| .EL .PG .FIG5 .I0;^*Champs alphanumériques saisis\* : Les caractères saisis dans les champs alphanumériques ne sont ni compactés ni recadrés sur le terminal et dans le buffer de saisie. .S .LT terminal buffer ex : A B C 1 2 3 A B C 1 2 3 A - C |__| 2 3 A |__| C |__| 2 3 .EL .S2 .I0;^*#^&Formattage_ des_ champs_ numériques\*\& .S .I0;^*Champs numériques vides\* : Les champs numériques vides sont matérialisés sur le terminal par une chaîne de caractères dièse (_#) par défaut. La séparation d'une partie entière de la partie décimale est matérialisée par une virgule (,). Sur la base d'un écran de saisie, le caractère dièse (_#) peut être remplacé par tout autre caractère. Les positions correspondantes dans le buffer de saisie contiennent alors des blancs#: .S .LT terminal buffer ex : #### |__| |__| |__| |__| .EL .S2 .I0;^*Champs numériques saisis\* : Les caractères numériques saisis autres que des blancs sont compactés et cadrés vers la droite sur le terminal et dans la zone correspondante du buffer de saisie. Les caractères non saisis ou saisis à blanc sont cadrés à gauche. Dans la zone du buffer de saisie, ils sont stockés sous la forme de zéros non significatifs (0). Sur le terminal, ils apparaissent sous la forme de blancs ou de zéros non significatifs (0) si l'attribut de saisie est défini par le champ. Le signe moins (-), quelle que soit sa position de saisie et s'il est autorisé, est visualisé sur la droite du champ. Sa transcription dans le buffer de saisie dépend du format de l'écran#: .S .LS1 "-" .LE;En ^*COBOL\*, le signe est caractérisé avec le caractère de droite du champ et ne prend pas un octet dans la zone. .S .LT PIC S9 (n) .EL .PG .FIG5 .LE;En ^*BASIC\* ou en ^*FORTRAN\*, le signe est transmis en tête de la zone dans le buffer de saisie. .ELS La virgule (,), quelle que soit sa position de saisie, est visualisée en position fixe dans le champ, entre la partie entière et la partie décimale. Sa transcription dans le buffer de saisie dépend du format de l'écran#: .S .LS1 "-" .LE;En ^*COBOL\*, la virgule n'est pas transmise et n'occupe pas de position dans le buffer de saisie, elle est spécifiée dans la définition de la zone (V). .LE;En ^*BASIC\* et en ^*FORTRAN\*, la virgule est transcrite sous la forme d'un point (.) entre la partie entière et la partie décimale. .ELS Le tableau 1.2 fournit des exemples de formattage de champs numériques. .S .C;^*#^&Tableau_ 1.2\& : formattage des champs numériques\* .S .LT ____________________________________________________________ | | | | | | | | | Saisie sur |Visualisation| Buffer | Buffer | Buffer | | | le terminal| sur l'écran | COBOL | FORTRAN | BASIC | |_____|____________|_____________|________|_________|________| | | | | | | | |+D3 | 123 | 123 | 123 | 123 | 123 | | | 3 | 3 | 003 | 003 | 003 | | | 1_2 | 12 | 012 | 012 | 012 | | | | | | | | | D3 | 123 | 123 | 12C | + 123 |+ 123 | | | + 123 | 123 | 12C | + 123 |+ 123 | | | 1-23 | - 123 | 12L | - 123 |- 123 | | | - 3 | - 3 | 00L | - 003 |- 003 | | | | | | | | |+D3.2| 123,45 | 123,45 | 12345 | 123.45| 123.45| | | 123, | 123,00 | 12300 | 123.00| 123.00| | | 12 | 12,00 | 01200 | 012.00| 012.00| | | ,45 | ,45 | 00045 | 000.45| 000.45| | | | | | | | | D3.2| 123 | 123,00 | 1230A | + 123.00|+ 123.00| | | + 123 | 123,00 | 1230A | + 123.00|+ 123.00| | | - ,45 | ,45 -| 0004N | - 000.45|- 000.45| | | 3-,45 | 3,45 -| 0034N | - 003.45|- 003.45| |_____|____________|_____________|________|_________|________| .EL .PG .FIG5 .HL3 ^*#^&Attributs_ de_ saisie\*\& Chaque champ de saisie de l'écran peut être associé à un ensemble d'attributs de saisie définissant les conditions de sa saisie. Les attributs de saisie peuvent être modifiés par programme durant la saisie. .S .I0;^*Champ protégé (P)\* : défaut = - P Un champ protégé ne peut être saisi en création ni en modification. Le curseur ne peut être positionné sur ce champ ni à l'intérieur de ce champ. Lorsque ce champ est franchi, aucun contrôle n'est effectué. .S .I0;^*Champ obligatoire (O)\* : défaut = - O Un champ obligatoire doit être saisi (non blanc). S'il est vide, il ne peut être quitté pour le champ suivant ou la fin de l'écran, ni être franchi depuis un champ précédent vers la fin de l'écran. Dans ces conditions, le message d'erreur suivant est affiché#: .S .LT CHAMP OBLIGATOIRE .EL Sa validation force la saisie en début du champ obligatoire. En modification, cet attribut n'a de sens que si le contenu correspondant dans le buffer de saisie est à blanc. .S .I0;^*Champ à remplir (R)\* : défaut = - R Un champ alphanumérique défini avec cet attribut, s'il est saisi, doit être saisi dans sa totalité#; c'est-à-dire qu'il ne doit contenir aucun caractère blanc. Il peut cependant être laissé vide si d'autre part, il n'est pas défini obligatoire. Cet attribut ne s'applique pas aux champs numériques, lesquels, lorsqu'ils sont saisis, le sont implicitement totalement puisque les caractères blancs sont convertis en zéros non significatifs. En cas de contrôle négatif, le message d'erreur suivant est affiché#: .S .LT CHAMP A COMPLETER .EL Sa validation reprend la saisie en début du champ. .S .I0;^*Champ alphanumérique limité à l'alphabétique (A)\* : défaut = - A Les champs alphanumériques (A) ainsi définis sont limités aux caractères alphabétiques (A à Z, a à z et les caractères accentués). .PG .FIG3 En cas d'erreur de saisie, le message d'erreur suivant est affiché#: .S .LT CHAMP LIMITE A L'ALPHABETIQUE .EL .S .I0;^*Champ alphanumérique limité au numérique (N)\* : défaut = - N Les champs alphanumériques (N) ainsi définis sont limités aux caractères numérique (0 à 9). Cependant, ils ne sont pas traités comme des champs numériques (pas de cadrage à droite, etc...). En cas d'erreur, le message d'erreur suivant est affiché#: .S .LT CHAMP LIMITE A DU NUMERIQUE .EL .S .I0;^*Visualisation des zéros non significatifs (_%)\* : défaut = - Z Cet attribut de saisie permet de visualiser les zéros non significatifs des champs numériques (D). Quelle que soit la valeur de cet attribut (Z - Z), les zéros non significatifs sont transmis dans le buffer de saisie. .S .I0;^*Tabulation manuelle (T)\* : défaut = - T Cet attribut de saisie oblige l'opérateur à utiliser une fontion pour quitter le champ lorsque celui-ci est plein. Par défaut (- T), la saisie du dernier caractère d'un champ validé termine ce champ et positionne le curseur sur le premier caractère du champ non protégé suivant. .S .I0;^*Sous-programme (S)\* : défaut = - S L'attribut de saisie S associé à un champ permet un retour au programme d'application lorsque le champ est saisi, non protégé et quitté ou franchi vers l'aval. Le programme d'application identifie le champ saisi par son numéro d'ordre et peut ainsi réaliser des contrôles spécifiques sur ce champ ou sur un ensemble de champs précédemment saisis. .S .I0;^*Retour inconditionnel (I)\* : défaut = - I Cet attribut permet un retour au programme d'application après passage sur un champ, même quand le champ n'a pas été saisi (resté blanc). Le comportement est le même que pour l'attribut (S) quand le champ a été saisi (au moins un caractère non blanc). Cet attribut permet d'effectuer des contrôles et des tests sur un champ "blanc". .S .I0;^*Tête de chapitre (C)\* : défaut = - C L'attribut de saisie "tête de chapitre" est lié à l'utilisation de la touche fonction tabulation (voir chapitre 7, 7.2.8). Un chapitre est défini par un champ "tête de chapitre" (C) et les champs (- C) qui le suivent. .PG .FIG5 .HL2 ^*#^&LIBELLES\*\& .HL3 ^*#^&Définition\*\& Les libellés correspondent à des zones de l'écran sur lesquelles sont affichés des textes. Ces zones ne sont pas modifiables et le curseur ne peut y être positionné. Elles n'appartiennent pas au buffer de saisie du programme d'application. Les libellés sont de trois types (libellés, date et heure). .HL3 ^*#^&Libellés\*\& Ils contiennent des textes spécifiques de l'application. .HL3 ^*#^&Date\*\& C'est un libellé particulier qui permet d'afficher la date d'appel de l'écran sous la forme#: .S .LT JJ-MMM-AN .EL .HL3 ^*#^&Heure\*\& C'est un libellé particulier qui permet d'afficher l'heure d'appel sur l'écran sous la forme#: .S .LT HH:MM .EL .HL2 ^*#^&MESSAGES\*\& .HL3 ^*#^&Définition\* Les messages correspondent à des textes qui sont affichés de façon ponctuelle sur la dernière ligne de l'écran. Leur apparition interrompt la saisie qui ne peut reprendre qu'après la validation d'une touche appropriée. .HL3 ^*#^&Groupes_ de_ messages\*\& Les messages appartiennent à trois groupes (locaux, globaux, internes). .S .I0;^*Messages locaux\* : Les messages locaux sont codés en langage FORM/VAX. Ils sont propres à chacun des écrans auxquels ils appartiennent. .PG .FIG3 .I0;^*Messages globaux\* : Les messages globaux sont des messages communs à un grand nombre d'écrans de l'application. Ils ne sont pas codés dans chacun des écrans, mais peuvent être regroupés dans le module MESSAG.MAR de la librairie de saisie FRMLIB (voir chapitre 8, 8.2.2). .S .I0;^*Messages internes\* : Les messages internes sont les messages associés aux contrôles standards de la saisie. Ils sont définis dans le module MESSAGE de la librairie de saisie FRMLIB. Ces messages peuvent également être modifiés (voir chapitre 8, 8.2.1). .HL3 ^*#^&Types_ de_ messages\*\& Les messages sont de deux types#: .S .LS1 "-" .LE;ERREUR#: Une erreur doit être validée par la touche "DELETE". .LE;QUESTION#: Une question doit être validée par oui (O) ou par non (N) (majuscules). .ELS .HL1 ^*#^&FORM/VAX_ -_ LANGAGE_ DE_ DEFINITION_ D'ECRANS_ DE_ SAISIE\*\& .HL2 ^*#^&SYNTAXE\*\& Les écrans de saisie sont définis dans le langage FORM/VAX. Chaque écran est constitué de clauses regroupées dans un fichier source de type FRM à l'aide de l'éditeur de texte. Chacune des clauses représente une ligne dans le fichier source de l'écran. Une clause est séparée de la liste de ses paramètres éventuels par un espace ou une tabulation. Les paramètres sont séparés entre eux par une virgule. L'absence d'un paramètre dans la liste est marquée par deux virgules successives#: .S .LT clause|__|param. 1, param. 2,, param. 4 .EL Les paramètres peuvent avoir différents formats#: .S .LS1 "-" .LE;une valeur .LE;un texte qui doit apparaître entre les signes < et > .LE;une liste de valeurs séparées par des virgules encadrée par les signes < et >#: .S .LT clause|__|val.,,, .EL .ELS .PG .FIG5 Des commentaires peuvent être intégrés entre chaque ligne ou en fin de ligne de code. Les commentaires sont précédés d'un point virgule (;)#: .S .LT ;texte du commentaire clause|__|param.1, ..., param.n ; texte du commentaire .EL .HL2 ^*#^&STRUCTURE_ D'UN_ PROGRAMME_ FORM/VAX\*\& Les programmes FORM/VAX se composent de clauses de définition globale de l'écran et de clauses de définition des éléments de l'écran. Les clauses de définition globale de l'écran doivent être groupées en tête du programme FORM/VAX, entre la clause DEBUT et la clause FORMAT. Elles définissent les paramètres généraux de l'écran (ex#: numéro d'écran, contraste). Les clauses de définition des éléments de l'écran sont groupées à la suite entre la clause FORMAT et la clause FIN. Elles définissent chacune des éléments de l'écran par sa classe, son numéro d'ordre, sa position sur l'écran, etc... .S2 .C;^*#^&Figure_ 3.1\& : structure d'un programme FORM/VAX\* .S2 .LT DEBUT ( ) ( ) ( Clauses de définition globale de l'écran ) ( ) ( FORMAT ( ) ( ) Clauses de définition des éléments de l'écran ( ) ( ) ( FIN .EL .PG .FIG5 .HL2 ^*#^&CLAUSES_ DE_ DEFINITION_ GLOBALE_ DE_ L'ECRAN\*\& .HL3 ^*#^&Clause_ DEBUT\*\& .S .I0;^*#^&Description\*\&#: La clause DEBUT est ^*#^&obligatoire\*\& et doit être la première clause du programme. Elle permet d'associer à l'écran un numéro d'identification unique dans l'application. Les programmes font référence à un écran de saisie par son numéro. .S2 .I0;^*#^&Format\*\&#: .S .LT DEBUT n° écran n° écran = n° d'identification de l'écran dans l'application (décimal) Exemple : DEBUT 123 .EL .HL3 ^*#^&Clause_ VIDEO\*\& .S .I0;^*#^&Description\*\& : La clause VIDEO est ^*#^&optionnelle\*\& et permet de changer le contraste général de l'écran (caractères blancs sur fond sombre/caractères sombres sur fond blanc). Cette option est transparente sur les terminaux VT52 pour lesquels le fond de l'écran est toujours sombre. .S .I0;^*#^&Format\*\& : .S .LT VIDEO .EL .HL3 ^*#^&Clause_ VALID\*\& .S .I0;^*#^&Description\*\& : La clause VALID est ^*#^&optionnelle\*\&. Elle permet, à l'issue de la saisie de l'écran, de visualiser sur la 24ème ligne la question suivante#: .S .LT VALIDATION ? (O/N) : .EL .S .LS1 "-" .LE;une réponse affirmative (O majuscule) termine la saisie de cet écran, .PG .FIG5 .LE;une réponse négative (N majuscule) reprend la saisie sur le premier champ non protégé de l'écran. .ELS .S .I0;^*#^&Format\*\& : .S .LT VALID .EL .S .HL3 ^*#^&Clause_ ALPHA\*\& .S .I0;^*#^&Description\*\& : La clause ALPHA est ^*#^&optionnelle\*\&. Elle permet de spécifier, pour l'ensemble de l'écran, un caractère matérialisant les champs alphanumériques à saisir. En l'absence de cette clause, le caractère tiret "-" est pris par défaut. .S .I0;^*#^&Format\*\& : .S .LT ALPHA = caractère matérialisant les champs alphanumériques Exemple : ALPHA .EL .S Dans cet exemple, tous les champs alphanumériques vides seront matérialisés sur l'écran par une succession de points d'interrogation#: .S .LT PRENOM : ???????????????????????????? .EL .HL3 ^*#^&Clause_ DIGIT\*\& : .S .I0;^*#^&Description\*\& : La clause DIGIT est ^*#^&optionnelle\*\&. Elle permet de spécifier, pour l'ensemble de l'écran, un caractère matérialisant les champs numériques à saisir. En l'absence de cette clause, le caractère dièse "_#" est pris par défaut. .S .I0;^*#^&Format\*\& : .S .LT DIGIT = caractère matérialisant les champs numériques .EL .PG .FIG5 .LT Exemple : DIGIT <.> .EL .S Dans cet exemple, tous les champs numériques vides seront matérialisés sur l'écran par une succession de points#: .S .LT AGE : ... .EL .S .HL3 ^*#^&Clause_ DEFSAI\*\& .S .I0;^*#^&Description\*\& : La clause DEFSAI est ^*#^&optionnelle\*\&. Elle permet de changer, pour l'ensemble des champs de l'écran, les attributs de saisie pris par défaut. Les attributs de saisie sont les suivants#: .S2 .LT P champ protégé O champ obligatoire R champ à remplir T tabulation manuelle en fin de champ A champ alphanumérique limité à l'alphabétique N champ alphanumérique limité au numérique Z visualisation des zéros non significatifs pour un champ numérique S sous-programme associé au champ saisi I sous-programme associé au champ même non saisi C tête de chapitre .EL .S En l'absence de cette clause, les attributs de saisie pris par défaut sont#: - P, - O, - R, - T, - A, - N, - Z, - S, - I, - C. .S2 .I0;^*#^&Format\*\& : .S .LT DEFSAI = liste des attributs de saisie Exemple : DEFSAI .EL .PG .FIG5 Dans cet exemple, par défaut, tous les champs seront obligatoires et les zéros non significatifs seront visualisés pour les champs numériques. .HL3 ^*#^&Clause_ DEFVIS\*\& .S .I0;^*#^&Description\*\& : La clause DEFVIS est ^*#^&optionnelle\*\&. Elle permet de changer, pour l'ensemble des éléments de l'écran (libellés, champs et messages), les attributs de visualisation pris par défaut. Les attributs de visualisation sont les suivants#: .S .LT I contraste inversé C clignotement S soulignement G caractères gras .EL .S En l'absence de cette clause, les attributs de visualisation pris par défaut, sont les suivants#: - I, - C, - S, - G. .S .I0;^*#^&Format\*\& : .S .LT DEFVIS = liste des attributs de visualisation Exemple : DEFVIS .EL .S Dans cet exemple, par défaut, tous les éléments seront visualisés en contraste inversé. .HL2 ^*#^&CLAUSES_ DE_ DEFINITION_ DES_ ELEMENTS_ DE_ L'ECRAN\*\& Chaque élément est identifié dans sa classe (champ, libellé, message) par un numéro d'ordre de 1 à 255 (voir chapitre II, II.2.2). Ce numéro est optionnel. Le système attribue automatiquement un numéro d'ordre, s'il n'est pas précisé, égal au numéro d'ordre de l'élément précédent dans la même classe, incrémenté de 1. .HL3 ^*#^&Clause_ FORMAT\*\& .S .I0;^*#^&Description\*\& : La clause FORMAT est ^*#^&obligatoire\*\&#; elle marque la séparation entre les clauses de définition globale de l'écran et les clauses de définitions des éléments de l'écran. .PG .FIG5 Elle permet de définir le format, dans le buffer de saisie, des champs saisis sur le terminal (voir chapitre II, II.3.6). .S .I0;^*#^&Format\*\& : .S .LT FORMAT format format = CBL pour le format COBOL (défaut) FTN pour le format FORTRAN BP2 pour le format BASIC Exemples : FORMAT CBL FORMAT FTN .EL .HL3 ^*#^&Clause_ CHAMP\*\& .S2 .I0;^*#^&Description\*\& : La clause CHAMP définit un champ de saisie sur l'écran. .S .I0;^*#^&Format\*\& : .S2 .LT CHAMP n° champ, L, C, nature, , n° champ = n° optionnel du champ de saisie L = n° de ligne sur l'écran (de 1 à 23) C = n° de colonne sur l'écran (de 1 à 80) nature = nature du champ de saisie et Am = champ alphanumérique +Dm = champ numérique entier non signé Dm = champ numérique entier signé +Dm.n = champ numérique non entier, non signé Dm.n = champ numérique non entier, signé = liste optionnelle d'attributs de saisie = liste optionnelle d'attributs de visualisation .EL .PG .FIG5 .LT Exemples : CHAMP 1,10,20,A15, CHAMP ,10,40,D3,,<-I> CHAMP 10,12,02,+D3.2 CHAMP ,13,02,D9,<-O> CHAMP ,14,02,+D4,,<-I> .EL .S .HL3 ^*#^&Clause_ LIBEL\*\& .S .I0;^*#^&Description\*\& : La clause LIBEL définit un libellé sur l'écran de saisie. .S .I0;^*#^&Format\*\& : .S .LT LIBEL n°libellé, L, C, , n°libellé = n° optionnel du libellé L = n° de ligne sur l'écran C = n° de colonne sur l'écran = texte du libellé = liste optionnelle d'attributs de visualisation Exemples : LIBEL 1,10,10,, LIBEL ,10,11, .EL .HL3 ^*#^&Clause_ DATE\*\& .S .I0;^*#^&Description\*\& : La clause DATE définit l'affichage de la date courante sur l'écran de saisie. L'élément DATE appartient à la classe des libellés. .S .I0;^*#^&Format\*\& : .S .LT DATE n°libellé, L, C, n°libellé = n° optionnel du libellé L = n° de ligne sur l'écran .EL .PG .FIG5 .LT C = n° de colonne sur l'écran = liste optionnelle d'attributs de visualisation Exemple : DATE 10,01,60 .EL .S .HL3 ^*#^&Clause_ HEURE\*\& .S .I0;^*#^&Description\*\& : La clause HEURE définit l'affichage de l'heure sur l'écran. L'élément HEURE appartient à la classe des libellés. .S .I0;^*#^&Format\*\& : .S .LT HEURE n°libellé, L, C, n°libellé = n° optionnel du libellé L = n° de ligne sur l'écran C = n° de colonne sur l'écran = liste optionnelle d'attributs de visualisation Exemple : HEURE ,01,70 .EL .HL3 ^*#^&Clause_ ERREUR\*\& .S .I0;^*#^&Description\*\& : La clause ERREUR définit un message d'erreur pouvant être affiché sur la 24ème ligne de l'écran. L'élément ERREUR appartient à la classe des messages. .S2 .I0;^*#^&Format\*\& : .S .LT ERREUR n°message, , n°message = numéro optionnel du message = texte du message d'erreur = liste optionnelle d'attributs de visualisation .EL .PG .FIG5 .LT Exemple : ERREUR 1, , .EL .S .HL3 ^*#^&Clause_ QSTION\*\& .S .I0;^*#^&Description\*\& : La clause QSTION définit une question pouvant être affichée sur la 24ème ligne de l'écran de saisie. L'élement QSTION appartient à la classe des messages. .S2 .I0;^*#^&Format\*\& : .S2 .LT QSTION n°message, , n°message = n° optionnel du message = texte de la question. Le texte apparaît suivi de ?|__|(O/N)|__|:|__| sur l'écran = liste optionnelle d'attributs de visualisation Exemple : QSTION 3, .EL .S2 .HL3 ^*#^&Clause_ FIN\*\& .S .I0;^*#^&Description\*\& : La clause FIN est obligatoire et doit être la dernière clause du programme. .S2 .I0;^*#^&Format\*\& : .S2 .LT FIN .EL .PG .FIG5 .HL2 ^*#^&EXEMPLE_ DE_ PROGRAMME_ FORM/VAX\*\& .S2 .LT ; ;EXEMPLE DE PROGRAMME D'ECRAN FORM/VAX ; ;CLAUSES DE DEFINITION GLOBALE DE L'ECRAN DEBUT 1 VALID VIDEO DEFVIS ;CLAUSES DE DEFINITION DES ELEMENTS DE L'ECRAN FORMAT CBL ;FORMATTAGE EN COBOL LIBEL ,01,25,<*** C R E A T I O N ***> LIBEL ,03,06, CHAMP 1,03,24,+D05,,<-I> LIBEL ,05,01, CHAMP 2,05,07,A15,,<-I> LIBEL ,07,01, CHAMP 3,07,10,A12,,<-I> LIBEL ,09,01, CHAMP 4,09,11,A26,,<-I> CHAMP 5,10,11,A26,,<-I> CHAMP 6,11,11,A26,

,<-I> CHAMP 7,12,32,+D05,,<-I> LIBEL ,14,01, CHAMP 8,14,21,+D02,,<-I> LIBEL ,14,23,<-> CHAMP 9,14,24,+D02,,<-I> LIBEL ,14,26,<-> CHAMP 10,14,27,+D02,,<-I> DATE ,2,10 HEURE ,2,25 ERREUR 1,

ERREUR 2, ERREUR 3, ERREUR 4, QSTION 5, FIN .EL .S2 .HL1 ^*#^&COMPILATEUR-GENERATEUR_ D'ECRANS\*\& Les fichiers sources (FRM) des écrans de saisie écrits en langage FORM/VAX doivent être compilés avec l'utilitaire VAXFRM. Le compilateur fournit en sortie des fichiers objet (OBJ) et listing (LST). Le générateur d'écran (ECR) permet de créer un fichier image de l'écran (ECR). .PG .FIG5 .HL2 ^*#^&APPEL_ DU_ COMPILATEUR-GENERATEUR\*\& Le compilateur est appelé par la commande#: .S .LT @ VAXFORM_DIR:VAXFORM.COM .EL .S L'utilisateur répond ensuite à la question adéquate pour compiler son écran. Tout écran compilé devant obligatoirement être inséré dans une bibliothèque, l'utilisateur devra en outre donner le nom de la bibliothèque d'écrans et le nom de l'écran à compiler. Exemple#: .S .LT NOM DE LA LIBRAIRIE EXISTANTE : "Librairie" (.OLB) NOM DU FICHIER ECRAN : "fichier" (.FRM) .EL .S Le nom du fichier est de type FRM par défaut. Pour la génération d'un écran, on spécifie de même le nom du fichier (type FRM). .S .LT NOM DU FICHIER ECRAN : "fichier" .EL .S Une fois la procédure appelée, l'utilisateur pourra compiler ou générer autant d'écrans qu'il le voudra. Pour terminer, il suffit de frapper retour chariot à une des questions. .HL2 ^*#^&LISTING_ DE_ COMPILATION-GENERATION\*\& .HL3 ^*#^&Listing_ de_ compilation_ (LIS)\*\& Les pages numérotées contiennent le code de l'écran#; les messages d'erreur apparaissent sous la ligne en erreur de la façon suivante#: .S .LT ERROR n°erreur ; .EL .S Les messages d'erreur sont décrits dans ce chapitre au paragraphe IV.4. Le code d'erreur U en tête de ligne indique une CLAUSE INCONNUE. .PG .FIG5 .HL3 ^*#^&Listing_ de_ génération_ (ECR)\*\& Il représente l'image de l'écran telle qu'elle apparaît sur le terminal. .S3 .LT ECR1 FORM/VAX V1.0 16-MAR-81 16:12 PAGE 2 ; ;EXEMPLE DE PROGRAMME D'ECRAN FORM/VAX ; ;CLAUSES DE DEFINITION GLOBALE DE L'ECRAN DEBUT 1 VALID VIDEO DELAI <2> DEFVIS ;CLAUSES DE DEFINITION DES ELEMENTS DE L'ECRAN FORMAT CBL ;FORMATTAGE EN COBOL LIBEL ,01,25,<*** C R E A T I O N ***> LIBEL ,03,06, CHAMP 1,03,24,+D05,,<-I> LIBEL ,05,01, CHAMP 2,05,07,A15,,<-I> LIBEL ,07,01, CHAMP 3,07,10,A12,,<-I> LIBEL ,09,01, CHAMP 4,09,11,A26,,<-I> CHAMP 5,10,11,A26,,<-I> CHAMP 6,11,11,A26,

,<-I> CHAMP 7,12,32,+D05,,<-I> LIBEL ,14,01, CHAMP 8,14,21,+D02,,<-I> LIBEL ,14,23,<-> CHAMP 9,14,24,+D02,,<-I> LIBEL ,14,26,<-> CHAMP 10,14,27,+D02,,<-I> DATE ,2,10 HEURE ,2,25 ERREUR 1,

ERREUR 2, ERREUR 3, ERREUR 4, QSTION 5, FIN .EL .PG .FIG5 .LM-5 .LT NOM DE L'ECRAN : FRM1.FRM NUMERO : 1 1 2 3 4 5 6 7 8 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1\ *** C R E A T I O N *** \1 2\ JJ-MMM-AA HH:MM \2 3\ NUMERO DE BADGE : ----- \3 4\ \4 5\NOM : --------------- \5 6\ \6 7\PRENOM : ------------ \7 8\ \8 9\ADRESSE : -------------------------- \9 10\ -------------------------- \10 11\ -------------------------- \11 12\ ##### \12 13\ \13 14\DATE DE NAISSANCE : ##-##-## \14 15\ \15 16\ \16 17\ \17 18\ \18 19\ \19 20\ \20 21\ \21 22\ \22 23\ \23 24\ \24 12345678901234567890123456789012345678901234567890123456789012345678901234567890 1 2 3 4 5 6 7 8 .EL .LM+5 .S .HL2 ^*#^&LIBRAIRIE_ D'ECRANS_ FORM/VAX\*\& Les modules "OBJET" d'écrans FORM/VAX résultant de la compilation peuvent être regroupés par application dans des librairies d'écrans. Ces librairies sont créées et gérées par l'utilitaire LIBRARIAN (LIB) du moniteur VAX/VMS. Il permet d'insérer de nouveaux écrans, de supprimer ou de remplacer des écrans, de lister l'ensemble des écrans contenus dans une librairie, etc... .HL2 ^*#^&MESSAGES_ D'ERREUR_ DE_ COMPILATION\*\& Ces messages correspondent à des erreurs détectées dans le programme source FORM/VAX lors de la compilation. Ils apparaissent dans le listing de compilation sous la ligne de la clause en erreur (seul le numéro de l'erreur apparaît). .PG .FIG5 .I0;^*01 ERREUR DE SEQUENCE\* .S La position de la clause dans le programme ne respecte pas la séquence normale#: .S .LT (DEBUT, clauses globales, FORMAT, clauses d'élément, FIN) .EL .S2 .I0;^*02 PARAMETRE OBLIGATOIRE MANQUANT\* .S Un paramètre obligatoire n'est pas spécifié dans la liste des paramètres de la clause. .S2 .I0;^*03 NUMERO D'ELEMENT ILLEGAL\* .S2 .I0;^*04 NUMERO DE LIGNE ILLEGAL\* .S Le numéro de ligne n'est pas compris entre 1 et 23. .S2 .I0;^*05 NUMERO DE COLONNE ILLEGAL\* .S Le numéro de colonne n'est pas compris entre 1 et 80. .S2 .I0;^*06 CODAGE DE CHAMP ILLEGAL\* .S2 .I0;^*07 ATTRIBUT DE SAISIE INCONNU\* .S2 .I0;^*08 ATTRIBUT DE VISUALISATION INCONNU\* .S2 .I0;^*09 ERREUR DE SYNTAXE\* .S2 .I0;^*10 FORMAT ILLEGAL\* .S2 .I0;^*11 NUMERO D'ECRAN ILLEGAL\* .HL2 ^*#^&MESSAGES_ D'ERREUR_ DU_ COMPILATEUR-GENERATEUR\*\& Ces messages sont les messages standards du moniteur VAX/VMS (voir le manuel#: SYSTEM MESSAGES). .PG .FIG5 .HL1 ^*#^&LIBRAIRIE_ DE_ SAISIE_ D'ECRANS_ FORM/VAX\*\& .HL2 ^*#^&INTRODUCTION\*\& Les programmes d'application contrôlent les écrans de saisie par l'intermédiaire d'appels à un ensemble de routines regroupées dans une librairie (FRMLIB.OLB). Les programmes d'application peuvent être écrits en langages COBOL, BASIC, FORTRAN, et assembleur. .HL2 ^*#^&SYNTAXE_ DES_ APPELS\*\& Les différents langages évolués supportant FORM/VAX utilisent la syntaxe CALL pour accéder aux routines de la librairie FRMLIB. Dans ces langages, la syntaxe CALL génère le code suivant#: .S .LT CALLG ARDLIST, ADRROT .EL .S ARDLIST contient l'adresse d'une liste de n+1 double mots (n étant le nombre de paramètres de la routine). Lors de l'appel cette adresse est stockée dans un registre AP. .S .LT AP ----------------> nombre de paramètres (n) ad. param. 1 ad. param. n .EL .S Cette syntaxe peut être utilisée en assembleur pour accéder à la librairie FRMLIB. .S .I0;Syntaxe COBOL#: .S .LT CALL routine USING paramètre 1, ..., paramètre n .EL .S2 .I0;Syntaxe BASIC#: .S .LT CALL routine BY REF (paramètre 1, ..., paramètre n) .EL .S2 .I0;Syntaxe FORTRAN#: .S .LT CALL routine (paramètre 1, ..., paramètre n) .EL .PG .FIG2 .HL2 ^*#^&DEFINITION_ DES_ PARAMETRES_ DES_ ROUTINES\*\& .HL3 ^*#^&Paramètres_ entiers_ (E,_ -E)\*\& Ce sont des paramètres définis dans les programmes d'application sur un mot entier positif ou signé. .S .LT ex : status (-E) mode de saisie (E) n°écran (E) n°élément (E) etc... .EL .S .I0;Définition COBOL#: .S .LT E : variable PIC 9(4) COMP. - E : variable PIC S9(4) COMP. Exemple : 01 NUMERO-ECRAN PIC 9(4) COMP. 01 MOT-ETAT PIC S9(4) COMP VALUE 0. MOVE 123 TO NUMERO-ECRAN CALL INIECR USING NUMERO-ECRAN, MOT-ETAT .EL .S2 .I0;Définition BASIC#: .S .LT E : variable% ou chiffre% - E : variable% ou chiffre% Exemple : 10 STAT% = 0% 20 CALL INIECR BY REF (123%, STAT%) .EL .S2 .I0;Définition FORTRAN#: .S .LT E : variable entière ou chiffre entier - E : variable entière ou chiffre entier Exemple : INTEGER STATUS DATA STATUS/0/ . . . NOECR = 123 CALL INIECR (NOECR, STATUS) .EL .PG .FIG5 .HL3 ^*#^&Paramètres_ buffer_ (B)\*\& Ce sont des paramètres constitués de chaînes de caractères dans le programme d'application. .S .LT Ex : buffer de saisie .EL .S2 .I0;^*Définition COBOL\* : .S .LT 01 nom du buffer Exemple : 01 BUF-SAISIE 02 NOM PIC x (15) . 02 PRENOM PIC x (15) . . . . CALL SAIECR USING NO-ECRAN, BUF-SAISIE, MODE, MOT-ETAT .EL .S2 .I0;^*Définition BASIC\* : .S .LT nom du buffer $ = n nom du buffer $ = "chaîne de caractères" .EL .S Le "statement" MAP peut être utilisé pour découper le buffer en zones. .S .LT Exemple : 10 MAP (BUF) BUF-SAISIE $ = 120 & MAP (BUF) & NOM $ = 15 & PRENOM $ = 15 & . . . 1020 CALL SAIECR BY REF (NOECR%, BUF-SAISIE$, MODE%, STAT%) .EL .S2 .I0;^*Définition FORTRAN\*\& : .S .LT LOGICAL * 1 nom du buffer (n) .EL .S Le "statement" EQUIVALENCE peut être utilisé pour découper le buffer en zones. .PG .FIG5 .LT Exemple : LOGICAL * 1 BUF (120), NOM (15), PRENOM (15) ... EQUIVALENCE (BUF (1), NOM (1) ), (BUF (16), PRENOM (1) ) . . . CALL SAIECR (123, BUF, MODE, STATUS) .EL .S .HL2 ^*#^&DEFINITION_ DU_ BUFFER_ DE_ SAISIE\*\& Le buffer de saisie est défini dans le programme d'application. Il est composé d'une suite de zones correspondant aux champs de saisie de l'écran FORM/VAX rangés par numéros d'ordre croissant. La longueur de chacune des zones et sa position dans le buffer de saisie sont fournies par le listing de compilation de l'écran FORM/VAX. Elles sont dépendantes du paramètre de la clause FORMAT dans l'écran FORM/VAX. Ce paramètre associe un écran au langage dans lequel le programme d'application est écrit (voir chapitre II, II.3.6). Le tableau 4.1. indique la nature des zones à définir en fonction de la nature du champ et du langage. .S3 .C;^*#^&Tableau_ 4.1\*\& .S2 .LT ___________________________________________________ | | | FORMAT | _______|___________________________________________________| | CODAGE| COBOL | BASIC | FORTRAN | |_______|________________|_____________|____________________| | | | | | | An | PIC x (n) | BUF $ = n | LOGICAL * 1 I(n) | | +Dn | PIC 9(n) | BUF $ = n | LOGICAL * 1 I(n) | | Dn | PIC S9(n) | BUF $ = n+1 | LOGICAL * 1 I(n+1) | | +Dn.p | PIC 9(n)V9(p) | BUF $ = n+1 | LOGICAL * 1 I(n+1) | | Dn.p | PIS S9(n)V9(p) | BUF $ = n+2 | LOGICAL * 1 I(n+2) | |_______|________________|_____________|____________________| .EL .PG .FIG5 .I0;^*Exemple en COBOL\* : .S2 .LT 01 BUF-SAISIE 02 NOM PIC x(15). 02 PRENOM PIC x(15). 02 NUMERO PIC x9(5). 02 DEBIT PIC S9(5)V99. 03 CREDIT PIC 9(5)V99. .EL .S La longueur totale de ce buffer de saisie est de 49 octets. .S3 .I0;^*Exemple en BASIC\* : .S2 .LT 10 MAP (BUF) & BUF-SAISIE$ = 52 & \ MAP (BUF) & NOM$ = 15 & , PRENOM$ = 15 & , NUMERO$ = 5 & , DEBIT$ = 9 & , CREDIT$ = 8 & .EL .S La longueur totale de ce buffer de saisie est de 52 octets. .S3 .I0;^*Exemple en FORTRAN\* : .S2 .LT LOGICAL * 1 BUF (52), NOM (15), PRENOM (15), NUMERO (5), DEBIT (9), CREDIT (8) EQUIVALENCE (BUF (1), NOM (1)), (BUF (16), PRENOM (1)), (BUF (31), NUMERO (1)), (BUF (36), DEBIT (1)), (BUF (41), CREDIT (1)) .EL La longueur totale de ce buffer de saisie est de 52 octets. .HL2 ^*#^&ROUTINES_ DE_ CONTROLE_ GLOBAL_ D'ECRANS\*\& Nécessitant le minimum de programmation dans les programmes d'application, elles permettent de résoudre la plupart des problèmes de saisie. .PG .FIG5 .HL3 ^*#^&Routine_ INIFRM\*\& .S .I0;^*#^&Description\*\& : La routine INIFRM est ^*#^&obligatoire\*\&#; elle doit être appelée en début des programmes accédant à la librairie FRMLIB. Elle permet d'identifier le type de terminal sur lequel a lieu la saisie. .S2 .I0;^*#^&Format\*\& : .S .LT nom : INIFRM paramètres : status status (- E) = status global en sortie de la routine : > 0 terminal supporté 1 = VT50 2 = VT52 3 = VT100 < 0 -1 terminal non supporté (ex : LA36) -4 nombre d'arguments illégal .EL .S .HL3 ^*#^&Routine_ INIECR\*\& .S .I0;^*#^&Description\*\& : La routine INIECR permet de spécifier le numéro de l'écran FORM/VAX auquel le programme veut accéder. Elle ^*#^&doit\*\& être appelée précédemment à toute autre routine faisant référence à un écran ou à des éléments de cet écran. .S2 .I0;^*#^&Format\*\& : .S .LT nom : INIECR paramètres : n°écran, status n°écran (E) = numéro de l'écran status (- E) = status global en entrée de la routine : = 0 effacement de l'écran du terminal non 0 pas effacement de l'écran du terminal en sortie de la routine : = 0 écran correctement initialisé < 0 erreur .EL .PG .FIG5 .LT = - 1 écran non connu du programme = - 2 numéro d'écran illégal (< 0 ou > 255) = - 4 nombre de paramètres illégal .EL .S .I0;^*#^&Remarques\*\& : .S .LS1 .LE;En retour de la routine, les attributs de saisie et de visualisation de tous les éléments de l'écran ont leur valeur initiale (celle définie dans la source de l'écran FORM/VAX). .LE;Dans le cas d'écrans définis en structure segmentée dans l'espace tâche, l'appel à la routine INIECR charge le segment correspondant de l'écran. .LE;En entrée de la routine, une valeur différente de zéro dans le status n'efface pas l'écran sur le terminal. Cette option permet d'enchaîner la saisie de plusieurs écrans différents en gardant sur le terminal l'image des saisies précédentes. Les différents écrans de saisie peuvent représenter des parties distinctes de l'écran ou être en recouvrement total sur le terminal. Les champs des écrans précédemment saisis ne sont plus modifiables (les buffers de saisie peuvent cependant être en recouvrement). .ELS .HL3 ^*#^&Routine_ SAIECR\*\& .S .I0;^*#^&Description\*\& : La routine SAIECR contrôle la saisie complète d'un écran FORM/VAX. .S2 .I0;^*#^&Format\*\& : .S .LT nom : SAIECR paramètres : n°écran, BUF, mode, status n°écran (E) = numéro de l'écran (pour contrôle) BUF (B) = buffer de saisie dans le programme mode (E) = mode de saisie 1,2 = CREATION 3,4,5 = MODIFICATION 1 affichage des libellés affichage des champs vides saisie interactive .EL .PG .FIG5 .LT 2 affichage des champs vides saisie interactive 3 affichage des libellés affichage du contenu du buffer de saisie saisie interactive 4 affichage du contenu du buffer de saisie saisie interactive 5 saisie de l'écran global sans tenir compte du réaffichage des libellés et des champs status (- E) = status global en entrée de la routine : = 0 début de saisie (premier appel) > 0 en cours de saisie (après contrôle spécifique associé à un champ), peut être initialisé et contenir le numéro du champ sur lequel le cur- seur se positionnera. en sortie de la routine : = 0 écran saisi > 0 en cours de saisie (numéro du champ sur lequel un contrôle spécifique est à exécuter) - 1 fin de saisie (touche "FIN DE SAISIE") <-1 erreur - 2 numéro d'écran illégal (écran non initialisé par INIECR ou numéro illégal) - 3 erreur sur mode de saisie (différent de 1, 2, 3, 4, 5) - 4 nombre de paramètres illégal .EL .S2 .I0;^*#^&Remarques\*\& : .S .LS1 .LE;Les modes saisie (création/modification) sont définis au chapitre II, II.3.4.5. Les modes pairs (2, 4) permettent de ne pas réafficher les libellés en cas de saisie répétitive sur le même écran. .PG .FIG5 .LE;Contrôles spécifiques liés aux attributs de saisie S et I (voir chapitre II, II.3.7). La saisie d'un champ défini avec l'attribut S ou I entraîne le retour au programme d'application avec dans le status le numéro d'ordre du champ. Le programme d'application peut alors réaliser toutes sortes de contrôle sur le champ saisi (test aux limites, existence d'enregistrement dans le fichier, cohérence avec champs précédemment saisis, protection des champs suivants en fonction d'une certaine valeur, etc...). Il peut afficher un message d'erreur (routines AFFMSL ou AFFMSG) en cas de contrôle négatif ou afficher une question qui orientera la suite de la saisie. Il peut abandonner la saisie ou la poursuivre par un retour sur l'appel de la routine SAIECR#; la saisie se poursuit sur les champs suivants ou reprend sur le champ saisi en cas d'affichage d'un message d'erreur. .LE;Le status 0 signifie que l'écran est saisi. Au minimum, les champs obligatoires sont saisis. .LE;Le status -1 est rendu lorsque l'utilisateur a frappé la touche "FIN DE SAISIE". Cette touche fonctionnelle est généralement utilisée pour indiquer l'abandon d'une saisie répétitive sur le même écran. Le programme peut, par exemple, demander la confirmation de cet abandon par l'affichage d'une question (routine AFFMSL ou AFFMSG). .ELS .HL3 ^*#^&Routine_ AFFECR\*\& .S .I0;^*#^&Description\*\& : La routine AFFECR permet l'affichage de l'écran sans entrer dans la saisie interactive. .S .I0;^*#^&Format\*\& : .S .LT nom : AFFECR paramètres : n°écran, BUF, mode, status n°écran (E) : numéro de l'écran (pour contrôle) BUF (B) : buffer de saisie dans le programme mode (E) : mode de saisie 1,2 = CREATION 3,4 = MODIFICATION .EL .PG .FIG5 .LT 1 affichage des libellés affichage des champs vides 2 affichage des champs vides 3 affichage des libellés affichage du contenu du buffer de saisie 4 affichage du contenu du buffer de saisie 5 saisie sans réaffichage des libellés et des champs status (- E) = status global en sortie de la routine : = 0 écran affiché < 0 erreur - 2 numéro d'écran illégal - 3 mode de saisie illégale (différent de 1,2,3,4,5) - 4 nombre de paramètres illégal .EL .S .I0;^*#^&Remarques\*\& : .S .LS1 .LE;La routine AFFECR est principalement utilisée en mode MODIFICATION (3,4,5) pour réaliser des fonctions de consultation. .LE;Le mode CREATION (1,2) peut être utilisé lorsque le programme veut afficher l'écran et réaliser ensuite la saisie champ par champ en utilisant les routines AFFCHA et SAICHA (même chapitre, V.6.1 et V.6.2). Cette méthode revient à atteindre la fonctionnalité de la routine SAIECR au prix d'une programmation très lourde. .ELS .HL2 ^*#^&ROUTINES_ DE_ CONTROLE_ DES_ ELEMENTS_ D'ECRANS\*\& Ces routines donnent aux programmes d'application un contrôle total sur chacun des éléments d'un écran (champs, libellés, messages). Le programme peut demander l'affichage d'un élément quelconque et modifier ses attributs de visualisation. Il peut également demander la saisie d'un champ ou modifier ses attributs de saisie. .PG .FIG5 .HL3 ^*#^&Routine_ SAICHA\*\& .S .I0;^*#^&Description\*\& : La routine SAICHA permet la saisie d'un champ unique. .S2 .I0;^*#^&Format\*\& : .S .LT nom : SAICHA paramètres : n°champ, BUF, mode, status n° champ (E) = numéro du champ de l'écran BUF (B) = buffer de saisie mode (E) = mode de saisie 1,2 = CREATION 3,4 = MODIFICATION 1,2 affichage du champ vide saisie du champ 3,4 affichage du contenu du champ et saisie status (- E) = status élémentaire en sortie de la routine : 0 champ saisi et rempli 1 validation par "CHAMP SUIVANT" (flèche en bas) 2 validation par "RETOUR CHARIOT" (RC) 3 validation par "CHAMP PRECEDENT" (flèche en haut) 4 validation par "ESCAPE" (ESC) 5 validation par "FIN D'ECRAN" (PF3) 6 validation par "DEBUT D'ECRAN" (PF2) 7 validation par "FIN DE SAISIE" (PF1) 8 raz du champ par "LINE FEED" (LF) 9 validation du champ par "TABULATION" (TAB) 11 validation par CTRLX .EL .PG .FIG5 .LT <0 erreur -3 mode de saisie illégal -4 nombre de paramètres illégal -5 numéro d'élément illégal ou inexistant .EL .S .I0;^*#^&Remarques\*\& : .S .LS1 .LE;Le paramètre BUF est le buffer de saisie et non pas la zone correspondant au champ dans le buffer de saisie. .LE;Cette routine ne gère pas les touches fonctionnelles de validation du champ#; l'information est retournée dans le status pour être prise en compte par le programme d'application. .ELS .HL3 ^*#^&Routine_ AFFCHA\*\& .S .I0;^*#^&Description\*\& : La routine AFFCHA permet l'affichage sur l'écran d'un champ unique initialisé ou vide. .S2 .I0;^*#^&Format\*\& : .S .LT nom : AFFCHA paramètres : n°champ, BUF, mode, status n° champ (E) = numéro du champ dans l'écran BUF (B) = buffer de saisie dans le programme mode (E) = mode de saisie 1,2 = CREATION 3,4 = MODIFICATION 1,2 affichage du champ vide 3,4 affichage du champ initialisé avec le contenu de la zone correspondante dans le buffer de saisie status (- E) = status élémentaire en sortie de la routine : 0 champ affiché .EL .PG .FIG5 .LT < 0 erreur - 3 mode de saisie illégal - 4 nombre de paramètres illégal - 5 numéro d'élément illégal ou inexistant .EL .S .I0;^*#^&Remarques\*\& : .S .LS1 .LE;Le paramètre BUF est le buffer de saisie et non pas la zone correspondant au champ dans le buffer de saisie. .LE;Cette routine peut être utilisée pour afficher un champ protégé dont le contenu est le résultat d'un calcul paramétré par d'autres champs précédemment saisis. .LE;Elle peut être utilisée pour réafficher un champ lorsque ses attributs de visualisation ont été modifiés. .LE;L'affichage d'un champ en mode "CREATION" (1,2) remet à blanc le champs dans le buffer de saisie. .ELS .HL3 ^*#^&Routine_ AFFLIB\*\& .S .I0;^*#^&Description\*\& : La routine AFFLIB permet l'affichage d'un libellé (libellé, date ou heure). .S .I0;^*^&Format\*\& : .S .LT nom : AFFLIB paramètres : n° libellé, status n° libellé = numéro de libellé dans l'écran status (- E) = status élémentaire en sortie de la routine : = 0 libellé affiché < 0 erreur - 4 nombre de paramètres illégal - 5 numéro d'élément illégal ou inexistant .EL .PG .FIG5 .I0;^*#^&Remarque\*\& : La routine AFFLIB peut être utilisée pour réafficher un libellé lorsque ses attributs de visualisation ont été modifiés. .HL3 ^*#^&Routine_ AFFMSL\*\& .S .I0;^*#^&Description\*\& : La routine AFFMSL permet l'affichage sur la 24ème ligne d'un message LOCAL et sa validation. Un message LOCAL peut être une ERREUR ou une QUESTION définies dans l'écran FORM/VAX (voir chapitre II, II.5.3). .S2 .I0;^*#^&Format\*\& : .S .LT nom : AFFMSL paramètres : n°message, status n°message (E) = numéro du message dans l'écran status (- E) = status élémentaire en sortie de la routine : = 0 erreur affichée et validée question affichée et validée par O = 1 question affichée et validée par N < 0 erreur - 4 nombre de paramètres illégal - 5 numéro d'élément illégal ou inexistant .EL .S .I0;^*#^&Remarques\*\& : .S .LS1 .LE;Une erreur doit être validée par la touche "DELETE". L'affichage d'une erreur entraîne la reprise de la saisie sur le champ en cours. .LE;Une question peut être validée par les caractères "O" ou "N". .LE;La validation d'un message LOCAL efface ce message. .ELS .PG .FIG5 .HL3 ^*#^&Routine_ AFFMSG\*\& .S .I0;^*#^&Description\*\& : La routine AFFMSG permet l'affichage sur la 24ème ligne de l'écran d'un message GLOBAL et sa validation. Un message GLOBAL peut être une ERREUR ou une QUESTION définies dans le fichier source MESSAG.MAR (voir chapitre VIII, VIII.2). Un message GLOBAL est généralement commun à un grand nombre d'écrans. .S2 .I0;^*#^&Format\*\& : .S .LT nom : AFFMSG paramètres : n°message, status n°message (E) = numéro du message global status (- E) = status élémentaire en sortie de la routine : = 0 erreur affichée et validée question affichée et validée par O = 1 question validée par N < 0 erreur - 4 nombre de paramètres illégal - 5 numéro d'élément illégal ou inexistant .EL .S .I0;^*#^&Remarques\*\& : Voir routine AFFMSL. .HL3 ^*#^&Routine_ CHGVIS\*\& .S .I0;^*#^&Description\*\& : La routine CHGVIS permet de modifier les attributs de visualisation d'un élément (champ, libellé ou message). .S2 .I0;^*#^&Format\*\& : .S .LT nom : CHGVIS paramètres : type, n°élément, indic, masque, status .EL .PG .FIG5 .LT type (E) = type d'élément 1 champ 2 libellé 3 erreur n°élément (E) = numéro de l'élément dans l'écran indic (E) = indicateur de changement 0 = supprimer les attributs de visualisation 1 = positionner les attributs de visualisation masque (E) = masque de bits représentant les attributs de visualisation à modifier 1 = caractère gras (G) 2 = clignotement (C) 4 = soulignement (S) 8 = inversion de contraste (I) status (- E) = status élémentaire en sortie de la routine : 0 modification prise en compte < 0 erreur - 4 nombre de paramètres illégal - 5 numéro d'élément illégal ou inexistant - 6 type d'élément illégal .EL .S .I0;^*#^&Remarque\*\& : Les éléments dont les attributs de visualisation ont été modifiés doivent être réaffichés pour matérialiser le changement. .HL3 ^*#^&Routine_ CHGSAI\*\& .S .I0;^*#^&Description\*\& : La routine CHGSAI permet de modifier les attributs de saisie d'un champ. .PG .FIG5 .I0;^*#^&Format\*\& : .S .LT nom : CHGSAI paramètres : n°champ, indic, masque, status n°champ (E) = numéro du champ dans l'écran indic (E) = indicateur de changement 0 = supprimer les attributs de saisie 1 = positionner les attributs de saisie masque (E) = masque de bits représentant les attributs de saisie à modifier 1 = protégé (P) 2 = obligatoire (O) 4 = rempli (R) 8 = tabulation (T) 16 = sous-programme (S) 32 = alphabétique (A) 64 = numérique (N) 128 = zéros non significatifs (Z) 256 = tête de chapitre (C) 512 = sous-programme inconditionnel (I) status (- E) = status élémentaire en sortie de la routine : 0 modification prise en compte < 0 erreur - 4 nombre de paramètres illégal - 5 nombre d'élément illégal ou inexistant .EL .HL2 ^*#^&ROUTINES_ ANNEXES\*\& Ces routines permettent des fonctions indépendantes de l'écran visualisé sur le terminal. .HL3 ^*#^&Routine_ SAITXT\*\& .S .I0;^*#^&Description\*\& : La routine SAITXT permet de saisir une chaîne de caractères à partir d'une position sur l'écran. .PG .FIG5 .I0;^*#^&Format\*\& : .S .LT nom : SAITXT paramètres : L, C, BUFL, status L (E) = ligne de l'écran (1 à 24) C (E) = colonne de l'écran (1 à 80) BUF (B) = buffer recevant la chaîne de caractères saisis BUFL (E) = longueur du buffer en octets status (- E) = status annexe en sortie de la routine : 0 saisie complète < 0 erreur - 4 nombre de paramètres illégal .EL .S .I0;^*#^&Remarques\*\& : .S .LS1 .LE;Les caractères sont saisis sans attribut de saisie et visualisés sans attribut de visualisation. .LE;Cette routine remplace les fonctions de lecture sur terminal dans les programmes d'application#: .ELS .S2 .LT COBOL ACCEPT BASIC FORTRAN READ, ACCEPT .EL .HL3 ^*#^&Routine_ AFFTXT\*\& .S .I0;^*#^&Description\*\& : La routine AFFTXT permet d'afficher un texte à partir d'une position de l'écran. .S2 .I0;^*#^&Format\*\& : .S .LT nom : AFFTXT paramètres : L, C, BUF, BUFL, status .EL .PG .FIG5 .LT L (E) = ligne de l'écran (1 à 24) C (E) = colonne de l'écran (1 à 80) BUF (B) = buffer à afficher BUFL (E) = longueur en octets du buffer à afficher status (- E) = status annexe en sortie de la routine : = 0 affichage complet < 0 erreur - 4 nombre de paramètres illégal .EL .S .I0;^*#^&Remarque\*\& : Le texte est affiché sans attribut de visualisation. .HL3 ^*#^&Routine_ VALERR\*\& .S .I0;^*#^&Description\*\& : La routine VALERR demande la frappe de la touche DELETE. .S2 .I0;^*#^&Format\*\& : .S .LT nom : VALERR paramètres : aucun .EL .S2 .I0;^*#^&Remarques\*\& : .S .LS1 "-" .LE;Cette touche peut être appelée suite à la routine AFFTXT pour simuler les routines AFFMSL ou AFFMSG. Elle permet donc d'afficher sur l'écran des messages définis dans le programme d'application et non dans la description de l'écran de saisie. La position de ces messages sur l'écran n'est alors pas limitée à la 24ème ligne mais précisée dans les paramètres de la routine AFFTXT. .LE;Appelée en cours de saisie, cette routine permet de reprendre la saisie sur le champ courant. .ELS .PG .FIG5 .HL3 ^*#^&Routine_ EFFECR\*\& .S .I0;^*#^&Description\*\& : La routine EFFECR efface l'écran du terminal. .S2 .I0;^*#^&Format\*\& : .S .LT nom : EFFECR paramètres : aucun .EL .S .I0;^*#^&Remarque\*\&#: L'effacement est implicité dans routine INIECR avec status égal à 0 en entrée. .HL3 ^*#^&Routine_ SONNE\*\& .S .I0;^*#^&Description\*\& : La routine SONNE permet de faire entendre la sonnerie du terminal (caractère "BELL"). .S2 .I0;^*#^&Format\*\& : .S .LT nom : SONNE paramètres : aucun .EL .HL3 ^*#^&Routine_ POSCUR\*\& .S .I0;^*#^&Description\*\& : La routine POSCUR positionne le curseur sur une position de l'écran. .S2 .I0;^*#^&Format\*\& : .S .LT nom : POSCUR paramètres : L, C L = ligne sur l'écran (1 à 24) C = colonne de l'écran (1 à 80) .EL .PG .FIG5 .HL1 ^*#^&EDITION_ DE_ LIEN_ DU_ PROGRAMME_ D'APPLICATION\*\& .HL2 ^*#^&INTRODUCTION\*\& L'édition de lien du programme se fait avec la librairie FRMLIB qui doit se trouver sous un numéro de compte différent de celui de l'utilisateur. Ce directory créé au moment de l'installation contient tous les modules nécessaires à la création, la génération et l'utilisation d'écran de saisie. A l'édition de lien l'utilisateur devra rentrer sous forme de réponse les numéros d'écran utilisés dans son programme d'application. Notons enfin que l'ensemble a une structure non segmentée. Que que soit le langage de son application, l'utilisateur exécute son édition de lien en invoquant la procédure de commande#: .S .LT $@VAXFORM_DIR:VAXFORM.COM ACTION (1, 2, 3, 4, 5) ? ! Frapper 3 pour indiquer une édition de lien. NOM DE LA LIBRAIRIE EXISTANTE ! Frapper le nom de votre librairie. FRAPPER LE NUMERO DE L'ECRAN (O CE CHAMP DOIT ETRE NUMERIQUE CHAMP OBLIGATOIRE ----------> REQUIRED FIELD .EL .S Il est impératif de ne pas modifier l'ordre des messages internes, ni de supprimer des entrées (20 messages). .HL3 ^*#^&Définition_ des_ messages_ globaux\*\& Les messages globaux définis sont numérotés à partir de 1 dans l'ordre de leur définition dans le fichier MESSAG.MAR. .HL3 ^*#^&Exemple_ de_ fichier_ MESSAGE\*\& .S .LT .PAGE ;MESSAG.MAR .TITLE MESSAG .SBTTL FICHIER DES MESSAGES .PSECT XXPURE,RO,I,LCL,REL,CON ; ; DEFINITION DES MESSAGES INTERNES ; ; ; NE PAS CHANGER L'ORDRE DES MESSAGES INTERNES ENTRE "DEBUT INTERNES" ; ET "FIN INTERNES" ET NE PAS SUPPRIMER DE MESSAGES (20 ENTREES) ; DEBUT INTERNES TMSG:: MSG ,1 MSG MSG MSG MSG MSG MSG MSG <> MSG <> MSG <> MSG <> MSG <> MSG <> MSG <> MSG <> MSG <> MSG <> MSG <> MSG <> MSG <> ;FIN INTERNES .EL .PG .FIG5 .LT ; ; ; DEFINITION DES MESSAGES GLOBAUX ; ; ; ; LES MESSAGES GLOBAUX SONT DES MESSAGES COMMUNS A DE NOMBREUX ECRANS ; ILS PEUVENT ETRE DECLARES DANS CE MODULE ET SONT AFFICHES PAR LA ; ROUTINE "AFFMSG". ; LE FORMAT EST LE SUIVANT: ; -ERREUR ; MSG ; ; -QUESTION MSG ,1 ; ; DEBUT GLOBAUX MSG ; FIN GLOBAUX .END .EL .S .I0;^*#^&Utilisation_ de_ la_ procédure_ cataloguée_ VAXFORM\*\& Cette procédure est invoquée en frappant#: .S .LT @VAXFORM_DIR:VAXFORM .EL .S .I0;^*#^&Exemple\*\& : .S .LT VOUS ETES SOUS LE CATALOGUE : DEV:[DIR...] VOUS POUVEZ : ----------- 1) AJOUTER OU CHANGER DES ECRANS A UNE LIBRAIRIE EXISTANTE 2) CREER UNE NOUVELLE LIBRAIRIE D'ECRANS 3) CONSTRUIRE UN PROGRAMME LIE A UNE LIBRAIRIE D'ECRANS 4) MODIFIER LES MESSAGES DE LA ROUTINE MESSAG.MAR 5) SORTIE ACTION (1,2,3,4,5) : .EL .PG .FIG5 En fonction de l'option, vous devez répondre aux questions par O/N, soit en donnant le nom d'un fichier. .S .I0;^*#^&Exemple\*\& : .S .I0;ACTION (1, 2, 3, 4, 5, 6)#: 5 (génération d'écran) .S .I0;FRAPPER LE NOM DU FICHIER ECRAN#: TOTO S'il n'y a pas d'erreur, vous pouvez soit sortir, soit générer un autre écran. En cas d'erreur, (nom de fichier inconnu), vous pouvez soit sortir, soit revenir à la question pour continuer. L'utilitaire VAXFORM permet de reboucler pour exécuter d'autres fonctions.