Вы находитесь на странице: 1из 33

INTRODUCTION A PROGRESS ELEMENTS SYNTAXIQUES

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

Le L4G PROGRESS : Langage de 4me Gnration


Langage de 4me gnration
PRORGRESS 4GL est un langage de dveloppement qui vous permet de rsoudre des diffrents problmes dapplications avec beaucoup moins deffort que les langages prcdents

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 ?

Excution dun programme procdural

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.

Le schma ci-dessus illustre lexcution typique dun programme procdural

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

Excution dun programme vnementiel

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.

Le schma ci-dessus illustre lexcution typique dun programme vnementiel

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

Elments du langage PROGRESS


Le tableau suivant liste les composants de la syntaxe du langage PROGRESS Type Description Symboles spciaux Commentaires ou rfrences spciales Variable Zone mmoire contenant des valeurs pour traitement Instructions Spcifient une action ou un traitement Champs/Enregistrement Contiennent des donnes dans la base de donnes Oprateurs Symboles qui accomplissent des oprations mathmatiques ou logique Expressions Combinaison de variables, champs de base de donnes, et oprateurs qui ensemble valuent une valeur Block Units dexcution compose dun ou plusieurs instructions Procdures Unit dexcution qui peut tre excute plusieurs fois par la commande RUN Fonctions Unit dexcution retournant une valeur qui peut tre appele plusieurs fois mme dans une expression Objets de linterface Unit daffichage sur lcran, qui accepte des donnes de utilisateur lutilisateur, de variables de lapplications ou de fichiers, de la base de donnes.

Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable

Quelques Symboles spciaux


Le tableau suivant indique la signification PROGRESS de quelques caractres spciaux Caractres /* */ Point (.) Deux points (:) Description Dbut commentaire Fin commentaire Fin dinstruction Dbut dun block Fin dtiquette Introduit un attribut (mthode) dun objet Valeur inconnue Activer / dsactiver la signification spciale du caractre suivant. Dlimite une chane de caractre Rfrence un include Paramtre dun include Exemple : {3} : 3me paramtre dun include Manipulation des lment dun tableau Appel une variable pr-processeur

