fonctions CLEARMSGQUE, GETMSGFRMQUE, PUTMSGONQUE

BoTTom |
      *=====================================================================
      * Message Queue Procedures
      *
      * Copyright (C) Julian Monypenny 1997
      *=====================================================================
     H NoMain
 
      *---------------------------------------------------------------------
      * Global definitions
      *---------------------------------------------------------------------
      /Copy ToolkitCpy,ApiErrH
      /Copy ToolkitCpy,MsgQueH
      /Copy ToolkitCpy,StdTypH
 
      *=====================================================================
     P ClearMsgQue     B                   Export
      *=====================================================================
     D                 Pi                  Like( LglTyp )
     D  MsgStk_O                           Like( IntTyp )     Value
     D                                     Options( *NoPass )
     D  MsgQue_O                           Like( NamTyp )     Value
     D                                     Options( *NoPass )
 
     D MsgAct          S                   Like( NamTyp )  Inz( '*ALL' )
     D MsgKey          S              4
     D MsgQue          S                   Like( NamTyp )
     D MsgStk          S                   Like( IntTyp )
 
     C                   Reset                   ApiErrDs
 
     C                   If        %Parms   < 1
     C                   Eval      MsgStk   = CurrMsgStk + 1
     C                   Else
     C                   Eval      MsgStk   = MsgStk_O + 1
     C                   EndIf
 
     C                   If        %Parms   < 2
     C                   Eval      MsgQue   = CurrMsgQue
     C                   Else
     C                   Eval      MsgQue   = MsgQue_O
     C                   EndIf
 
     C                   Call      'QMHRMVPM'
     C                   Parm                    MsgQue


|
     C                   Parm                    MsgStk
     C                   Parm                    MsgKey
     C                   Parm                    MsgAct
     C                   Parm                    ApiErrDs
 
     C                   Return    ( ApiErrLen = 0 )
 
     P                 E
 
      *=====================================================================
     P GetMsgFrmQue    B                   Export
      *=====================================================================
     D                 Pi                  Like( LglTyp )
     D  MsgTyp                             Like( NamTyp )     Value
     D  MsgQueDta                          Like( MsgQueDtaDs )
     D  MsgAct_O                           Like( NamTyp )     Value
     D                                     Options( *NoPass )
     D  MsgStk_O                           Like( IntTyp )     Value
     D                                     Options( *NoPass )
     D  MsgQue_O                           Like( NamTyp )     Value
     D                                     Options( *NoPass )
 
     D DtaFmt          S                   Like( ApiFmtTyp )
     D                                     Inz( 'RCVM0200')
     D MsgAct          S                   Like( NamTyp )
     D MsgKey          S              4
     D MsgQue          S                   Like( NamTyp )
     D MsgStk          S                   Like( IntTyp )
     D MsgWait         S                   Like( IntTyp )
 
     C                   Reset                   ApiErrDs
     C                   Reset                   MsgQueDtaDs
     C                   Eval      MsgQDtaSiz = %Size( MsgQueDtaDs )
 
     C                   If        %Parms   < 3
     C                   Eval      MsgAct   = SameMsgAct
     C                   Else
     C                   Eval      MsgAct   = MsgAct_O
     C                   EndIf
 
     C                   If        %Parms   < 4
     C                   Eval      MsgStk   = CurrMsgStk + 1
     C                   Else
     C                   Eval      MsgStk   = MsgStk_O + 1


|
     C                   EndIf
 
     C                   If        %Parms   < 5
     C                   Eval      MsgQue   = CurrMsgQue
     C                   Else
     C                   Eval      MsgQue   = MsgQue_O
     C                   EndIf
 
     C                   Call      'QMHRCVPM'
     C                   Parm                    MsgQueDtaDs
     C                   Parm                    MsgQDtaSiz
     C                   Parm                    DtaFmt
     C                   Parm                    MsgQue
     C                   Parm                    MsgStk
     C                   Parm                    MsgTyp
     C                   Parm                    MsgKey
     C                   Parm                    MsgWait
     C                   Parm                    MsgAct
     C                   Parm                    ApiErrDs
 
     C                   If        MsgQDtaSiz = 0
     C                   Eval      MsgQRplLen = 0
     C                   Eval      MsgQMsgLen = 0
     C                   Eval      MsgQHlpLen = 0
     C                   EndIf
 
     C                   If        ApiErrLen  = 0
     C                   Eval      MsgQRplPos = 1
     C                   Eval      MsgQMsgPos = MsgQRplPos + MsgQRplLen
     C                   Eval      MsgQHlpPos = MsgQMsgPos + MsgQMsgLen
     C                   Eval      MsgQueDta  = MsgQueDtaDs
     C                   EndIf
 
     C                   Return    ( ApiErrLen = 0 )
 
     P                 E
 
      *=====================================================================
     P PutMsgOnQue     B                   Export
      *=====================================================================
     D                 Pi                  Like( LglTyp )
     D  MsgFil                             Like( NamTyp )     Value
     D  MsgLib                             Like( NamTyp )     Value
     D  MsgId                              Like( MsgIdTyp )   Value


|
     D  MsgTyp                             Like( NamTyp )     Value
     D  MsgTxt_O                           Like( StrTyp )     Value
     D                                     Options( *NoPass )
     D  MsgStk_O                           Like( IntTyp )     Value
     D                                     Options( *NoPass )
     D  MsgQue_O                           Like( NamTyp )     Value
     D                                     Options( *NoPass )
 
     D QMsgFil         S                   Like( QNamTyp )
     D MsgKey          S              4
     D MsgQue          S                   Like( NamTyp )
     D MsgStk          S                   Like( IntTyp )
     D MsgTxt          S                   Like( StrTyp )
     D MsgTxtLen       S                   Like( IntTyp )
 
     C                   Reset                   ApiErrDs
     C                   Eval      QMsgFil   = MsgFil + MsgLib
 
     C                   If        %Parms    < 5
     C                   Eval      MsgTxt    = *Blank
     C                   Eval      MsgTxtLen = 0
     C                   Else
     C                   Eval      MsgTxt    = MsgTxt_O
     C                   Eval      MsgTxtLen = %Size( MsgTxt )
     C                   EndIf
 
     C                   If        %Parms    < 6
     C                   Eval      MsgStk    = CurrMsgStk + 1
     C                   Else
     C                   Eval      MsgStk    = MsgStk_O + 1
     C                   EndIf
 
     C                   If        %Parms    < 7
     C                   Eval      MsgQue    = CurrMsgQue
     C                   Else
     C                   Eval      MsgQue    = MsgQue_O
     C                   EndIf
 
     C                   Call      'QMHSNDPM'
     C                   Parm                    MsgId
     C                   Parm                    QMsgFil
     C                   Parm                    MsgTxt
     C                   Parm                    MsgTxtLen
     C                   Parm                    MsgTyp


|
     C                   Parm                    MsgQue
     C                   Parm                    MsgStk
     C                   Parm                    MsgKey
     C                   Parm                    ApiErrDs
 
     C                   Return    ( ApiErrLen = 0 )
 
     P                 E




©AF400