|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2008 Messages : 110 ![]() |
Bonjour,
Je souhaiterais votre opinion sur la stratégie à suivre en matière de création de *mod *pgm *srvpgm concernant un projet bien précis détaillé ci-dessous. C'est une question récurrente, il est regrettable que ces potentialités n'aient pas été appliquées autant que c'était souhaitable dans les différents environnements de developpement. Pour ma part j'ai été formé à RPGLE (Ibm center à Lagny (?)) en 2000 mais ai quitté le monde as400/Ibm i pendant 10 ans, d'ou mes lacunes Mon projet : Dans le cadre du développement d'une CDU (classif. decimale universelle) , je vais écrire des dizaines de PROCs effectuant chacune une opération simple sur cette CDU (une CDU est comme un arbre : tronc, branches, fruits) : - création d'une branche - création d'un fruit - comptage de fruits sur une branche - comptage de sous-branches - deplacement de branche - recherche de branche ../.. j'ai bien lu le sujet : http://www.developpez.net/forums/d94...el-module-rpg/ Très instructif et me conduit a penser que je dois créer un un *SRVPGM contenant toutes les PROCs qui seront utilisées indifféremment par quelques interactifs et de nombreux Batch. Ma question est : confirmez vous ce diagnostic ? et qu'en est il réellement de la gestion plus pointue des fichiers au sein d'un *SRVPGM ; sachant que certaines de mes PROC utiliseront la CDU en lecture seule mais plusieurs autres en MaJ et Creation ? Hermelin |
|
|
00
|
|
|
#2 | |
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Citation:
|
|
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2008 Messages : 110 ![]() |
ok merci Mercure. Je n'ai pas SQL sur ma V5R2 donc ce sera natif
Si je fais X modules (1 proc par module) liés dans un Prog de service. et que plusieurs modules utilisent le meme fichier (disons en Entrée) ; le fichier est-il ouvert une seule fois par le 1er module appelé qui l'utilise, puis le fichier reste ouvert. Ou bien ouvert/fermé a chaque appel d'un module ? Ou alors peut-etre est-ce mieux d'ouvrir les fichiers dans le *PGM appelant et de faire des Modules (mono procedure avec cartes H NOMAIN) liés dans le *SRVPGM ? Hermelin |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Patrick Inscription : mai 2008 Messages : 821 ![]() |
|
|
|
00
|
|
|
#5 | ||||
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Citation:
Un programme ILE se compose d'un ou de plusieurs modules. Un module est constitué de une ou plusieurs procédures. Une procédure est constituée de lignes de code qu'on appele par un CALL lié (bound CALL). Il y a deux sortes de procédures : procédure principale et sous-procédure. On appelle la sous-procédure par un CALL prototypé. Dans les applications courantes où les programmes sont écrits en un seul langage, il n'est pas utile de décomposer les programmes en plusieurs modules, à part peut-être pour des raisons
Citation:
Code :
|
||||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Patrick Inscription : mai 2008 Messages : 821 ![]() |
C'est un choix. Personnellement je ne fais pas comme ça.
J'ai une procédure (un source donc) dans lequel je mets plusieurs fonctions. La fonction Majuscule() est dans le même source que la fonction Minuscule() etc... Je voulais savoir pourquoi ce choix de ton côté ? Donc si je comprends bien si tu as une fonction LireTarifs(), une autre EcrireTarifs() une autre ModifieTarifs() tu as 3 sources, 3 cartes F avec le même fichier ? |
|
|
00
|
|
|
#7 | |
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Qu'appelles-tu "source" ? Les fonctions "Majuscule()" et "Minuscule()" se trouvent-elles dans la même procédure (ou sous-procédure) ?
Citation:
|
|
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Patrick Inscription : mai 2008 Messages : 821 ![]() |
Je parlais de fonctions.
1 source en nomain, n fonctions à l'intérieur |
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Alors, parle-t-on de la même chose mais dans un verbiage différent ?
|
|
|
00
|
|
|
#10 | |||
|
Nouveau Membre du Club
![]() Inscription : juillet 2008 Messages : 110 ![]() |
Citation:
hermelin, |
|||
|
|
00
|
|
|
#11 | ||||
|
Nouveau Membre du Club
![]() Inscription : juillet 2008 Messages : 110 ![]() |
bonjour,
J'ai choisi de creer un membre Source par fichier logique utilisé, mbr src contenant x sous procédures et pas de procédure principale (Nomain). Ca marche bien mais lors de la compil des modules (option 15), j'ai une erreur : Code :
Exemple de début de Source : Code :
|
||||
|
|
00
|
|
|
#12 | ||
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Fais tourner toute ton appli dans un groupe d'activation nommé et fais donc une procédure d'initialisation qui enregistre le nom de ta procédure d'exit [du programme] en faisant appel à l'API CEE4RAGE(). Ensuite crée cette procédure d'exit dans laquelle tu fermes les fichiers lorsque le groupe d'activation se termine.
Je te montre ci-dessous un exemple. Code :
|
||
|
|
00
|
|
|
#13 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2008 Messages : 110 ![]() |
Merci Mercure.
C'est très pointu. Je le mettrai en oeuvre d'ici quelques jours afin de ne pas cumuler trop de nouveautés, ce qui rend plus complexe mes debugs. hermelin |
|
|
00
|
|
|
#14 | |
|
Membre habitué
![]() Inscription : août 2008 Messages : 115 ![]() |
Citation:
Je ne vois pas très bien l'intérêt de cette technique pour les fichiers utilisés en spécifs F et la mémoire allouée Que je sache, à la fin du groupe d'activation les fichiers sont fermés et le default heap est supprimé, non ? Mais ce ne sont peut-être que des idées reçus... je suis preneur d'éclaircissements ! Par contre cela peut-être interessant pour les objets temporairement créés (mais Qtemp est trés bien aussi), les ouvertures de fichiers stream ("IFS"), etc |
|
|
|
00
|
|
|
#15 | |
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Citation:
Bien entendu, il n'est pas indispensable de développer cette technique pour fermer les fichiers puisque ceux-ci sont effectivement automatiquement fermés et les heaps de mémoire libérés lorsque le groupe d'activation se termine, l'OP peut laisser les fichiers ouverts après tout, mais je trouve que
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com