? ~ ` ou {<filename>} {<entier numrique>}

[] {&<nom>}

Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable

Dfinition dune Variable Simple


Les diffrents Les types des variables possibles dans PROGRESS sont : Type Caractristiques Types simples
CHARACTER NTERGER DECIMAL DATE LOGICAL HANDLE COM-HANDLE RECID MEMPTR RAW ROWID WIDGETHANDLE Chane de caractres Nombre entier appartient [-214748364, -214748364] Dcimal Date Boolenne Pointeur vers un objet PROGRESS Pointeur vers un objet COM( ActiveX) Identificateur unique dun enregistrement Pointeur vers une adresse mmoire Peut designer tout type de donnes mme les donnes no PROGRESS Comme RECID Comme HANDLE

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

Signification des mots cls

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

Dfinition dune variable Complexe


Dfinition dune table temporaire
Comme il a tait indiqu prcdemment, PROGRESS intgre les notions des bases de donnes. Pour cela, il vous permet de crer une table temporaire. Cette structure est une structure semblable une table de base de donnes. Les donnes de cette structure peuvent tre sauvegardes dans la mmoire vive ou le disque dur. DEFINE [ [ NEW [ GLOBAL ] ] SHARED ] TEMP-TABLE temp-table-name [ NO-UNDO ] [ LIKE table-name [ VALIDATE ] [ USE-INDEX index-name [ AS PRIMARY ] ] ... ] [ FIELD field-name { AS data-type | LIKE field [ VALIDATE ] } [ field-options ] ] ... [ INDEX index-name [ IS [ UNIQUE ] [ PRIMARY ] [ WORD-INDEX ] ] { index-field [ ASCENDING | DESCENDING ] } ...

Syntaxe

] ...

Dfinition dune table de travail

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

Comparaison des diffrents types des tables


Table base de donnes Progress utilise un gestionnaire base donns en Gestionnaire base de donnes mono-utilisateur ou en multiutilisateurss. Vous pouvez dfinir des Indexes indexes Pour supprimer des enregistrement de la base de donnes, vous devez le demander explicitement par Suppression des linstruction DELETE enregistrements Caractristiques Progress Table de travail Progress nutilise pas un gestionnaire base de donnes car les Work tables se trouvent en mmoire vive. Vous ne pouvez pas dfinir des indexes Si vous ne supprimez pas les Si vous ne supprimez pas les enregistrements explicitement enregistrements explicitement de la table temporaire, Progress, de la table de travail, Progress, les limine avec mme la table les limines avec mme la temporaire une fois arrive la table de travail une fois arrive fin de la procdure ou la session la fin de la procdure ou la quelle la dfinie. session quelle la dfinie. Table Temporaire Progress utilise un gestionnaire base de donnes en mode mono-utilisateur pour accder une table temporaire. Vous pouvez dfinir des indexes

Mouvements des enregistrements

Peut dplacer les enregistrements entre record buffer et la base de donnes. Possibilit daccs multiple

Ne peut pas dplacer les enregistrement vers et de record buffer

Ne peut pas dplacer les enregistrement vers et de record buffer

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

Utilise Bt pour spcifier la taille du buffer..

Taille dpends de la taille restante en mmoire vive

Supporte les triggers Triggers

Sauvegarder dans des fichier temporaires se trouvant dans le rpertoire de travail de la session Progress Ne supporte pas les triggers

Existent dans la mmoire vive

Ne supporte pas les trigger

Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable

13

Partage des donnes inter procdures externes


Visibilit et Partage dune variable
En combinant les mots cls suivants : NEW, GLOBAL et SAHRED, vous spcifiez : La visibilit de la variable La dure de vie de la variable Le tableau ci-dessous explique la signification de chaque combinaison syntaxique possible en PROGRESS: Visibilit Programme principal dure de vie Egale celle du programme principal Mme dur de vie que le programme principal

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

Jusqu la fermeture de la session PROGRESS

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

Type de blocs PROGRESS


Bloc Procdure interne Trigger Description Traitement rutilisable dfini lintrieur dune procdure externe Groupe dinstruction qui dfinit laction accomplir suite un vnement DO Ensemble dinstructions traites comme une seule. DO .. var=first TO last : Itration conditionne par une valeur DO While (condition) Groupe dinstructions qui sexcute tant que condition est vraie REPEAT Rptition de lexcution dun groupe dinstructions FOR Boucle sur la lecture des enregistrements dune table ou de plusieurs tables

Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable

15

Les Oprateurs PROGRESS


Oprateurs Arithmtiques
Signe + Description Positif unaire Addition de type numrique ou de type date (date + entier) Ngatif unaire Soustraction de type numrique Diffrence entre deux dates Multiplication de 2 oprandes numriques Division de 2 oprandes numrique Description Positif unaire Addition de type numrique ou de type date (date + entier) Ngatif unaire Soustraction de type numrique Diffrence entre deux dates Multiplication de 2 oprandes numriques Mot oprateur EQ NE GT LT GE LE BEGINS Description Egal Diffrent Suprieur Infrieur Suprieur ou gal Infrieur ou gal Vrifie si une chane de caractre commence par une autre chane de caractre Comparer une chane de caractre avec un modle Exemple : abcdmatches a.c*

* /

Oprateurs logiques

Signe AND

OR

NOT

Oprateurs de comparaison

Signe = <> > < >= <=

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

Les fonctions Systme dexploitation


Vous pouvez faire appel une commande systme partir dune procdure PROGRESS, en utilisant une combinaison dinstructions et de fonctions, ou une commande systme spcifique .

Commandes indpendantes du systme dexploitation

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

Commande spcifique au systme dexploitation

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

Les fonctions et oprations sur chane de caractres


concatnation de chane Fonctions caractres et oprations
Fonction BEGINS MATCHES Vous pouvez utiliser loprateur (+) pour concatner deux ouplusieurs chanes de caractres Syntaxe String1 + string2 Le tableau suivant dcrit certaines fonctions et oprations sur les chnes de caractres

Syntaxe
String1 BEGINS string2 String MATCHES pattern

LENGTH INDEX

LENGTH(string) INDEX(source, target[,starting])

SUBSTRING (fonction) SUBSTRING (instruction)

SUBSTRING(string, position[,length])

SUBSTRING(target, position[,length]) = string

CAPS LC FILL

CAPS(string) LC(string) FILL(string, n )

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

ENTRY ( k , list [ , character ] )

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

Les fonctions Date


Les fonctions relatives aux dates permettent de rcuprer la date courante ou de manipuler des informations de date comme dcrit ci-aprs : Fonction Syntaxe Opration TODAY TODAY Retourne la date du jour Retourne une date partir du triplet DATE DATE(mois, jour, anne) dentier (mois, jour, anne) ou bien Ou dune chane de caractres DATE(date-string)) date-string DAY DAY(date-expression) Retourne le jour dune date. MONTH MONTH(date-expression) Retourne le mois dune date YEAR YEAR(date-expression) Retourne lanne dune date WEEKDAY WEEKDAY(date-expression) Retourne un entier de 1 7 reprsentant le jour de la semaine (1= dimanche,7= samedi) TIME TIME Retourne le nombre de secondes depuis minuit

Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable

20

Instruction IF THEN ELSE


Utilisation Syntaxe IF <condition> THEN expression1 [ELSE expression2] Plusieurs instructions PROGRESS vous permet dutiliser plusieurs instructions dan une condition IF ou lintrieur de deux expressions. Pour cela, il faut regrouper les instructions dans un bloc DO ..END. CONNECT C:\PROGRESS\WRK\sprots_pa 1 NO-ERROR. IF CONNECTED(Sports_pa) THEN DISPLAY Vous tes connect : LDBNAME(1) SKIP(1) LDBNAME(1) est une base DBTYPE(1) . ELSE DO : MESSAGE Connexion choue la base. QUIT. END. Linstruction IF THEN ELSE permet daccomplir des actions dpendantes dune condition lexcution

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

Les Frames PROGRESS


Les frames sont des surfaces rectangulaires utilises pour dessiner des variables, des champs, et autres objets de linterface utilisateur sur cran feuille, autres priphriques de sortie, ou dans un fichier PROGRESS utilise Quand vous voulez restituer quelque chose lutilisateur, toujours des frames PROGRESS utilise une frame. SI vous ne spcifiez rien, PROGRESS utilise une frame par dfaut, et il utilise des caractristiques de frame par dfaut pour dterminer les emplacements des lment que vous voulez restituer Le fait que PROGRESS utilise une frame par dfaut et quelques Frame par dfaut caractristiques par dfaut vous permet dafficher des lments sur PROGRESS lcran, sans avoir spcifier un emplacement pour chaque objet, comme il faut le faire dans dautres langages. Toutefois ces caractristiques par dfaut, peuvent tre ou non appropries vos besoins. Par dfaut PROGRESS affiche les lments dans une frame avec : Caractristiques Carde autour de la frame par dfaut dune Labels des champs/variables comme entte de colonne, frame souligns, dans le haut de la frame Valeurs des champs/variables sous leurs enttes de colonne

Frames : support daffichage

Dfinition dune frame

PROGRESS permet de dfinir les frames par plusieurs faons :

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.

Positionnement des lments

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

Notion d INDEX en PROGRESS


Dfinition
Lindex PROGRESS est une structure qui contient des donnes tries dun ou plusieurs champs. Un index sur un champ aide accder un enregistrement plus rapidement si laccs est bas sur ce champ. Pour illustrer, supposons que les numros de clients dans la table client se situent de 3 50. le diagramme suivant montre comment lindex cust-num (numro client) garde les numros de client tris, et comment il pointe sur les enregistrement actuels dans la table.

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

Types des verrous PROGRESS


Niveau de locks PROGRESS
PROGRESS utilise deux types de verrou : SHARE-LOCK pour lire un enregistrement et empcher les autres utilisateurs de le modifier pendant ce temps EXCLUSIVE-LOCK pour modifier la donne et empcher les autres utilisateurs daccder lenregistrement pendant ce temps. PROGRESS fournit galement une spcification NO-LOCK pour contourner les verrous placs par dautres utilisateurs, et par consquent permettre lutilisateur de lire un enregistrement, mme si quelquun y a plac un verrou. Cependant, un utilisateur qui lit un enregistrement avec NO-LOCK ne pourra effectuer aucune modification sans avoir au pralable verrouill lenregistrement en EXCLUSIVE LOCK.

Ce que les verrous permettent aux utilisateurs

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

Rfrence aux champs


Lorsque vous listez des noms de champs, spcifier seulement le nom du champ nest parfois pas suffisant. Si plusieurs tables dans la base de donnes contiennent le mme champ appel cust-num, PROGRESS ne sait pas auquel se rfrer. Si le nom du champ est ambigu, vous devez spcifier le nom de la table. Pour une meilleur lecture du code, vous pouvez rajouter le nom de la table au nom du champ, mme si le champ nest pas ambigu. Si vous accdez plus dune base de donnes, vous devez spcifier le nom du champ avec le nom de la table, et le nom de la base de donnes, si les bases de donnes contiennent des tables et des champs similaires. Syntaxe [[database-name.]table-name.]field-name

Ce document est la proprit exclusive de Group DISCOVERY Il ne peut tre utilis, reproduit ou communiqu sans une autorisation crite pralable

25

Recherche dun enregistrement : FIND


Utiliser FIND
Cette commande permet de lancer une recherche dun seul enregistrement dune TABLE. La recherche est base sur une clause pour dfinir les critres de la recherche. Si cette commande russie trouver un enregistrement alors elle le charge dans le buffer code La syntaxe simplifie de FIND est la suivante FIND [ FIRST | LAST | NEXT | PREV ] Record [ WHERE expression ] [ USE-INDEX index ] [ SHARE-LOCK | EXCLUSIVE-LOCK | NO-LOCK ] [ NO-WAIT ] [ NO-ERROR ] Le tableau suivant explique les mots cls de la syntaxe Mot cl Fonction USE-INDEX index WHERE expression FIRST LAST NEXT Lancer la recherche en se basant sur lindex index Prcise les critres de recherche Pointe sur le premier enregistrement valide suivant lindex utilis Pointe sur le dernier enregistrement valide suivant lindex utilis Pointe sur lenregistrement qui suit lenregistrement qui existe dans le Record Buffer. Si il nexiste pas un enregistrement dans le Record Buffer, il se comporte comme FIRST. Pointe sur lenregistrement qui prcdelenregistrement qui existe dans le Record Buffer. Si il nexiste pas un enregistrement dans le Record Buffer, il se comporte comme LAST. Ne pas attendre la libration de lenregistrement sil est verrouill Ne pas afficher de messages d'erreur lutilisateur. Passer les renseignements d'erreur lobjet ERROR-STATUS. systme manche. Les erreurs possibles incluent: Pas denregistrement satisfaisant la clause. Plus quun enregistrement valide avec une recherche FIND simple (sans first, last next ou prev).

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

Existence dun enregistrement : CAN-FIND()


Utiliser CAN-FIND
Cette fonction vrifie lexistence dun enregistrement selon des critres spcifiques. Elle recherche exactement de la mme faon que FIND, mais elle ne charge pas lenregistrement trouv dans le Record Buffer. Donc elle ne change pas les pointeur de Buffer Record. Elle retourne une boolenne TRUE ou FALSE La syntaxe simplifie de CAN-FIND est la suivante : CAN-FIND ( [ FIRST | LAST ] [ WHERE expression ] [ USE-INDEX index ] [ SHARE-LOCK | NO-LOCK ] [ NO-WAIT ] ) Notes Voir linstruction FIND pour savoir la signification des mots cls . Il vaut mieux dutiliser CAN-FIND avec NO-LOCK et FIRST ou LAST.

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

Slection des enregistrements : FOR


Utiliser FOR
Utiliser linstruction FOR EACH pour accder un ensemble denregistrement et pour : Utiliser le mme critre de slection pour tous le enregistrements Boucler sur une liste denregistrement et les traiter individuellement chaque itration du block FOR Afficher ou traiter ces enregistrements dans un seul sens, sans revenir sur le prcdent. Note : Chaque itration dun FOR met un enregistrement dans Record Buffer [ label: ] FOR { EACH | FIRST | LAST } record-phrase [ , [ EACH | FIRST | LAST ] record-phrase ] ... [ BREAK ] [ BY expression [ DESCENDING ] ] [ variable = expression1 TO expression2 [ BY k ] ] [ WHILE expression ] [ TRANSACTION ] Mot cl Label : EACH FIRST

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

Grouper les enregistrements

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

Manipulation des fichiers


Notion des STREAM
Chaque entit logique ou physique dentre/Sortie est un STREAM.. Donc chaque fichier est un STREAM. Chaque chemin dune imprimante est un STREAM. Cette notion permet attribuer chaque fichier manipuler un STREAM. Et ce pour pouvoir manipuler plusieurs fichier dans une mme procdure PROGRESS. Pour dfinir un STREAM, la syntaxe est la suivante : DEFINE [ [ NEW [ GLOBAL ] ] SHARED ] STREAM stream-name. On remarque quun stream peut tre partag.

Lecture dun fichier

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

Вам также может понравиться