Sunteți pe pagina 1din 57

JBASE & GLOBUS Support de cours

STAGE DE FORMATION TECHNIQUE


LIVRET 4 : EXERCICES

TEMENOS PARIS

25/01/2007 T24 Page 1


JBASE & GLOBUS Support de cours

AVANT PROPOS

Ce dernier livret complète les trois autres en énonçant les sujets de travaux dirigés
sur T24 proposés aux stagiaires de différents clients. Nous avons fait un découpage
en deux parties :

- une première partie donnant le sujet du TD par thème


- une deuxième partie donnant la correction du sujet.

Nous avons fournis le plus de commentaires possibles, mais cela ne remplace pas
les explications de l’animateur.

Nous avons utilisés les sujets suivants :

TCL et jQL

Programmation jBC

Les Enquiries

Les Versions

Les Routines T24

Les éditions REPGEN

25/01/2007 T24 Page 2


JBASE & GLOBUS Support de cours

PARTIE 1 : ENONCES DES EXERCICES

EXERCICE SUR UNIX LIKE

1 Utilisation de la recherche dans les cas suivants :


Tous les nom de fichiers commençant par F. dans le répertoire GLOBUS
ème
Tous les fichiers ayant C en 5 caractère
Tous les fichiers du répertoire xxx.jnl
2 Sortir le nom des utilisateurs et leurs ‘home directory’
- compter le nombre d’utilisateurs
- sortir les fichiers GLOBUS avec une date de péremption.
- Faire une liste des répertoires de GLOBUS
3 Création de scripts :
Création d’un script faisant un compte à rebour sur 5 minutes
Création d’un script qui fait une liste récursive des fichiers d’un répertoire.
Création d’un script qui fait la sauvegarde d’un répertoire.
Création d’un menu qui lance
a) la sauvegarde d’un répertoire
b) l restauration du répertoire
c) la compression du répertoire dans une zone de manœuvre
d) la décompression du répertoire
e) une liste simple des fichiers.
On veut un titre ‘MENU’ en inversion vidéo
Création d’un outil générant une bannière dans un fichier.
Script indiquant la personne qui se connecte par un message à
l’administrateur.

EXERCICES POUR TCL ET JQL

1 – Créer un pointeur synonyme de deux façons.

2 – Lancer une analyse du fichier VOC et faire un retaillage. Utiliser le programme


HISTO et les commandes jstat et jrf.

3 - Lister les fichiers de votre répertoire


Lister les fichiers ayant un nom commençant par TD
Idem mais un nom avec TD et 2 numériques
Peut-on obtenir un résultat de liste dans un fichier ascii Unix, et ceci simplement?

4 - Lire une fiche du fichier SECTOR.


Recherchez le véritable nom
Sortir uniquement les données
Sortir avec les données, le nom des champs
Pour ne pas perturber la base, on utilisera toujours un fichier de manœuvre TDxx.
Faites une copie du fichier CUSTOMER sur le fichier de manœuvre.
Faites une vérification par CT, LIST ou LIST.ITEM

25/01/2007 T24 Page 3


JBASE & GLOBUS Support de cours

5 - Visualiser le fichier OS.TOKEN et faire une sélection sur le premier champ.


