DSPF et indicateurs

12-01-2007 à 16:01:43
Bonjour,

Dans un post du précédent forum, ainsi que sur d'autres documents, j'ai lut que les indicateurs avaient tendance à surcharger inutilement le système.

Dans ce post, il était expliqué comment gérer les touches de fonctions.

Ce qui me pose problème, c'est que, si l'on suit cette logique, comment gérer les SFLCLR et autres mot clés des DSPF sans indicateurs?

Une idée?
  • Liens sponsorisés



12-01-2007 à 13:35:48
Ca que tu as lu avait pour fonction de remplacer les tests d'indicateurs dans les programmes.

Par exemple, au lieu de
if *in04 = '1'
exsr MaRtn

tester plutôt
if Guide
exsr MaRtn

pour dire que j'appelle ma fonction GUIDE dans mon programme, la constante GUIDE étant substituée à l'indicateur *in04.

Idem pour SFLCLR. Si par ex. l'indicateur 35 est affecté au SFLCLR dans les DDS, lui donner un nom de substitution parlant tel que SFLCLR dans le programme et tester ce nom au lieu de 35 ou *in35 pas du tout parlant tu en conviendras.

Ce n'est que pour des raisons de clarté et de simplicité pour la maintenance du programme qu'on fait ça.

Il n'a jamais été question dans ce que tu as lu de modifier les indicateurs dans les DDS...

--Message édité par philippe le 12-01-07 à 13:36:25--

--Message édité par philippe le 12-01-07 à 13:37:18--
12-01-2007 à 15:07:29
Je me suis sans doute mal fait comprendre. En effet, le post en question remplace l'utilisation des indicateurs pour les touches de fonctions par la récupération de la position 369 d'une Information DS définie pour l'écran.

J'ai lus des documentation expliquant que l'emplois des indicateurs était à proscrire. Dans cette logique, j'aimerais savoir si une méthode du même style que la méthode pour les touches de fonctions (et autres touches) existent...
12-01-2007 à 16:01:43
En effet, je comprends mieux.

Voici un exemple en RPG IV utilisable avec un DSPF

D IndDsPtr S * Inz( %Addr( *IN ))

D IndDs DS Based( IndDsPtr )
D SflClear 21 21n
D SflDspCtl 22 22n
D SflEnd 23 23n
D CptError 70 70n
D CPError 71 71n
D VillError 72 72n
etc.

Dans cet exemple, l'indicateur 21 est associé à SFLCLR dans la DDS,
l'indicateur 22 à SFLDSPCTL, l'indicateur 23 à SFLEND.
Les autres indicateurs (70 à 72 dans l'exemple) sont déclarés pour gérer les erreurs de saisie.

Dans le programme, on écriera :
/free

SflClr = *On; // ou '1'
SflDspCtl = *Off; // ou '0'

if CptError;

if VillError = *On;

if Not CPError; // ou if CPError = *Off;

etc.

21-05-2014 à 14:55:07
C'est un grand honneur pour moi d'être un membre actif dans ce forum, que j'espère vivra longtemps actif. Très enrichissant et intéressant. Surtout continuez ainsi.

voyance
voyance par mail gratuite
  • Liens sponsorisés