NOM : . PRENOM : .
Le L4G PROGRESS : Langage de 4me Gnration ................................................................................................. 3 Langage de 4me gnration ...................................................................................................................................... 3 Caractristique du langage ....................................................................................................................................... 5 Models de programmation .......................................................................................................................................... 6 Quels sont les models de programmation en PROGRESS ? .................................................................................... 6 Excution dun programme procdural.................................................................................................................... 6 Excution dun programme vnementiel................................................................................................................ 7 Elments du langage PROGRESS.............................................................................................................................. 8 Quelques Symboles spciaux....................................................................................................................................... 9 Dfinition dune Variable Simple ............................................................................................................................. 10 Les diffrents Types simples.................................................................................................................................. 10 Syntaxe................................................................................................................................................................... 10 Signification des mots cls..................................................................................................................................... 11 Dfinition dune variable Complexe......................................................................................................................... 12 Dfinition dune table temporaire .......................................................................................................................... 12 Syntaxe................................................................................................................................................................... 12 Dfinition dune table de travail ............................................................................................................................ 12 Syntaxe................................................................................................................................................................... 12 Comparaison des diffrents types des tables.......................................................................................................... 13 Partage des donnes inter procdures externes....................................................................................................... 14 Partage des donnes inter procdures externes....................................................................................................... 14 Visibilit et Partage dune variable ........................................................................................................................ 14 Utilisation dune variable partage par dautres procdures externe...................................................................... 14 Type de blocs PROGRESS........................................................................................................................................ 15 Les Oprateurs PROGRESS .................................................................................................................................... 16 Oprateurs Arithmtiques ...................................................................................................................................... 16 Oprateurs logiques................................................................................................................................................ 16 Oprateurs de comparaison .................................................................................................................................... 16 Priorit ................................................................................................................................................................... 17 Les fonctions Systme dexploitation ....................................................................................................................... 18 Commandes indpendantes du systme dexploitation.......................................................................................... 18 Commande spcifique au systme dexploitation .................................................................................................. 18 Exemple ................................................................................................................................................................. 18 Les fonctions et oprations sur chane de caractres .............................................................................................. 19 concatnation de chane ......................................................................................................................................... 19 Fonctions caractres et oprations ......................................................................................................................... 19 Les fonctions Date...................................................................................................................................................... 20 Instruction IF THEN ELSE.............................................................................................................................. 21 Instruction CASE....................................................................................................................................................... 21 Les Frames PROGRESS ........................................................................................................................................... 22 Frames : support daffichage.................................................................................................................................. 22 PROGRESS utilise toujours des frames................................................................................................................. 22 Frame par dfaut PROGRESS ............................................................................................................................... 22 Caractristiques par dfaut dune frame................................................................................................................. 22 Dfinition dune frame........................................................................................................................................... 22 Positionnement des lments ................................................................................................................................. 23 Notion d INDEX en PROGRESS ............................................................................................................................ 24 Dfinition ............................................................................................................................................................... 24 Types dindex......................................................................................................................................................... 24 Types des verrous PROGRESS ................................................................................................................................ 25 Niveau de locks PROGRESS................................................................................................................................. 25 Ce que les verrous permettent aux utilisateurs....................................................................................................... 25 Rfrence aux champs ............................................................................................................................................... 25 Recherche dun enregistrement : FIND................................................................................................................... 26 Utiliser FIND ......................................................................................................................................................... 26 Syntaxe................................................................................................................................................................... 26 Utiliser AVAILABLE............................................................................................................................................ 27 Utiliser ................................................................................................................................................................... 27 AMBIGUOUS ....................................................................................................................................................... 27 Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
Utiliser CURRENT ................................................................................................................................................ 27 Existence dun enregistrement : CAN-FIND() ........................................................................................................ 28 Utiliser CAN-FIND................................................................................................................................................ 28 Syntaxe................................................................................................................................................................... 28 exemple .................................................................................................................................................................. 28 Slection des enregistrements : FOR........................................................................................................................ 29 Utiliser FOR........................................................................................................................................................... 29 Syntaxe................................................................................................................................................................... 29 Trier les enregistrements : BY ............................................................................................................................... 29 Jointure de plusieurs Tables................................................................................................................................... 29 Grouper les enregistrements................................................................................................................................... 30 Manipulation des fichiers.......................................................................................................................................... 31 Notion des STREAM ............................................................................................................................................. 31 Lecture dun fichier................................................................................................................................................ 31 Ecriture dans un fichier .......................................................................................................................................... 31 Complment de ce document .................................................................................................................................... 32
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
Exemple
Linstruction FOR est une des outils PROGRESS les plus simple et les plus fort qui permet de la gestion de la lecture des enregistrements et leurs affichages dune faon beaucoup plus facile par rapport aux autres langages. FOR EACH Item: DISPLAY Item. END. Linstruction ci-dessus : 1. Lit chaque enregistrement de la table Item de la base sports fournie avec Progress . 2. Affiche tous les champs de chaque enregistrement dans une fentre par dfaut. 3. Des libells en colonnes sajoute chaque champ affich. 4. Si les champs sont remplis par les valeurs dun enregistrement, Elle donne la main lutilisateur pour passer lenregistrement suivant sil existe.
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
Caractristique du langage
Flexible : Dveloppement et test rapide Consistance : Intgration de linterface utilisateur, base de donnes et la logique de dveloppement dans un seul langage Scurit : gestion de contrle de laccs multi-users Interoprabilit : Communique avec les composants externes, distants et systme Connectivit : Accs des bases locales et distants (clients/serveur) Portabilit : Les application PROGRESS peuvent tourner sur diffrentes plate-formes. Mode de programmation Procdurale ou vnementiel Syntaxe proche de la langue anglaise
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
Models de programmation
Deux models possibles en PROGRESS : Quels sont les Modle procdural models de Modle vnementiel programmation en PROGRESS ?
l'excution dans un programme procdural est de haut vers bas et linaire ; l'interaction avec le programme est limite ; l'utilisateur peut choisir de quelques tches du quelques tches programmes lavance ; Chacun de ces tches consiste en plusieurs actions qui ont t arranges l'avance par le programmeur. La squence de ces actions est aussi dtermine par le programmeur; une fois un utilisateur slectionne une tche, Lapplication mne l'utilisateur pas pas travers les actions a exig pour complter la tche. Comme les actions sont excutes, le programme peut fournir des messages du statut l'utilisateur.
Exemple
FOR EACH customer: DISPLAY cust-num name phone WITH 6 DOWN. PROMPT-FOR phone. IF INPUT phone NE phone THEN DO: MESSAGE "Phone Number changed". BELL. END. ASSIGN phone. END.
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
Dans le modle vnementiel, virtuellement toutes actions supportes par lapplication sont disponible l'utilisateur tous moments. Le programmeur liste les triggers possibles sans imposer lordre dexcution. L'utilisateur peut ragir rciproquement avec le programme librement, en choisissant des simple tches et les combiner dans tout ordre pour accomplir un but dsir. Aussi, l'utilisateur peut changer ou annuler une action, sans interrompre la tche courante.
Exemple
DEFINE BUTTON btn_1 LABEL "Next". DEFINE BUTTON btn_2 LABEL "Prev". FIND FIRST customer. DISPLAY cust-num name phone SKIP (0.5) btn_2 TO 40 SPACE btn_1 SKIP (0.5) WITH FRAME f SIDE-LABELS. ON CHOOSE OF btn_1 DO: FIND NEXT customer NO-ERROR. IF NOT AVAILABLE customer THEN DO: FIND LAST customer. BELL. END. DISPLAY cust-num name phone WITH FRAME f. END. ON CHOOSE OF btn_2 DO: FIND PREV customer NO-ERROR. IF NOT AVAILABLE customer THEN DO: FIND FIRST customer. BELL. END. DISPLAY cust-num name phone WITH FRAME f. END. ON LEAVE OF phone DO: IF INPUT customer.phone NE customer.phone THEN DO: ASSIGN customer.phone. BELL. MESSAGE "Phone Number changed." VIEW-AS ALERT-BOX INFORMATION. END. END. ENABLE phone btn_2 btn_1 WITH FRAME f. WAIT-FOR GO OF FRAME f.
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
[] {&<nom>}
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
Syntaxe
DEFINE [ [ NEW [ GLOBAL ] ] SHARED ] VARIABLE variable { AS datatype | LIKE field } [ NO-UNDO ] [ COLUMN-LABEL label ] [ DECIMALS n ] [ EXTENT n ] [ FORMAT string ] [ INITIAL { constant | { [ constant [ , constant ] ... ] } } ] [ LABEL string [ , string ] ... ] [ [ NOT ] CASE-SENSITIVE ]
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
10
Le tableau suivant explique la signification de chaque mot cl de la syntaxe Mot cl AS datatype LIKE field Signification Variable de type datatype Variable de mme caractristiques du field , tel que field est un champ ou variable dj dfinie NO-UNDO Nannule pas les changements de la valeur de la variable DESCIMALS n Pour le type DECIMAL, la variable est de prcision n chiffres aprs la virgule. FORMAT string Prcise le format par dfaut de la variable EXTENT n Dfinir un tableau de n lments INITIAL Initialise la variable ou le tableau LABEL| Dfinir les tiquettes par dfauts de la variable lors de COLUMN-LABEL son affichage dans des frames CASE-SENSITIVE Variable sensible aux majuscule et minuscule
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
11
Syntaxe
] ...
Cette structure gre tous les donnes en utilisant seulement la mmoire vive. De plus, elle nutilise pas la notion des indexes.
Syntaxe
DEFINE [ [ NEW ] SHARED ] { WORK-TABLE | WORKFILE } work-table-name [ NO-UNDO ] [ LIKE tablename [ VALIDATE ] ] [ FIELD field-name { AS data-type | LIKE field } [ field-options ] ] ...
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
12
Peut dplacer les enregistrements entre record buffer et la base de donnes. Possibilit daccs multiple
Accs multi-users Automatiquement, Progress commence les transactions pour certains, blocs et instructions. Les tables de la base de donnes utilisent le before image file pour valider les changement. Utilise le paramtre -B Taille du Buffer Sauvegarde dans la base de donnes ( dans le disque dr) Localisation
Deux utilisateurs diffrents ne Deux utilisateurs diffrents ne peuvent pas accder une mme peuvent pas accder une table temporaire mme table de travail Vous devez commencer les transactions explicitement Les tables temporaires utilisent un fichier before-image local pour valider les changements.. Vous devez commencer les transactions explicitement. Les tables temporaires utilisent un fichier before-image local pour valider les changements..
Transactions
Sauvegarder dans des fichier temporaires se trouvant dans le rpertoire de travail de la session Progress Ne supporte pas les triggers
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
13
DEFINE {VARIABLE| TEMP-TABLE| WORK-TABLE } DEFINE NEW SHARED {VARIABLE| TEMP-TABLE| WORK-TABLE } DEFINE NEW GLOBAL SHARED {VARIABLE| TEMP-TABLE| WORK-TABLE }
Tout programme appel par le programme principal ou ses sous programmes Tout programme lanc dans la session PROGRESS aprs le lancement du programme principal
Utilisation dune Pour quune procdure Pext externe puisse accder une variable Vpar variable partage partage par une autre procdure Pprin, il faut que: La procdure Pprin soit excute avant la procdure Pext. par dautres La dclaration de Vpar au niveau de la procdure Pext a la procdures syntaxe suivante externe DEFINE SHARED VARIABLE Vpar <reste de la declaration
similaire celle indiqus dans la procdure Pprin> Si la deuxime condition nest pas remplie. La compilation se passe sans erreurs. Mais on aura une erreur PROGRESS pendant lexcution.
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
14
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
15
* /
Oprateurs logiques
Signe AND
OR
NOT
Oprateurs de comparaison
MATCHES
CONTAINS
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
16
Priorit
PROGRESS utilise lordre suivant pour valuer une expression : Fonctions Expressions entre parenthses (les plus interne en premier) Oprateurs : Unaire Multiplier, divise et modulo (*,/) Ajouter, soustraire Matches, BEGINS, oprateurs de comparaison NOT AND OR
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
17
Syntaxe OPSYS OS-COPY OS-APPEND OS-RENAME OS-DELETE OS-CREATEDIR OS-GETENV OS-DRIVES OS-ERROR
Description Vrifier le systme dexploitation sur lequel le programme sexcute Copier un fichier Fusionner deux Fichiers Renommer un fichier Supprimer un fichier Crer un rpertoire Rcuprer des informations de variables denvironnement Lister les drivers disponibles Vrifier le statut derreur aprs lexcution dune commande
Pour utiliser une commande systme, vous pouvez utiliser directement la commande systme spcifique Syntaxe OS-Statement [SILENT] os-specific-command [arguments] OS-STATEMENT peut tre BTOS CTOS DOS UNIX OS2 VMS
Exemple
OS-CREATE-DIR c:\test. DOS edit c:\test\myfile.txt. DOS SILENT copy c:\test\myfile.txt c:\test\newfile.txt.
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
18
Syntaxe
String1 BEGINS string2 String MATCHES pattern
LENGTH INDEX
SUBSTRING(string, position[,length])
CAPS LC FILL
TRIM
TRIM(string[,trim-chars])
Opration Vrifie si string1 commence par string2 Vrifie si string correspond au modle qui peut contenir des jokers : Point(.) reprsente un caractre simple Asteriks (*)- reprsente nimporte quel caractres, nul inclus Retourne le nombre de caractres ou octets dans la chane Retourne la position de la chane cible (target) dans la chane source (source), optionnellement sans partir du dbut de la source Extrait une sous-chane de longueur length partir de la position position dans la chane string Remplace le contenu dune variable ou dun champ cible target avec string, partir de la position position dans la cible target Convertit une chane string en majuscules Convertit une chane string en minuscules Retourne une chane de n string concatnes Exemple : Fill(etg,3) gale etgetgetg Supprime les caractres constituants trim-chars de lentte et la fin de string Par dfaut trim-chars gale lespace .
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
19
Fonction LEFT-TRIM
Syntaxe
LEFT-TRIM(string[,trim-chars])
RIGTH-TRIM
TRIM(string[,trim-chars])
OVERLAY
OVERLAY(target,position[,length[,type]]) = expression
NUM-ENTRIES
NUM-ENTRIES(list [ , character])
ENTRY
Opration Supprime les caractres constituants trim-chars de lentte de string Par dfaut trim-chars gale lespace . Supprime les caractres constituants trim-chars de la fin de string Par dfaut trim-chars gale lespace . Remplace le contenu de la chane target partir de la position position par la chane expression et ce sans modifier la longueur initiale de target Retourne le nombre des lments spars par un sparateur character dans une liste list Le sparateur par dfaut est la virgule Retourne si cest possible le kme lment de la liste list telque le sparteur est character. Le sparateur par dfaut est la virgule
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
20
Exemple
Instruction CASE
Utiliser CASE Syntaxe CASE <expression> : WHEN value1 [OR WHEN valuen ] THEN WHEN OTHEWISE Instruction bloc Instruction bloc Linstruction CASE permet deffectuer diffrentes actions en fonction de la valeur dune expression.
END [CASE]. Exemple Cet exemple affiche le contenu du rpertoire suivant le type du systme dexploitation : DEFINE VARIABLE os AS CHARACTER. ASSIGN os = OPSYS. CASE os: WHEN UNIX THEN UNIX ls. WHEN WIN32 OR WHEN MSDOS THEN OS-COMMAND dir. OTHERWISE DISPLAY OPSYS est un systme non support. END CASE.
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
21
DEFINE [[NEW] SHARED] FRAME frame-name [form-item] [WITH [frame-phrase]]. FORM [form-item] WITH FRAME frame-name [frame-phrase]. DEFINE [[NEW] SHARED] FRAME frame-name. FORM [form-item] WITH FRAME frame-name [frame-phrase]. Avec Form-item Field|variable [format-phrase] [NO-LABEL] [at-phrase] [SPACE(n)] [SKIP(n)] Frame-phrase [SIDE-LABEL|NO-LABEL] [STREAM-IO] [NO-UNDERLINE] [WIDTH n] [CENTRED] [NO-BOX] [TITLE string]
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
22
Chaque procdure externe utilisant une frame partage, doit contenir exactement la dclaration utilise pour sa cration.
Pour personnaliser les positions des lments dans une frame , PROGRESS donne diffrentes mthodes. Le tableau suivant liste ces mthodes: Syntaxe Description
Var AT ROW n1 COLUMN n2 Positionne ltiquette et la valeur de Var dans la n1me ligne (par rapport la bordure suprieure) de la frame et dans la n2me colonnes (en nombre de caractres , par rapport la bordure gauche ) de la frame. Var CONON n1 Positionne la valeur de Var partir de la n1me colonne (en nombre de caractres , par rapport la bordure gauche ) de la frame. Positionne ltiquette de Var jusqu la n1me colonne(en nombre de caractres , par rapport la bordure gauche ) de la frame Var AT n1 Positionne ltiquette et la valeur de Var partir de la n1me colonne (en nombre de caractres , par rapport la bordure gauche ) de la frame. Var AT n1 Positionne ltiquette et la valeur de Var Jusqu la n1me colonne (en nombre de caractres , par rapport la bordure gauche ) de la frame.
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
23
Types dindex
Un index peut tre : Unique : cest dire que chaque combinaison des valeurs des champs qui le constituent ne peut exister quune seule fois dans la table Primaire : Dans une mme table, on peut dfinir plusieurs indexes. Lindex primaire est lindex par dfaut si la requte de recherche ne prcise pas lindex utiliser.
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
24
Le tableau suivant dcrit ce qui peut tre fait lors de la spcification des diffrents types verrous, en opposition ce que les utilisateurs peuvent faire avec le mme enregistrement Niveau de lock
NO-LOCK SHARE-LOCK EXCLUSIVE-LOCK
Ce que vous pouvez faire Lecture, mais pas de modification Lecture, mais pas de modification Lecture et modification
Autres utilisateurs Lecture et modification Lecture mais pas de modification Pas de modification. Uniquement lecture denregistrement en NO-LOCK
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
25
Syntaxe
PREV
NO-WAIT NO-ERROR
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
26
Utiliser AVAILABLE
Pour savoir si il existe un enregistrement dune table Table dans le Record Buffer. PROGRESS founit la fonction AVAILABLE qui retourne une boolenne. Syntaxe AVAILABLE Table Exemple FIIND FIRST customer where country = USA NO-ERROR. IF AVAILABLE customer tTHEN DISPLAY cust-num.
Utiliser AMBIGUOUS
AMBIGUOUS est une fonction permettant de savoir si FIND aboutir un rsultat ambigu (trouve plus quun enregistrement). Elle est utiliser surtout aprs une FIND sans FIRST, LAST, NEXT ou PREV. Syntaxe AMBIGUOUS Table Exemple FIIND customer where country = USA NO-ERROR. IF AMBIGUOUS customer tTHEN DISPLAY cust-num.
Utiliser CURRENT
Pour utiliser un enregistrement dj charg dans le Record Buffer, vous pouvez le retrouver en utilisant un FIND CURRENT . FIND CURRENT permet aussi de changer le mode daccs un enregistrement dans leRecord Buffer. Syntaxe FIND CURRENT record [ SHARE-LOCK | EXCLUSIVE-LOCK | NO-LOCK ] [ NO-WAIT ] [ NO-ERROR ]
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
27
Syntaxe
exemple
REPEAT: CREATE customer. UPDATE cust-num name sales-rep VALIDATE(CAN-FIND(sales-rep WHERE salesrep.sales-rep customer.sales-rep), "Invalid sales rep -- please re-enter"). END.
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
28
Syntaxe
Description Etiquette attribue au block FOR Pour slectionner tout enregistrement valide Pour slectionner juste le premier enregistrement valide LAST Pour slectionner juste le dernier enregistrement valide Avec loption BY de linstruction FOR EACH vous demandez Trier les enregistrements : PROGRESS de trier les enregistrements par un ou plusieurs champs, avant de les afficher ou de les manipuler. PROGRESS trie les valeurs des BY expressions en utilisant lordre croissant par dfaut . avec loption DESCENDING de BY vous spcifiez le tri en sen inverse. Exemple FOR EACH item BY price DESCENDING: DISPLAY item EXCEPT cat-page cat-description. END. Jusqu prsent, nous avons accder une seule table. La plupart du Jointure de plusieurs Tables temps, les donnes dont on aura besoin rsideront dan plus dune table.
Pour extraire des donnes de plus dune table, on a besoin deffectuer ce quon appelle une jointure, ceci se fait par la combinaison des tables via un champ commun entre celles-ci.
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
29
Exemple FOR EACH invoice NO-LOCK , FIRST customer where customer.cust-num = invoice.cust-num NO-LOCK: DISPLAY invoice-num amount. END . . Pour grouper les enregistrements slectionns dune jointure de une ou plusieurs tables, PROGRESS fournie le mot cl BREAK. BREAK permet aussi de grouper les enregistrements en sous groupes. BREAK BY expr1 BY expr2 Suite ce groupement, PROGRESS offre des fonctions utiliser lintrieure du block FOR. Ces fonctions aident dtecter le dbut et la fin de chaque groupe et sous-groupe : Les fonctions sont : First(expr1) : teste si lenregistrement en cours de traitement est le premier enregistrement dans la slection totale. First-of(expr1) : teste si lenregistrement en cours de traitement est le premier enregistrement dun group expr1. Last-of(expr1) : teste si lenregistrement en cours de traitement est le dernier enregistrement dun group expr1. Last(expr1) : teste si lenregistrement en cours de traitement est le dernier enregistrement dans la slection totale.
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
30
Pour lire dun fichier 3 tapes sont faire : 1. Ouverture du fichier pour lecture : INPUT [STREAM name-stream] FROM VALUE(exp-nom-fichier). 2. lecture ligne par ligne La lecture dun fichier se fait ligne par ligne, en utilisant linstruction IMPORT. IMPORT [ STREAM stream-name ] { [ DELIMITER character ] record [ EXCEPT field ... ] | UNFORMATTED field } [ NO-ERROR ]. 3. Fermer le fichier INPUT [STREAM name-stream] CLOSE.
Note Dans WINDOWS, une ligne ne peut tre lu que si elle se termine par un retour chariot. Ecriture dans un Pour crire dans un fichier 3 tapes sont faire : 1. Ouvrir le fichier pour criture fichier OUTPUT [ STREAM stream ] TO VALUE ( expression ). 2. Ecrire les informations Pour crire dans un fichier nous pouvons utiliser trois instructions: EXPORT EXPORT [ STREAM stream ] [ DELIMITER character ] { expression | record [ EXCEPT field ... ] } PUT PUT [ STREAM stream ] [ UNFORMATTED ] [ { expression [ FORMAT string ] [ { AT | TO } expression ] }
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
31
| SKIP [ ( expression ) ] | SPACE [ ( expression ) ] ]. Mot cl UNFORMATTED FORMAT string AT | TO SKIP [(expression)] SPACE [(expression)] Description Indique que lcriture doit se faire sans tenir compte du format des informations Imposer un format mme si on a utiliser UNFOMATTED Sert positionner linformation partir ou jusqu une colonne bien spcifique Permet de faire de saut des lignes Permet dinjecter des espaces entre les informations
DISPLAY Utile pour crire les informations selon un format dfinie dans un frame. 3. Fermer le fichier OUTPUT [STREAM stream] CLOSE.
Complment de ce document
Pour complter, nous vous conseillons de voir dans le HELP fournie par PROGRESS la fonction et la syntaxe des mots cls suivants : SEARCH: Recherche dans le PROPATH CREATE: Cration dun enregistrement dans une table DELETE: suppression dun enregistrement dune table RELEASE: effacer un enregistrement du Record Buffer. PROCEDURE: Dfinition dune procdure interne FUNCTION: Dfinition dune fonction UPDATE, PROMPT-FOR et SET : Mise jour par saisie utilisateur ASSIGN : Affectation multiple. WHEN: conditionner une saisie, affichage ou affectation ACCUMUILATE et ACCUM: Calculer la somme, la moyenne et le nombre des expressions lintrieur dun block FOR.
Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable
32