Forum iSeries, hébergé par xdocs400.com

As400, iSeries, i5, System i, une machine qui évolue pour être de plus en plus puissante.

Vous n'êtes pas identifié(e).

Annonce

ATTENTION : Le système anti-spam est à nouveau opérationnel. Nous avons réactivé les inscriptions.

#1 2018-04-20 12:43:56

maj
Membre
Inscription : 2011-11-24
Messages : 811

Générer un graphique

Bonjour,

Quelqu'un a-t-il déjà généré un graphique dans l'IFS à partir d'un programme ?

Merci
Jean

Hors ligne

#2 2018-06-13 10:45:59

Bilbao400
Membre
Lieu : Bordeaux
Inscription : 2011-01-10
Messages : 370

Re : Générer un graphique

Salut maj,

J'ai retrouvé un test que j'avais fait pour générer un camembert dans un spoule.
Il suffit de faire de placer un OVRPRTF TOSTMF('/home/mygraph.pdf') WSCST(*PDF) avant l'exécution et cela génère un graphique sur l'IFS :

Le PRTF :

[== Indéfini ==]
     A* CRTPRTF FILE(BUCK/GRPRTF) SRCFILE(BUCK/QDDSSRC) DEVTYPE(*AFPDS)
     A*  PAGESIZE(99 132) LPI(9) CPI(10) OVRFLW(90) RPLUNPRT(*NO)
     A*  CHRID(101 037) SPOOL(*YES) OUTQ(*JOB) FILESEP(0) SCHEDULE(*FILEEND)
     A*  LVLCHK(*NO) SHARE(*NO) TEXT('Graphics/text mixed sample')
     A*
     A* Occupies 22 lines
     A          R TEXT                      TEXT('Plain text section')
     A                                      SKIPB(3)
     A                                     2DATE
     A                                    12TIME
     A                                    30'Sample text/graphics'
     A                                    70'GRAPHICS'
     A                                      SPACEA(2)
     A*
     A                                     5'CRTPRTF FILE(yourlib/GRPRTF) +'
     A                                      SPACEA(1)
     A                                     5'SRCFILE(yourlib/QDDSSRC) +'
     A                                      SPACEA(1)
     A                                     5'DEVTYPE(*AFPDS) +'
     A                                      SPACEA(1)
     A                                     5'PAGESIZE(99 132) +'
     A                                      SPACEA(1)
     A                                     5'LPI(9) +'
     A                                      SPACEA(1)
     A                                     5'CPI(10) +'
     A                                      SPACEA(1)
     A                                     5'OVRFLW(90) +'
     A                                      SPACEA(1)
     A                                     5'RPLUNPRT(*NO) +'
     A                                      SPACEA(1)
     A                                     5'CHRID(101 037) +'
     A                                      SPACEA(1)
     A                                     5'SPOOL(*YES) +'
     A                                      SPACEA(1)
     A                                     5'OUTQ(*JOB) +'
     A                                      SPACEA(1)
     A                                     5'FILESEP(0) +'
     A                                      SPACEA(1)
     A                                     5'SCHEDULE(*FILEEND) +'
     A                                      SPACEA(1)
     A                                     5'LVLCHK(*NO) +'
     A                                      SPACEA(1)
     A                                     5'SHARE(*NO) +'
     A                                      SPACEA(1)
     A                                     5'PAGRTT(0) +'
     A                                      SPACEA(1)
     A                                     5'TEXT(''Graphics/text mixed sample-
     A                                      '')'
     A                                      SPACEA(1)
     A* Occupies 4 lines
     A          R AFP                       TEXT('AFP section')
     A                                      SKIPB(30)
     A                                     2'Bar code below'
     A                                      SPACEA(3)
     A                                      FONT(762)
     A            BARCOD        11   O     2
     A                                      BARCODE(CODE3OF9 2 *NOHRI)
     A                                      SPACEA(1) 

Le programme RPG :

[== Indéfini ==]
     H DEBUG
     H* Program GRAPHICS
     H*    Print samples of various GDDM routines mixed with regular
     H*    AFP printer file output.
     H*
     H* Before compiling, ADDLIBLE QDGGM
     H* Before running, ADDLIBLE QDGGM and OVRPRTF TESTGDDMPR SHARE(*YES)
     H*   If you forget to SHARE, then you'll get 2 print files...
     H*
     F* Conventions used -
     F*    Field names - Names beginning with I are of type INTEGER
     F*                  Names beginning with F are of type FLOAT POINT
     F*                  Names beginning with C are of type CHARACTER
     F*                  Arrays of the above types are specified by
     F*                the addition of the letter A after the field
     F*                type designation.
     F*                  In addition, the routine calls to GDDM each
     F*                have their own field name equal to the name of
     F*                the routine being called.
     F*                  Examples follow.
     F*                    Type        Name
     F*                    Integer     I01
     F*                    Floating    F01
     F*                    Character   C10
     F*                    Int array   IA01
     F*                    Flt array   FA01
     F*                    Chr array   CA01
     F*
     FTESTGDDMPRO    E             PRINTER USROPN

     D CA03            S              1    DIM(70)
     D FA01            S             10  2 DIM(7) CTDATA PERRCD(1)              Pie values
     D CA01            S             10    DIM(7) ALT(FA01)
     D/SPACE 2
     D* Integer variables
     D                 DS
     D  I01                    1      4B 0
     D  I02                    5      8B 0
     D  I03                    9     12B 0
     D  I04                   13     16B 0
     D  I05                   17     20B 0
     D  I06                   21     24B 0
     D  I07                   25     28B 0
     D  I08                   29     32B 0
     D  I09                   33     36B 0
     D  I10                   37     40B 0
     D/SPACE 2
     D* Short FP variables
     D                 DS
     D  F01                    1      4P 2
     D  F02                    5      8P 2
     D  F03                    9     12P 2
     D  F04                   13     16P 2
     D  F05                   17     20P 2
     D  F06                   21     24P 2
     D  F07                   25     28P 2
     D  F08                   29     32P 2
     D  F09                   33     36P 2
     D  F10                   37     40P 2
     D/SPACE
     D tProcoptList    S             10I 0 DIM(4)
      *
      * ... Initialize the graphics environment
      *
     D GDDM_FSINIT     PR                  EXTPGM('GDDM')
     D  fonction                      8A   CONST
      *
      * ... Open device
      *
     D GDDM_DSOPEN     PR                  EXTPGM('GDDM')
     D  fonction                      8A   CONST
     D  deviceId                     10I 0 CONST
     D  family                       10I 0 CONST
     D  deviceToken                   8A   CONST
     D  procoptCount                 10I 0 CONST
     D  procoptList                  10I 0 DIM(4)
     D  nameCount                    10I 0 CONST
     D  nameList                     10A   CONST
      *
      * ... Initialize the graphics environment
      *
     D GDDM_DSUSE      PR                  EXTPGM('GDDM')
     D  fonction                      8A   CONST
     D  usage                        10I 0 CONST
     D  deviceId                     10I 0 CONST
      *
      * ... Define the Picture Space
      *
     D GDDM_GSPS       PR                  EXTPGM('GDDM')
     D  fonction                      8A   CONST
     D  width                         4P 2 CONST
     D  height                        4P 2 CONST
      *
      * ... Set current character mode
      *
     D GDDM_GSCM       PR                  EXTPGM('GDDM')
     D  fonction                      8A   CONST
     D  characterMode                10I 0 CONST
      *
      /FREE
       // Initialise graphics
       GDDM_FSINIT('FSINIT');
       // Prepare printer
       tProcoptList(1) = 0;
       tProcoptList(2) = 0;
       tProcoptList(3) = 0;
       tProcoptList(4) = 0;
       GDDM_DSOPEN('DSOPEN'
                  :2
                  :1
                  :'IPDS'
                  :0
                  :tProcoptList
                  :1
                  :'TESTGDDMPR');
       // Using printer
       GDDM_DSUSE('DSUSE'
                 :1
                 :2);
       // Put some text print on printer for testing
       OPEN TESTGDDMPR;
       WRITE TEXT;
       // Put some AFP print on printer for testing
       BARCOD = *ALL'1234';
       WRITE AFP;
       // Aspect ratio 1 to 1
       GDDM_GSPS('GSPS'
                :1
                :1);
       // Generate picture
       //   Picture will be fancy text, a pie chart and a line graph
       //   Do the fancy text
       // SELECT CHAR MODE 3
       GDDM_GSCM('GSCM'
                :3);
      /END-FREE
     C* Character box sixe=20
     C                   CALL      'GDDM'
     C                   PARM      'GSCB    '    GPARM             8
     C                   PARM      20            F01
     C                   PARM      20            F02
     C* LOAD CHAR SET
     C                   CALL      'GDDM'
     C                   PARM      'GSLSS   '    GPARM
     C                   PARM      2             I01
     C                   PARM      'ADMUWGEP'    C08               8
     C                   PARM      65            I02
     C* SELECT CHAR SET
     C                   CALL      'GDDM'
     C                   PARM      'GSCS    '    GPARM
     C                   PARM      65            I01
     C* Fancy name
     C                   CALL      'GDDM'
     C                   PARM      'GSCHAR  '    GPARM
     C                   PARM      1             F01
     C                   PARM      1             F02
     C                   PARM      5             I01
     C                   PARM      'Fancy'       C05               5
     C*   Do the pie chart
     C                   Z-ADD     6             NUMSEG            5 0          # of segments
     C* SET CHART AREA TO 50% OF PICTURE SPACE
     C                   CALL      'GDDM'
     C                   PARM      'CHAREA  '    GPARM
     C                   PARM      0             F01
     C                   PARM      .5            F02
     C                   PARM      0             F03
     C                   PARM      .5            F04
     C* PERCENTAGE PIE CHART
     C                   CALL      'GDDM'
     C                   PARM      'CHSET   '    GPARM
     C                   PARM      'PERPIE'      C06               6
     C* PIE KEY
     C*  Build key text
     C                   MOVE      *BLANKS       SEGKEY           50
     C     1             DO        NUMSEG        X                 5 0
     C     X             MULT      10            Y                 5 0
     C                   SUB       9             Y
     C                   MOVEA     CA01(X)       CA03(Y)
     C                   ENDDO
     C                   MOVEA     CA03          SEGKEY
     C*  Set key attributes
     C                   CALL      'GDDM'
     C                   PARM      'CHKEY   '    GPARM
     C                   PARM      NUMSEG        I01
     C                   PARM      10            I02
     C                   PARM      SEGKEY        C50              50
     C* DRAW THE HEADING
     C                   MOVEL     'Pie Head'    PIEHED            8
     C                   CALL      'GDDM'
     C                   PARM      'CHHEAD  '    GPARM
     C                   PARM      8             I01
     C                   PARM      PIEHED        C08
     C* DRAW THE PIE
     C                   CALL      'GDDM'
     C                   PARM      'CHPIE   '    GPARM
     C                   PARM      1             I01
     C                   PARM      NUMSEG        I02
     C                   PARM                    FA01
     C*
     C* End of picture generation
     C/EJECT
     C* Send picture
     C                   CALL      'GDDM'
     C                   PARM      'FSFRCE  '    GPARM
     C* Terminate processing
     C                   CLOSE     TESTGDDMPR
     C                   CALL      'GDDM'
     C                   PARM      'FSTERM  '    GPARM
     C                   SETON                                        LR
     C                   RETURN
