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

z/OS Discussion :

modification par programme d'un attribut de map ispf


Sujet :

z/OS

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 31
    Points : 35
    Points
    35
    Par défaut modification par programme d'un attribut de map ispf
    Bonjour,

    Je voudrais pouvoir modifier par programme l'attribut d'une zone sur un panel ispf.
    Par exemple, j'ai une zone Z1 qui a un attribut défini tel quel dans la partie )ATTR du panel : % TYPE(TEXT) COLOR(WHITE), c'est à dire non modifiable
    J'ai un autre attribut _ TYPE(INPUT) COLOR(RED) PAD(_) utilisé pour une zone modifiable, cette fois. Et j'aimerais, par programme, mettre cet attribut à ma zone Z1 de façon à la rendre modifiable. Est-ce possible, et comment ?
    Merci bien

  2. #2
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    J'avais fait une tentative de panel ISPF avec du REXX : http://www.developpez.net/forums/d13...nt-panel-ispf/

    N'hésite pas à t'en inspirer !
    (il faut vraiment lire tout le topic pour voir un peu tout ! ^^')

    Mais si on résume ce que tu veux faire :
    Afficher dans un champs une valeur que tu as rempli avant dans un input ?
    Ex :
    *écran1*
    Z1 : ___
    Input : lol

    *enter appuyé, écran 2*
    Z1 : lol
    Input :

    C'est bien ça ?
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 167
    Points : 131
    Points
    131
    Par défaut
    Bonjour ,

    Il est impossible de changer le "TYPE" d'une zone de "TEXT" vers "INPUT".

    On ne peut le changer que de "OUTPUT" vers "INPUT" ou inversement.

    Donc , si tu as :

    )ATTR
    $ TYPE(OUTPUT) COLOR(WHITE)
    _ TYPE(INPUT) COLOR(RED) PAD(_)

    )BODY

    $Z1 + Donc non modifiable

    )PROD
    IF (TOP = 'O')
    .ATTR(Z1) = 'TYPE(INPUT) COLOR(RED) PAD(_)' --> Z1 passe modifiable , rouge et initialisée à '_'

    avec dans le Rexx :

    TOP = 'N'
    IF A = 'TOTO' THEN TOP = 'O'

    et tu peux même initialiser cette zone avant affichage :

    TOP = 'N'
    IF A = 'TOTO' THEN
    DO
    TOP = 'O'
    Z1 = 'A modifier'
    END

    Bakounine

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 31
    Points : 35
    Points
    35
    Par défaut reponse à bakounine
    Bonjour Bakounine,
    J'ai fait ce que tu as dit, mais j'ai le message suivant qui s'affiche. Ca ne marche pas. Il n'a pas aimé le IF
    ******************************************************************************
    * ISPP169 *
    * *
    * Panel 'GLTHITST' error *
    * Invalid IF logical expression (not a dialog or control variable or VER *
    * statement construct). *
    * Panel line where error was detected: *
    * IF (TOP = 'O') *
    Voici le programme REXX :
    /* REXX : GLTHITST */
    FREE ALL
    SOURCE = ''
    ZCUR = 'SOURCE'
    TOP = 'N'
    DEBUT:
    "ISPEXEC DISPLAY PANEL(GLTHITST) CURSOR("ZCUR")"
    IF RC = 8 THEN EXIT
    IF SOURCE = 'TOTO' THEN
    DO
    TOP = 'O'
    Z1 = 'A MODIFIER'
    END
    SIGNAL DEBUT

    et voici le panel :

    )ATTR DEFAULT(%+_)
    _ TYPE(INPUT) COLOR(RED) PAD(_)
    % TYPE(TEXT) COLOR(WHITE)
    )BODY
    %
    _SOURCE %
    %Z1 %
    %
    )PROC
    IF (TOP = 'O')
    .ATTR(Z1) = 'TYPE(INPUT) COLOR(RED) PAD(_)'
    )END

    Cordialement,

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 167
    Points : 131
    Points
    131
    Par défaut
    Bonjour ,

    Dans ton panel , tu as défini la variable Z1 avec l'attribut % , soit donc , en type TEXT et donc son changement en type OUTPUT est interdit (Comme dit dans mon message initial).

    Il faut définir ta variable Z1 en type OUTPUT initialement pour la modifier en type INPUT

    De plus , il y a en effet une erreur dans mon message , il manque un & dans la carte IF , soit : IF (&TOP = 'O')

    Enfin , au niveau des copier-coller que j'ai fait (Et que tu as fait) , n'oublie pas de décaler les ordres du style ".ATTR(Z1) = 'TYPE(INPUT) COLOR(RED) PAD(_)' " de 1 ou plusieurs spaces vers la droite ..... , les ordres conditionnels étant positionnels .....

    Cela devrait aller mieux .....

    N'hésite pas

    Bakounine

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 31
    Points : 35
    Points
    35
    Par défaut
    Bonjour,
    Ok, ça marche mieux dans le sens où ça ne plante pas maintenant, mais j'ai encore dû faire un truc pas bien, parce que ma zone Z1 reste en output. J'ai bien 'A MODIFIER' qui s'affiche dedans (donc TOP est bien à O), mais je ne peux pas la modifier et elle apparait toujours en rose, donc la modification d'attribut n'a pas fonctionné.

    voilà le panel :
    )ATTR DEFAULT(%+_)
    _ TYPE(INPUT) COLOR(RED) PAD(_)
    % TYPE(TEXT) COLOR(WHITE)
    + TYPE(OUTPUT) COLOR(PINK)
    )BODY
    %
    _SOURCE %
    +Z1 %
    %
    )PROC
    &DGIPFKEY = .PFKEY
    IF (&TOP = 'O')
    .ATTR(&Z1) = 'TYPE(INPUT) COLOR(RED) PAD(_)'
    )END

    et le programme

    /* REXX : GLTHITST */
    FREE ALL
    SOURCE = ''
    ZCUR = 'SOURCE'
    TOP = 'N'
    DEBUT:
    "ISPEXEC DISPLAY PANEL(GLTHITST) CURSOR("ZCUR")"
    /* SAY DGIPFKEY */
    IF RC = 8 THEN EXIT
    IF SOURCE = 'TOTO' THEN
    DO
    TOP = 'O'
    Z1 = 'A MODIFIER'
    END
    SIGNAL DEBUT

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2011
    Messages : 167
    Points : 131
    Points
    131
    Par défaut
    Bonjour ,

    Essaie en enlevant le '&' de : .ATTR(&Z1) = 'TYPE(INPUT) COLOR(RED) PAD(_)'

    Et n'oublie pas de décaler cette ligne vers la droite...

    Mais je dois manquer de formation ISPF surement...

    Bakounine

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 31
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    Oui, non ,le &Z1 c'était un essai que j'ai fait en mettant un &, mais ça ne marchait pas, alors je l'ai enlevé. et j'ai décalé de 3 caractères. C'est mon copier/coller qui n'était pas bon.
    IF (&TOP = 'O')
    .ATTR(Z1) = 'TYPE(INPUT) COLOR(RED) PAD(_)'
    )END
    Merci en tout cas pour ton aide.
    En fait, en attendant, le workaround que j'ai trouvé est de créer des panels différents par leurs attributs, de variabiliser le panel dans l'ordre 'DISPLAY PANEL', et roule ma poule.
    Ca marche, certes, mais ça ne me satisfait pas.

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/05/2015, 06h33
  2. Réponses: 2
    Dernier message: 26/04/2009, 18h31
  3. Modification d'un Web.sitemap par programmation
    Par thib42 dans le forum ASP.NET
    Réponses: 0
    Dernier message: 04/11/2008, 17h14
  4. Modification de report par programmation
    Par phsmi dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 01/09/2008, 14h56
  5. [D7] modification option regional par programmation
    Par kheldoun ahmed dans le forum Delphi
    Réponses: 8
    Dernier message: 24/05/2007, 20h18

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