STAGE DE FORMATION TECHNIQUE LIVRET 4 : EXERCICES TEMENOS PARIS
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 2
AVANT PROPOS
Ce dernier livret complte les trois autres en nonant les sujets de travaux dirigs sur T24 proposs aux stagiaires de diffrents clients. Nous avons fait un dcoupage en deux parties :
- une premire partie donnant le sujet du TD par thme - une deuxime partie donnant la correction du sujet.
Nous avons fournis le plus de commentaires possibles, mais cela ne remplace pas les explications de lanimateur.
Nous avons utiliss les sujets suivants :
TCL et jQL
Programmation jBC
Les Enquiries
Les Versions
Les Routines T24
Les ditions REPGEN
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 3
PARTIE 1 : ENONCES DES EXERCICES
EXERCICE SUR UNIX LIKE
1 Utilisation de la recherche dans les cas suivants : Tous les nom de fichiers commenant par F. dans le rpertoire GLOBUS Tous les fichiers ayant C en 5 me caractre Tous les fichiers du rpertoire xxx.jnl 2 Sortir le nom des utilisateurs et leurs home directory - compter le nombre dutilisateurs - sortir les fichiers GLOBUS avec une date de premption. - Faire une liste des rpertoires de GLOBUS 3 Cration de scripts : Cration dun script faisant un compte rebour sur 5 minutes Cration dun script qui fait une liste rcursive des fichiers dun rpertoire. Cration dun script qui fait la sauvegarde dun rpertoire. Cration dun menu qui lance a) la sauvegarde dun rpertoire b) l restauration du rpertoire c) la compression du rpertoire dans une zone de manuvre d) la dcompression du rpertoire e) une liste simple des fichiers. On veut un titre MENU en inversion vido Cration dun outil gnrant une bannire dans un fichier. Script indiquant la personne qui se connecte par un message ladministrateur.
EXERCICES POUR TCL ET JQL
1 Crer un pointeur synonyme de deux faons.
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 rpertoire Lister les fichiers ayant un nom commenant par TD Idem mais un nom avec TD et 2 numriques Peut-on obtenir un rsultat de liste dans un fichier ascii Unix, et ceci simplement?
4 - Lire une fiche du fichier SECTOR. Recherchez le vritable nom Sortir uniquement les donnes Sortir avec les donnes, le nom des champs Pour ne pas perturber la base, on utilisera toujours un fichier de manuvre TDxx. Faites une copie du fichier CUSTOMER sur le fichier de manuvre. Faites une vrification par CT, LIST ou LIST.ITEM
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 4
5 - Visualiser le fichier OS.TOKEN et faire une slection sur le premier champ. Si vous analyser le dictionnaire, que constatez-vous? Copier OS.TOKEN dans TDXX. Comptez le nombre dlments. Creation du dictionnaire (dans le dict de TDxx) pour pouvoir consulter le fichier OS.TOKEN en donnant: Le PROFIL Ltat La compagnie La date de connexion Lheure de connexion Renseigner lenregistrement @ Faites une vrification (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
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 5 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 Crer 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 trie des fichiers dfinis dans la partie data dune base T24. Avec le mme type de consultation, sortir des tiquettes pour les fichiers.
9 Lister les clients dont le numro est compris entre 100100 et 200200. Lister les comptes internes.
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 6
EXERCICE DE SYNTHESE jQL
En consultant le fichier ACCOUNT, trier par Client et par devise et sortir le numro 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 numro du client, CURRENCY qui est la devise et WORKING.BALANCE qui correspond au solde. Le fichier des chargs de compte est DEPT.ACCT.OFFICER (Rechercher si on a F. ou FBNK. devant le nom sous jBASE) Utiliser les critre suivants:
WITH CUSTOMER AND WITH WORKING.BALANCE
La conjonction BY est associe au verbe SORT (trier). Pour faire une rupture par CUSTOMER et par CCY, on fait un descripteur I qui fait une concatnation CUSTOMER:CURRENCY et le tri se fait sur ce critre. Puis on applique la rupture par la conjonction BREAK.ON descripteur JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 7
EXERCICES POUR JBC
1 Crer un algorithme, qui effectu la lecture dun fichier, sous ses 3 formes, ceci pour mettre en vidence le tableau dynamique, le vecteur.
2 Crer un algorithme qui donne, pour un fichier T24, le nom des champs qui sont lis avec dautres fichiers. Dans un deuxime temps, faire une bonne mise en page.
3 Transformer un format squentiel, un fichier T24.la cl sera inclus dans la ligne et le sparateur sera le code ; . Faire une vrification du format sous Excel.
4 Realiser le programme JB qui permet, en mode classique, de raliser des commandes jBASE.
5 Crer un algorithme qui donne la possibilit de saisir un dictionnaire. Limage de la saisie doit tre un enregistrement de type diteur.
6 Crer une commande LIST.USERS qui donne pour un utilisateur : - le nom de la base - son pid - son numro de port - la commande sous jBASE - lapplication T24 - la fonction - la cl de lenregistrement - un status gnral(actif T24,actif jBASE,actif OS,T24,OS) 7 Raliser une liste donnant pour chaque client le numro 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 Raliser une fonction utilisateur qui donne le nom jBASE dun fichier partir de son nom T24.
9- (Complments) Exercices sur PQN et PA Faire un paragraphe qui lance automatiquement T24 en mode classique. Faire un paragraphe qui permette une visualisation complte du dictionnaire. JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 8
EXERCICES POUR ENQUIRY
1 - Etablir une consultation du fichier ACCOUNT en faisant apparatre: Le numro de compte Le numro du Client Faites la diffrence entre le mode page et le mode grille
Dans la suite des exercices, on donnera un nom denquiry avec la syntaxe AA.TRG0X (AA sont vos initiales et X est le numro de lexercice) * Rechercher les lments 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 slection sur Le numro de compte Le numro de Client la Devise Faire apparatre la devise en fond jaune et les soldes ngatifs en rouge
3 - Ajouter une en tte gnrale sur lexercice prcdant : En titre FORMATION T24 Puis les en-ttes 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 mme fichier, faire apparatre dans len-tte, en plus le nom du client et celui de son charger de compte. On utilise une rupture sur le client Dans un deuxime temps, on demande de faire un total sur la WORKING.BALANCE (avec un calcul si la devise nest pas locale)
Dans la troisime enquiry, on demande de faire une rupture par client et de sortir le total des soldes. Faire un en-tte donnant un titre, le numro et le nom du client, la date du jour, et le nom du dpartement.
Sur le corps de la consultation faire apparatre, le numro de compte, le mnmonique, le nom en abrg du secteur, la date douverture et le total par client et par devise du Solde.
Faites apparatre le texte Total avec la devise et son total (ex: total USD) JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 9
5 - Sur le fichier ACCOUNT sortir: Le numro de compte Le numro du client La devise Le total du solde par client et par devise
Faites en fin dtat une ventilation sur le total des soldes en USD et des autres devises.
* On peut faire un en-tte circonstanci.
6 - En utilisant le fichier ACCOUNT, visualiser:
Le numro du Compte Le mnmonique du compte Le numro de Client Le mnmonique 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 dfinir un en-tte.
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 10
EXERCICES POUR VERSION
1 Crer une version qui assure la saisie du fichier CUSTOMER. Faire une mise ne page avec un titre. Utiliser Desktop et Browser pour voir limpacte de la saisie. Faites apparatre les champs obligatoires en erreur.
2 Crer une version qui effectue la saisie du fichier USER. Les valeurs par dfaut seront prvues pour faire une saisie la plus simple possible.
3 Sur une version sur CUSTOMER, faites la saisie du Mnmonic, du sector de ladresse street du name-1, de la residence Faites en sorte que Industry,Nationality,Target et customer.status viennent en automatique (on prendra pour modle le Customer 100229.
4 - Utiliser trois onglets pour crer 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 lenquiry sur Account-Customer faites en sorte dactiver la version FT,MODEL en donnant des valeurs par dfauts venant de lenquiry: Debit.acct.no est renseign par le numro 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 Synthse
1 - Prvoir un menu pour un nouvel utilisateur donnant accs au menu principal standard et a un choix denquiry et de versions du stage. 2 - Dfinir les versions pour le design des enquiries et des versions dans les abrviations de lutilisateur. 3 - En consultant le fichier STMT.ENTRY, sortir les champs suivants: Le numro du compte, Le numro du client et son mnmonique, La description systme 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 len-tte un titre, fait a le et le nom du Client; Dans le cas de la saisie du client, permettre le lancement dune enquiry BMCE avec ventilation par LCY ou FCY JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 11 EXERCICES ROUTINES GLOBUS
1 Pour une Enquiry donnant le nom du client, utiliser un cryptage du nom avec une capitalisation des mots.
2- Crer une routine qui visualisera le nombre total des comptes associs 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 douvrir un enrgistrement du fichier live de CUSTOMER qui ne soit pas en entre et autoris pour lui, on demande de visualiser le message derreur Acces Restrint.
4-Cet exercice illustre le cas ou en cours dautorisation dun CUSTOMER, lutilisateur veut mettre un commentaire spcifique ce customer comme Special customer etc, . Cette option pouvant tre utilise plus tard ou dite avec lenregistrement pour Indiquer la particularit. Il faut avoir une routine qui sollicite lutilisateur pour entrer un texte libre et autoriser lenregistrement. Une fois le texte entr, la donne besoin de mettre jour un champ TEXT de CUSTOMER. Si aucun texte nest entr, le message Aucun texte. Utiliser un autre logiciel sera visualis et lenregistrement sera autoriss.
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 12
EXERCICES POUR REPGEN
Pour chaque exercice, il faut crer, compiler gnrer et sortir sur cran ou dans le fichier &HOLD&.
1 Crer un REPGEN simple avec deux champs : ACCOUNT.NUMBER et CUSTOMER du fichier FBNK.ACCOUNT.
2 Ajoutter une restriction pour les compte dont le numro est en dessous de 20000.
3 Raliser un rapport avec le numro CUSTOMER comme critre 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 catgorie depuis le fichier CATEGORY.
5 Ajoutter une en-tte avec des titres sous ligns 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 spcial @AMT2 pour faire apparatre le montant.
7 Faites en sorte davoir un client par page.
8 Visualiser le nom du client et son numro dans len-tte. Le rapport doit tre tri par client.
9 Sortir la balance avec un total par client avec un libll Total pour avec la devise.Le total doit tre dfinie deux fois, la premire fois en visualisation de ligne et une autre fois pour le total, mme chose pour la devise, une fois sur la ligne et une deuxime fois sur len-pied.
10 Faire apparatre le mot DEBIT quand la balance est ngative.
11 Utilisation de la notion de groupe. On divise le rapport par secteur. Un groupe contiendra les donnes compte et client pour un code secteur infrieur ou gal 3000 et un second groupe pour un code secteur suprieur 3000.
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 13
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 JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 14
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 sappelle QFILE.
2 Analyse de fichier VOC
T24> jrf R VOC c:\1emenos\kefa11Mode1\bnk\bnk.un\\vOC 1ype J4, 1056 ecods af s1ze 97, kes1ze fom modu1o 155 155 155 155 fo 277 277 277 277. T24> jrf S277 VOC Faites une vrification en lanant HISTO
3 Liste de fichiers
T24> LIST . (le point ici indique le rpertoire 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 nest 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
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 15 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
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 connat que ACCOUNT.
7- Cration par reformatage.
T24> CREATE.FILE TEMPO 1 1 T24> SREFORMAT FBNK.CUSTOMER SHORT.NAME STREET TOWN.COUNTRY SECTOR<rc> Destination file? TEMPO
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 16
T24> CT TEMPO
Automatiquement, la cl est prise et un attribut vide est cr chaque fin denregistrement.
8- Sortie sous forme dtiquettes.
T24> SORT ONLY VOC WITH F1 LIKE FAND WITH F2 LIKE bnk.data T24> SORT ONLY VOC WITH F1 LIKE FAND 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. JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 17
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 crer une dfinition dans le dictionnaire qui va concatner le numro 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 LEXERCICE DE SYNTHESECLL_ 008 fait a Nouakchotte le D page PLL_ 009 pour le client BCLLL _ 010 ID.SUP
LXLkClCL DL 5YN1hL5L
fa1f a Nouakchoffe 1e 04 JAN 2007 page 71
pou 1e c11enf 100592 h58C 8ANk, LONDON, uk pou 1a dev1se G8P
EXERCICE SUR JBC JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 18
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 dun 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 ddition de rsultat NEXT I CRT "Introduire le numro Attribut ": INPUT ATT READV ATTRIBUT FROM FIC,CLE,ATT ELSE ABORT CRT ATTRIBUT END REPEAT
On remarque que la logique est toujours la mme quelque soit le type de lecture. Louverture du fichier est indispensable.
2- mise en page de lexploitation 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 JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 19 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 squentiel dun 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
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 20 4- Commande pour le mode classique permettant lexcution de commandes jBASE.
******************************************* * Utilisation de commandes * *------------------------------------------------* * TRAINING CENTER VESENAZ * ******************************************* SUBROUTINE JB EQU EFE TO @(-1) START.LINE=0 ;* on de place en dbut dcran 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 lcran permettant la saisie dun dictionnaire
Descriptor (ou END) :
1 - D ou I : 2 - EXP or LOC : 3 - ICONV : 4 - LABEL : 5 - FORMAT : 6 - S or M :
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 21 * 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: JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 22 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
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 23
6- Cration 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 JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 24 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
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 25 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)
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 26 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 Complments
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 JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 27 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 numro 1
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 28 EXERCICES SUR ENQUIRY
1- Consultation du fichier ACCOUNT. (Exemple :VLTRG01)
2- Ajoutter 2 colonnes Devise(CURRENCY) et Solde(WORKING.BALANCE)
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 29
Sur le rsultat obtenu on voit que le solde est totalis ligne ligne 0 + 12000 donne 12000.00 12000 - 2458.55 donne 9541.45 JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 30
La partie en-tte se fait en mode full view.@(colonne,ligne) permet un positionnement sur les logne 0 3.
4- Prsence du nom de client dans le cadre de rupture :
La partie section est mise HEADER pour avoir une compatibilit Desktop, Browser. JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 31 NOM.CLI donne le nom du client avec un code LINK NOM.CC donne le nom du charg de compte.
TAUX permet daller chercher la valeur de taux en premire valeur. Les 2 oconv permettent une expression avec deux dcimal et un taux a zero vide . Le END permet de dfinir une dition en fin de consultation deux ligne sous le total. Pour que la totalisation se fasse correctement, on utilise le mcanisme des ruptures.
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 32
On fait apparatre ici le texte total par devise Total USD par exemple.
Le numro de compte souslign correspond au lancement de consultations en cliquant sur la ligne.
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 33 ACCOUNT.NUMBER correspond au numro de compte dans lenquiry ACCT.BAL.TODAY ou BMCE16.
5- Possibilits de ventillations en fin dtat.
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 intituls des sommes et les sommes ventilles.
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 34 EXERCICE SUR LES VERSIONS
1- Cration dune version sur CUSTOMER.
2- Version pour la cration dun utilisateur. On doit faire une affectation des valeurs par dfaut.
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 35
On force la proprit des champs saisie impossible (NO INPUT)
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 36
3- Utilisation avec plusieurs onglets
&Domiciation permet dobtenir sur la version princupale le titre de longlet avec le premier caractre surlign ici D. Les autres onglets sont dfinis dans CUSTOMER,BMCE61 et CUSTOMER,BMCE62.
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 37
4- A partir dune enquiry on demande lactivation dune version en donnant des valeurs par dfaut.
CUSTOMER,BMCE02 I CUSTOMER on fait une saisie en donnant le numro de client . FUNDS.TRANSFER,CBW I F3 permet une saisie de cration en exportant le numro de compte.
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 38
EXERCICES SUR ROUTINES T24
1- Utilisation dun cryptage du nom, on utilise la fonction ENCRYPT et O.DATA
2- Utilisation dune nouvelle local ref et dune routine dans une version. Il faut faire la cration de la rfrence locale en faisant une saisie des fichiers : LOCAL.TABLE et LOCAL.REF.TABLE Pour LOCAL.TABLE
Pour LOCAL.REF.TABLE
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 39
On voit que le 1.12 fait rfrence la dfinition 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 JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 40 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
Aprs compilation et cataloguage, on doit mentionner la routine dans F.PGM.FILE et dans F.EB.API
La version utilise est : CUSTOMER,TOTCPT
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 41
Crer une routine quisexcute ds que le nom de lenquiry est saisie et prefixer la cl par le prfixe TEM.TRG. Ne pas appliquer cela aux enquiries dbutant par % ou se terminant par -LIST
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 42
La routine peut scrire :
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 douvrir un enrgistrement du fichier live de CUSTOMER qui ne soit pas en entre et autoris pour lui, on demande de visualiser le message derreur 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) JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 43 IF FIELD(AUTHORISER,'_',2) NE OPERATOR THEN E = 'Acces Restrint' CALL ERR MESSAGE = 'REPEAT' V$ERROR = 1 END END RETURN
4- Lutilisateur veut mettre un commentaire spcifique un CUSTOMER. Cette option pouvant tre utilise plus tard ou dite avec lenregistrement 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 cration dune version CUSTOMER,BEFORE qui permet a la saisie de mettre un commentaire pour le client. Quand le message indique qil ny a rien de chang, la rponse ngative entraine la sollicitation du message pour le client. On doit rfrencer la routine dans PGM.FILE et EB.API Dans BAFORE.AUTH.RTN on implante @V.TRG.BEFORE.AUTH.RTN
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 44
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 45 EXERCICES POUR REPGEN
Exercice 1 - Dessin
Exercice 1 - Sortie
Mumero Cusfomer Mumero Accounf Accounf AppIicofion Type ef ModuIo sonf pris pour definir Ie fichier de monuvre. JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 46
Exercice 2 - Dessin
Exercice 2 Sortie
SeIecfion du ropporf pour incIure Ies numeros de compfe qui sonf inferieur Z0000
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 47
Exercice 3 - Dessin
Exercice 3 Sortie
Dons cef exempIe Io posifion coIonne esf definie. Tri por numero de CUSTOMEP Mosque specifique pour un oIignemenf droife.
Trie por Cusfomer
Mumero de CoIonne JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 48
Exercice 4 - Dessin
Exercice 4 Sortie
Mumero de chomp de CUSTOMEP Ceffe oppIicofion demonde un Iien Donnees du CUSTOMEP JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 49
Exercice 5 - Dessin
Exercice 5 Sortie
Premire Iigne Deuxime Iigne En-ffe coIonne JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 50 Exercice 6 Dessin
Exercice 6 Sortie
VisuoIisero Ie fofoI oussi bien que Io boIonce. Produiro un fofoI quond Ie code devise chonge. Tofoux pour choque devise JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 51 Exercice 7 - Dessin
Exercice 7 Sortie
Choque devise Cusfomer opporof sur une poge seporee JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 52 Le nom du Cusfomer ef Ie numero en en-ffe. Exercice 8 - Dessin
Exercice 8 Sortie
Ces eIemenfs vonf opporofre dons I'en-ffe JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 53 Exercice 9 Dessin
Pour meffre un fexfe dons I'en-pied. Pour meffre Ie fofoI dons I'en-pied JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 54
Exercice 9 Sortie
Exercice 10 Dessin
Exercice 10 Sortie
TofoIs for eoch Currency dispIoyed in fhe foofer
JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 55 Exercice 11 Dessin
Exercice 11 Sortie
"Debif" opporof choque nouveou compfe negofif JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 56 Exercice 12 Dessin
Creofion de Io decision porfonf sur Ie chomp SECTOP.
Une fois Io seIecfion reoIisee, on peuf definir Ies groupes.
Decision 0roupe I Decision Decision groupe Z
0roupe I - 0roupemenf pour Ies cIienfs prives. Cofegorie specifique JBASE & GLOBUS Support de cours 25/01/2007 T24 Page 57