Problème

On a un programme gérant une fenêtre (fenêtre Adélia ou fenêtre IBM) qui peut être appelé par des programmes gérant des écrans de taille 24 * 80 mais aussi par des programmes gérant des écrans de taille 27 * 132. Si la fenêtre est définie avec une taille 24 * 80 on a une erreur lorsqu'elle s'affiche par dessus un écran de taille 27 *132, et si elle est définie avec une taille 27 * 132 on a une erreur lorsqu'elle s'affiche par dessus un écran de taille 24 * 80.

Solution

Tout d'abord pour éviter l'erreur d'exécution, il faut définir la fenêtre comme étant de taille "Mixte" (cela se fait via l'option "Caractéristiques générales" du menu "Programme"  du GEE).
En faisant cela on n'a plus d'erreur d’exécution, mais lorsque la fenêtre s'affiche par dessus un écran de taille  27 *132, elle efface l'écran sur lequel elle s'affiche.

  • Cas des fenêtres de type "fenêtre Adélia" qui ont un sous-fichier :
     Dans ce cas il n'y pas d'autre amélioration possible.

  • Cas des fenêtres Adélia sans sous-fichier ou des fenêtres IBM (avec ou sans sous-fichier)
    Dans ce cas il est possible de les d'afficher en conservant le fond d'écran en faisant les modifications suivantes : 
    • Pour les fenêtres Adélia, Il faut désactiver le mode "sous-fichier pour message d'erreur" pour le programme (cela se fait via l'option "Caractéristiques générales" du menu "Programme"  du GEE). Le mode "sous-fichier pour message d'erreur" est possible pour les fenêtres IBM.
    • Pour tous les formats à l'exception des formats sous-fichier il faut leur ajouter dans les "Autres paramètres" la fonction suivante :
      "DSPMOD(*DS4)" en la conditionnant avec un indicateur (par exemple 97)
    • Dans votre programme vous devez savoir si votre programme a été appelé depuis un écran 24 * 80 ou  depuis un écran 27 * 132 (cela peut se faire par exemple par un paramètre transmis par le programme appelant ou une information stockée dans dans LDA par le programme appelant ou une autre méthode à votre convenance).
      Il suffit alors d'activer l'indicateur (le mettre à '1')  conditionnant la fonction "DSPMOD(*DS4)" au début de votre programme avant le TRAITER qui affiche votre transaction, lorsque votre programme est appelé depuis un programme gérant un écran 27 *132.
      Exemple : si le programme appelant met à jour la variable paramètre PTAILLE à  '*DS3' s'il affiche un écran 24 * 80 ou à '*DS4' s'il affiche un écran 27 *132 votre code sera le suivant :

      RECEVOIR PTAILLE .....
      SI PTAILLE = '*DS4'
         *IN97 = '1'
      SINON
          *IN97 = '0'
      FIN

      INITIALISER 01
      TRAITER 01
      ....