× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



First, don't ever call an API with a "B" data type.
There are no APIs that expect that type of field.
Use the 'I' data type instead.
"10i 0" in RPG IV to be precise.


-Bob Cozzi
www.RPGxTools.com
RPG xTools - Enjoy programming again.

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
On Behalf Of James H H Lampert
Sent: Monday, October 17, 2005 3:07 PM
To: rpg400-l@xxxxxxxxxxxx
Subject: Weird behavior in CALLP vs. CALLB (specifically QtmmSendMail)

I'm experiencing a weird problem, with a call that worked 
as a CALLB suddenly NOT working with a CALLP.

Given this code (and note that I've pulled out a few 
spaces here and there to try and keep my email reader from 
inserting line breaks):

DFILENAME         S             43
DFILENAMELENGTH   S              9B 0
DORIGINATOR       S            255
DORIGINATORLEN    S              9B 0
DFIRSTRECIPIENT   DS
D OFFSET                  1      4B 0
D ADDRLEN                 5      8B 0
D FORMAT                  9     16
D DTYPE                  17     20B 0
D RESERVED               21     24B 0
D RECADDRESS             25    275
DTOTALNUMREC      S              9B 0

DERRORMESSAGE     DS
D BYTESBUF                1      4B 0
D MESSAGEID               9     15
 . ..
C                   EVAL      FILENAME =
C             '/wintouch/WTCPCHILD JAMESL    146826 
115623'
C                   Z-ADD     43            FILENAMELENGTH

with BYTESBUF set to zero, so that any error will throw an 
exception, this code:

C                   CALLB     'QtmmSendMail'
C                   PARM                    FILENAME
C                   PARM                    FILENAMELENGTH
C                   PARM                    ORIGINATOR
C                   PARM                    ORIGINATORLEN
C                   PARM                    FIRSTRECIPIENT
C                   PARM                    TOTALNUMREC
C                   PARM                    ERRORMESSAGE

works fine, but this code (bytesbuf still zero, and lots 
of spaces still pulled out to avoid unwanted line breaks):

D QtmmSendMail    PR 
                ExtProc('QtmmSendMail')
D   FileName                  255A   const 
options(*varsize)
D   FileNameLen                10I 0 const
D   MsgFrom                   256A   const 
options(*varsize)
D   MsgFromLen                 10I 0 const
D   RecipBuf                         like(FIRSTRECIPIENT)
D                                    dim(32767)
D                                    options(*varsize)
D   NumRecips                  10I 0 const
D   ErrorCode                8000A   options(*varsize)
 . ..
C           CALLP     QtmmSendMail(FILENAME: 
FILENAMELENGTH:
C                               ORIGINATOR: ORIGINATORLEN:
C                               FIRSTRECIPIENT: 
TOTALNUMREC:
C                               ERRORMESSAGE)

doesn't work, doesn't throw an exception in the calling 
program, but causes the QMSF job to throw a TCP5103, 
claiming that it can't open the IFS file (the name is 
fine) with an errno of 3440 (something about "operation 
not supported," according to errno_h).

To coin a phrase,
<tiny voice>
"Heellllllllppppppppppp mmmmmmmeeeeeeeeeeeeeee!!!"
</tiny voice>

--
JHHL

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.