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 :

Question développement panel ISPF


Sujet :

z/OS

  1. #21
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Bonsoir,

    Mais pourquoi avoir mis ZCMD dans la liste des ZVARS ?

  2. #22
    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
    Bonne question...
    Je suis parti de l'ancien panel fait par la personne précédente...
    Mais je vais probablement essayer ce que vous me conseiller au plus vite (ça risque de prendre un certain temps du coup ).

    Donc je devrais essayer de déclarer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    )BODY WINDOW(79,24) CMD(ZCMD)                                           
    %                        +  ColorApp (Test Fabrice)                     
    %Commande ===>+Z                                                        
    +Melange de couleurs :                  Couleur Actuelle :        +*----------*
       %1 +Ajouter une couleur              *----------------*        +| &user++++|
       %2 +Retirer totalement une couleur   |   0x&my-color  |        +| &system++|
       %3 +Modifier une couleur             |   &color-name  |        +| &time++++|
       %4 +Soustraire une couleur           *----------------*        +*----------*
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
    £SAREA9                                                                 £
    Et en INIT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    &ZCMD = ' '
    .ZVARS = '(MYRED,MYGREEN,MYBLUE)'
    J'espère que ça m'aidera...
    N'y a-t-il aucun moyen de connaitre la taille de ZVARS ? (un len(ZVARS)... soyons fou et imaginatif ! )
    --
    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. #23
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Si la variable ZCMD n'est plus en .ZVARS, alors je pense qu'il faut être cohérent jusqu'au bout et ne pas déclarer sa position dans le panel en Z

    Voici un exemple d'utilisation de .ZVARS donné dans la doc IBM :

    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
    )BODY
    ---------------------------- TITLE LINE ------------------------------------
    %COMMAND===>_ZCMD %
    % .
    .
    .
    .
    + TYPE %===>_Z+ (A for alpha, N for numeric)
    + LENGTH%===>_Z + (0 to 99)
    + OFFSET%===>_Z + (0 to 99)
    .
    .
    .
    )INIT
    .ZVARS = '(TYPFLD LNGFLD OFFSET)'
    Figure 78. Example of Z variable place-holders
    Là on voit bien que ZCMD est indépendant de .ZVARS

    Au pire si ça ne marche toujours pas on peut envisager de ne plus utiliser .ZVARS

  4. #24
    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
    Eh bien le problème c'était bien cela ! Merci Luc !

    J'ai sorti ZCMD du ZVARS, je l'ai déclaré dans le body... et mon panel s'affiche correctement sans erreur !
    Etrange... dans le programme que je dois maintenir le ZCMD est dans ZVARS, et tout fonctionne ! :s
    Bref, je ferai avec...

    Voici donc les 3 sections (si d'autres veulent essayer un jour sans connaitre ISPF ) :

    ATTR
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    )ATTR DEFAULT(%+_) FORMAT(MIX)                                         
    /* ------------------------------------------------------------------*/
    /* PANEL MYAPPP01                                                    */
    /* ------------------------------------------------------------------*/
    /* Panel de test                                                     */
    /* ------------------------------------------------------------------*/
                                                                           
     £ AREA(SCRL) EXTEND(ON)           /* Scrollable Area */
    BODY
    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
    /* *****************************  BODY   *************************** */
    )BODY WINDOW(79,24) CMD(ZCMD)                                           
    %                        +  ColorApp (Test Fabrice)                     
    %Commande ===>_ZCMD                                                     
    +Melange de couleurs :                  Couleur Actuelle :        +*----------*
       %1 +Ajouter une couleur             +*----------------*        +| &user   +|
       %2 +Retirer totalement une couleur  +|   0x&my-color +|        +| &system +|
       %3 +Modifier une couleur            +|   &color-name +|        +| &time   +|
       %4 +Soustraire une couleur          +*----------------*        +*----------*
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
    £SAREA9                                                                 
    )AREA SAREA9 /* *********************  AREA   ********************** */ 
    +Paramètres de couleur :                                                
    +Rouge  . . . . . :_Z  + (0 à 255)                                      
    +Vert . . . . . . :_Z  + (0 à 255)                                      
    +Bleu . . . . . . :_Z  + (0 à 255)
    INIT
    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
    )INIT                                                                   
    /* *****************************  INIT   *************************** */ 
    /* Valoriser les variables locales avec les valeurs du pool PROFILE  */ 
    /* <PROFILE <LOCALE  <Conversion                                     */ 
    /**/                                                                    
    &ZCMD = ' '                                                             
    VGET (MYRED MYGREEN MYBLUE) PROFILE                                     
                                                                            
    /* Chargement des informations du cartouche: UserId, Heure, Partition */
    &user    = &ZUSER                                                       
    &time    = &ZTIME                                                       
    &system  = &ZSYSID                                                      
    
    .ZVARS = '(MYRED,MYGREEN,MYBLUE)'                                 
    .CURSOR = ZCMD                                                    
    .HHELP  = MYAPPH00                                                
    &ZHTOP  = MYAPPH00
    Je vais vérifier/coder la logique qui va avec maintenant pour bien assimiler quoi fait quoi et quand....
    --
    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

  5. #25
    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
    Bloqué dans la logique (comme si c'était pas prévisible ! )...
    J'essaye désespérément de mettre plusieurs OU sur la même ligne (il doit y avoir moyen...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IF (&MYRED gt 255) || (&MYGREEN gt 255) || (&MYBLUE gt 255) THEN DO 
         &msgerror = 'Valeur d'une des 3 couleurs trop grande (> 255)'  
    END
    On m'a dit que les | ne sont pas compris comme des OU sur z/OS... mais ! oui.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IF (&MYRED > 255) ! (&MYGREEN > 255) ! (&MYBLUE > 255) THEN DO    
         &msgerror = 'Valeur d'une des 3 couleurs trop grande (> 255)'
    END
    A chaque fois j'ai un unrecognized keyword... ou un problème dans les IF keywords.... bref... c'est... "stressant" d'être bloqué par un problème de syntaxe.
    --
    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

  6. #26
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Les ! ou les |, c'est un problème de codepage dans ta session 3270. Je conseille toujours le codepage 1047 US, comme ça, on a beaucoup moins de surprise.
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  7. #27
    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
    Mon codepage est à 1147 - (French Euro)...

    Et apparemment on m'a expliqué que dans les sections INIT/REININT/PROC, les IF sont "simples"...
    Donc pas d'imbrications, de &, && ou |....

    Je vais travailler ainsi, mais si quelqu'un peut confirmer ça serait parfait !
    --
    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

  8. #28
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2006
    Messages : 950
    Points : 2 064
    Points
    2 064
    Par défaut
    Changer le codepage de ta session est une bonne idée à maitriser. Si pas de maitrise, il vaut mieux éviter cette solution.

    Si il y a changement du codepage, il faut faire très attention à ne pas provoquer des "erreurs" par ailleur.

    Dans les panels, les IF peuvent être complexes ou compliqués. Ils doivent respecter des règles très strictes. La lecture de la doc est très fortement conseillée.

  9. #29
    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
    Ca ne vient pas du codepage... mais bel et bien du IF...

    Je suis en train de lire ça (comme le conseil bernard) :
    ISPF IF statement

    Et en fouinant dans les codes autour je vois des :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF (&VAR1 NE '' OR &VAR2 NE '' OR &VAR3 NE '')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IF  (&ZCMD = 1,5,6)             
       VER(&VAR1,NB,MSG=MYAPP012)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IF POS("à",VAR4) ^= 0 THEN DO      
       VAR4=TRANSLATE(VAR4,'@','à') 
    END
    Bref, les IF ont l'air en effet assez tordus avec les VER et les opérateurs.



    A noter aussi, ceci est incorrect selon ISPF :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    &MYCOLOR = &MYCOLOR + &MYRED + &MYGREEN + &MYBLUE
    Il faut faire UNE seule addition à chaque fois. (même si le but sera de décaler à gauche)


    EDIT : ah bein apparemment le codepage y était "aussi" pour quelquechose :
    Boolean-operator
    The character symbol & or characters AND (AND Boolean operator) or the character symbol | or characters OR (OR Boolean operator).
    Je pensais pourtant que le 1147 serait l'équivalent du 1047 sur la plupart des caractères
    --
    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

  10. #30
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Citation Envoyé par Metalman Voir le message
    EDIT : ah bein apparemment le codepage y était "aussi" pour quelquechose :

    Je pensais pourtant que le 1147 serait l'équivalent du 1047 sur la plupart des caractères
    C'est vrai, sauf pour quelques caractères de ponctuation, comme le ! en 1147 qui devient | en 1047 (code 4F).
    Et comme le dit Bernard, il vaut mieux savoir ce qu'on fait avec son codepage, car il peut y avoir des problèmes lorsqu'on édite des fichiers ou qu'on fait du DB2 par exemple.
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  11. #31
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2006
    Messages : 950
    Points : 2 064
    Points
    2 064
    Par défaut
    Citation Envoyé par Metalman Voir le message
    Je pensais pourtant que le 1147 serait l'équivalent du 1047 sur la plupart des caractères
    pour avoir un petit apercu des différences, regarde ICI

  12. #32
    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
    Je n'ai pas beaucoup travaillé dessus les denriers jours, mais je viens de m'y remettre.

    Mon panel s'affiche, et j'ai mis un peu de REXX... mais il ne se passe tout simplement "rien" quand je valide.

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    )ATTR DEFAULT(%+_) FORMAT(MIX)                                         
    /* ------------------------------------------------------------------*/
    /* PANEL MYAPPP01                                                    */
    /* ------------------------------------------------------------------*/
    /* Panel de test                                                     */
    /* ------------------------------------------------------------------*/
                                                                           
     £ AREA(SCRL) EXTEND(ON)           /* Scrollable Area */
    
    /* *****************************  BODY   *************************** */
    )BODY WINDOW(79,24) CMD(ZCMD)                                           
    %                        +  ColorApp (Test Fabrice)                     
    %Commande ===>_ZCMD                                                     
    +Melange de couleurs :                  Couleur Actuelle :        +*----------*
       %1 +Ajouter une couleur             +*----------------*        +| &user   +|
       %2 +Retirer totalement une couleur  +|   0x&my-color +|        +| &system +|
       %3 +Modifier une couleur            +|   &color-name +|        +| &time   +|
       %4 +Soustraire une couleur          +*----------------*        +*----------*
       
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
    £SAREA9                                                                 
    )AREA SAREA9 /* *********************  AREA   ********************** */ 
    +Paramètres de couleur :                                                
    +Rouge  . . . . . :_Z  + (0 à 255)                                      
    +Vert . . . . . . :_Z  + (0 à 255)                                      
    +Bleu . . . . . . :_Z  + (0 à 255)
    
    )INIT                                                                   
    /* *****************************  INIT   *************************** */ 
    /* Valoriser les variables locales avec les valeurs du pool PROFILE  */ 
    /* <PROFILE <LOCALE  <Conversion                                     */ 
    /**/                                                                    
    &ZCMD = ' '                                                             
    VGET (MYRED MYGREEN MYBLUE) PROFILE                                     
                                                                            
    /* .ZVARS = '(ZCMD MYRED MYGREEN MYBLUE TESTMOI)' */                    
    .ZVARS = '(MYRED,MYGREEN,MYBLUE)'                                       
    .CURSOR = ZCMD                                                          
    .HHELP  = MYAPPH00                                                      
    &ZHTOP  = MYAPPH00                                                      
                                                                            
    /* Initialisation des variables et valeurs affichees */                 
    &MYCOLOR  = 000000                                                      
    &COLORNOM = 'blanc'                                                     
    &MYRED    = 00                                                          
    &MYGREEN  = 00                                                          
    &MYBLUE   = 00                                                          
    &MSGERROR = ' '                                                         
    
    /* Chargement des informations du cartouche: UserId, Heure, Partition */
    &user     = &ZUSER                                                      
    &time     = &ZTIME                                                      
    &system   = &ZSYSID                                                     
                                                                            
    
    /* *****************************  REINIT *************************** */
    )REINIT                                                                
                                                                           
    &MYRED   = 00                                                          
    &MYBLUE  = 00                                                          
    &MYGREEN = 00                                                          
    
    
    /* *****************************  PROC   *************************** */
    )PROC                                                                  
    /* ===========  VERIFICATION DES VALEURS ENTREES =================== */
    /* -> VERIF <- l'option doit être comprise entre 1 et 4.             */
    VER (&ZCMD,RANGE,1,4)                                                  
                                                                           
    IF (&MYRED > 255)                                                      
      &MSGERROR = 'ROUGE > 255'                                            
                                                                           
    IF (&MYGREEN > 255)                                                    
      &MSGERROR = 'VERT > 255'                                             
                                                                           
    IF (&MYBLUE > 255)                                                     
      &MSGERROR = 'BLEU > 255'                                             
    
      *REXX(&ZCMD,&MYCOLOR,&MYRED,&MYGREEN,&MYBLUE,&COLORNOM)
         TRACE O                                             
         IF &ZCMD = 1 THEN                                   
           DO                                                
             &TMPRED = &MYRED * 10000                        
             &TMPGREEN = &MYGREEN * 100                      
             &MYCOLOR = &MYCOLOR + &TMPRED                   
             &MYCOLOR = &MYCOLOR + &TMPGREEN                 
             &MYCOLOR = &MYCOLOR + &TMPBLUE                  
           END                                               
         SAY color &MYCOLOR                                  
      *ENDREXX                                               
                                                             
    VPUT (MYRED MYGREEN MYBLUE) PROFILE                      
    )END

    Dans la partie "commande" je tape 1 (donc pour "ajouter des couleurs" à ma variable &MYCOLOR), puis j'indique diverses valeurs de 2 chiffres (pour le moment) dans les champs ROUGE, VERT, BLEU.
    Et je valide....
    ...
    ...
    Et l'écran se rafraichit sans rien de plus.
    Les variables ne sont pas résolues...
    Voilà ce qui s'affiche en gros :

    Avant validation (quand je rempli mes champs) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    MSYS                       ColorApp (Test Fabrice)                             
    Commande ===> 1                                                                
    Melange de couleurs :                  Couleur Actuelle :         *----------* 
       1  Ajouter une couleur              *----------------*         | METALMA  | 
       2  Retirer totalement une couleur   |   0x000000     |         | MSYS     | 
       3  Modifier une couleur             |   blanc        |         | 10:44    | 
       4  Soustraire une couleur           *----------------*         *----------* 
                                                                                   
     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   
                                                                                   
    Paramètres de couleur :                                                       
    Rouge  . . . . . : 42   (0 à 255)                                              
    Vert . . . . . . : 21   (0 à 255)                                              
    Bleu . . . . . . : 10   (0 à 255)
    Après validation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    MSYS                       ColorApp (Test Fabrice)                            
    Commande ===>                                                                 
    Melange de couleurs :                  Couleur Actuelle :         *----------*
       1  Ajouter une couleur              *----------------*         | METALMA  |
       2  Retirer totalement une couleur   |   0x000000     |         | MSYS     |
       3  Modifier une couleur             |   blanc        |         | 10:46    |
       4  Soustraire une couleur           *----------------*         *----------*
                                                                                  
     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
                                                                                  
    Paramètres de couleur :                                                       
    Rouge  . . . . . : 00   (0 à 255)                                             
    Vert . . . . . . : 00   (0 à 255)                                             
    Bleu . . . . . . : 00   (0 à 255)
    Théoriquement, REXX devrait m'afficher un message avec la nouvelle valeur de &MYCOLOR...
    Et surtout : le panel devrait mettre à jour le champs "Couleur Actuelle :" avec 0x422110

    Je.... ne dois pas bien comprendre l'ordre entre )INIT, )PROC, )REINIT ?
    --
    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

  13. #33
    Membre averti
    Femme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 179
    Points : 350
    Points
    350
    Par défaut
    visiblement ton rexx ne s execute pas non? vois tu le say color ?

    personnellement c est toujours le rexx que je demarre en premier, et c est lui qui affiche et gere les panels, je me contente toujours de panel relativement simple et ne fait aucun traitement dedans. tout est fait dans le rexx, c est plus facile a debugger et a lire. j'avoue que je ne connaissais pas ta maniere de faire.

  14. #34
    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
    Le say color ne passe pas en effet...

    J'essayerai de faire un autre panel à côté avec un VGET en INIT, et un VPUT + CMD en PROC.
    Mais j'aimerais bien savoir pourquoi la partie REXX n'est pas interprétée... la doc parle bien d'ajouter moins de 32k de script REXX si on souhaite en faire.
    --
    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

  15. #35
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2006
    Messages : 950
    Points : 2 064
    Points
    2 064
    Par défaut
    Bonjour

    je n'ai jamais utilisé de REXX dans les panels, et je n'en ai jamais eu l'utilité.

    Quelques conseils malgré tout:

  16. #36
    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
    Bon... j'ai ajouté pas mal de debug....
    Ca a l'air d'être exécuté, mais pas totalement... j'ai retiré le "TRACE 0", et ajouté des "say".
    Voilà le code en PROC :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    )PROC                                                                  
    /* ===========  VERIFICATION DES VALEURS ENTREES =================== */
    /* -> VERIF <- l'option doit être comprise entre 1 et 4.             */
    VER (&ZCMD,RANGE,1,4)                                                  
                                                                           
    *REXX                                                                  
      say Test Rouge                                                       
    *ENDREXX                                                               
                                                                           
    IF (&MYRED > 255)                                                      
      &MSGERROR = 'ROUGE > 255'                                            
                                                                           
    *REXX                                                                  
      say Test Rouge OK                                                    
      say Test Vert                                                        
    *ENDREXX                                                               
                                                                           
    IF (&MYGREEN > 255)                                                    
      &MSGERROR = 'VERT > 255'                                             
                                                                           
    *REXX                                                                  
      say Test Vert OK                                                     
      say Test Bleu                                                        
    *ENDREXX                                                               
    
    IF (&MYBLUE > 255)                                                
      &MSGERROR = 'BLEU > 255'                                        
    &MYCMD = &ZCMD                                                    
    *REXX                                                             
      say Test Bleu OK                                                
      say Code principal                                              
      say MYCMD : &MYCMD                                              
    *ENDREXX                                                          
                                                                      
      *REXX(&MYCMD,&MYCOLOR,&MYRED,&MYGREEN,&MYBLUE,&COLORNOM)        
         IF &MYCMD='1' THEN                                           
           DO                                                         
            /* &TMPRED = &MYRED * 10000 */                            
            /* &TMPGREEN = &MYGREEN * 100 */                          
            /* &MYCOLOR = &MYCOLOR + &TMPRED */                       
            /* &MYCOLOR = &MYCOLOR + &TMPGREEN */                     
            /* &MYCOLOR = &MYCOLOR + &MYBLUE */                       
             &MYCOLOR = &MYRED&MYGREEN&MYBLUE                         
           END                                                        
         SAY color &MYCOLOR                                           
      *ENDREXX                                                        
                                                                      
    VPUT (MYCOLOR MYRED MYGREEN MYBLUE MSGERROR) PROFILE              
    )END
    A l'exécution en mettant juste un "1" en ZCMD :

    TEST ROUGE
    TEST ROUGE OK
    TEST VERT
    TEST VERT OK
    TEST BLEU
    TEST BLEU OK
    CODE PRINCIPAL
    14 +++ say MYCMD : &MYCMD
    6 +++ Call P_0003F010
    Error running exec, line 14: Invalid expression
    ***
    Bref, donc le REXX est "correctement exécuté"... mais pas pour les variables....
    --
    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

  17. #37
    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
    Pfiou....
    Merci cette page de doc sur le *REXX statement et son exemple à rallonge...

    Maintenant, avec ce code :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    )PROC                                                                  
    /* ===========  VERIFICATION DES VALEURS ENTREES =================== */
    /* -> VERIF <- l'option doit être comprise entre 1 et 4.             */
    VER (&ZCMD,RANGE,1,4)                                                  
                                                                           
    *REXX                                                                  
      say Test Rouge                                                       
    *ENDREXX                                                               
                                                                           
    IF (&MYRED > 255)                                                      
      &MSGERROR = 'ROUGE > 255'                                            
                                                                           
    *REXX                                                                  
      say Test Rouge OK                                                    
      say Test Vert                                                        
    *ENDREXX                                                               
                                                                           
    IF (&MYGREEN > 255)                                                    
      &MSGERROR = 'VERT > 255'                                             
                                                                           
    *REXX                                                                  
      say Test Vert OK                                                     
      say Test Bleu                                                        
    *ENDREXX                                                               
    
                                                            
    IF (&MYBLUE > 255)                                      
      &MSGERROR = 'BLEU > 255'                              
                                                            
    *REXX                                                   
      say Test Bleu OK                                      
    *ENDREXX                                                
                                                            
    &MYCMD = &ZCMD                                          
    *REXX(ZCMD)                                             
      say Code principal                                    
      say MYCMD ZCMD                                        
    *ENDREXX                                                
                                                            
    *REXX(ZCMD,MYCOLOR,MYRED,MYGREEN,MYBLUE,COLORNOM)       
      SAY Debut traitement                                  
      IF ZCMD = '1' THEN                                    
        DO                                                  
        SAY on est dans if                                  
          TMPRED   = MYRED * 10000                          
          TMPGREEN = MYGREEN * 100                          
          MYCOLOR  = MYCOLOR + TMPRED                       
          MYCOLOR  = MYCOLOR + TMPGREEN                     
          MYCOLOR  = MYCOLOR + MYBLUE                       
        END                                                 
      SAY color MYCOLOR                                     
    *ENDREXX                                               
                                                           
    VPUT (MYCOLOR MYRED MYGREEN MYBLUE MSGERROR) PROFILE   
    )END
    J'obtiens cette sortie :
    TEST ROUGE
    TEST ROUGE OK
    TEST VERT
    TEST VERT OK
    TEST BLEU
    TEST BLEU OK
    CODE PRINCIPAL
    MYCMD 1
    DEBUT TRAITEMENT
    ON EST DANS IF
    COLOR 403010
    ***
    Donc en *REXX il faut :
    1) déclarer à l'ouverture les variables ISPF qui nous intéressent : *REXX(ZCMD) ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    *REXX(ZCMD,MYCOLOR,MYRED,MYGREEN,MYBLUE,COLORNOM)
    2) Utiliser les noms de variables SANS préfixe dans le code MYCOLOR = MYCOLOR + MYBLUE ou SAY color MYCOLOR

    Un grand pas pour moi-même vient d'être effectué, un déplacement impossible à mesurer (tellement il est petit) pour l'humanité a été fait !
    --
    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

  18. #38
    Membre averti
    Femme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 179
    Points : 350
    Points
    350
    Par défaut
    il n'en reste pas moins, mais ce n'est que mon humbre avis, que ça reste un peu "bizarre' comme manière de faire, le rexx carrément dans le )PROC du panel.

    ci joint un sample qui evite deja tous les VPUT/VGET et autres trucs du genre

    le rexx
    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
    /*REXX*/                                            
    /*TRACE(A)*/                                        
    MENU:                                           
                    
       do forever                                       
          y=msg("off")                                  
          address ispexec "display panel(paba48)"       
          if rc ^= 0 then do                            
             exit                                       
          end                                           
          msgerr = ''                                   
          upper choix   
        ......                                
       end
    choix etant une des zones de mon panel

    le panel
    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
    )ATTR DEFAULT(%+_)                                                              
     % TYPE(TEXT)   INTENS(HIGH)                      COLOR(GREEN)                  
     + TYPE(TEXT)                                     COLOR(BLUE)   SKIP(ON)        
     ù TYPE(TEXT)                                     COLOR(GREEN)  SKIP(ON)        
     ° TYPE(TEXT)                                     COLOR(TURQ)   SKIP(ON)        
     £ TYPE(TEXT)   INTENS(HIGH)                      COLOR(YELLOW) SKIP(ON)        
     § TYPE(OUTPUT) INTENS(LOW)  CAPS(OFF)                         SKIP(ON)         
     $ TYPE(OUTPUT)              CAPS(OFF)            COLOR(PINK)   SKIP(ON)        
     ¨ TYPE(OUTPUT) INTENS(HIGH) CAPS(OFF) JUST(LEFT) COLOR(GREEN)                  
     ! TYPE(INPUT)  INTENS(HIGH) CAPS(ON)  PADC('_')  COLOR(RED)                    
     ^ TYPE(INPUT)               CAPS(ON)  PADC('_')  COLOR(GREEN)                  
     _ TYPE(INPUT)  INTENS(HIGH) CAPS(ON)  PADC('_')  JUST(LEFT) COLOR(TURQ)        
     µ TYPE(INPUT) INTENS(NON)                                                      
    )BODY  SMSG(MSGERR) LMSG(MSGERR)                                                
    ùPABA48  °-------------titre      --------             
    $MSGERR                                                                         
    £Choix : _Z+                                                                    
    £Identifiant  : _Z       +                                              
                                                                                    
    ..... blablabla ....                                                       
                                                                                    
    )INIT                                                                           
    .ZVARS = '(CHOIX,IDENT)'                                                        
    .CURSOR = CHOIX                                                                 
    )PROC   
    .CURSOR = CHOIX 
    )END

  19. #39
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 767
    Points : 10 764
    Points
    10 764
    Par défaut
    Bonjour,

    Je partage l'avis ci-dessus à savoir un REXX dissocié du PANEL. Cela simplifie grandement la lecture. Dès lors le REXX assure l'affichage du PANEL la première fois ainsi que les appels (donc une fois que le panel est affiché) aux fonctions du PANEL.

    Ainsi dans le REXX j'ai toujours un :

    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
    IF OPTION = ' ' THEN                            
       DO                                           
         CALL APPEL_INIT                            
       END                                          
    ELSE                                            
    /* SINON ON TRAITE L'OPTION CHOISI A L'ECRAN */ 
       CALL APPEL_OPT                               
    ;                                               
    EXIT                                            
    
    
    APPEL_INIT:                             
                                            
    ADDRESS ISPEXEC "SELECT PANEL(PANELNAM)"
    EXIT
    (On sait que c'est le premier appel par la valeur de "OPTION")

    Et ensuite en fonction des OPTIONS saisies les PROC associées (genre submit de JCL ...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    APPEL_OPT:                                      
                                                    
    SELECT                                          
    /* ON DISPATCH EN FONCTION DE L'OPTION CHOISI */
       WHEN OPTION = '1'  THEN CALL OPTION1         
       WHEN OPTION = '3'  THEN CALL OPTION2         
       WHEN OPTION = '4'  THEN CALL OPTION3         
       WHEN OPTION = '2'  THEN CALL OPTION5         
    ...

  20. #40
    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
    Mais dans tous les cas il y aura des VGET/VPUT pour récupérer les "autres" champs du panel ?
    Hormis l'option, si le panel doit contenir des valeurs dans tous les sens... on est bien "obligé" d'utilise VGET/VPUT, non ?

    Et le REXX principal est rappelé automatiquement "tout" le temps si j'ai bien compris (et je le constate)...
    Mais alors REINIT est utilisé à quel moment ? Lors d'un appel à REFRESH ?

    (.CURSOR indique juste l'endroit où l'on placera le curseur lors de l'affichage du panel)
    --
    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

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. Définition de panels ISPF
    Par tsukasa_ dans le forum z/OS
    Réponses: 2
    Dernier message: 09/04/2010, 09h20
  2. panel ISPF et rexx
    Par qqoos dans le forum z/OS
    Réponses: 2
    Dernier message: 24/02/2010, 10h54
  3. Réponses: 2
    Dernier message: 11/08/2009, 17h09
  4. Réponses: 0
    Dernier message: 17/02/2009, 15h37
  5. Réponses: 4
    Dernier message: 03/02/2009, 14h02

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