[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 676
  • Last Modified:

MSGCON and AFP

Is there any know solution to specify a position to a MSGCON in a PTRF with the AFP op-code POSITION(X,Y)  ?

when I compile my prtf it gives me an error wherever I put the MSGCON.

PS: Samething with DFT !!
0
Helixir
Asked:
Helixir
  • 3
  • 3
1 Solution
 
daveslaterCommented:
Hi  Helixir
I have had this problem and could not get it to work.
My understanding is you can only use the position keyword with fields and overlays.
My workround solution was:

make the field names in the DDS the message id's ie (note to make like easy in the RPG make all the field lengths the same- proessing can the be performed in an array

A          R @@HDR                                                
A            MSG0001       25          POSITION(12 10)            
A            MSG0002       25          POSITION(12 12)            
A            MSG1025       25          POSITION(12 13)            
A            MSG1027       25          POSITION(12 14)            
A            MSG1256       25          POSITION(12 15)            
A            MSG1035       25          POSITION(12 16)            

then in the RPG would look somthing like

 ** Api to get messages                                                                      
dRcv100           ds                                                                          
dByteRtn                  1      4b 0                                      Bytes Returned    
dByteAvl                  5      8b 0                                      Bytes Available    
dMsgLenRtn                9     12b 0                                      Length Of Msg. R  
dMsgLenAvl               13     16b 0                                      Length Of Msg. A  
dMsgData                 25    174                                         Actual Message    
 * Error Codes In Case of Error                                                              
dErrCode          ds            16                                                            
dByteProvide              1      4b 0 Inz(16)                              Byyes Provided    
dByteAvail                5      8b 0                                      Bytes Available    
dExcpText                 9     15                                         Exception Msg./T  
 **Parms for the API call                                                                    
dLenMsgInf        s              9b 0 Inz(%SIZE(MsgData))                  Message Length    
dFmtName          s              8    Inz('RTVM0100')                      Format name        
dMsgIdn           s              7                                         Message Id        
dMsgFile          s             20    Inz('MYMSGFILE *LIBL     ')          Message File      
dMesgData         s            130    Inz(*Blanks)                         Message            
dMesgLen          s              9b 0 Inz(130)                             Message Length    
dReplSubs         s             10    Inz('*NO')                           Replace Substitu  
dRtnFmtCC         s             10    Inz('*NO')                           Return Fmt.Contr  
 ** MAP DDS fields to array and set degfault values                                          
d fmt@@HDR        ds                                                                          
d MSG0001                             Inz('Initial value')                                    
d MSG0002                             Inz('Initial value')                                    
d MSG1025                             Inz('Initial value')                                    
d MSG1027                             Inz('Initial value')                                    
d MSG1256                             Inz('Initial value')                                    
d MSG1035                             Inz('Initial value')                                    
d txtary                              like(MSG0001) dim(6)                                    
D                                     Overlay(fmt@@HDR:1)                                    
 ** Msg Id's to override default values                                                      
d fmtHDRAry       s              7    Dim(6) Perrcd(1) CtData                                
 ** Wirk Fielsd                                                                              
d idx             s             10i 0                                                        
C                                                                                            
C                   FOR       IDX=1  TO %ELEM(fmtHDRAry)                                      
C                   CLEAR                   MsgData                                          
C                   reset                   ErrCode                                        
c                   Call      'QMHRTVM'                                                    
c                   Parm                    Rcv100                                          
c                   Parm                    LenMsgInf                                      
c                   Parm                    FmtName                                        
c                   Parm      fmtHDRAry(idx)MsgIdn                                          
c                   Parm                    MsgFile                                        
c                   Parm                    MesgData                                        
c                   Parm                    MesgLen                                        
c                   Parm                    ReplSubs                                        
c                   Parm                    RtnFmtCC                                        
c                   Parm                    ErrCode                                        
 ** If no error then message exists, so use the dext                                        
C                   IF        ByteAvail=0                                                  
C                   EVAL      TXTARY(IDX)=MsgData                                          
C                   ENDIF                                                                  
C                   ENDFOR                                                                  
C                                                                                          
C                   EVAL      *INLR=*ON                                                    
** Message array    
MSG0001              
MSG0002              
MSG1025              
MSG1027              
MSG1256              
MSG1035


Dave            

0
 
HelixirAuthor Commented:
Thanks Dave,

My problem is that it for the Fax Cover, so I don't have RPG behind the printer file, I'll probably do a old fashionned record !! with no position !
0
 
daveslaterCommented:
Hi
another solution is to craete an overlay. This could then be positioned in the DDS.

Dave
0
Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

 
HelixirAuthor Commented:
Hey, Last time I did overlays I was using the driver AFP240, but it doesn't seem to work with Office 2002, What driver are you using ??
0
 
daveslaterCommented:
Hi
are you working in Win 9x or Win 2K/XP. They work differently.

I use the AFP 300 Printer in 2K/XP

check out
http:Q_20884225.html
for 2k/xp configuration

Win  9x should be OK.


Dave
0
 
HelixirAuthor Commented:
Thanks Dave
0

Featured Post

Take Control of Web Hosting For Your Clients

As a web developer or IT admin, successfully managing multiple client accounts can be challenging. In this webinar we will look at the tools provided by Media Temple and Plesk to make managing your clients’ hosting easier.

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now