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

  1. #1
    Candidat au Club
    Comment travailler en COBOL Ibm/Z avec un panel ispf
    Bonjour,
    J'ai un programme cobol qui " devrait montrer " un panel ispf :
    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
       PROCESS DYNAM
       IDENTIFICATION DIVISION.                             
       PROGRAM-ID.    CBLEX003                              
       ENVIRONMENT DIVISION.                                
       DATA DIVISION.                                       
       WORKING-STORAGE SECTION.                             
       77 PST1 PIC X(8) VALUE 'LIBDEF  '.                     
       77 PST2 PIC X(8) VALUE 'ISPPLIB '.                    
       77 PST3 PIC X(8) VALUE 'DATASET '.                    
       77 PST4 PIC X(15) VALUE 'Z30952.MINE.GML'.           
       77 PST5 PIC X(16) VALUE 'DISPLAY PANEL01'.           
       77 ISPLINK PIC X(8) VALUE 'ISPLINK '.                 
       PROCEDURE DIVISION.                                  
           CALL ISPLINK USING PST1 PST2 PST3 PST4. 
           CALL "ISPLINK" USING PST5.         
           STOP RUN.
    Je le compile et link avec un jcl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //CBLCL    JOB 1,NOTIFY=&SYSUID,MSGLEVEL=(1,1)         
    //***************************************************/ 
    //SETVAR   SET THEPGM=CBLEX005                         
    //SETVAR   SET WHERES=&SYSUID..MINE.GML                
    //SETVAR   SET LINKRU=&SYSUID..PATO                    
    //***************************************************/ 
    //COBRUN   EXEC IGYWCL                                 
    //COBOL.SYSIN  DD DSN=&WHERES(&THEPGM),DISP=SHR        
    //LKED.SYSLMOD DD DSN=&LINKRU(&THEPGM),DISP=SHR
    Le résultat est RC=0 (donc compilation et link sans erreur)
    Mais quand je lance le programme je reçois une erreur RC=20. Le jcl pour lancer le programme cobol :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //CBLRU1   JOB 1,NOTIFY=&SYSUID,MSGLEVEL=(1,1)                  
    //***************************************************/          
    //SETVA1   SET THEPGM=CBLEX003                                  
    //SETVA2   SET LINKRU=&SYSUID..PATO(&THEPGM)                    
    //***************************************************/          
    //STEP2    EXEC PGM=&THEPGM                                     
    //STEPLIB   DD DSN=&LINKRU,DISP=SHR                             
    //SYSOUT    DD SYSOUT=*,OUTLIM=15000                            
    //CEEDUMP   DD DUMMY                                            
    //SYSUDUMP  DD DUMMY
    Le panel est très simple et fonctionne parfaitement dans ispf 6.7 et dans un programme REXX :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    )ATTR DEFAULT(+_%)                                                      
    % TYPE(TEXT) COLOR(PINK) INTENS(HIGH)                                 
    $ TYPE(INPUT) INTENS(HIGH) PAD(_)                                     
    ! TYPE(INPUT) INTENS(LOW) PAD(' ') 
    )BODY                                                                   
    %-------------------- *TITLE FOR ENTRY PANEL* --------------------------
    %COMMAND ===>_ZCMD                                                      
    %                                                                       
    &ZUSER    &ZTIME             &ZSCREEN    &ZWIDTH  &ZUS4S7               
    +   THIS DIRECTION LINE TELLS THE USER HOW TO USE THE PANEL:            
    %XXXXX:_X     %YYY:$YYY          %ZZZ:$ZZ%AAAAAAAA:$AAAAAAAA  +         
    )END
    Ma question est : qu'est-ce qu'il manque au programme cobol ou au jcl pour que ça fonctionne ?

  2. #2
    Membre expert
    Un PANEL ISPF, comme son nom l'indique, est un écran 3270 affichable sous ISPF, l'application interactive du z/OS.

    Quel est l'intérêt de vouloir le lancer en batch ?

  3. #3
    Candidat au Club
    Citation Envoyé par Luc Orient Voir le message
    Un PANEL ISPF, comme son nom l'indique, est un écran 3270 affichable sous ISPF, l'application interactive du z/OS.
    Quel est l'intérêt de vouloir le lancer en batch ?
    Je ne sais pas quoi vous dire, moi ce que je veux c'est développer une application en cobol qui demande un code et cherche les données client dans une table sql pour ensuite les présenter ou erreur. Dans un AS/400 c'est très simple : 1 fichier type dspf (correspondant à un panel pour z/os), 1 table sql et un programme cobol qui montre l'écran avec la question et la réponse si il y en a sinon erreur. J'ai un script REXX qui fait l'appel a un panel directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    /* rexx to display panel1 */                              
    "ispexec libdef ispplib dataset id('Z30952.MINE.GML')"    
    /*show*/                                                  
    "ispexec addpop"                                          
    "Ispexec display panel(panel01)"                          
    if rc\=0 then do                                          
    say 'command cancelled'                                   
    exit                                                      
    end                                                       
    else                                                      
    say 'your name is' X                                      
    exit
    Ou alors pour ce que je veux il faut un développement CICS ?
    Merci

  4. #4
    Membre expert
    Citation Envoyé par seoirse Voir le message
    ... J'ai un script REXX qui fait l'appel a un panel directement
    Vous pouvez très bien appeler le programme COBOL dans le script REXX.


    Ou alors pour ce que je veux il faut un développement CICS ?
    Non là c'est le marteau pilon pour écraser une mouche ...

  5. #5
    Candidat au Club
    Citation Envoyé par Luc Orient Voir le message
    Vous pouvez très bien appeler le programme COBOL dans le script REXX.
    Non là c'est le marteau pilon pour écraser une mouche ...
    Merci pour vos commentaires, voici mes réponses :
    Pour CICS compris !
    Pour REXX compris aussi. Mais je continue à vouloir savoir comment tout faire avec du COBOL !
    Si je le fais en batch, il faut d'abord lancer l'entourage ispf (libdef, display) et après lancer le programme, correcte ? Mais si je fais les appels dynamiquement (dans le COBOL) il faudrait que ça fonctionne sans rien d'autre non ?
    Puisque dans tous les manuels ils parlent de call "isplink" using ... ou call "ispexec" using ... sans rien dire d'autre. Il semblerait qu'il n'y ait pas autre façon de faire !
    Je ne comprends pas pourquoi il n'y a pas d'exemples exploitables simples pour une chose qui a beaucoup de demande.

###raw>template_hook.ano_emploi###