Si vous analyser le dictionnaire, que constatez-vous?
Copier OS.TOKEN dans TDXX. Comptez le nombre d’éléments.
Creation du dictionnaire (dans le dict de TDxx) pour pouvoir consulter le fichier
OS.TOKEN en donnant:
– Le PROFIL
– L’état
– La compagnie
– La date de connexion
– L’heure de connexion
Renseigner l’enregistrement @
Faites une vérification (par LIST, par CT, par LDICT ou par LISTDICTS

On utilise le JED pour écrire dans le dictionnaire:

T24> JED DICT TD01 PROFILE


001 D
002 1
003
004 Profile
005 10L
006 S

On faIt Escape et FI pour enregistrer

25/01/2007 T24 Page 4


JBASE & GLOBUS Support de cours

Le code de conversion D ou MTS sont des codes ‘jBASE’

6 – Elaborer une distribution pour le fichier FBNK.ACCOUNT entre comptes internes


et externes.

7 – Créer dans TEMPO une image du fichier CUSTOMER en faisant figurer les
descripteurs suivants :
SHORT.NAME
STREET
TOWN.COUNTRY
SECTOR
Visualiser le contenu du fichier TEMPO.

8 – Faire une édition triée des fichiers définis dans la partie data d’une base T24.
Avec le même type de consultation, sortir des étiquettes pour les fichiers.

9 – Lister les clients dont le numéro est compris entre 100100 et 200200.
Lister les comptes internes.

25/01/2007 T24 Page 5


JBASE & GLOBUS Support de cours

EXERCICE DE SYNTHESE jQL

En consultant le fichier ACCOUNT, trier par Client et par devise et sortir le numéro
de compte, le nom du chargé de compte, la devise et le total du solde.
Le fichier des clients est FBNK.CUSTOMER
Le fichier des comptes est FBNK.ACCOUNT

On a dans le dictionnaire, CUSTOMER qui est le numéro du client,


CURRENCY qui est la devise et
WORKING.BALANCE qui correspond au solde.
Le fichier des chargés de compte est DEPT.ACCT.OFFICER
(Rechercher si on a F. ou FBNK. devant le nom sous jBASE)
Utiliser les critère suivants:

…… WITH CUSTOMER AND WITH WORKING.BALANCE……

La conjonction BY est associée au verbe SORT (trier).


Pour faire une rupture par CUSTOMER et par CCY, on fait un descripteur I qui fait
une concaténation CUSTOMER:CURRENCY et le tri se fait sur ce critère.
Puis on applique la rupture par la conjonction BREAK.ON descripteur

25/01/2007 T24 Page 6


JBASE & GLOBUS Support de cours

EXERCICES POUR JBC

1 – Créer un algorithme, qui effectu la lecture d’un fichier, sous ses 3 formes, ceci
pour mettre en évidence le tableau dynamique, le vecteur.

2 – Créer un algorithme qui donne, pour un fichier T24, le nom des champs qui sont
liés avec d’autres fichiers. Dans un deuxième temps, faire une bonne mise en page.

3 – Transformer un format séquentiel, un fichier T24.la clé sera inclus dans la ligne et
le séparateur sera le code ‘ ; ‘. Faire une vérification du format sous Excel.

4 – Realiser le programme JB qui permet, en mode classique, de réaliser des


commandes jBASE.

5 – Créer un algorithme qui donne la possibilité de saisir un dictionnaire. L’image de


la saisie doit être un enregistrement de type éditeur.

6 – Créer une commande LIST.USERS qui donne pour un utilisateur :


- le nom de la base
- son pid
- son numéro de port
- la commande sous jBASE
- l’application T24
- la fonction
- la clé de l’enregistrement
- un status général(actif T24,actif jBASE,actif OS,T24,OS)
7 – Réaliser une liste donnant pour chaque client le numéro de compte, la devise, le
montant de la balance et la valorisation en devise locale de cette balance ainsi que
son cumul par client. On utilisera le fichier FBNK.CUSTOMER.ACCOUNT

8 – Réaliser une fonction utilisateur qui donne le nom jBASE d’un fichier à partir de
son nom T24.

9- (Compléments) Exercices sur PQN et PA


Faire un paragraphe qui lance automatiquement T24 en mode classique.
Faire un paragraphe qui permette une visualisation complète du dictionnaire.

25/01/2007 T24 Page 7


JBASE & GLOBUS Support de cours

EXERCICES POUR ENQUIRY

1 - Etablir une consultation du fichier ACCOUNT en faisant apparaître:


– Le numéro de compte
– Le numéro du Client
Faites la différence entre le mode ‘page’ et le mode ‘grille’

Dans la suite des exercices, on donnera un nom d’enquiry avec la syntaxe


AA.TRG0X (AA sont vos initiales et X est le numéro de l’exercice)
* Rechercher les éléments du dictionnaire par un LISTDICTS .

2 - Ajouter les colonnes suivantes :


– La devise (CURRENCY)
– Le solde (WORKING.BALANCE)
Exprimer le montant avec le format de la devise
Obliger une sélection sur
Le numéro de compte
Le numéro de Client
la Devise
Faire apparaître la devise en fond jaune et les soldes négatifs en rouge

3 - Ajouter une en tête générale sur l’exercice précédant :


En titre ‘’ FORMATION T24 ’’
Puis les en-têtes de colonnes
Compte, Client, Devise et Solde
On demande un total sur le solde en supposant que celui-ci a été converti.
Il faut tous les enregistrements du fichier et se mettre en mode page.On ne veut pas
les comptes internes

4 - Toujours avec le même fichier, faire apparaître dans l’en-tête, en plus le nom du
client et celui de son charger de compte. On utilise une rupture sur le client
Dans un deuxième temps, on demande de faire un total sur la WORKING.BALANCE
(avec un calcul si la devise n’est pas locale)

Dans la troisième enquiry, on demande de faire une rupture par client et de sortir le
total des soldes.
Faire un en-tête donnant un titre, le numéro et le nom du client, la date du jour, et le
nom du département.

Sur le corps de la consultation faire apparaître, le numéro de compte, le


mnémonique, le nom en abrégé du secteur, la date d’ouverture et le total par client et
par devise du Solde.

Faites apparaître le texte Total avec la devise et son total (ex: total USD)

25/01/2007 T24 Page 8


JBASE & GLOBUS Support de cours

5 - Sur le fichier ACCOUNT sortir:


– Le numéro de compte
– Le numéro du client
– La devise
– Le total du solde par client et par devise

Faites en fin d’état une ventilation sur le total des soldes en USD et des autres
devises.

* On peut faire un en-tête circonstancié.

6 - En utilisant le fichier ACCOUNT, visualiser:

– Le numéro du Compte
– Le mnémonique du compte
– Le numéro de Client
– Le mnémonique client
– Le nom du Client

Donner la possibilité de lancer la consultation ACCT.BAL.TODAY
Donner la possibilite de voir la fiche ACCOUNT et La fiche CUSTOMER.

* Vous pouvez vous mettre en mode page et définir un en-tête.

25/01/2007 T24 Page 9


JBASE & GLOBUS Support de cours

EXERCICES POUR VERSION

1 – Créer une version qui assure la saisie du fichier CUSTOMER. Faire une mise ne
page avec un titre. Utiliser Desktop et Browser pour voir l’impacte de la saisie.
Faites apparaître les champs obligatoires en erreur.

2 – Créer une version qui effectue la saisie du fichier USER. Les valeurs par défaut
seront prévues pour faire une saisie la plus simple possible.

3 – Sur une version sur CUSTOMER, faites la saisie du Mnémonic, du sector de


l’adresse street du name-1, de la residence
Faites en sorte que Industry,Nationality,Target et customer.status viennent en
automatique (on prendra pour modèle le Customer 100229.

4 - Utiliser trois onglets pour créer votre fichier Customer


Un onglet ‘domiciliation’ avec:
Mnemonic, Short.name
Name.1, Name.2
Street, Town.country
Un onglet ‘Affaire’ avec:
Relation.code, Rel.customer
Sector, Account.officer
Industry, Target
Un onglet ‘Suivi’ avec:
Customer.status, Contract.date
Customer.liability

5 - A partir de l’enquiry sur Account-Customer faites en sorte d’activer la version


FT,MODEL en donnant des valeurs par défauts venant de l’enquiry:
Debit.acct.no est renseigné par le numéro de compte,
Ben.customer-1 par customer, ordering.cust-1 par
customer et credit.currency par currency.
La solution dans BMCE70 et FT,MODEL de la base DEMO

Exercice de Synthèse
1 - Prévoir un menu pour un nouvel utilisateur donnant accès au menu principal
standard et a un choix d’enquiry et de versions du stage.
2 - Définir les versions pour le design des enquiries et des versions dans les
abréviations de l’utilisateur.
3 - En consultant le fichier STMT.ENTRY, sortir les champs suivants:
Le numéro du compte, Le numéro du client et son mnémonique, La description
système du produit, Les montants LCY et FCY et le cumuls de ceux-ci par client et
par devise, La booking.date sous la forme JJ/MM/AAAA
On donnera à cette enquiry la possibilité de voir la fiche client, la fiche compte et la
possibilité de faire une modification du client ou du compte.
Comme il se doit, on mettra dans l’en-tête un titre, ‘fait a’ ‘le’ et le nom du Client;
Dans le cas de la saisie du client, permettre le lancement d’une enquiry BMCE avec
ventilation par LCY ou FCY

25/01/2007 T24 Page 10


JBASE & GLOBUS Support de cours

EXERCICES ROUTINES GLOBUS

1 – Pour une Enquiry donnant le nom du client, utiliser un cryptage du nom avec une
capitalisation des mots.

2- Créer une routine qui visualisera le nombre total des comptes associés au client
dans le champ TOTAL.ACCOUNTS.
Si un nouveau CUSTOMER est saisie le calcul ne pouvant se
faire on visualisera la valeur 0 pour le champTOTAL.ACCOUNTS.

3- Ecrire une routine qui restreint un utilisateur essayant d’ouvrir un enrgistrement du


fichier ‘live’ de CUSTOMER qui ne soit pas en entrée et autorisé pour lui, on
demande de visualiser le message d’erreur “Acces Restrint”.

4-Cet exercice illustre le cas ou en cours d’autorisation d’un CUSTOMER, l’utilisateur


veut mettre un commentaire spécifique à ce customer comme “Special customer “
etc, . Cette option pouvant être utilisée plus tard ou éditée avec l’enregistrement pour
Indiquer la particularité. Il faut avoir une routine qui sollicite l’utilisateur pour entrer un
texte libre et autoriser l’enregistrement. Une fois le texte entré, la donnée à besoin de
mettre à jour un champ TEXT de CUSTOMER. Si aucun texte n’est entré, le
message “Aucun texte. Utiliser un autre logiciel” sera visualisé et l’enregistrement
sera autorisés.

25/01/2007 T24 Page 11


JBASE & GLOBUS Support de cours

EXERCICES POUR REPGEN

Pour chaque exercice, il faut créer, compiler générer et sortir sur écran ou dans le
fichier &HOLD&.

1 – Créer un REPGEN simple avec deux champs : ACCOUNT.NUMBER et


CUSTOMER du fichier FBNK.ACCOUNT.

2 – Ajoutter une restriction pour les compte dont le numéro est en dessous de 20000.

3 – Réaliser un rapport avec le numéro CUSTOMER comme critère de tri (Sequence


Control) Utiliser un masque de cadrage à droite pour cette colonne.

4 – Ajoutter le nom du client dans le rapport ainsi que la description de la catégorie


depuis le fichier CATEGORY.

5 – Ajoutter une en-tête avec des titres sous lignés en jouant sur les Hdr1 et Hdr2.

6 – Inserer CURRENCY et WORKING.BALANCE. Visualiserun total sur la balance


pour chaque client et pour chaque devise. Utiliser un masque spécial @AMT2 pour
faire apparaître le montant.

7 – Faites en sorte d’avoir un client par page.

8 – Visualiser le nom du client et son numéro dans l’en-tête. Le rapport doit être trié
par client.

9 – Sortir la balance avec un total par client avec un libéllé ‘Total pour ‘ avec la
devise.Le total doit être définie deux fois, la première fois en visualisation de ligne et
une autre fois pour le total, même chose pour la devise, une fois sur la ligne et une
deuxième fois sur l’en-pied.

10 – Faire apparaître le mot ‘DEBIT’ quand la balance est négative.

11 – Utilisation de la notion de groupe. On divise le rapport par secteur. Un groupe


contiendra les données compte et client pour un code secteur inférieur ou égal à
3000 et un second groupe pour un code secteur supérieur à 3000.

25/01/2007 T24 Page 12


JBASE & GLOBUS Support de cours

PARTIE 2 : SOLUTIONS DES EXERCICES

EXERCICE SUR UNIX

1 ls –la F.*

ls –la ????C*

ls –la ../bnk.jnl

FILE
# exercice 1
if [ $# -ne 1 ]
then
echo ‘Usage :FILE directory\n’
exit 1
fi
for i in $1/*
do
if [ -f $i ]
then file $i
else
if [ -d $i ]
then echo ‘Catalog $i’
FILE $i
fi
fi
done

SAVE
# sauvegarde
for i in *
do
if [ -f $i ]
then
if [ -f ../SAVE/$i ]
then echo ‘deja souvegarde’
else echo ‘sauvegarde en cours’
cp $i ../SAVE/$i
fi
fi
done

25/01/2007 T24 Page 13


JBASE & GLOBUS Support de cours

EXERCICE SUR TCL ET JQL

1 – Pointeur synonyme

T24> ED VOC nom_synonyme


001 Q
002 nom_ compte
003 nom_fichier

SET.FILE nom_compte nom_fichier

Le synonyme s’appelle QFILE.

2 – Analyse de fichier VOC

T24> jrf –R VOC


!"# $ %&
$ ' !! (&&
T24> jrf –S277 VOC
Faites une vérification en lançant HISTO

3 – Liste de fichiers

T24> LIST . (le point ici indique le répertoire courant soit xxx.run)
T24> LIST . LIKE ‘’TD…’’
T24> LIST . MATCHES ‘’TD2N’’
T24> sh
$ > bidon
$ chmod 777 bidon
$ LIST . >bidon
$ pg bidon

4 – Lecture du fichier SECTOR

T24> LIST F.FILE.CONTROL WITH @ID EQ ‘’SECTOR’’ CLASSIFICATION


Si ce n’est pas INT le nom doit etre FBNK.SECTOR

T24> CT FBNK.SECTOR

T24> LIST FBNK.SECTOR

T24> CREATE.FILE TD01 1 1

T24> COPY FROM FBNK.CUSTOMER TO TD01 ALL

T24> COPY DICT FBNK.CUSTOMER TO DICT TD01 ALL

25/01/2007 T24 Page 14


JBASE & GLOBUS Support de cours

5- Utilisation de OS.TOKEN

T24> CLEAR.FILE DICT TD01 (effacement du dictionnaire existant)


T24> CLEAR.FILE DATA TD01 (effacement de la partie DATA)

T24> COPY FROM F.OS.TOKEN TO TD01 ALL


ou
T24> COPY FROM DICT F.OS.TOKEN TO DICT TD01 ALL

T24> LISTDICTS TD01 ou LDICT TD01

Il n’y a pas de données dans le dictionnaire;

T24 >COUNT TD01

6– Fichiers distribués.

T24> CREATE.FILE FIC.DISTRIB TYPE=DISTRIB


T24> CREATE.FILE FIC.EXT 1 101
T24> CREATE.FILE FIC.INT 1 101

Le fichier FICPROG est un fichier de programmes locaux.

T24> JED FICPROG SUB.DIST


001 SUBROUTINE SUB.DIST(RES,ID,NOPART)
002 IF ID MATCHES ‘3A0X’ THEN NOPART=1 ELSE NOPART=2
003 RETURN
Escape+FIBC

T24> CREATE-DISTRIB –p USER SUB.DICT FIC.DISTRIB


T24> CREATE-DISTRIB –a FIC.DISTRIB 1 FIC.EXT
T24> CREATE-DISTRIB –a FIC.DISTRIB 2 FIC.INT
T24> COPY FROM FBNK.ACCOUNT TO FIC.DISTRIB ALL
T24> LIST FIC.INT
T24> LIST FIC.EXT
T24> LIST FIC.INT USING DICT FBNK.ACCOUNT

Pour un gros fichier, vous avez la solution du type JPF (TYPE=JPF) pour un fichier
de plus de 2 Giga octets;
La solution du distribué est un compromis.
Mais attention T24 ne connaît que ACCOUNT.

7- Création par reformatage.

T24> CREATE.FILE TEMPO 1 1


T24> SREFORMAT FBNK.CUSTOMER SHORT.NAME STREET TOWN.COUNTRY
SECTOR<rc>
Destination file? TEMPO

25/01/2007 T24 Page 15


JBASE & GLOBUS Support de cours

T24> CT TEMPO

Automatiquement, la clé est prise et un attribut vide est créé à chaque fin
d’enregistrement.

8- Sortie sous forme d’étiquettes.

T24> SORT ONLY VOC WITH F1 LIKE ˝ F…˝AND WITH F2 LIKE ˝…bnk.data…˝
T24> SORT ONLY VOC WITH F1 LIKE ˝ F…˝AND WITH F2 LIKE ˝…bnk.data…˝
F1 F2 F3<cr>
Cols,Rows,Skip,Indent,Size,Spaces{,C}: 3,4,4,4,20,5,C
Label:ID
Label:F1
Label:F2
Label:F3

9- Manipulations Jql.

25/01/2007 T24 Page 16


JBASE & GLOBUS Support de cours

T24> LIST FBNK.CUSTOMER BETWEEN ‘100100’ ‘200200’


ou
T24> LIST FBNK.CUSTOMER GE ‘100100’ AND LE ‘200200’

T24> LIST FBNK.ACCOUNT MATCHES ‘3A0N’

EXERCICE DE SYNTHESE

Il faut créer une définition dans le dictionnaire qui va concaténer le numéro du client
et la devise.

T24> JED DICT FBNK.ACCOUNT CUSTCCY


001 I
002 CUSTOMER:”” :TRANS(FBNK.CUSTOMER,CUSTOMER,
SHORT.NAME, ”X ”) :” et pour la devise “:CURRENCY
003
004
005 40L
006 S

T24> JED VOC PHRASE1


001 PA
002 TERM 132
003 SORT FBNK.ACCOUNT BY CUSTCCY _
004 WITH CUSTOMER ne “” AND WITH WORKING.BALANCE NE “”_
005 NAME CURRENCY TOTAL WORKING.BALANCE _
006 BREAK.SUP CUSTCCY “ ‘PUB’” _
007 HEADING “’L’EXERCICE DE SYNTHESE’CLL’_
008 fait a Nouakchotte le ‘D’ page ‘PLL’_
009 pour le client ‘BCLLL’” _
010 ID.SUP

)*) + ) ,) -./ 0)-)


' / 1 2/ ( & 3 &

!%( 0-4 42/5 6 /, / 75 8 94:

/2 ) 7 )/ . ; 5+/9 4262/ )
- 8 3 <4 94: <%
- 8 3 <4 94: <=&! %( !!
- 8 3 <4 94: "(( ! (=
<<<<<<<<<<<<<<<<<<<
<( %&& =(

EXERCICE SUR JBC

25/01/2007 T24 Page 17


JBASE & GLOBUS Support de cours

1- Algorithme simple :

DIM V(400)
EQU EFE TO @(-1) ;* fonction en equivalence
CLE= ‘’
OPEN "FBNK.CUSTOMER" TO FIC ELSE ABORT
LOOP WHILE CLE NE "FIN" DO
PRINT EFE:"Introduire la cle du fichier ":
INPUT CLE
READ TD FROM FIC,CLE THEN
CRT TD ;* visualisation brutte d’un tableau dynamique
MATREAD V FROM FIC,CLE ELSE ABORT
NB=INMAT(); * on obtient le nombre de postes du Vecteur lus
FOR I=1 TO NB
CRT "V(":I:")=":V(I) ;* boucle d’édition de résultat
NEXT I
CRT "Introduire le numéro Attribut ":
INPUT ATT
READV ATTRIBUT FROM FIC,CLE,ATT ELSE ABORT
CRT ATTRIBUT
END
REPEAT

On remarque que la logique est toujours la même quelque soit le type de lecture.
L’ouverture du fichier est indispensable.

2- mise en page de l’exploitation du Standard Selection.

INCLUDE GLOBUS.BP I_COMMON


INCLUDE GLOBUS.BP I_EQUATE
EQU EFE TO @(-1)
PROMPT ‘’
*---------------------------------------------
MAIN: *
GOSUB INITIALISE
GOSUB OPEN.FILE
GOSUB PROCESS
GOSUB CLOSING
STOP
*--------------------------------------------
INITIALISE: *
FIC=FIELD(SENTENCE()," ",2)
MARG=" "
RETURN
*-------------------------------------------
OPEN.FILE: *
OPEN "F.STANDARD.SELECTION" TO FSS ELSE
PRINT "Err S.S "
STOP

25/01/2007 T24 Page 18


JBASE & GLOBUS Support de cours

END
RETURN
*---------------------------------------------
PROCESS : *
CRT EFE
CRT MARG:STR("=",64)
CRT MARG:"|":"NOM DU DESCRIPTEUR" "L#30":"|":"NOM DU FICHIER
LIE " "R#30" :"|"
CRT MARG:STR("=",64)
READ TD FROM FSS,FIC ELSE PRINT "Erreur de lecture de ":FSS ; STOP
NBV=DCOUNT(TD<14>,VM)
FOR I=1 TO NBV
IF TD<14,I> NE "" THEN
PRINT MARG::"|":TD<1,I> "L#30"::TD<14,I> "R#30":"|"
END
NEXT I
NBV=DCOUNT(TD<27>,VM)
FOR I=1 TO NBV
IF TD<27,I> NE "" THEN
PRINT MARG::"|":TD<15,I> "L#30"::"|":TD<27,I> "R#30"::"|"
END
NEXT I
CRT MARG:STR("=",64)
*-------------------------------------
CLOSING: *
CLOSE FSS
RETURN

3- Transformation en séquentiel d’un fichier de la base T24.

***************************************************
* TRANSFORMATION EN SEQUENETIEL *
***************************************************
CRT "Introduire le nom du fichier ":
INPUT NOM.FIC
OPEN NOM.FIC TO FIC ELSE STOP
OPENSEQ NOM.FIC:".TXT" TO FIC.SEQ ELSE
CREATE FIC.SEQ ELSE ABORT
END
CMD=\SELECT \:NOM.FIC:\ TO 1\
EXECUTE CMD CAPTURING LOG
READLIST LI.ITEMS FROM 1 SETTING NBE ELSE STOP
FOR I=1 TO NBE
CLE=LI.ITEMS<I>
READ TD FROM FIC,CLE ELSE CONTINUE
CHANGE FM TO \";"\ IN TD ;* modiffier 1 car par une chaine
TD=CLE:\";"\:TD:\"\ ;* positionnement de clé
WRITESEQ TD ON FIC.SEQ ELSE ABORT
NEXT I

25/01/2007 T24 Page 19


JBASE & GLOBUS Support de cours

4- Commande pour le mode classique permettant l’exécution de commandes jBASE.

*******************************************
* Utilisation de commandes *
*------------------------------------------------*
* TRAINING CENTER VESENAZ *
*******************************************
SUBROUTINE JB
EQU EFE TO @(-1)
START.LINE=0 ;* on de place en début d’écran
START.COL=0
*-------------------------------
PROMPT ">"
CRT EFE
LOOP
CMD=""
CRT @(START.LINE,START.COL):
INPUT CMD:
WHILE CMD NE "" DO
CRT EFE
EXECUTE CMD
REPEAT
RETURN

Il faut enregistrer la routine dans F.PGM.FILE en type M.

5- Image de l’écran permettant la saisie d’un dictionnaire

Descriptor (ou END) :

1 - D ou I :
2 - EXP or LOC :
3 - ICONV :
4 - LABEL :
5 - FORMAT :
6 - S or M :

F)ile input,A)nnulation,S)Next one,1-12:corrections:

Programme effectuant la saisie du dictionnaire.

25/01/2007 T24 Page 20


JBASE & GLOBUS Support de cours

* CREATION OU MODIFICATION DE DICTIONNAIRE *


*
EQU EFE TO @(-1)
EQU EFL TO @(-4)
EQU DINV TO @(-13)
EQU FINV TO @(-14)
PROMPT ""
OPEN "MD" TO VOC ELSE CRT "Error MD";STOP
READ TD FROM VOC,"IMAGE-DICT" ELSE
CRT @(3,21):"missing IMAGE-DICT in VOC ":
NPUT REP:
STOP
END
* input name
FLAG1=1
LOOP
WHILE FLAG1 DO
CRT EFE : "Introduire le nom du fichier (ou END) ":
INPUT FILENAME
IF FILENAME NE "END" THEN
FILENAME="DICT ":FILENAME
OPEN FILENAME TO DICO THEN
* viualisation des descripteurs
CRT EFE
CRT @(30,1):DINV:" ":FILENAME:" ":FINV
FOR I=1 TO 20
CRT TD<I>
NEXT I
* mode saisie
FLAG2=1
LOOP
WHILE FLAG2 DO
CRT @(46,3):EFL:;INPUT DESCRIPTOR:
FOR I=1 TO 6
CRT @(30,I+5):EFL
NEXT I
IF DESCRIPTOR NE "END" THEN
READ TD FROM DICO,DESCRIPTOR THEN
* cas modification
CRT @(4,2):DINV:" MODIFICATION ":FINV
FOR I=1 TO 6
CRT @(30,I+5):TD<I>
NEXT I
END ELSE
* cas creation
CRT @(4,2):DINV:" CREATION ":FINV
TD=""
FOR I=1 TO 6
CRT @(30,I+5):EFL:
INPUT REP:

25/01/2007 T24 Page 21


JBASE & GLOBUS Support de cours

TD<I>=REP
IF I=1 THEN CONTINUE
NEXT I
END
* fin de saisie
FLAG3=1
LOOP
WHILE FLAG3 DO
CRT @(60,19):EFL:
INPUT REP:
BEGIN CASE
CASE REP="FIN"
FLAG3=0
CASE REP = "F"
WRITE TD ON DICO,DESCRIPTOR
FLAG3=0
CASE REP = "A"
DELETE DICO,DESCRIPTOR
FLAG3=0
CASE REP EQ "S"
FLAG3=0
CASE REP >0 AND REP <7
PRINT @(30,REP+5):EFL:
INPUT MODIF:
TD<REP>=MODIF
CASE REP > 7
PRINT CHAR(9):
CASE OTHERWISE
FLAG3=0
END CASE
REPEAT
END ELSE
FLAG2=0
END
REPEAT
END ELSE
CRT @(4,23):EFL:FILENAME:" n'
est pas defini.... ":
INPUT WAIT,1:
END
END ELSE
FLAG1=0
END
REPEAT

25/01/2007 T24 Page 22


JBASE & GLOBUS Support de cours

6- Création de la commande LIST-USERS

!-------------------------------------!
! COMMANDE DE LISTE DES USERS SUR T24 !
!-------------------------------------!
! TRAINING T24 !
!-------------------------------------!
declarations: *
INCLUDE GLOBUS.BP I_F.ACTIVITY
DIM T(70,6),W(70,11)
EQU EFE TO @(-1)
*---------------------
MAIN: *
GOSUB INIT
GOSUB OPEN.FILE
GOSUB PROCESS
GOSUB CLOSING
STOP
*---------------------
INIT: *
MAT T=""
MAT W=""
TD=""
EXECUTE "WHERE" CAPTURING LOG
CRT EFE:LOG<1>
DEL LOG<1>
RETURN
*-------------------------
OPEN.FILE:*
OPEN "F.ACTIVITY" TO F.ACTIVITY ELSE STOP
EXECUTE "BSELECT F.ACTIVITY @ID USER.NO TO 1" CAPTURING FLOG
READLIST L.ACTIVITY FROM 1 SETTING NBACT THEN FACTIV=1 ELSE
FACTIV=0
RETURN
*-------------------------
PROCESS: *
NBL=DCOUNT(LOG,@FM)
* Remplissage du tableau image
FOR I=1 TO NBL
T(I,1)=LOG<I>[1,5]
T(I,2)=LOG<I>[9,10]
T(I,3)=LOG<I>[20,12]
T(I,4)=LOG<I>[33,7]
T(I,5)=LOG<I>[42,40]
NEXT I
* Recomposition du tableau image
K=0
FOR I=1 TO NBL
IF T(I,1) EQ SPACE(5) THEN

25/01/2007 T24 Page 23


JBASE & GLOBUS Support de cours

W(K,5)=T(I,5)
STAT=W(K,5)
IF STAT EQ "EX" THEN W(K,6)=" T24 classique" ELSE W(K,6)=" jBASE"
END ELSE
K++
W(K,1)=T(I,1)
W(K,2)=T(I,2)
W(K,3)=T(I,3)
W(K,4)=T(I,4)
W(K,5)=T(I,5)
IF W(K,2)[1,5] EQ "ntcon" THEN
W(K,6)=" Desktop"
END
IF W(K,2)[1,5] EQ "xterm" THEN
W(K,6)=" Browser"
W(K,5)=""
END
W(K,3)=T(I,3)
W(K,4)=T(I,4)
END
IF FACTIV EQ 1 THEN
FOR Z=1 TO NBACT STEP 2
PROFILE=L.ACTIVITY<1>
POSTE=L.ACTIVITY<2>
IF POSTE EQ W(K,1) THEN
Z=NBACT
READ TD FROM F.ACTIVITY,PROFILE ELSE CONTINUE
W(K,7)=PROFILE "L#8"
W(K,8)=TD<EB.ACT.COMPANY> "L#10"
W(K,9)=TD<EB.ACT.APPLICATION> "L#13"
W(K,10)=TD<EB.ACT.FUNCTION> "L#2"
W(K,11)=TD<EB.ACT.RECORD.ID> "L#12"
END
NEXT Z
END
NEXT I
FOR I=1 TO K
CRT W(I,1) "L#3":W(I,2)
"L#6":W(I,3),W(I,4),W(I,5),W(I,6),W(I,7):W(I,8):W(I,9):W(I,10):W(I,11)
NEXT I
RETURN
*-------------------------
CLOSING: *
CLOSE F.ACTIVITY
RETURN

25/01/2007 T24 Page 24


JBASE & GLOBUS Support de cours

7- Utilisation du fichier FBNK.CUSTOMER ;ACCOUNT

$INSERT GLOBUS.BP I_F.ACCOUNT


* INCLUDE GLOBUS.BP I_F.ACCOUNT
OPEN "FBNK.CUSTOMER.ACCOUNT" TO F.CUS.ACC ELSE
STOP 201,"FBNK.CUSTOMER.ACCOUNT"
END
OPEN "FBNK.ACCOUNT" TO F.ACC ELSE STOP 201,"FBNK.ACCOUNT"
EXECUTE \SSELECT FBNK.CUSTOMER.ACCOUNT\ RTNLIST L.CUS
LOOP
READNEXT C.CUS FROM L.CUS ELSE EXIT
READ A.CUS.ACC FROM F.CUS.ACC,C.CUS THEN
AFF.ACC=1 ; TOTAL=0
N.ACC=DCOUNT(A.CUS.ACC,@AM)
FOR K.ACC=1 TO N.ACC
C.ACC=A.CUS.ACC<K.ACC>
READ A.ACC FROM F.ACC,C.ACC ELSE A.ACC=""
WORKING.BALANCE=A.ACC<AC.WORKING.BALANCE>
IF WORKING.BALANCE THEN
IF AFF.ACC=1 THEN
CRT C.CUS "L#20":
AFF.ACC=0
END ELSE
CRT SPACE(20):
END
CRT " ":C.ACC"L#20":" ":WORKING.BALANCE"R2#15"
TOTAL+=WORKING.BALANCE
END ;* IF WORKING.BALANCE
NEXT K.ACC
IF AFF.ACC=0 THEN
CRT "Total""L#42":STR("-",15)
CRT SPACE(42):TOTAL"R2#15"
CRT
END
END ;* READ A.CUS.ACC
REPEAT
CLOSE F.CUS.ACC
CLOSE F.ACC

8- Fonction donnant le nom du fichier sous jBASE à partir du nom sous T24.

* Exo pour T24 pour illustrer


* la notion de Fonction
*
FUNCTION FILENAME(FICH)
OPEN "F.FILE.CONTROL" TO FCTRL ELSE RETURN ""
CLASS=OCONV(FICH,"TF.FILE.CONTROL;X;;6")
IF CLASS EQ "INT" THEN PREF="F." ELSE PREF="FBNK."
RESULT=PREF:FICH
RETURN (RESULT)

25/01/2007 T24 Page 25


JBASE & GLOBUS Support de cours

Programme utilisant la fonction


* PROGRAMME DE TEST T24 *
*
NOM=""
DEFFUN FILENAME(NOM)
CRT "Intro nom Globus ":
INPUT FICHIER
NOM=FILENAME(FICHIER)
CRT NOM
CRT "au revoir"

9 – Compléments

T24> JED VOC LDICT


001 PA liste de dictionnaire
002 TERM 132
003 SORT DICT <<I2,nom de fichier :>>’ _
004 BY F1 BY F2 F1 F2 F4 F5 F6 _
005 WITH @ID UNLIKE "XBUILD…“

T24> JED VOC LDICT


001 PQN liste de dictionnaire
002 HTERM 132
003 P
004 10 IF #A2 G 100
005 HSORT DICT
006 A2
007 HBY F1 BY F2 F1 F2 F4 F5 F6
008 WITH @ID UNLIKE "XBUILD…“
009 P
010100 Ointroduire le nom du fichier +
011 S1
012 IP:
013 G 10

T24> JED VOC LIST.CUST


001 PA
002 LOOP
003 CLEARPROMPTS
004 IF <<Introduire la clé (ou FIN):>> EQ « FIN » THEN GO FIN
005 LIST.ITEM FBNK.CUSTOMER ’<<Introduire la clé (ou FIN):>>’
006 REPEAT
007 FIN:

T24> JED VOC FLY


001 PA
002 EBS.TERMINAL.SELECT EBS-JBASE
003 EX

25/01/2007 T24 Page 26


JBASE & GLOBUS Support de cours

004 DATA TRAIN01


005 DATA 123456

T24> JED VOC GLOBUS


001 PQN
002 F-OPEN 1 F.SPF
003 XErreur Ouverture
004 F-READ 1 SYSTEM
005 XErreur Lecture
006 OLa version de Globus est +
007 T &1.8,I013,I010 IO pour introduire un code decimal
T &1.8 est le champ 8 du TD numéro 1

25/01/2007 T24 Page 27


JBASE & GLOBUS Support de cours

EXERCICES SUR ENQUIRY

1- Consultation du fichier ACCOUNT. (Exemple :VLTRG01)

2- Ajoutter 2 colonnes Devise(CURRENCY) et Solde(WORKING.BALANCE)

25/01/2007 T24 Page 28


JBASE & GLOBUS Support de cours

Sur le résultat obtenu on voit que le solde est totalisé ligne à ligne
0 + 12000 donne 12000.00
12000 - 2458.55 donne 9541.45

25/01/2007 T24 Page 29


JBASE & GLOBUS Support de cours

La partie en-tête se fait en mode ‘full view’.@(colonne,ligne) permet un positionnement sur


les logne 0 à 3.

4- Présence du nom de client dans le cadre de rupture :

La partie section est mise à HEADER pour avoir une compatibilité Desktop, Browser.

25/01/2007 T24 Page 30


JBASE & GLOBUS Support de cours

NOM.CLI donne le nom du client avec un code LINK


NOM.CC donne le nom du chargé de compte.

TAUX permet d’aller chercher la valeur de taux en première valeur. Les 2 oconv
permettent une expression avec deux décimal et un taux a zero vide .
Le END permet de définir une édition en fin de consultation deux ligne sous le total.
Pour que la totalisation se fasse correctement, on utilise le mécanisme des ruptures.

25/01/2007 T24 Page 31


JBASE & GLOBUS Support de cours

On fait apparaître ici le texte total par devise « Total USD» par exemple.

Le numéro de compte sousligné correspond au lancement de consultations en cliquant


sur la ligne.

25/01/2007 T24 Page 32


JBASE & GLOBUS Support de cours

ACCOUNT.NUMBER correspond au numéro de compte dans l’enquiry


ACCT.BAL.TODAY ou BMCE16.

5- Possibilités de ventillations en fin d’état.

Suivant le code CURRNCY on va cumuler dans MT1 et MT3 les montants des soldes.
Quand la currency est USD on est en devise locale, le taux est donc égal à 1( et non vide,
comme dans le fichier FBNK.CURRENCY)
Les lignes END permettent la sortie des intitulés des sommes et les sommes ventillées.

25/01/2007 T24 Page 33


JBASE & GLOBUS Support de cours

EXERCICE SUR LES VERSIONS

1- Création d’une version sur CUSTOMER.

2- Version pour la création d’un utilisateur.


On doit faire une affectation des valeurs par défaut.

25/01/2007 T24 Page 34


JBASE & GLOBUS Support de cours

On force la propriété des champs à saisie impossible (NO INPUT)

25/01/2007 T24 Page 35


JBASE & GLOBUS Support de cours

3- Utilisation avec plusieurs onglets

&Domiciation permet d’obtenir sur la version princupale le titre de l’onglet avec le premier
caractère surligné ici D. Les autres onglets sont définis dans
CUSTOMER,BMCE61 et
CUSTOMER,BMCE62.

25/01/2007 T24 Page 36


JBASE & GLOBUS Support de cours

4- A partir d’une enquiry on demande l’activation d’une version en donnant des valeurs
par défaut.

CUSTOMER,BMCE02 I CUSTOMER on fait une saisie en donnant le numéro de client .


FUNDS.TRANSFER,CBW I F3 permet une saisie de création en exportant le numéro de
compte.

25/01/2007 T24 Page 37


JBASE & GLOBUS Support de cours

EXERCICES SUR ROUTINES T24

1- Utilisation d’un cryptage du nom, on utilise la fonction ENCRYPT et O.DATA

SUBROUTINE NAME.KRYPT
$INSERT I_COMMON
$INSERT I_EQUATE
$INSERT I_ENQUIRY.COMMON
VALEUR=O.DATA
O.DATA=ENCRYPT(VALEUR,"",1)
RETURN

2- Utilisation d’une nouvelle ‘local ref’ et d’une routine dans une version.
Il faut faire la création de la référence locale en faisant une saisie des fichiers :
LOCAL.TABLE et LOCAL.REF.TABLE
Pour LOCAL.TABLE

Pour LOCAL.REF.TABLE

25/01/2007 T24 Page 38


JBASE & GLOBUS Support de cours

On voit que le 1.12 fait référence à la définition du TOTAL.ACCOUNTS.

SUBROUTINE TOTCPT
$INSERT I_COMMON
$INSERT I_EQUATE
$INSERT I_F.CUSTOMER
$INSERT I_F.CUSTOMER.ACCOUNT
EQU NB.COMPTE TO 12
MAIN: *
GOSUB INIT
GOSUB OPENFILES
GOSUB PROCESS
RETURN
INIT:
FN.CUS.ACC = ' F.CUSTOMER.ACCOUNT'
F.CUS.ACC = ' '
Y.CUS.ID = ID.NEW
R.CUS.ACC = ' '
Y.CUS.ACC.ERR = ' '
RETURN
OPENFILES:
CALL OPF(FN.CUS.ACC,F.CUS.ACC)
RETURN

25/01/2007 T24 Page 39


JBASE & GLOBUS Support de cours

PROCESS:
IF ID.OLD = "" THEN ;* If it is a new customer record
R.NEW(EB.CUS.LOCAL.REF)<1,NB.COMPTE> * = 0 ;* No calculation is require
END
ELSE
CALL F.READ(FN.CUS.ACC,Y.CUS.ID,R.CUS.ACC,F.CUS.ACC,Y.CUS.ACC.ERR)
IF Y.CUS.ACC.ERR NE "" THEN
R.NEW(EB.CUS.LOCAL.REF)<1,NB.COMPTE> = 0
END
ELSE
R.NEW(EB.CUS.LOCAL.REF)<1,NB.COMPTE> = DCOUNT(R.CUS.ACC,FM)
END
END
RETURN

Après compilation et cataloguage, on doit mentionner la routine dans F.PGM.FILE et dans


F.EB.API

La version utilisée est : CUSTOMER,TOTCPT

25/01/2007 T24 Page 40


JBASE & GLOBUS Support de cours

Créer une routine quis’exécute dès que le nom de l’enquiry est saisie et prefixer la clé par
le préfixe ‘TEM.TRG’. Ne pas appliquer cela aux enquiries débutant par ‘%’ ou se
terminant par ‘-LIST’

25/01/2007 T24 Page 41


JBASE & GLOBUS Support de cours

La routine peut s’écrire :

SUBROUTINE V.TRG.CHECK.ID.RTN
*----------------------------------------
$INSERT I_COMMON
$INSERT I_EQUATE
$INSERT I_F.ENQUIRY
*---------------------------------------
IF APPLICATION NE ' ENQUIRY'THEN RETURN
IF COMI THEN ;* analyse de la cle
IF COMI[1,1] NE ' %'AND FIELD(COMI,'-'
,2)[1,4] NE '
LIST'THEN
COMI = ' TEM.TRG.' :COMI
IF LEN(COMI) GT 30 THEN
E = "RESTRICTION DE LONGEUR DE CLE A 30 CARACTERES"
CALL ERR
MESSAGE = ' REPEAT'
V$ERROR = 1
END
END
END
RETURN
Il faut mettre a jour dans la version ENQUIRY, le champ ID.RTN avec
@V.TRG.CHECK.ID.RTN.
La saisie se fait par ENQUIRY,

3- Ecrire une routine qui restreint un utilisateur essayant d’ouvrir un enrgistrement du


fichier ‘live’ de CUSTOMER qui ne soit pas en entrée et autorisé pour lui, on demande de
visualiser le message d’erreur “Acces Restrint”.

SUBROUTINE V.TRG.CHECK.REC.RTN
*----------------------------------------------------------
$INSERT I_COMMON
$INSERT I_EQUATE
$INSERT I_F.CUSTOMER
IF NOT(R.NEW(EB.CUS.INPUTTER)) THEN RETURN
IF R.NEW(EB.CUS.RECORD.STATUS) THEN RETURN
THIS.OPERATOR.OK = 0
INPUTTERS = R.NEW(EB.CUS.INPUTTER)
NO.OF.INPUTTERS = DCOUNT(INPUTTERS,@VM)
IF NO.OF.INPUTTERS = 1 THEN
IF FIELD(INPUTTERS,' _' ,2) = OPERATOR THEN THIS.OPERATOR.OK = 1
END ELSE
LOOP
REMOVE INPUTTER FROM INPUTTERS SETTING MORE.INPUTTERS
WHILE INPUTTER : MORE.INPUTTERS DO
INPUT.OPERATOR = FIELD(INPUTTER,' _'
,2)
IF INPUT.OPERATOR EQ OPERATOR THEN
THIS.OPERATOR.OK = 1
INPUTTERS = ' '
END
REPEAT
END
IF NOT(THIS.OPERATOR.OK) THEN
AUTHORISER = R.NEW(EB.CUS.AUTHORISER)

25/01/2007 T24 Page 42


JBASE & GLOBUS Support de cours

IF FIELD(AUTHORISER,' _'
,2) NE OPERATOR THEN
E=' Acces Restrint'
CALL ERR
MESSAGE = ' REPEAT'
V$ERROR = 1
END
END
RETURN

4- L’utilisateur veut mettre un commentaire spécifique à un CUSTOMER. Cette option


pouvant être utilisée plus tard ou éditée avec l’enregistrement pour indiquer une
particularité.

SUBROUTINE V.TRG.BEFORE.AUTH.RTN
*--------------------------------------------------------
$INSERT I_COMMON
$INSERT I_EQUATE
$INSERT I_F.CUSTOMER
*--------------------------------------------------------
Y.COLUMN = 8 ;* Not of any significance in Desktop
Y.ROW = 22 ;* Not of any significance in Desktop
N1 = ' 35.1'
T1 = 'A'
INP.MSG = ' Entrer le texte du Client'
CALL INP(INP.MSG,Y.COLUMN,Y.ROW,N1,T1)
IF COMI = ''THEN
CRT "Pas de texte saisi. Utiliser un autre logiciel"
END ELSE
R.NEW(EB.CUS.TEXT)<1,-1> = COMI
END
RETURN

On fait la création d’une version CUSTOMER,BEFORE qui permet a la saisie de mettre


un commentaire pour le client. Quand le message indique q’il n’y a rien de changé, la
réponse négative entraine la sollicitation du message pour le client.
On doit référencer la routine dans PGM.FILE et EB.API
Dans BAFORE.AUTH.RTN on implante @V.TRG.BEFORE.AUTH.RTN

25/01/2007 T24 Page 43


JBASE & GLOBUS Support de cours

25/01/2007 T24 Page 44


JBASE & GLOBUS Support de cours

EXERCICES POUR REPGEN

Exercice 1 - Dessin

Exercice 1 - Sortie

25/01/2007 T24 Page 45


JBASE & GLOBUS Support de cours

Exercice 2 - Dessin

Exercice 2 – Sortie

25/01/2007 T24 Page 46


JBASE & GLOBUS Support de cours

Exercice 3 - Dessin

'

# $ %&

Exercice 3 – Sortie

! "

25/01/2007 T24 Page 47


JBASE & GLOBUS Support de cours

Exercice 4 - Dessin

# $ %&

Exercice 4 – Sortie
!
# $ %&

25/01/2007 T24 Page 48


JBASE & GLOBUS Support de cours

Exercice 5 - Dessin
( ) '

! ") '
Exercice 5 – Sortie
% * +

25/01/2007 T24 Page 49


JBASE & GLOBUS Support de cours

Exercice 6 – Dessin

'

,
- -

Exercice 6 – Sortie

"

25/01/2007 T24 Page 50


JBASE & GLOBUS Support de cours

%" . *!

/
'

Exercice 7 – Sortie

25/01/2007 T24 Page 51


JBASE & GLOBUS Support de cours

%" 1 *!

/
2 * +

Exercice 8 – Sortie
0
* +

25/01/2007 T24 Page 52


JBASE & GLOBUS Support de cours

Exercice 9 – Dessin

(
"
2 *

2 *

25/01/2007 T24 Page 53


JBASE & GLOBUS Support de cours

Exercice 9 – Sortie

Exercice 10 – Dessin

Exercice 10 – Sortie

25/01/2007 T24 Page 54


JBASE & GLOBUS Support de cours

Exercice 11 – Dessin

Exercice 11 – Sortie

3! - 4
/

'

25/01/2007 T24 Page 55


JBASE & GLOBUS Support de cours

Exercice 12 – Dessin

% $&

!
6 7
!

!
'

# 5 '

6 78
6

'

25/01/2007 T24 Page 56


JBASE & GLOBUS Support de cours

6 8
6
'

Exercice 12 – Sortie

25/01/2007 T24 Page 57

S-ar putea să vă placă și