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

AS/400 Discussion :

Mode Restreint via WRKJOBSCDE


Sujet :

AS/400

  1. #41
    Nouveau membre du Club
    D'accord je vais faire ça avec le DSPLOG.

    En ce qui concerne le DSPTAP ? tu le fais manuellement à chaque fois ou tu l'automatise pour qu'il sorte sur une imprimante ou tu le génère en PDF ? Car actuellement je fais un DSPTAP (*OUTFILE) mais je ne le trouve pas terrible (moins parlant) celui la comparé au dsptap *PRINT.

  2. #42
    Nouveau membre du Club
    J'aimerai bien pouvoir convertir le résultat cette commande : DSPTAP DEV(TAP01) DATA(*SAVRST) OUTPUT(*PRINT) en .CSV ou en .PDF vous pensez que c'est possible ? Car Si je fais un DSPTAP dans une OUTFILE j'arrive à me le générer en PDF par contre le contenu dans un outfile n'est pas très parlant.

    Si vous avez une idée pour que je puisse récupérer mon spoule généré pas le *PRINT je suis preneur.

  3. #43
    Membre éclairé
    Bonjour,

    Tu crées une session imprimante dont l'imprimante en sortie est un outil comme PDFCReator par exemple.
    Ou si tu utilises I Access Client Solutions et un mac, directement en PDF.

  4. #44
    Nouveau membre du Club
    D'accord mais tu peux l'automatiser ca la création du spoule en PDF ou c'est obligatoirement manuel ?

  5. #45
    Membre éclairé
    Drôle de question.
    La sortie spoule se fait automatiquement sur une session, mais il faut que la session soit active pour que le document soit généré.

  6. #46
    Nouveau membre du Club
    Non je me suis mal exprimé, désolé.

    C'est bon j'ai réussi, dans mon CL je génére le spoule que j'enregistre directement sur IFS en PDF sans passer par une imprimante en PDF.

  7. #47
    Nouveau membre du Club
    Est-il possible via un CL de récupérer le contenu d'une DTAARA afin de le mettre dans un spoule ?

  8. #48
    Membre régulier
    DSPDTAARA avec option *PRINT
    Ou RTVDTAARA et transmission de la valeur dans ton programme d'impression

  9. #49
    Nouveau membre du Club
    Je me permet de vous re-soliciter car j'aimerai savoir si c'est possible via un CL de lancer une tache présente dans le WRKJOBSCDE ?

    Car je vous explique ma problématique, lorsque j'effectue mes sauvegardes il faut avant que les sauvegardes commence que j'arrête certain programme qui tourne comme notre application de cluster entre nos machine. J'ai un CL pour arrêter et démarrer cette application de réplication mais actuellement le CL est lancé via un WRKJOBSCDE avec un compte spécifique à l'applicatif qui n'est pas QSECOFR hors mon CL de sauvegarde lui est lancé en tant que QSECOFR.

    J'aimerai donc garder la tache planifié pour l'arrêt de la réplication et d'y faire un appel via mon CL de sauvegarde, le but étant que mon CL de sauvegarde contrôle l'ensemble des tâches à effectuer.

  10. #50
    Membre expérimenté
    Bonjour.
    Il n'y a pas de commande pour exécuter un travail du scheduler. Vous avez juste l'option 10 mais en interactif depuis la commande wrkjobscde.
    Par contre, j'avais trouvé il y a de cela un certain temps, un petit programme qui fait cela.
    Programme SBMJOBSCDE :
    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
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    PGM       (&RQSJOB &RQSPMT &RQSJOBD &RQSJOBQ &RQSOUTQ &RQSMSGQ &RQSUSER)
                                                                           
    DCL        &RQSJOB  *CHAR 10                                           
    DCL        &RQSPMT  *CHAR  4                                           
    DCL        &RQSJOBD *CHAR 20                                           
    DCL        &RQSJOBQ *CHAR 20                                           
    DCL        &RQSOUTQ *CHAR 20                                           
    DCL        &RQSMSGQ *CHAR 20                                           
    DCL        &RQSUSER *CHAR 10                                           
                                                                           
    /* ----------------------------------------------------------------- */
    /*        Soumission d'un travail configuré dans le scheduler        */
    /* ----------------------------------------------------------------- */
                                                                           
    DCL        &USNAME *CHAR 10 'SBMJOBSCDE'                               
    DCL        &USLIB  *CHAR 10 'QTEMP     '                               
    DCL        &USRSPC *CHAR 20                                            
    DCL        &USFMT  *CHAR  8 'SCDL0200'                                 
    DCL        &USENTR *DEC  10                                            
    DCL        &USOFFS *DEC  10                                            
    DCL        &USCONT *CHAR 16             
    DCL        &USSTRT *DEC   5             
    DCL        &USDATA *CHAR    X'1000'     
    DCL        &USSIZE *CHAR  4 X'00001000' 
                                            
    DCL        &ERROR  *CHAR 16 X'00000010' 
    DCL        &JOBTYP *CHAR  1             
                                            
    DCL        &SCCMD  *CHAR 512            
    DCL        &SCCMDL *DEC    3            
    DCL        &SCINFO *CHAR   1            
    DCL        &SCJOB  *CHAR  10            
    DCL        &SCJOBQ *CHAR  10            
    DCL        &SCJBQL *CHAR  10            
    DCL        &SCJOBD *CHAR  10            
    DCL        &SCJBDL *CHAR  10            
    DCL        &SCMSGQ *CHAR  10            
    DCL        &SCMSGL *CHAR  10            
    DCL        &SCUSER *CHAR  10            
                                            
    DCL        &CMD    *CHAR 4096           
                                                                   
    DCL        &ABEND  *LGL                                        
    DCL        &MSGID  *CHAR    7                                  
    DCL        &MSGDTA *CHAR  256                                  
    DCL        &MSGF   *CHAR   10                                  
    DCL        &MSGFL  *CHAR   10                                  
    DCL        &MSGKEY *CHAR    4                                  
    DCL        &RTNTYP *CHAR    2                                  
    DCL        &PGM    *CHAR   10                                  
    DCL        &SENDER *CHAR   80                                  
                                                                   
    MONMSG     CPF0000 *N GOTO ABEND                               
                                                                   
    /* Récupère le nom du programme courant */                     
    SNDPGMMSG  ' ' TOPGMQ(*SAME) MSGTYPE(*INFO) KEYVAR(&MSGKEY)    
    RCVMSG     PGMQ(*SAME) MSGTYPE(*INFO) SENDER(&SENDER) RMV(*YES)
    CHGVAR     &PGM %SST(&SENDER 56 10)                            
                                                                   
    /* Création d'un user space */                                 
    CHGVAR     &USRSPC  (&USNAME !! &USLIB)                        
    CALL       QUSCRTUS (&USRSPC ' ' &USSIZE ' ' *ALL &ERROR)      
    MONMSG     CPF0000                                                 
                                                                       
    /* Récupère la définition du travail */                            
    CALL       QWCLSCDE (&USRSPC &USFMT &RQSJOB &USCONT &ERROR)        
    CALL       QUSRTVUS (&USRSPC x'00000001' &USSIZE &USDATA &ERROR)   
                                                                       
    /* A-t-on récupéré une entrée ? */                                 
    CHGVAR     &USENTR  %BIN(&USDATA 133 4)                            
    IF         (&USENTR < 1) DO                                        
               CHGVAR &MSGDTA ('Travail planifié' !> &RQSJOB !> +      
                               'non trouvé ...')                       
               SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGTYPE(*DIAG) + 
                         MSGDTA(&MSGDTA)                               
               GOTO ESCAPE                                             
               ENDDO                                                   
                                                                       
    /* Récupère l'entrée du user space */                              
    CHGVAR     &USOFFS  %BIN(&USDATA 125 4)                            
    CHGVAR     &USSTRT (&USOFFS + 1)                                   
    CHGVAR     &SCINFO  %SST(&USDATA  &USSTRT 1)                       
    CHGVAR     &USSTRT (&USOFFS + 2)                                   
    CHGVAR     &SCJOB   %SST(&USDATA  &USSTRT 10)     
    CHGVAR     &USSTRT (&USOFFS + 198)                
    CHGVAR     &SCJOBQ  %SST(&USDATA  &USSTRT 10)     
    CHGVAR     &USSTRT (&USOFFS + 208)                
    CHGVAR     &SCJBQL  %SST(&USDATA  &USSTRT 10)     
    CHGVAR     &USSTRT (&USOFFS + 527)                
    CHGVAR     &SCJOBD  %SST(&USDATA  &USSTRT 10)     
    CHGVAR     &USSTRT (&USOFFS + 537)                
    CHGVAR     &SCJBDL  %SST(&USDATA  &USSTRT 10)     
    CHGVAR     &USSTRT (&USOFFS + 547)                
    CHGVAR     &SCUSER  %SST(&USDATA  &USSTRT 10)     
    CHGVAR     &USSTRT (&USOFFS + 557)                
    CHGVAR     &SCMSGQ  %SST(&USDATA  &USSTRT 10)     
    CHGVAR     &USSTRT (&USOFFS + 567)                
    CHGVAR     &SCMSGL  %SST(&USDATA  &USSTRT 10)     
    CHGVAR     &USSTRT (&USOFFS + 641)                
    CHGVAR     &SCCMDL  %BIN(&USDATA  &USSTRT 4)      
    CHGVAR     &USSTRT (&USOFFS + 645)                
    CHGVAR     &SCCMD   %SST(&USDATA  &USSTRT &SCCMDL)
                                                      
    /* Affichage du prompt ? */                       
    RTVJOBA    Type(&JOBTYP)                                                
    IF         (&JOBTYP='1') DO                                             
         IF    (&RQSPMT='*YES') DO                                          
               CHGVAR &CMD '?'                                              
         ENDDO                                                              
    ENDDO                                                                   
                                                                            
    /* Création de la commande complète */                                  
    CHGVAR     &CMD (&CMD !< 'SBMJOB' !> &RQSJOB)                           
    IF         (&RQSJOBD *EQ '*SCDJOB' *AND &SCJBDL *EQ ' ') DO             
    CHGVAR     &CMD (&CMD !> 'JOBD(' !<                   &SCJOBD !< ')')   
    ENDDO                                                                   
    IF         (&RQSJOBD *EQ '*SCDJOB' *AND &SCJBDL *NE ' ') DO             
    CHGVAR     &CMD (&CMD !> 'JOBD(' !< &SCJBDL !< '/' !< &SCJOBD !< ')')   
    ENDDO                                                                   
    IF        (&RQSJOBD *NE '*SCDJOB' *AND %SST(&RQSJOBD 11 10) *EQ ' ') DO 
    CHGVAR     &CMD (&CMD !> 'JOBD(' !< %SST(&RQSJOBD  1 10) !< ')')        
    ENDDO                                                                   
    IF        (&RQSJOBD *NE '*SCDJOB' *AND %SST(&RQSJOBD 11 10) *NE ' ') DO 
    CHGVAR     &CMD (&CMD !> 'JOBD(' !< %SST(&RQSJOBD 11 10) !< '/' +       
                                     !< %SST(&RQSJOBD  1 10) !< ')')        
    ENDDO                                                                   
    IF         (&RQSJOBQ *EQ '*SCDJOB' *AND &SCJBQL *EQ ' ') DO             
    CHGVAR     &CMD (&CMD !> 'JOBQ(' !<                   &SCJOBQ !< ')')   
    ENDDO                                                                   
    IF         (&RQSJOBQ *EQ '*SCDJOB' *AND &SCJBQL *NE ' ') DO             
    CHGVAR     &CMD (&CMD !> 'JOBQ(' !< &SCJBQL !< '/' !< &SCJOBQ !< ')')   
    ENDDO                                                                   
    IF        (&RQSJOBQ *NE '*SCDJOB' *AND %SST(&RQSJOBQ 11 10) *EQ ' ') DO 
    CHGVAR     &CMD (&CMD !> 'JOBQ(' !< %SST(&RQSJOBQ  1 10) !< ')')        
    ENDDO                                                                   
    IF        (&RQSJOBQ *NE '*SCDJOB' *AND %SST(&RQSJOBQ 11 10) *NE ' ') DO 
    CHGVAR     &CMD (&CMD !> 'JOBQ(' !< %SST(&RQSJOBQ 11 10) !< '/' +       
                                     !< %SST(&RQSJOBQ  1 10) !< ')')        
    ENDDO                                                                   
    CHGVAR     &CMD (&CMD !> 'CMD( ' !< %SST(&SCCMD 1 &SCCMDL)    !< ')')   
    IF         (&RQSUSER *EQ '*SCDJOB') DO                                  
    CHGVAR     &CMD (&CMD !> 'USER(' !< &SCUSER                   !< ')')   
    ENDDO                                                                   
    IF         (&RQSUSER *NE '*SCDJOB') DO                                  
    CHGVAR     &CMD (&CMD !> 'USER(' !< &RQSUSER                  !< ')')   
    ENDDO                                                                   
    IF         (&RQSMSGQ *EQ '*SCDJOB' *AND &SCMSGL *EQ ' ') DO             
    CHGVAR     &CMD (&CMD !> 'MSGQ(' !<                   &SCMSGQ !< ')')   
    ENDDO                                                                   
    IF         (&RQSMSGQ *EQ '*SCDJOB' *AND &SCMSGL *NE ' ') DO             
    CHGVAR     &CMD (&CMD !> 'MSGQ(' !< &SCMSGL !< '/' !< &SCMSGQ !< ')')   
    ENDDO                                                                   
    IF        (&RQSMSGQ *NE '*SCDJOB' *AND %SST(&RQSMSGQ 11 10) *EQ ' ') DO 
    CHGVAR     &CMD (&CMD !> 'MSGQ(' !< %SST(&RQSMSGQ  1 10) !< ')')        
    ENDDO                                                                   
    IF        (&RQSMSGQ *NE '*SCDJOB' *AND %SST(&RQSMSGQ 11 10) *NE ' ') DO 
    CHGVAR     &CMD (&CMD !> 'MSGQ(' !< %SST(&RQSMSGQ 11 10) !< '/' +       
                                     !< %SST(&RQSMSGQ  1 10) !< ')')        
    ENDDO                                                                   
    IF         (&RQSOUTQ *EQ '*SCDJOB') DO                                  
    CHGVAR     &CMD (&CMD !> 'OUTQ(*JOBD)')                                 
    ENDDO                                                                   
    IF        (&RQSOUTQ *NE '*SCDJOB' *AND %SST(&RQSOUTQ 11 10) *EQ ' ') DO 
    CHGVAR     &CMD (&CMD !> 'OUTQ(' !< %SST(&RQSOUTQ  1 10) !< ')')        
    ENDDO                                                                   
    IF        (&RQSOUTQ *NE '*SCDJOB' *AND %SST(&RQSOUTQ 11 10) *NE ' ') DO 
    CHGVAR     &CMD (&CMD !> 'OUTQ(' !< %SST(&RQSOUTQ 11 10) !< '/' +       
                                     !< %SST(&RQSOUTQ  1 10) !< ')') 
    ENDDO                                                            
    CHGVAR     &CMD (&CMD !> 'SYSLIBL(*SYSVAL) CURLIB(*USRPRF) ')    
    CHGVAR     &CMD (&CMD !> 'INLLIBL(*JOBD) PRTDEV(*JOBD)     ')    
    CHGVAR     &CMD (&CMD !> 'PRTTXT(*JOBD) RTGDTA(*JOBD)      ')    
                                                                     
    /* Soumission du travail */                                      
    CALL       QCMDEXC (&CMD 4096)                                   
                                                                     
    RCVMSG     MSGTYPE(*LAST) MSGF(&MSGF) MSGFLIB(&MSGFL) +          
               MSGID(&MSGID) MSGDTA(&MSGDTA)                         
    SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFL/&MSGF) MSGTYPE(*COMP) +     
               MSGDTA(&MSGDTA)                                       
    RETURN                                                           
                                                                     
    /* Routine de traitement des erreurs */                          
    ABEND:                                                           
    IF         &ABEND  RETURN                                        
    CHGVAR     &ABEND  '1'                                           
                                                                     
    FORWARD:                                                         
    RCVMSG     MSGTYPE(*ANY) MSGID(&MSGID) MSGF(&MSGF) MSGFLIB(&MSGFL) +
               MSGDTA(&MSGDTA) RTNTYPE(&RTNTYP)                         
    IF         (&RTNTYP='02' *OR &RTNTYP='15' *OR &RTNTYP='17') DO      
               SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFL/&MSGF) +             
                         MSGDTA(&MSGDTA) MSGTYPE(*DIAG)                 
    ENDDO                                                               
    IF         (&RTNTYP *NE ' ') GOTO FORWARD                           
                                                                        
    ESCAPE:                                                             
    SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGTYPE(*ESCAPE) +          
               MSGDTA('Fin anormale du programme ...')                  
    ENDPGM
    Commande SBMJOBSCDE :
    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
    CMD        PROMPT('Soumettre un travail schedulé')                    
                                                                          
    PARM       JOB    *NAME MIN(1) PROMPT('Nom du travail')               
    PARM       PROMPT *CHAR 4 PROMPT('Affichage du prompt') +             
                      DFT(*NO) RSTD(*YES) VALUES(*YES *NO)                
    PARM       JOBD   QN PROMPT('Description de travail') +               
                      PMTCTL(*PMTRQS) DFT(*SCDJOB) SNGVAL(*SCDJOB)        
    PARM       JOBQ   QN PROMPT('File d''attente de travaux') +           
                      PMTCTL(*PMTRQS) DFT(*SCDJOB) SNGVAL(*SCDJOB *JOBD)  
    PARM       OUTQ   QN PROMPT('File d''attente en sortie') +            
                      PMTCTL(*PMTRQS) DFT(*SCDJOB) +                      
                      SNGVAL(*SCDJOB *CURRENT *USRPRF *JOBD)              
    PARM       MSGQ   QN PROMPT('File d''attente de messages') +          
                      PMTCTL(*PMTRQS) DFT(*SCDJOB) SNGVAL(*SCDJOB *USRPRF)
    PARM       USER   *NAME PROMPT('Utilisateur') +                       
                      PMTCTL(*PMTRQS) DFT(*SCDJOB) +                      
                      SPCVAL(*SCDJOB *JOBD *CURRENT)                      
    QN: +                                                                 
    QUAL              *NAME                                               
    QUAL              *NAME DFT(*LIBL) SPCVAL(*LIBL) +                    
                      PROMPT('Bibliothèque :')
    En espérant que cela puisse t'aider.
    Note : Comme c'est une soumission de travail, il faudra faire attention à ajouter un dlyjob avant d'arrêter tous les sous-systèmes, car sinon tu arrêtera le travail soumis avant qu'il ne soit terminé.
    Vérifies aussi dans le scheduler si la commande utilisée n'est pas un vulgaire endsbs ...