|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : février 2007 Messages : 33 ![]() |
Bonjour,
Voilà mon problème : j'affiche un sous-fichier en RPG ILE (SQL), qui fonctionne bien excepté que quand on atteint les limites de défilement (début et fin du sous fichier), le terminal (dans mon cas l'émulation écran de Client Access) se bloque et je dois appuyer sur la touche CTRL du clavier pour débloquer le terminal. Ce n'est pas le comportement que j'observe habituellement dans les écrans OS/400. Quelqu'un sait-il s'il faut mettre un indicateur particulier pour gérer les touches ROLLUP et ROLLDOWN ? Merci par avance Vincent ps : je n'ai pas le code source ici mais je le posterais si besoin quand j'aurais accès à l'AS/400. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Ajoute le mot clé ERRSFL au niveau fichier dans les DDS.
Si ça ne solutionne pas le pb, colle ici les DDS pour analyse. |
|
|
00
|
|
|
#3 | ||||
|
Invité régulier
![]() Inscription : février 2007 Messages : 33 ![]() |
Bonjour,
Merci pour ta réponse. Cela solutionne en partie le problème : en effet, quand j'arrive sur mon sous-fichier, je ne suis plus bloqué directement comme avant. En revanche, j'ai toujours un blocage quand je dépassé les limites du sous-fichier. Voici mon DDS (DSPF) : Code :
Et mon code ILE RPG (avec SQL dynamique dedans) : Code :
Merci par avance pour votre aide. Je précise que je suis débutant dans le domaine, aussi toute suggestion d'améliorations/optimisations du code est la bienvenue. Cordialement, Vincent Billard |
||||
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Tu devrais déclarer la touche 'ROLLUP' non conditionnée dans ton DSPF et la gérer dans ton programme pour éviter de reseter le clavier avec la touche 'Control' si limite défilement atteinte.
Egalement, définis un vrai sous-fichier auto-extensible avec SFLSIZ = SFLPAG + 1 (par ex. SFLSIZ(11) et SFLPAG(10)). Dans ton programme, tu ne charges alors jamais qu'une seule page à la fois et ce n'est que lorsque l'utilisateur pagine en avant (ROLLUP ou PAGEDOWN) que le programmeur charge la page suivante. La gestion de la pagination arrière est alors automatiquement assurée par le système et c'est beaucoup plus confortable et pour le user et le pour programmeur. Au sujet des indicateurs, tu devrais t'inspirer de cet extrait de programme ci-dessous pour les coder au lieu d'employer l'antique méthode avec *INKx. D'autres préféreront une autre méthode basée sur les indicateurs avec *IN, mais celle que j'expose ici est AMHA suffisante pour qqn qui débute. Code :
|
||
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : février 2007 Messages : 33 ![]() |
Merci pour tes conseils. J'essaye ce soir et je te tiens au courant.
Cordialement, Vincent |
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : février 2007 Messages : 33 ![]() |
Bonjour,
J'ai fait comme tu me l'a indiqué : ça fonctionne très bien. Seul hic : les perfomances. En effet, vu qu'on rejoue la requête à chaque fois et que dans celle ci il y a un "order by", j'ai l'impression que l'AS/400 reparcoure tous les enregistrements en base (environs 5000 lignes dans la table) et comme j'ai un serveur plutôt ancien (9406 250 avec CPU 2295 et 256 MB de ram) ce n'est pas très rapide. Ma question est donc : y a t'il des moyens d'optimiser ce fonctionnement? Merci Vincent |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Patrick Inscription : mai 2008 Messages : 816 ![]() |
Quelle version de l'OS ?
|
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : février 2007 Messages : 33 ![]() |
OS/400 V4R5
Cordialement, Vincent |
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Patrick Inscription : mai 2008 Messages : 816 ![]() |
Le problème c'est que le nouveau moteur SQE est apparu à la version V5R2.
Tu utilises donc le moteur SQL CQE (utilisé aussi par l'OPNQRYF), ne t'attends donc pas à de bonnes performances tout au contraire c'est une vraie m.... Si tu n'avais beaucoup d'enregs à charger, il te faudrait les charger tous et utiliser l'Api QLGSORT pour un tri en mémoire (idem que le F16 dans le WRKACTJOB). Avec beaucoup d'enregs à trier dans un SF sans SQE, pas vraiment de solutions si ce n'est d'expliquer à l'utilisateur qui peut aller se faire un café et de laisser faire cette m.... de CQE. |
|
|
00
|
|
|
#10 |
|
Invité régulier
![]() Inscription : février 2007 Messages : 33 ![]() |
Serais-ce plus performant sans utiliser SQL ? (passer par les I/O natives de RPG ?)
Merci pour ces explications. Vincent |
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Patrick Inscription : mai 2008 Messages : 816 ![]() |
yes pas photo !!!! si c'est CQE qui tient la barre.
|
|
|
00
|
|
|
#12 |
|
Invité régulier
![]() Inscription : février 2007 Messages : 33 ![]() |
merci pour les réponses.
je considère ma question comme résolue, je la cloture donc. cordialement, Vincent |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com