**CTDATA FA01
0000001000Heat
0000002000Power
0000002000Sewage
0000004500Telephone
0000000250Water
0000000200Other
0000000050Other2 

Hors ligne

#3 2018-06-13 11:43:34

maj
Membre
Inscription : 2011-11-24
Messages : 811

Re : Générer un graphique

Bonjour Bilbao,

Merci, mais c'est quoi cette bibliothèque QDGGM ?

Jean

Hors ligne

#4 2018-06-13 13:49:04

Bilbao400
Membre
Lieu : Bordeaux
Inscription : 2011-01-10
Messages : 370

Re : Générer un graphique

Une bonne vielle bibliothèque qui date de la V3 de l'OS/400 qui est installée par défaut sur l'IBMi

Hors ligne

#5 2018-06-13 15:02:46

Skogkatt
Membre
Inscription : 2007-03-16
Messages : 234

Re : Générer un graphique

Bonjour

on peut le faire via du PHP

Cdlt

Hors ligne

#6 2018-06-13 15:57:42

maj
Membre
Inscription : 2011-11-24
Messages : 811

Re : Générer un graphique

Bonjour,

Merci, mais j'aimerais le faire en "natif".

J'ai cherché la bibliothèque QDGGM sur 5 systèmes, elle n'est sur aucun...même google à l'air de ne pas la connaitre...

Jean

Dernière modification par maj (2018-06-13 15:59:27)

Hors ligne

#7 2018-06-14 10:01:10

Bilbao400
Membre
Lieu : Bordeaux
Inscription : 2011-01-10
Messages : 370

Re : Générer un graphique

Tu as raison maj ... Je ne comprends pas comment mon programme peut marcher ? Le programme GDDM n'existe pas sur mon système. Pourtant je génère bien un spoule.

Hors ligne

#8 2018-06-14 13:51:52

Khristian
Membre
Inscription : 2007-02-12
Messages : 262

Re : Générer un graphique

... bonjour

ce n'est pas QDGGM

c'est la bibliothèque QGDDM

Support for graphical data display manager and presentation graphics routines

Bien cordialement


Christian M.

Hors ligne

#9 2018-06-14 14:22:45

Bilbao400
Membre
Lieu : Bordeaux
Inscription : 2011-01-10
Messages : 370

Re : Générer un graphique

Ah ! Effectivement celle là je l'ai !

Y'en a au moins un qui suit !  wink

Merci Chris.

Dernière modification par Bilbao400 (2018-06-14 14:24:02)

Hors ligne

Pied de page des forums