IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Cobol Discussion :

Passer en reverse video


Sujet :

Cobol

  1. #1
    Membre averti Avatar de Obelix84
    Homme Profil pro
    Retraité (ancien ingénieur système sur gros systèmes Bull/Ibm)
    Inscrit en
    Octobre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité (ancien ingénieur système sur gros systèmes Bull/Ibm)

    Informations forums :
    Inscription : Octobre 2019
    Messages : 52
    Par défaut Passer en reverse video
    Bonjour,

    je connais bien le Cobol, mais pas bien la screen section. Avec Gnucobol 3.3 j'ai écrit un programme qui affiche et récupère des données via la screen section. Tout fonctionne correctement. Je suis sous windows 11 et je fais tourner ce programme via l'invite de commande. L'affichage des écrans se fait en blanc sur fond noir. Je souhaiterai que l'ensemble se fasse en REVERSE-VIDEO.

    J'ai bien essayé de modifier les color du terminal sans problème, sauf que lorsque le programme prend la main les affichages reviennent en blanc sur fond noir et cessent lorsque le programme se termine.

    Existe-il une solution simple pour basculer tout l'écran en reverse video sans se soucier de son contenu ?

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 060
    Par défaut
    Hello,

    Est-ce que ce code test vous aide ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    SCREEN SECTION.
    01 MainScreen.
        05 BLANK SCREEN.
        05 LINE 5 COLUMN 10 VALUE "Test GnuCOBOL SCREEN SECTION (Libre)"
           BACKGROUND-COLOR 1
           FOREGROUND-COLOR 7
           HIGHLIGHT.
        05 LINE 8 COLUMN 10 VALUE "Texte Normal (Couleurs par defaut)".
        05 LINE 10 COLUMN 10 VALUE "Exemple de Texte Colore"
           BACKGROUND-COLOR 4
           FOREGROUND-COLOR 6
           HIGHLIGHT.
        05 LINE 12 COLUMN 10 VALUE "Texte Inverse (Reel)"
           REVERSE-VIDEO.
        05 Line-For-Accept LINE 15 COLUMN 1
           PIC X TO Ws-Input
           BELL
           AUTO.
    
    
    PROCEDURE DIVISION.
    DisplayScreen.
        DISPLAY MainScreen.
        ACCEPT Line-For-Accept OF MainScreen.
    StopProgram.
        STOP RUN.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Membre averti Avatar de Obelix84
    Homme Profil pro
    Retraité (ancien ingénieur système sur gros systèmes Bull/Ibm)
    Inscrit en
    Octobre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité (ancien ingénieur système sur gros systèmes Bull/Ibm)

    Informations forums :
    Inscription : Octobre 2019
    Messages : 52
    Par défaut
    Merci de t'intéresser à mon problème.

    Ce que je cherche, ce n'est pas comment colorer des lignes particulières ou les passer en reverse-video, mais comment faire cette opération sur l'ensemble d'un programme déjà écrit et qui tourne. Quand je dis l'ensemble, c'est la totalité de l'écran. Dans l'exemple que tu m'as fourni, les lignes ont bien les attributs demandés, mais restent sur sur écran noir.

    J'ai repris ton programme et l'ai transformé pour correspondre à la réalité du mien. Existe-t'il une technique pour tout passer en reverse-video avec un travail minimum, y compris la totalité de l'écran, c'est à dire même les parties inutilisées de celui-ci ?

    Dans ce programme il y a 5 lignes que je voudrais passer en reverse-video en plus de l'écran complet, mais sans intervenir sur chaque ligne ou à minima mais pas sur chaque ligne. Dans mon programme il n'y a pas 5 lignes, mais des centaines et ce n'est pas le seul programme...

    J'avais pensé intervenir au niveau de l'invite de commande. Cela fonctionne bien, mais dès que le programme afiche ses propres écrans on revient à du blanc sur noir. Ce n'est manifestement pas les mêmes routines système qui sont solicitées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
           IDENTIFICATION DIVISION.
           PROGRAM-ID. TS9.
           AUTHOR. OBELIX.
           ENVIRONMENT DIVISION.
           CONFIGURATION SECTION.
           SOURCE-COMPUTER. PC.
           OBJECT-COMPUTER. PC.
           DATA DIVISION.
           WORKING-STORAGE SECTION.
           01  Ws-Input   PIC X.
           SCREEN SECTION.
           01  MainScreen.
               05 BLANK SCREEN.
               05 LINE 5 COLUMN 10
                  VALUE "Test GnuCOBOL SCREEN SECTION (Libre)".
               05 LINE  8 COLUMN 10 VALUE "Texte Normal 1".
               05 LINE 10 COLUMN 10 VALUE "Texte normal 2".
               05 LINE 12 COLUMN 10 VALUE "Texte normal 3".
               05 Line-For-Accept LINE 15 COLUMN 1
                  PIC X TO Ws-Input
                  BELL
                  AUTO.
           PROCEDURE DIVISION.
           DisplayScreen.
               DISPLAY MainScreen.
               ACCEPT Line-For-Accept OF MainScreen.
           StopProgram.
               STOP RUN.

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 060
    Par défaut
    Pour que tout l'écran défini par MainScreen (y compris le fond grâce à BLANK SCREEN et tous les champs 05) s'affiche en reverse-video, vous devez la modifier comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    01  MainScreen REVERSE-VIDEO.
    Sans cet ajout (REVERSE-VIDEO), l'écran s'affichera simplement avec les couleurs par défaut de votre terminal.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  5. #5
    Membre averti Avatar de Obelix84
    Homme Profil pro
    Retraité (ancien ingénieur système sur gros systèmes Bull/Ibm)
    Inscrit en
    Octobre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité (ancien ingénieur système sur gros systèmes Bull/Ibm)

    Informations forums :
    Inscription : Octobre 2019
    Messages : 52
    Par défaut
    Je viens de faire le test.

    Les lignes (la partie des lignes concernées) passent bien en reverse-video, mais pas le fond de l'écran lui-même. C'est une solution que j'avais déjà essayée en pensant que le BLANK SCREEN allait bien faire travail...!

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 060
    Par défaut
    Désolé, mes compétences en COBOL sont limités, ce n'est pas du tout mon langage de cœur

    Est-ce que d'après vous ça serait possible de "peindre" explicitement tout l'arrière plan avec des espaces en REVERSE-VIDEO avant d'afficher vos données réelles ?
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  7. #7
    Membre averti Avatar de Obelix84
    Homme Profil pro
    Retraité (ancien ingénieur système sur gros systèmes Bull/Ibm)
    Inscrit en
    Octobre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité (ancien ingénieur système sur gros systèmes Bull/Ibm)

    Informations forums :
    Inscription : Octobre 2019
    Messages : 52
    Par défaut
    Comme je le disais, je connais bien le Cobol, mais pas la screen section. Quand j'étais actif, je n'ai jamais eu l'occasion de l'utiliser. Les seules gestions d'écran que j'ai réalisées, c'était via ISPF et là je n'utilisais pas le Cobol, mais REXX (c'est loin tout ça...).

    Pour répondre à la question :

    Sans la Screen Section c'est possible. Il faut intervenir dans l'invite de commande par la commande color 70 (par exemple) ou dans le lancement de cmd.exe avec le commutateur /T:70 (par exemple). Le hic, c'est que lorsqu'on passe à des affichages par la Screen Section, les couleurs reviennent en noir et blanc, sauf, bien sûr, si on a demandé des zones en couleurs. Et encore entre les zones, le fond de l'écran reste noir. Il me faudrait pousser des tests plus avant pour vérifier cette affirmation.

    Étant donné que j'ai ~5000 lignes de code, je me vois mal reprendre tout ça, pour transformer l'affichage, zone par zone, display par display et accept par accept.

    Quand j'ai commencé ce code, étant donné qu'avec le Gnucobol on peut interfacer n'importe quel type de S/P, j'ai cherché vainement un kit d'affichage (gratuit) qui m'aurait permis d'utiliser les fenêtres de windows, sans que ce soit des usines à gaz. Je me suis résigné à utiliser la screen section avec ses restrictions comme l'impossibilité d'utiliser les lettres accentuées, le jeu de caractères étant limité au 128 premières positions des polices de caractères.

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 593
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    À l'époque où je codais encore en COBOL, la SCREEN SECTION n'existait tout simplement pas, les écrans étaient codés en BMS

    Cela étant dit, d'après cette documentation, la reverse vidéo s'applique au niveau 01 et tous les sous-niveaux qui en dépendent

  9. #9
    Membre averti Avatar de Obelix84
    Homme Profil pro
    Retraité (ancien ingénieur système sur gros systèmes Bull/Ibm)
    Inscrit en
    Octobre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité (ancien ingénieur système sur gros systèmes Bull/Ibm)

    Informations forums :
    Inscription : Octobre 2019
    Messages : 52
    Par défaut
    C'est peut-être pour ça que je n'ai jamais utilisé la SCREEN SECTION. Il me semble quand même l'avoir vu (mais pas utilisé) du temps où je codais, c'est à dire à partir de 1968.

    Pour la REVERSE-VIDEO effectivement le test fonctionne, mais uniquement sur les zones, pas sur le fond. Dommage !

    Merci pour ta réponse.

  10. #10
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 593
    Billets dans le blog
    10
    Par défaut
    Cela dit, avec BMS, il est très facile de mettre toute la MAP en reverse vidéo avec le paramètre HILIGHT=REVERSE.

    Cf. https://www.ibm.com/docs/fr/cics-ts/...=macros-dfhmdf

    Je vois qu'il existe un compilateur BMS pour Windows, à tester :
    https://www.microfocus.com/documenta...ORHCICM03.html

  11. #11
    Membre averti Avatar de Obelix84
    Homme Profil pro
    Retraité (ancien ingénieur système sur gros systèmes Bull/Ibm)
    Inscrit en
    Octobre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité (ancien ingénieur système sur gros systèmes Bull/Ibm)

    Informations forums :
    Inscription : Octobre 2019
    Messages : 52
    Par défaut
    BMS je n'ai jamais utilisé, ni même entendu parler durant ma carrière professionnelle. Il faut dire que sur IBM je n'ai jamais travaillé avec du transactionnel CICS et sur BULL bien qu'ayant géré un DATANET, je n'ai jamais écrit des programmes utilisant TDS.

    Cela étant dit sur BMS j'ai survolé un peu via l'URL fournie. Indépendamment du compilateur permettant de générer les frames, la mise en œuvre ne me semble pas très simple. Apparemment c'est basé sur une application client/serveur et il faut donc mettre en place le serveur. Je ne doute pas qu'il existe des logiciels d’émulation capable de faire tout ça mais mettre tout cet environnement en place me semble disproportionné pour un simple confort visuel. En fait il me faudrait pratiquement réécrire tout mon programme et apprendre à me servir de BMS. Je ne suis même pas sûr que l'émulation des terminaux 3270 supporte des écrans allant jusqu'à 58 lignes de 209 caractères, comme j'ai réussi à les gérer avec la Screen Section.

    Au départ de mon projet, j'avais cherché une boite à outils (gratuite) me permettant d'utiliser le fenêtrage Windows facilement. Je n'ai pas trouvé ou j'ai mal cherché et je me suis rabattu sur la gestion d'un terminal via la Screen Section. Maintenant si tu connais un kit gratuit intéressant, je me ferais un plaisir d'y jeter un œil.

Discussions similaires

  1. Faire passer une vidéo youtube DERRIERE une image
    Par jokerag dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 27/04/2010, 09h21
  2. Réponses: 2
    Dernier message: 31/03/2010, 10h36
  3. Initialisation interface video sans passer par le BIOS
    Par Alexandre0 dans le forum Assembleur
    Réponses: 4
    Dernier message: 26/04/2008, 15h03
  4. reverse engineering, passer du MPD au MLD puis au MCD
    Par tibotibo69 dans le forum PowerAMC
    Réponses: 5
    Dernier message: 22/02/2008, 11h09
  5. Passer une video en plein écran
    Par avogadro dans le forum C++Builder
    Réponses: 4
    Dernier message: 04/06/2007, 14h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo