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

DB2 Discussion :

Lecture de la MQ via la nouvelle LBMQM


Sujet :

DB2

  1. #1
    Futur Membre du Club
    Inscrit en
    mai 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : mai 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Lecture de la MQ via la nouvelle LBMQM
    Bonjour,

    Dans le cadre de la nouvelle LIBMQM au lieu de la qmqm, j'essaye d'écrire le pgm ci-dessous qui récupéré les message depuis la MQ:

    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
     Hdatfmt(*eur)
    HDEBUG(*YES)
    DMQOPEN1 PR EXTPROC('MQOPEN')
    D* Connection handle
    D HCONN 10I 0 VALUE
    D* Object descriptor
    D OBJDSC 468A
    D* Options that control the action of MQOPEN
    D OPTS 10I 0 VALUE
    D* Object handle
    D HOBJ 10I 0
    D* Completion code
    D CMPCOD 10I 0
    D* Reason code qualifying CMPCOD
    D REASON 10I 0
    DMQGET1 PR EXTPROC('MQGET')
    D* Connection handle
    D HCONN 10I 0 VALUE
    D* Object handle
    D HOBJ 10I 0 VALUE
    D* Message descriptor
    D MSGDSC 364A
    D* Options that control the action of MQGET
    D GMO 112A
    D* Length in bytes of the Buffer area
    D BUFLEN 10I 0 VALUE
    D* Area to contain the message data
    D BUFFER * VALUE
    D* Length of the message
    D DATLEN 10I 0
    D* Completion code
    D CMPCOD 10I 0
    D* Reason code qualifying CMPCOD
    D REASON 10I 0
    DMQCLOSE1 PR EXTPROC('MQCLOSE')
    D* Connection handle
    D HCONN 10I 0 VALUE
    D* Object handle
    D HOBJ 10I 0
    D* Options that control the action of MQCLOSE
    D OPTS 10I 0 VALUE
    D* Completion code
    D CMPCOD 10I 0
    D* Reason code qualifying CMPCOD
    D REASON 10I 0
    *-- Specification F ------------------------------------------------
    FARC1999IN o e disk
    *****12056 ******
    // Connection handle
    D HCONN S 10I 0
     
    // Options
    D OPTS S 10I 0
     
    // Object handle
    D HOBJ S 10I 0
     
    // Completion codes
    D OpenCode S 10I 0
    // CompletionCode
    D CCODE S 10I 0
     
    // Reasons
    D REASON S 10I 0
    D ConnReason S 10I 0
     
    // Buffer
    D Buffer S 60A
    // Buffer length
    D BUFLEN S 10I 0 INZ(%LEN(Buffer))
     
    // Actual Message length received
    D MESLEN S 10I 0
     
    *****12056 ******
    *-- Specification D ------------------------------------------------
    Das_erreur s 254
    Dai_occurs s 8 0
    * HAU Gestion du message ORDERS jusqu'à 3680 segments de 1000 caractères
    * Das_cpt s 2 0
    Das_cpt s 4 0
    * HAU Fin
    Das_dta s 1000
    D/copy cmqr
    D MQOD DS qualified
    D/COPY CMQODG
    *--- Message Descriptor --------------------------------------------
    D MQMD DS qualified
    D/copy cmqmdr
    *--- Get message options -------------------------------------------
    D mqgmo ds qualified
    I/copy cmqgmor
    *-- Parametre d'entree ---------------------------------------------
    C *entry plist
    C parm as_qmsg 16
    C parm as_perreu 2
    C parm as_reason 10
    C parm as_IDEMET 20
    C parm as_IDDEST 20
    *-- MQCONN implicite sur AS400, utilisation handle par defaut ------
    C* z-add HCDEFH HCONN
    *-- Longueur du message --------------------------------------------
    C z-add 4194304 BUFLEN
    *-- Initialisation du code retour erreur ---------------------------
    C eval as_perreu='00'
    *-- Initialisation du header du message ----------------------------
    C eval as_erreur =' '
    C z-add 0 ai_occurs
    *-- Ouverture de la QMSG -------------------------------------------
    C exsr open_qmsg
    C exsr gest_erreur
    C if REASON<>RCNONE
    C eval as_perreu='02'
    C exsr fin_pgm
    C endif
    C exsr init_qmsg
    *-- Boucle de lecture des messages ---------------------------------
    C exsr get_qmsg
    C exsr gest_erreur
    C if REASON<>RCNONE
    C eval as_perreu='03'
    C exsr fin_pgm
    C endif
    *-- Fermeture de la QMSG -------------------------------------------
    C exsr close_qmsg
    C exsr gest_erreur
    C if REASON<>RCNONE
    C eval as_perreu='06'
    C exsr fin_pgm
    C endif
    *-Fin du programme
    C exsr fin_pgm
    *-- Sous-routine ---------------------------------------------------
    *--- Ouverture de la queue MSG sans option -------------------------
    C open_qmsg begsr
    C CALLP MQOPEN1(HCONN :
    C MQOD :
    C OPTS :
    C HOBJ :
    C CCODE :
    C REASON)
    C endsr
    *--- Initialisation de la queue MSG --------------------------------
    C init_qmsg begsr
    C *like define HOBJ ab_hobjmsg
    C *like define CCODE ab_compcodemsg
    C z-add HOBJ ab_hobjmsg
    C z-add CCODE ab_compcodemsg
    C endsr
    *--- GET dans la queue MSG -----------------------------------------
    *--- Accept truncated, conversion and no sync point ----------------
    C get_qmsg begsr
    C CALLP MQGET1(HCONN :
    C HOBJ :
    C MQMD :
    C mqgmo :
    C BUFLEN :
    C Buffer :
    C MESLEN :
    C CCODE :
    C REASON)
     
    C z-add 1 as_cpt
    C eval as_IDEMET = %subst(as_dta:20:20)
    C eval as_IDDEST = %subst(as_dta:40:20)
    * HAU Gestion du message ORDRSP jusqu'à 3680 segments de 1000 caractères
    * HAU Optimisation on s'arrête au premier enreg à blanc
    C as_dta downe ' '
    * HAU Fin
    C eval Z1000I = as_dta
    C write FIC1000IF
    * Récup de la ligne suivante (1000 caractères)
    C add 1 as_cpt
    C* eval as_dta = BUFFER(as_cpt)
    C enddo
    C endsr
    *--- Gestion des erreurs MQSERIES ----------------------------------
    C gest_erreur begsr
    C if REASON<>RCNONE
    C movel REASON as_reason
    C endif
    C endsr
    *--- Fermeture de la queue MSG -------------------------------------
    C close_qmsg begsr
    C CallP MQCLOSE1(HConn :
    C HOBJ :
    C OPTS :
    C CCODE :
    C REASON)
    C endsr
     
    *--- Sortie du programme -------------------------------------------
    C fin_pgm begsr
    C eval *inlr=*on
    C dump
    C return
    C endsr
    le problème c'est que quand je fait la compilation il me reste trois message d'erreur suivant:

    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    *RNF7535 30 1544 013604 Le type et les attributs du paramètre 4 ne correspondent
    pas à ceux du prototype.
    *RNF7536 30 1546 013607 Le type du paramètre 6 indiqué pour l'appel ne correspond
    pas au prototype.
    *RNF7086 00 63 002000 RPG traite les groupages du fichier FARC1999I. INFDS mis à
    jour uniquement lorsque les blocs de données sont
    transférés.

    ++> Le premier et le 2éme sont dans l'instruction ci-dessous pour les variables mqgmo et Buffer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    C CALLP MQGET1(HCONN :
    C HOBJ :
    C MQMD :
    C mqgmo :
    C BUFLEN :
    C Buffer :
    C MESLEN :
    C CCODE :
    C REASON)
    Pouvez-vous m'aider pour la résolution de ces deux anomalie?

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    8 399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 8 399
    Points : 30 287
    Points
    30 287
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Merci de poser une question claire, quel est le besoin, quel est le contexte, la version DB2, la requête que vous avez testée, le message d'erreur éventuel...

Discussions similaires

  1. Lecture/écriture fichier binaire via structure
    Par Tenebrous dans le forum C
    Réponses: 9
    Dernier message: 07/03/2010, 00h02
  2. [Upload] Lecture de fichier mp3 via PHP
    Par nodogeid dans le forum Langage
    Réponses: 2
    Dernier message: 18/12/2007, 12h00
  3. Oracle 9.2.0 et RedHat 3 : lecture d'une base via DSN et ODBC
    Par Lucinda dans le forum Administration
    Réponses: 9
    Dernier message: 11/05/2007, 15h23
  4. Réponses: 7
    Dernier message: 23/07/2006, 20h01

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