Capture d’écran en RPGLE

Ce programme de service (BUFSCRSRV sqlrpgle) permet d’effectuer des captures écrans sur AS400 et de les éditer.

Il contient 3 procédures exportées :

 RtvSrc pour capturer l’écran (ou une partie de l’écran).

 BufIns qui inscrit le buffer dans la base.

 BufPrt qui permet d’éditer la capture.

Exemple d’utilisation

En général il faut enchainer RtvScr et BufIns dans un programme interactif pour capturer et enregistrer la capture dans la base (dans le fichier BUFSRC).
La clef de la capture (un TIMESTAMP associé à  un profil utilisateur) est ensuite transmise au programme (par paramètres)chargé de l’édition.
Il suffit d’invoquer BufPrt dans le programme d’édition pour imprimer la capture (le prtf est interne au pgm de service).

 Exemple de programme qui effectue la capture, l’inscrition et l’édition en utilisant BUFSCRSRV. Il reçoit en paramètre un caractère qui correspond au type de l’écran (‘1’=>80 colonnes, ‘2’=>132 colonnes).

     H copyright('Serge GOMES 2005')
     H Option( *SrcStmt: *NoDebugIO )
      *-------------------------------------------------------------------------
      *   Récup du buffer de l'écran encour
      *    Ce PGM utilise le programme de service BUFSCRSRV
      *-------------------------------------------------------------------------
      *    Compilation => CrtRPGMod Module(YourLib/CAPSCR)
      *                             SrcFile(YourLib/QRPGLESRC)
      *                   CrtPgm    Pgm(YourLib/CAPSCR)
      *                             BndSrvPgm(YourLib/BUFSCRSRV)
      *                             ActGrp(*New)
      *-------------------------------------------------------------------------
      * Paramètres :
      *    TypEcran               1A            '1'=> 80*24     '2'=> 132*27
      *-------------------------------------------------------------------------
      /COPY SERGE/PROTOTYPE,BUFSCRSRV
     DP_type           S              1A
     DW_coldeb         s              2  0
     DW_colfin         s              2  0
     DBufferEcran      S           3565A
     DW_time           S               z
     DW_supbuf         s               n   inz(*on)
     DW_cadre          s               n   inz(*on)
     C     *Entry        Plist
     C                   Parm                    P_type
      *Å¡Capture Buffer
     C                   Eval      BufferEcran=RtvScr(
     C                             P_type)     
      *Å¡Inscription Buffer
     C                   If        BufferEcran <> *blank
     C                   Eval      W_time=BUFINS(P_type:BufferEcran)
      *Å¡Impression buffer
     C                   Callp     BUFPRT(W_time)
     C                   EndIf
     C                   Eval      *InLR = *On 

Pour effectuer une capture ecran et son édition en une seule instruction =>

     C                   callp     BUFPRT(BUFINS(P_TYPE:(RTVSRC(P_TYPE))))  

 Compilation de l’exemple

CRTPGM PGM(BIB/CAPSCR) BNDSRVPGM(BIB/BUFSCRSRV) ACTGRP(*NEW)


Installation du programme de service


 Source du liage (BIB/QSRVSRC)

Si le fichier source QSRVSRC n’existe pas il faut le créer.

STRPGMEXP PGMLVL(*CURRENT) SIGNATURE(‘BUFSCRSRV_V01’)
EXPORT SYMBOL(« RTVSCR »)
EXPORT SYMBOL(« BUFPRT »)
EXPORT SYMBOL(« BUFINS »)
ENDPGMEXP

 Création du fichier BUFSCR

(remplacer SERGE par votre bib)

CREATE TABLE SERGE/BUFSCR
(USRSCR CHAR ( 10) NOT NULL WITH DEFAULT,
TITSCR CHAR (130 ) NOT NULL WITH DEFAULT,
TIMSCR TIMESTAMP NOT NULL WITH DEFAULT,
TYPSCR CHAR(1) NOT NULL WITH DEFAULT,
BUFSCR CHAR (3565 ) NOT NULL WITH DEFAULT)

CREATE UNIQUE INDEX SERGE/BUFSCR1 ON SERGE/BUFSCR
(USRSCR, TIMSCR)

 Création du programme de service

— Téléchargez le code source bufsrcsrv.txt

— Copiez bufsrcsrv.txt dans un membre de type sqlrpgle de votre fichier source (qrpgsrc).

— Copiez les prototypes ci-dessous et placez les dans votre fichier source.


PROTOTYPE

   *------------------------------------------------------------------*
      *      CAPTURE DU BUFFER ECRAN CONTENU  RTVSCR                     *
      *------------------------------------------------------------------*
      *    Récup du buffer de l'écran encours  RTVSCR
      *    Valeur de renvoi => 3565A (buffer Ecran)
      *    Paramètres =>
      *      1A  Type Ecran '1'=80 colonnes '2'=132colones    OBLIGATOIRE
      *      2P0 Ligne début capture                          OPTIONNEL
      *      2P0 Ligne fin   capture                          OPTIONNEL
      *    272A  Erreur                                       OPTIONNEL
      *------------------------------------------------------------------*
      *  - RtvScr  Capture écran
      /IF DEFINED(BUFSRCSRV)
      /EOF
      /ENDIF
      /DEFINE BUFSRCSRV
     D RtvScr          PR          3565A
     D                                1A
     D                                2  0 Options(*NoPass)
     D                                2  0 Options(*NoPass)
     D                              272    Options(*NoPass)

      *------------------------------------------------------------------*
      *      EDITION DU BUFFER ECRAN CONTENU  BUFPRT                     *
      *------------------------------------------------------------------*
      * PARAMETRES :                                                     *
      *    1 - TIMESTAMP capture                                  26   Z *
      *    2 - Colonne de début de la capture                      2;0   *
      *    3 - Colonne de fin de la capture                        2;0   *
      *    4 - Editer cadre capture                                    N *
      *    5 - Supprimer le buffer d'écran dans BASBUF O/N             N *
      *    6 - User de la capture                                 10   A *
      *------------------------------------------------------------------*
     D BufPrt          PR
     D P_time                          z
     D P_coldeb                       2  0   options(*NoPass)
     D P_colfin                       2  0   options(*NoPass)
     D P_cadre                         n     options(*NoPass)
     D P_supbuf                        n     options(*NoPass)
     DP_user                         10a     options(*NoPass)

      *------------------------------------------------------------------*
      *      Enregistrement du buffer écran dans la BUFSCR               *
      *------------------------------------------------------------------*
      *    Valeur de renvoi => TIMESTAMP constituant la clef d'accès
      *    Paramètres =>
      *      1A  Type Ecran '1'=80 colonnes '2'=132colones    OBLIGATOIRE
      *   3565A  Buffer écran                                 OBLIGATOIRE
      *    136A  Titre capture                                OPTIONNEL
      *     10A  User  capture                                OPTIONNEL
      *------------------------------------------------------------------*
     D BufIns          PR              z
     D P_type                         1A
     D P_buffer                    3565A
     D P_titre                      136A   Options( *NoPass )
     D P_user                        10A   Options( *NoPass )

— Compilation

* Création du module
CRTSQLRPGI ??OBJ(BIB/BUFSCRSRV)
?*SRCFILE(BIB/QRPGLESRC)
?*SRCMBR(BUFSCRSRV)
?*OBJTYPE(*MODULE)
??REPLACE(*YES)

* Création SRVPGM
CRTSRVPGM SRVPGM(SERGE/BUFSCRSRV)
SRCFILE(QSRVSRC)
ACTGRP(*CALLER)

Descritions des procédures de BUFSCRSRV

 RtvScr permet de capturer l’écran.

— Cette procédure renvoie une chaine de 3565 caractères contenant la capture.

— Le 1er paramètre, obligatoire correspond au type d’écran candidat à  la capture. ‘1’= 80 col et ‘2’ = 132 col.

— Les 2èmes et 3èmes paramètres optionnels (par défaut tout l’écran est capturé) permettent d’indiquer une ligne de début et une ligne de fin pour la capture, le reste de l’écran sera ignoré.

— Le 4ème paramètre concerne la gestion des erreurs.

 BufIns permet d’inscrire le buffer dans la base (fichier BUFSCR).

— Le buffer capturé peut être stocké (temporairement) dans le fichier BUFSRC. La procédure renvoi un TIMESTAMP (lng 26) si l’inscription à  réussie.

— 1er paramètre : Type d’écran (‘1’ ou ‘2’)

— 2ème paramètre : Ecran capturé (chaine de 3565A)

— Le 3ème paramètre est optionnel. Vous pouvez indiquer un titre pour votre capture(136A). Ce titre apparaîtera (si il est renseigné et <> *blank) sur l’état.

— Le 4ème paramètre vous permet d’indiquer un user pour la capture (par défaut c’est l’utilisateur du job en cours qui est utilisé).

 BufPrt permet d’éditer la capture et ne renvoie aucune valeur.

— Le 1er paramètre, obligatoire est le TIMESTAMP récupéré par BufIns.

— Les 2èmes et 3èmes paramètres optionnels (par défaut tout l’écran est capturé) permettent d’indiquer une colonne de début et une colonne de fin pour la capture, le reste de l’écran sera ignoré.

— Le 4ème paramètre permet de tracer un cadre autour de la capture (*on=cadre *off=pas de cadre). Par défaut il y a un cadre.

— Le 5ème paramètre permet d’indiquer si on souhaite supprimer le buffer du fichier BUFSRC (*on=suppression *off=pas de suppression). Cela permet d’utiliser la capture pour plusieurs impressions. Si ce paramètre n’est pas renseigné le buffer est supprimé à  la fin de l’édition.

— Le 6ème paramètre correspond à  l’user de la capture. Si vous avez indiqué un user spécifique lors de l’inscrition du buffer, vous devez renseigner ce paramètre avec le même user. Par défaut l’utilisateur du job est utilisé.

Téléchargement
BUFSCRSRV

Il existe aussi une version ADELIA de capture d’écran Voir la version ADELIA

Print Friendly, PDF & Email

Attachments