Pour se repérer dans un écran DSPF

Vous voulez savoir ou vous êtes positionné dans votre écran , pour appeler un programme liste par exemple.

Vous avez plusieurs solutions on va en présenter 4 ici

1) INFDS sur le fichier écran (DSPF)


Permet d’avoir la ligne et la position du curseur sur votre écran
dans votre programme
Dcl-F votre-ecran WORKSTN INFDS(FICHIERDS)

dcl-ds fichierDS;
ligne INT(3) POS(370); // curseur : ligne
colonne INT(3) POS(371); // curseur : colonne
end-ds;
..
if ligne = 4 and colonne = 22;

endif;

Avantage, tout ce passe dans le programme rien à faire dans l’écran

Nous vous conseillons d’utiliser un include pour normaliser l’utilisation de cette data structure

2) Nom de la zone active


dans votre écran
A RTNCSRLOC(&W_FMT &W_ZON)
A CF04(04)
A CA12(12)
A CF10(10)
A W_FMT 10A H TEXT(‘Nom du format’)
A W_ZON 10A H TEXT(‘Nom de la Zone’)
dans votre programme

if W_FMT = ‘FMT01’ and C1 = W_ZON = ‘NUMCLI’;

endif;

Avantage, vous avez directement le nom de la zone dans la quelle vous vous trouvez

3) Positionnement du curseur sur souris

Vous devez déclarer dans les dspf les zones
qui contiendront les informations
dans votre écran

A RTNCSRLOC(MOUSE &L1 &C1 &L2 &C2) A RÉCUPÉRATION DU CURSEUR
A L1 3S 0H
A C1 3S 0H
A L2 3S 0H
A C2 3S 0H
dans votre programme
if C1 = 4 and C1 = 22;

endif;

Avantage, Vous avez un exemple ici https://www.gaia.fr/utilisation-de-la-souris-dans-un-dspf/

c’est la seule solution pour gérer la souris

4) Divers sur sous fichier

Il y a un mot clé méconnu qui permet de connaitre le rang du SFL sans faire de readc
dans l’écran
A SFLCSRRRN(&R1))
A* RÉCUPÉRATION DU CURSEUR
A R1 3S 0H
dans votre programme
R1 CHAIN SFL01 ;

Avantage , sur les sélections simples c’est une alternative au readc

Remarque :

Vous avez sans doute d’autres solutions, mais celles ci sont simples et efficaces
Vous avez des mots clés pour les zones liés au aide, qui ne sont pas traités ici,
regardez plutôt la, https://www.gaia.fr/ajouter-de-laide-a-vos-dspf/

Merci à Fawzia pour son aide