[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Invalid heap space using HTTPAPI



Mike:

I am sending you the source file of TSTPHONES and the copies.

I did run the SQL:

Select ptptrhx, count(*) from PTRTOHEXF where ptboa in ('A','B') group
by ptptrhx having mod(count(*),2)<>0

I got the following results: 

POINTER IN HEX      COUNT ( * )
C37158C036F05C40              1
EFF2BA445DB10640              3
C373B57A1247F000              5
EFF2BA445D5912B0              1
F9B1EFB0BB3BA350              3
C373B57A120F9750              5
C373B57A1270A940              1
EBBC3D27F7AD2070              3
FAB240A7E34CF390              3
FAB240A7E3671E60              1
EFF2BA445D51B410              1
F9B1EFB0BB32B620              1
C373B57A12CB2860              3
EFF2BA445DBF7490              1
E6B18C7D49B88480             25
E6F0BB020455BEB0              5
C37158C036C445F0              1
C373B57A120E4660             47
D87005004EDC34B0             33
E6B18C7D49AC06E0              5
E6F0BB0204F4D3A0              3
F34594020EF54BB0              3
C373B57A12AC6180             25
C373B57A123C9000             15
E6F0BB02044653F0              3
D0D42C3D35F080A0              1
D0D42C3D35180C00              1
EFF2BA445DD2AB90              5
C37158C036AE4E10              1
E6F0BB0204DCF2B0              3
D87005004E521CC0              5
EBBC3D27F78D6000              1
EFF2BA445D4D8C60              1
E6F0BB0204AC31A0              1
F9B1EFB0BBA43220              3
F9B1EFB0BB0B7420              1
C37158C03688C160              9
F9B1EFB0BB4C6DE0              1
E6B18C7D491D86C0              3
F34594020ED01330              1
C37158C03621DE10              1
D0D42C3D355CA490              1
E6F0BB0204B01600              1
E6F0BB02049A6B40              9
FAB240A7E35BB310              1
F34594020EC8CCA0              3
F9B1EFB0BB24BFA0              3
C47EA929DB79E8C0              9
F9B1EFB0BB79EE40              1
EBBC3D27F7179D60              1
... More

If I select one of the groups (E6B18C7D49B88480), you see
allocate(B)/deallocate(A) in order, but some of them stay allocated as
this one:

BEFORE/AFTER  POINTER IN HEX    TIMESTAMP                  
     B        E6B18C7D49B88480  2011-03-02-11.45.42.517000 
     A        E6B18C7D49B88480  2011-03-02-11.45.42.615000 
     B        E6B18C7D49B88480  2011-03-02-11.45.42.773000 
     A        E6B18C7D49B88480  2011-03-02-11.45.42.863000 
     B        E6B18C7D49B88480  2011-03-02-11.45.43.030000 
     A        E6B18C7D49B88480  2011-03-02-11.45.43.246000 
     B        E6B18C7D49B88480  2011-03-02-11.45.43.363000 
     A        E6B18C7D49B88480  2011-03-02-11.45.43.576000 
     B        E6B18C7D49B88480  2011-03-02-11.45.43.641000 
     A        E6B18C7D49B88480  2011-03-02-11.45.43.711000 
     B        E6B18C7D49B88480  2011-03-02-11.45.43.821000 
     A        E6B18C7D49B88480  2011-03-02-11.45.43.891000 
     B        E6B18C7D49B88480  2011-03-02-11.45.43.990000 
     A        E6B18C7D49B88480  2011-03-02-11.45.44.060000 
     B        E6B18C7D49B88480  2011-03-02-11.45.44.162000 
     A        E6B18C7D49B88480  2011-03-02-11.45.44.232000 
     B        E6B18C7D49B88480  2011-03-02-11.45.44.349000 
     A        E6B18C7D49B88480  2011-03-02-11.45.44.419000 
     B        E6B18C7D49B88480  2011-03-02-11.45.44.525000
     A        E6B18C7D49B88480  2011-03-02-11.45.44.595000   
     B        E6B18C7D49B88480  2011-03-02-11.45.44.670000   
     A        E6B18C7D49B88480  2011-03-02-11.45.44.739000   
     B        E6B18C7D49B88480  2011-03-02-11.45.45.153000   
     A        E6B18C7D49B88480  2011-03-02-11.45.45.287000   
     B        E6B18C7D49B88480  2011-03-02-11.45.45.321000   

If I do the following SQL to see how many pointers stay allocated and
not deallocated:

select * from (                                         
select * from iier00vw/ptrtohexf where ptboa='B') as B  
left join (                                             
select * from iier00vw/ptrtohexf where ptboa='A') as A  
on A.ptptrhx = B.ptptrhx                                
where A.ptptrhx is null    

I got 1,353,878 records:

BEFORE/AFTER  POINTER IN HEX    TIMESTAMP                   BEFORE/AFTER
POINTER IN HEX    TIMESTAMP   
     B        E6F0BB0204003A00  2011-03-02-08.49.04.545000       -
-                 -           
     B        E6F0BB0204004010  2011-03-02-08.49.06.247000       -
-                 -           
     B        E6F0BB020401AF30  2011-03-02-08.49.06.252000       -
-                 -           
     B        E6F0BB020402D910  2011-03-02-08.49.06.259000       -
-                 -           
     B        E6F0BB0204040300  2011-03-02-08.49.06.266000       -
-                 -           
     B        E6F0BB0204045700  2011-03-02-08.49.06.270000       -
-                 -           
     B        E6F0BB02040598F0  2011-03-02-08.49.06.327000       -
-                 -           
     B        E6F0BB020406C380  2011-03-02-08.49.06.338000       -
-                 -           
     B        E6F0BB020407ED10  2011-03-02-08.49.06.342000       -
-                 -           
     B        E6F0BB02040807A0  2011-03-02-08.49.06.459000       -
-                 -           
     B        E6F0BB0204085800  2011-03-02-08.49.11.184000       -
-                 -           
     B        E6F0BB02040881D0  2011-03-02-08.49.11.192000       -
-                 -           
     B        E6F0BB020408ABB0  2011-03-02-08.49.11.203000       -
-                 -           
     B        E6F0BB0204003F40  2011-03-02-08.49.11.209000       -
-                 -           
     B        E6F0BB02040882D0  2011-03-02-08.49.11.288000       -
-                 -           
     B        E6F0BB0204081610  2011-03-02-08.49.11.306000       -
-                 -           
     B        E6F0BB020407EC10  2011-03-02-08.49.11.312000       -
-                 -           
     B        E6F0BB020407ECA0  2011-03-02-08.49.11.324000       -
-                 -           
     B        E6F0BB020409C020  2011-03-02-08.49.11.349000       -
-                 -           
...more                             

Then I tried the following to check how many were tried to deallocated
than were not allocated and I got NONE.

select * from (                                         
select * from iier00vw/ptrtohexf where ptboa='B') as B  
left join (                                             
select * from iier00vw/ptrtohexf where ptboa='A') as A  
on A.ptptrhx = B.ptptrhx                                
where B.ptptrhx is null    

For me it looks there are a number of pointers not deallocated from
memory that grows and grows and create the problem.
The question is why the error occurs in the dealloc and not in the
alloc.
I am still confused.

Regards,  
 
JULIO C. CABRERA
Sr. Programmer Analyst, Information Technology 
Interval International
6262 Sunset Drive * Miami, Florida 33143
305.666.1861, ext. 7287 * direct 305.925.7287
cell 305.928.7925* fax 305.668.3409
Julio.Cabrera@xxxxxxxxxxxxxxxx
 
IntervalWorld.com * ResortDeveloper.com
 
-----Original Message-----
From: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
[mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Mike Krebs
Sent: Wednesday, March 02, 2011 1:20 AM
To: HTTPAPI and FTPAPI Projects
Subject: RE: Invalid heap space using HTTPAPI

Hi,

We are getting closer?

Someone with more knowledge of pointers will have to tell me if
X'8000000000000000F5BC674142E6B960' is a valid pointer. Is the 8 to
start the pointer correct? Looks like the pointers in your case are
twice as big as what you put in the file.

I didn't see F5BC674142E6B960 in your PtrToHexFile.doc. Where did that
pointer come from?

Odd how several pointers are allocated then some other number are
deallocated. If you run an SQL across your pointer file something like

Select ptptrhx, count(*) from PTRTOHEXF where ptboa in ('A','B') group
by ptptrhx having mod(count(*),2)<>0

Do you get any records? I would think you should only have a very few
(if any) from the end of the list.

Could you post just the source for your test program please?


> -----Original Message-----
> From: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx [mailto:ftpapi-
> bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Julio Cabrera
> Sent: Tuesday, March 01, 2011 2:09 PM
> To: HTTPAPI and FTPAPI Projects
> Cc: Jason Christman
> Subject: RE: Invalid heap space using HTTPAPI
> 
> 
> Mike:
> 
> Sorry I wait so long to answer your email. I was debugging an testing
> to
> try to find a cure for the patient (as you said) and doing it step by
> step.
> Let me first answer your questions about the error:
> 
> 1. If you run this for the record at 176,677, do you get the error?
> 	No. This error happens only when a big amount of information is
> read.
> 	Not always happens at the same record.
> 2. If you read the first 1000 records without calling getContactInfo,
> then let it run, do you get the error at 177,677?
> 	No. I get it 1000 records or more after the 177,677
> 3. Does it always crash after running 176,677 iterations regardless of
> the data you reading?
>  	No. It happens at different times, depending the data.
> 4. If you watch the program running, do you notice anything unusual?
> Stack growing? Files growing?
> 	None of them. There is nothing unusual, stack and files stays
> the 	same. I ran it interactive and in batch and the results are the
> same.
> 5. Did you dump the program? Program dump listing?
> 	Yes I did dump the program, but the only program I can dump is
> WS.CONTAC and the error happens in the module HTTPUTILR4, which I
> could'nt dump. The error send me to WS.CONTAC.
> 
> Now, lets go to the debug steps.
> 
> 1. 	I download the beta version of HTTP API library (HTTPAPI
> Ver1.24beta11 released 2010-09-09) and installed it in LIBHTTPB
> 	I just compile my service program for the WS objects to use
> LIBHTTPB.
> 	Then I ran the program and I did NOT get the error. Try batch
> and	iteractive 3 times. It read more than 300,000 records and NO
> error.
> 
> 2.	We have Fulfillment program that consume different web services:
> WS.EMAIL and WS.PHONES. And we were having the same problem that the
> other one (WS.CONTACT). I ran the program with the HTTP beta version
> and I got the heap memory error.
> 	I attached Fulfillment_Email_heap_memory_error_Using_LIBHTTPB
> 	The program is a complicate fulfillment process, but I recreate
> the 	problem using a test program (TSTPHONES) - the compiled version
> and 	the Heap memory error are attached. The 2 compile sources for
> the 	consuming Web Services are also attached.
> 
> 3. 	I modified the module  LIBHTTPB/HTTPUTILR4 where the error
> happens, 	and add a call after the pointer is allocated and after
> the pionter is 	deallocated. See attached file Call PTRTOHEX in
> HTTPUTILR4.
> 	This program just write the hex value of the pointer in a file.
> 	I am sending you also the last records I get for the process.
> 
> I really do not know what else to do. May be with this information you
> see something that I cannot see.
> I appreciate your help
> 
> Regards,
> 
> JULIO C. CABRERA
> Sr. Programmer Analyst, Information Technology
> Interval International
> 6262 Sunset Drive * Miami, Florida 33143
> 305.666.1861, ext. 7287 * direct 305.925.7287
> cell 305.928.7925* fax 305.668.3409
> Julio.Cabrera@xxxxxxxxxxxxxxxx
> 
> IntervalWorld.com * ResortDeveloper.com
> 
> -----Original Message-----
> From: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Mike Krebs
> Sent: Thursday, February 17, 2011 7:20 PM
> To: HTTPAPI and FTPAPI Projects
> Subject: RE: Invalid heap space using HTTPAPI
> 
> Thanks for finally sending some almost useful information!
> 
> Make only one change a time and test so we know what eventually cures
> the patient.
> 
> You are running an old version. You really should be able to run this
> (especially in a test environment) with the latest version. As has
been
> pointed out, backwards compatibility is very good. At least run a test
> WS.CONTACT with the new version so that we know it is a current
> problem.
> Download the Beta and install into a different library. Compile and
run
> using the new version.
> 
> >From limited experience, changing ptr between alloc and dealloc will
> cause a problem. If that happens, why?
> 
> Did you dump the program? Program dump listing? Not sure it would
help,
> but can't hurt when debugging. What is the value of "ptr"?
> 
> Is there a pointer declared in your module WS.CONTACT called "ptr"?
Are
> you using it? I don't think it needs to be there. If not, please
delete
> and retry test.
> 
> Add some debugging output...print the ptr value at the point where it
> allocates memory. Print it just before the dealloc. The pointer should
> be the same. Here is an article that talks about one way to print a
> pointer http://www.itjungle.com/fhg/fhg110310-story02.html. HTTPAPI is
> full of pointers and uses arrays of pointers in some places.
> 
> If you run this for the record at 176,677, do you get the error?
> 
> If you read the first 1000 records without calling getContactInfo,
then
> let it run, do you get the error at 177,677? In other words, does it
> always crash after running 176,677 iterations regardless of the data
> you
> reading? Or at least within a few records of that?
> 
> If you watch the program running, do you notice anything unusual?
Stack
> growing? Files growing?
> 
> Good of you to send a compile listing for the code so we can see the
> file layouts and other copied information...if want us to try to
> recreate, we also need just the source without the other stuff and
> maybe
> just a bit of knowledge on how to fake it. But try the new version,
try
> the ptr removal, try printing the ptr. Let's see how far we get.
> 
> 
> > -----Original Message-----
> > From: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx [mailto:ftpapi-
> > bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Julio Cabrera
> > Sent: Thursday, February 17, 2011 11:00 AM
> > To: HTTPAPI and FTPAPI Projects
> > Subject: RE: Invalid heap space using HTTPAPI
> >
> > Charles:
> >
> >
> >
> > After a while trying to reproduce the error, I wrote a program
> > (TSTCONTACT) that reads our member file with almost 5 million
records
> > in
> > a loop and call my program getContactInfo. After 176,677 records, it
> > gives the heap memory error:
> >
> >
> >
> >
> >
> > The error happens in the dealloc line (3448):
> >
> >
> >
> > Program:   HTTPAPIR4      Library:   LIBHTTP        Module:
> > HTTPUTILR4
> >
> >
> >    3444       3443 D xdealloc        PI
> >
> >
> >    3445       3444 D   ptr                           *
> >
> >
> >    3446       3445  /if defined(TERASPACE)
> >
> >
> >    3447       3446  /else
> >
> >
> >    3448       3447 C                   dealloc                 ptr
> >
> >
> >    3449       3448  /endif
> >
> >
> >    3450       3449 C                   eval      ptr = *null
> >
> >
> >    3451       3450 P                 E
> >
> >
> >    3452       3451
> >
> >
> >    3453       3452
> >
> >
> >    3454       3453
> > *++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> >
> >    3455       3454  * xrealloc(): re-allocate memory
> >
> >
> >    3456       3455
> > *++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> >
> >    3457       3456 P xrealloc        B                   export
> >
> >
> >    3458       3457 D xrealloc        PI              *
> >
> >
> >
> >
> > The http_debug was *ON
> >
> > I include here the source of the Test program, The source of the RPG
> to
> > consume the Web Service and the txt of the debug.
> >
> > I still do not have any clue of what happened.
> >
> > I will appreciate if you can give me any idea.
> >
> >
> >
> > Thank you very much,
> >
> >
> >
> >
> >
> > JULIO C. CABRERA
> >
> > Sr. Programmer Analyst, Information Technology
> >
> > Interval International
> >
> > 6262 Sunset Drive * Miami, Florida 33143
> >
> > 305.666.1861, ext. 7287 * direct 305.925.7287
> >
> > cell 305.928.7925* fax 305.668.3409
> >
> > Julio.Cabrera@xxxxxxxxxxxxxxxx
> >
> >
> >
> > IntervalWorld.com * ResortDeveloper.com
> >
> >
> >
> > -----Original Message-----
> > From: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
> > [mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Charles
> > Wilt
> > Sent: Friday, January 21, 2011 3:02 PM
> > To: HTTPAPI and FTPAPI Projects
> > Subject: Re: Invalid heap space using HTTPAPI
> >
> >
> >
> > Julio,
> >
> >
> >
> > Turn debug logging on and post the resulting log..
> >
> >
> >
> > http_debug(*ON);
> >
> >
> >
> > Charles
> >
> >
> >
> > On Fri, Jan 21, 2011 at 2:42 PM, Julio Cabrera
> >
> > <Julio.Cabrera@xxxxxxxxxxxxxxxx> wrote:
> >
> > >
> >
> > >
> >
> > >   Gentlemen:
> >
> > >
> >
> > >
> >
> > >   I need help with this error.
> >
> > >
> >
> > >   It is happening with an RPG service using HTTPAPI, and normally
> >
> > >   happens when the web service is called multiple times.
> >
> > >
> >
> > >
> >
> > >   [cid:image002.jpg@01CBB979.7E576830]
> >
> > >
> >
> > >
> >
> > >   Any help will be very appreciated.
> >
> > >
> >
> > >
> >
> > >   Thanks,
> >
> > >
> >
> > >
> >
> > >
> >
> > >   JULIO C. CABRERA
> >
> > >
> >
> > >   Sr. Programmer Analyst, Information Technology
> >
> > >
> >
> > >   Interval International
> >
> > >
> >
> > >   6262 Sunset Drive o Miami, Florida 33143
> >
> > >
> >
> > >   305.666.1861, ext. 7287 o direct 305.925.7287
> >
> > >
> >
> > >   cell 305.928.7925 o fax 305.668.3409
> >
> > >
> >
> > >   [1]Julio.Cabrera@xxxxxxxxxxxxxxxx
> >
> > >
> >
> > >
> >
> > >   IntervalWorld.com o ResortDeveloper.com
> >
> > >
> >
> > >
> >
> > >
> >
> > >
> >
> > >
> >
> ______________________________________________________________________
> >
> > >   _______
> >
> > >   Scanned by IBM Email Security Management Services powered by
> >
> > >   MessageLabs. For more information please visit
> > http://www.ers.ibm.com
> >
> > >
> >
> ______________________________________________________________________
> >
> > >   _______
> >
> > >
> >
> > > References
> >
> > >
> >
> > >   1. mailto:Julio.Cabrera@xxxxxxxxxxxxxxxx
> >
> > >
> >
> > >
> >
>
-----------------------------------------------------------------------
> >
> > > This is the FTPAPI mailing list.  To unsubscribe, please go to:
> >
> > > http://www.scottklement.com/mailman/listinfo/ftpapi
> >
> > >
> >
>
-----------------------------------------------------------------------
> >
> > >
> >
> > >
> >
> >
>
-----------------------------------------------------------------------
> >
> > This is the FTPAPI mailing list.  To unsubscribe, please go to:
> >
> > http://www.scottklement.com/mailman/listinfo/ftpapi
> >
> >
>
-----------------------------------------------------------------------
> >
> >
> >
> >
>
_______________________________________________________________________
> > _
> > _____
> >
> > Scanned by IBM Email Security Management Services powered by
> > MessageLabs.
> >
> >
>
_______________________________________________________________________
> > _
> > _____
> >
> >
> >
>
_______________________________________________________________________
> > ______
> > Scanned by IBM Email Security Management Services powered by
> > MessageLabs. For more information please visit
http://www.ers.ibm.com
> >
>
_______________________________________________________________________
> > ______
>
-----------------------------------------------------------------------
> This is the FTPAPI mailing list.  To unsubscribe, please go to:
> http://www.scottklement.com/mailman/listinfo/ftpapi
>
-----------------------------------------------------------------------
> 
>
_______________________________________________________________________
> _
> _____
> Scanned by IBM Email Security Management Services powered by
> MessageLabs.
>
_______________________________________________________________________
> _
> _____
> 
>
_______________________________________________________________________
> ______
> Scanned by IBM Email Security Management Services powered by
> MessageLabs. For more information please visit http://www.ers.ibm.com
>
_______________________________________________________________________
> ______
-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------

________________________________________________________________________
_____
Scanned by IBM Email Security Management Services powered by
MessageLabs.
________________________________________________________________________
_____

_____________________________________________________________________________
Scanned by IBM Email Security Management Services powered by MessageLabs. For more information please visit http://www.ers.ibm.com
_____________________________________________________________________________
ÿþ  5722WDS V5R4M0  060210                  SEU SOURCE LISTING                            03/02/11 08:36:50    IIMIADEV     PAGE    1

  SOURCE FILE . . . . . . .  IIER00VW/QRPGMOD

  MEMBER  . . . . . . . . .  TSTPHONES

  SEQNBR*...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 ...+... 9 ...+... 0

    100       *-----------------------------------------------------------------------------*                           12/07/09

    200       *- Test Basic Contact Web Service for heap error                             -*                           02/10/11

    300       *-                                                                           -*                           12/07/09

    400       *-                                                                           -*                           12/07/09

    500       *-  Date       User ID    Task #     Description                             -*                           12/07/09

    600       *-  ---------- -------    ---------- -----------                             -*                           12/07/09

    800       *-----------------------------------------------------------------------------*                           12/07/09

   1000      Fmember    if   e           k disk                                                                         02/10/11

   1100      D #o              S              9S 0 inz(0)                                                               02/10/11

   1101 00MH D MemNum          S              7S 0 Inz                                                                  02/25/11

   1102 00MH D WrkEmail        S            100A   Inz                                                                  02/25/11

   1200                                                                                                                 01/08/10

   1201 00MH  /Define CpyGetEmail_Prototype                                                                             02/25/11

   1202 00MH  /Copy *libl/QRPGLESRC,CpyEmail                                                                            02/25/11

   1203 00MH  /Undefine CpyGetEmail_Prototype                                                                           02/25/11

   1204                                                                                                                 02/25/11

   1205 0402  /Define cpy_getPhoneByType_Prototype                                                                      02/25/11

   1206 0402  /copy Qrpglesrc,CB.Phones                                                                                 02/25/11

   1207 0402  /Undefine cpy_getPhoneByType_Prototype                                                                    02/25/11

   1208                                                                                                                 02/25/11

   1209 0402  /Define cpy_WebServices_Ds                                                                                02/25/11

   1210 0402  /copy Qrpglesrc,CB.Phones                                                                                 02/25/11

   1211 0402  /Undefine cpy_WebServices_Ds                                                                              02/25/11

   1212                                                                                                                 02/25/11

   1213 0402  /Define cpy_getPhoneByType_Output                                                                         02/25/11

   1214 0402  /copy Qrpglesrc,CB.Phones                                                                                 02/25/11

   1215 0402  /Undefine cpy_getPhoneByType_Output                                                                       02/25/11

   1216                                                                                                                 02/25/11

   2500      D   pContactId    S             10S 0 Inz(0)                               Member#                         03/18/10

   2600                                                                                                                 03/01/10

   2700       /free                                                                                                     12/08/09

   2800                                                                                                                 01/08/10

   3800                                                                                                                 03/18/10

   3801        #o=0;                                                                                                    02/10/11

   3802        setll *loval member;                                                                                     02/10/11

   3803        dou %eof(member);                                                                                        02/10/11

   3804        #o=#o+1;                                                                                                 02/10/11

   3806          read member;                                                                                           02/25/11

   3807          if not %eof;                                                                                           02/25/11

   3808 00MH       MemNum=Memb#;                                                                                        02/25/11

   3809 00MH       WrkEmail = GetEmail(MemNum);                                                                         02/25/11

   3810 0402       pPhoneByType=GetPhoneByType(Memb#:'HOME');                                                           02/25/11

   3811 0402         pPhones3=%addr(Phonesout3.CPhones);                                                                02/25/11

   3812 0402         pPhones4=%addr(PhonesOut3.CPhones2);                                                               02/25/11

   3813 0402       pPhoneByType=GetPhoneByType(memb#:'BUSN');                                                           02/25/11

   3814 0402         pPhones3=%addr(Phonesout3.CPhones);                                                                02/25/11

   3815 0402         pPhones4=%addr(PhonesOut3.CPhones2);                                                               02/25/11

   6601          endif;                                                                                                 02/25/11

   6602        enddo;                                                                                                   02/10/11

   6700                                                                                                                 06/30/10

   6800        *inLR=*on;                                                                                               12/07/09

   6900       /end-free                                                                                                 12/07/09

  5722WDS V5R4M0  060210                  SEU SOURCE LISTING                            03/02/11 08:36:50    IIMIADEV     PAGE    2

  SOURCE FILE . . . . . . .  IIER00VW/QRPGMOD

  MEMBER  . . . . . . . . .  TSTPHONES

  SEQNBR*...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 ...+... 9 ...+... 0

                                  * * * *  E N D  O F  S O U R C E  * * * *

ÿþ  5722WDS V5R4M0  060210                  SEU SOURCE LISTING                            03/02/11 08:36:28    IIMIADEV     PAGE    1

  SOURCE FILE . . . . . . .  IILIB/QRPGLESRC

  MEMBER  . . . . . . . . .  CB.PHONES

  SEQNBR*...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 ...+... 9 ...+... 0

    100       *-----------------------------------------------------------------------------*                           12/07/09

    200       *-                                                                            *                           12/07/09

    300       *- Copy Book   :  CB.PHONES Phones Service Copy Book                         *                            02/19/10

    400       *-                                                                            *                           12/07/09

    500       *- Description :  Membership Re-Architecture Phones Service Copy Book         *                           12/07/09

    600       *-                                                                            *                           12/07/09

    700       *-----------------------------------------------------------------------------*                           12/07/09

    800       *-                                                                            *                           12/07/09

    900       *-                  M O D I F I C A T I O N S                                 *                           12/07/09

   1000       *-                  ~~~~~~~~~~~~~~~~~~~~~~~~~                                 *                           12/07/09

   1100       *- Date       User ID    Task #     Description                               *                           12/07/09

   1200       *- ----       -------    --------   -----------                               *                           12/07/09

   1300       *- 2009-12-06 JCabrera   RA010004   Copy Book Written                         *                           12/07/09

   1400       *                                                                             *                           12/07/09

   1500       *-----------------------------------------------------------------------------*                           12/07/09

   1601       *-- Prototypes                                                                                            12/08/09

   1602                                                                                                                 12/08/09

   1603       /If Defined (cpy_getPhonesByMem_Prototype)                                                                12/07/09

   1700      d getPhonesByMem  PR              *                                                                        12/10/09

   1801      d   MemberNum                    7s 0 const                                                                12/16/09

   1900       /EndIf                                                                                                    12/07/09

   2000                                                                                                                 12/07/09

   2002       /If Defined (cpy_getAllPhByMem_Prototype)                                                                 12/07/09

   2003      d GetAllPhByMem   PR              *                                                                        12/07/09

   2004      d   MemberNum                    7s 0 const                                                                12/16/09

   2006       /EndIf                                                                                                    12/07/09

   2200       *                                                                                                         12/07/09

   2202       /If Defined (cpy_getPhoneByType_Prototype)                                                                12/08/09

   2203      d getPhoneByType  PR              *                                                                        12/10/09

   2204      d   MemberNum                    7s 0 const                                                                12/16/09

   2205      d   PhoneType                    4a   const                                                                12/08/09

   2206       /EndIf                                                                                                    12/08/09

   2207                                                                                                                 12/08/09

   2208       /If Defined (cpy_getPhoneCount_Prototype)                                                                 12/08/09

   2209      d getPhoneCount   PR              *                                                                        12/10/09

   2210      d   MemberNum                    7s 0 const                                                                12/16/09

   2214       /EndIf                                                                                                    12/08/09

   2215                                                                                                                 12/08/09

   2216       /If Defined (cpy_getAllPhCount_Prototype)                                                                 12/09/09

   2217      d getAllPhCount   PR              *                                                                        12/09/09

   2218      d   MemberNum                    7s 0 const                                                                12/16/09

   2219       /EndIf                                                                                                    12/09/09

   2220                                                                                                                 12/09/09

   2221       /If Defined (cpy_getMemByPhone_Prototype)                                                                 12/08/09

   2222      d getMemByPhone   PR              *                                                                        12/10/09

   2223      d   CountryCode                  6A   const                                                                12/08/09

   2224      d   CityCode                     6A   const                                                                12/08/09

   2225      d   PhoneNumber                 10A   const                                                                12/08/09

   2226       /EndIf                                                                                                    12/08/09

   2227       *                                                                                                         12/08/09

   2228       *-- Data Structures                                                                                       12/08/09

   2229                                                                                                                 12/08/09

   2230       /If Defined (cpy_WebServices_Ds)                                                                          12/10/09

  5722WDS V5R4M0  060210                  SEU SOURCE LISTING                            03/02/11 08:36:28    IIMIADEV     PAGE    2

  SOURCE FILE . . . . . . .  IILIB/QRPGLESRC

  MEMBER  . . . . . . . . .  CB.PHONES

  SEQNBR*...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 ...+... 9 ...+... 0

   2231      d   pPhones       s               *                                                                        12/11/09

   2232      d   pPhones2      s               *                                                                        12/11/09

   2233      d   pPhones3      s               *                                                                        01/04/10

   2234      d   pPhones4      s               *                                                                        01/04/10

   2235                                                                                                                 02/01/10

   2236      d PhoneOut      e ds                  ExtName(DS@Mbftel)                                                   04/07/10

   2237      d  MbMemb#      e                     Extfld(Memb#)                                                        01/05/10

   2238                                                                                                                 01/04/10

   2250      dD@PhoneOut     e ds                  ExtName(DS@Mbftel)                                                   04/07/10

   2252      d                                     DIM(12) based(pPhones)                                               12/16/09

   2253      d                                     qualified                                                            12/16/09

   2254                                                                                                                 01/04/10

   2255      dD@PhoneOut2      ds                  DIM(12) based(pPhones2)                                              12/16/09

   2256      d                                     qualified                                                            12/16/09

   2257      d flags                         10a                                                                        02/01/10

   2258                                                                                                                 01/04/10

   2259      dD@PhoneOut3    e ds                  ExtName(DS@Mbftel)                                                   04/07/10

   2260      d                                     based(pPhones3)                                                      01/04/10

   2261      d                                     qualified                                                            01/04/10

   2262                                                                                                                 01/04/10

   2263      dD@PhoneOut4      ds                  based(pPhones4)                                                      01/04/10

   2264      d                                     qualified                                                            01/04/10

   2265      d CellTerm                       1a                                                                        12/16/09

   2266      d DoNotCall                      1a                                                                        12/16/09

   2267       /EndIf                                                                                                    01/04/10

   2268                                                                                                                 01/04/10

   2286       *-- Outputs                                                                                               12/08/09

   2287                                                                                                                 12/08/09

   2503       /If Defined (cpy_getPhonesByMem_Output)                                                                   12/07/09

   2504      d   pPhonesByMem  s               *                                                                        12/11/09

   2505                                                                                                                 12/10/09

   2506      d  PhonesOut      ds                  likeDs(OutputDs) based(pPhonesByMem)                                 01/05/10

   2508                                                                                                                 12/10/09

   2509      dOutputDs         ds                  qualified                                                            12/10/09

   2510      d Contact                       10a                                                                        12/16/09

   2511      d CPhones                             Like(D@PhoneOut) dim(12)                                             12/08/09

   2512      d CPhones2                            Like(D@PhoneOut2) dim(12)                                            12/08/09

   2513      d ErrorId                        7a                                                                        12/08/09

   2514      d ErrorMsg                     100a                                                                        12/08/09

   2600       /EndIf                                                                                                    12/07/09

   2601                                                                                                                 12/07/09

   2700       /If Defined (cpy_getAllPhByMem_Output)                                                                    12/07/09

   2701      d   pAllPhByMem   s               *                                                                        12/11/09

   2702                                                                                                                 12/10/09

   2703      d  PhonesOut2     ds                  likeDs(OutputDs2) based(pAllPhByMem)                                 12/11/09

   2704      d                                     dim(99)                                                              12/10/09

   2705                                                                                                                 12/10/09

   2800      dOutputDs2        ds                  qualified dim(99)                                                    12/10/09

   2900      d Contact                       10a                                                                        12/16/09

   3000      d Primary                        1a                                                                        12/16/09

   3100      d CPhones                             Like(D@PhoneOut) dim(12)                                             01/04/10

   3200      d CPhones2                            Like(D@PhoneOut2) dim(12)                                            12/08/09

   3300      d ErrorId                        7a                                                                        12/08/09

  5722WDS V5R4M0  060210                  SEU SOURCE LISTING                            03/02/11 08:36:28    IIMIADEV     PAGE    3

  SOURCE FILE . . . . . . .  IILIB/QRPGLESRC

  MEMBER  . . . . . . . . .  CB.PHONES

  SEQNBR*...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 ...+... 9 ...+... 0

   3400      d ErrorMsg                     100a                                                                        12/08/09

   3500       /EndIf                                                                                                    12/07/09

   3501                                                                                                                 12/07/09

   3502       /If Defined (cpy_getPhoneByType_Output)                                                                   12/08/09

   3503      d   pPhoneByType  s               *                                                                        12/11/09

   3507                                                                                                                 12/10/09

   3508      d  PhonesOut3     ds                  likeDs(OutputDs3) based(pPhoneByType)                                12/11/09

   3510                                                                                                                 12/10/09

   3511      dOutputDs3        ds                  qualified                                                            01/04/10

   3512      d Contact                       10a                                                                        12/16/09

   3513      d CPhones                             Like(D@PhoneOut)                                                     01/04/10

   3514      d CPhones2                            Like(D@PhoneOut2)                                                    02/01/10

   3517      d ErrorId                        7a                                                                        12/08/09

   3518      d ErrorMsg                     100a                                                                        12/08/09

   3519       /EndIf                                                                                                    12/08/09

   3520                                                                                                                 12/08/09

   3521       /If Defined (cpy_getPhoneCount_Output)                                                                    12/11/09

   3522      d   pPhoneCount   s               *                                                                        12/11/09

   3524                                                                                                                 12/11/09

   3525      d  PhonesOut4     ds                  likeDs(OutputDs4) based(pPhoneCount)                                 12/11/09

   3526                                                                                                                 12/11/09

   3536      dOutputDs4        ds                                                                                       12/16/09

   3537      d Contact                       10a                                                                        12/16/09

   3538      d Count                          5S 0                                                                      12/09/09

   3539      d ErrorId                        7a                                                                        12/09/09

   3540      d ErrorMsg                     100a                                                                        12/09/09

   3541       /EndIf                                                                                                    12/09/09

   3542                                                                                                                 12/09/09

   3543       /If Defined (cpy_getAllPhCount_Output)                                                                    12/09/09

   3544      d   pAllPhCount   s               *                                                                        12/14/09

   3545                                                                                                                 12/14/09

   3546      d  PhonesOut5     ds                  likeDs(OutputDs5) based(pAllPhCount)                                 12/14/09

   3547      d                                     dim(99)                                                              12/14/09

   3548                                                                                                                 12/14/09

   3549      dOutputDs5        ds                  qualified dim(99)                                                    12/14/09

   3550      d Contact                       10a                                                                        12/16/09

   3551      d Primary                        1a                                                                        12/16/09

   3552      d Count                          5S 0                                                                      12/09/09

   3553      d ErrorId                        7a                                                                        12/09/09

   3554      d ErrorMsg                     100a                                                                        12/09/09

   3555       /EndIf                                                                                                    12/09/09

   3556                                                                                                                 12/09/09

   3557       /If Defined (cpy_getMemByPhone_Output)                                                                    12/09/09

   3558      d   pMemByPhone   s               *                                                                        12/14/09

   3559                                                                                                                 12/14/09

   3560      d  PhonesOut6     ds                  likeDs(OutputDs6) based(pMemByPhone)                                 12/14/09

   3561      d                                     dim(99)                                                              03/26/10

   3562                                                                                                                 12/14/09

   3563      dOutputDs6        ds                  qualified dim(99)                                                    03/26/10

   3565      d Member                         7S 0                                                                      03/26/10

   3566      D Multiple                       1a                                                                        03/26/10

   3567      d ErrorId                        7a                                                                        12/09/09

   3568      d ErrorMsg                     100a                                                                        12/09/09

  5722WDS V5R4M0  060210                  SEU SOURCE LISTING                            03/02/11 08:36:28    IIMIADEV     PAGE    4

  SOURCE FILE . . . . . . .  IILIB/QRPGLESRC

  MEMBER  . . . . . . . . .  CB.PHONES

  SEQNBR*...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 ...+... 9 ...+... 0

   3569       /EndIf                                                                                                    12/09/09

   3570                                                                                                                 12/09/09

   3600       *-- Procedure Interfaces                                                                                  12/08/09

   3601                                                                                                                 12/08/09

   3602       /If Defined (cpy_getPhonesByMem_Interface)                                                                12/07/09

   3701      d getPhonesByMem  PI              *                                                                        12/10/09

   3800      d   MemberNum                    7s 0 const                                                                12/16/09

   3900       /EndIf                                                                                                    12/07/09

   4000                                                                                                                 12/07/09

   4200       /If Defined (cpy_getAllPhByMem_Interface)                                                                 12/07/09

   4300      d GetAllPhByMem   PI              *                                                                        12/07/09

   4400      d   MemberNum                    7s 0 const                                                                12/16/09

   4600       /EndIf                                                                                                    12/07/09

   4700                                                                                                                 12/08/09

   4800       /If Defined (cpy_getPhoneByType_Interface)                                                                12/08/09

   4900      d getPhoneByType  PI              *                                                                        12/10/09

   5000      d   MemberNum                    7s 0 const                                                                12/16/09

   5100      d   PhoneType                    4a   const                                                                12/08/09

   5200       /EndIf                                                                                                    12/08/09

   5202                                                                                                                 12/08/09

   5203       /If Defined (cpy_getPhoneCount_Interface)                                                                 12/08/09

   5204      d getPhoneCount   PI              *                                                                        12/10/09

   5206      d   MemberNum                    7s 0 const                                                                12/16/09

   5209       /EndIf                                                                                                    12/08/09

   5210                                                                                                                 12/08/09

   5211       /If Defined (cpy_getAllPhCount_Interface)                                                                 12/09/09

   5212      d getAllPhCount   PI              *                                                                        12/09/09

   5213      d   MemberNum                    7s 0 const                                                                12/16/09

   5214       /EndIf                                                                                                    12/09/09

   5215                                                                                                                 12/09/09

   5216       /If Defined (cpy_getMemByPhone_Interface)                                                                 12/08/09

   5217      d getMemByPhone   PI              *                                                                        12/10/09

   5218      d   CountryCode                  6A   const                                                                12/08/09

   5219      d   CityCode                     6A   const                                                                12/08/09

   5220      d   PhoneNumber                 10A   const                                                                12/08/09

   5221       /EndIf                                                                                                    12/08/09

   5300                                                                                                                 12/08/09

                                  * * * *  E N D  O F  S O U R C E  * * * *

ÿþ  5722WDS V5R4M0  060210                  SEU SOURCE LISTING                            03/02/11 08:37:41    IIMIADEV     PAGE    1

  SOURCE FILE . . . . . . .  IILIB/QRPGLESRC

  MEMBER  . . . . . . . . .  CPYEMAIL

  SEQNBR*...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 ...+... 9 ...+... 0

    100       **********************************************************************                                    10/08/98

    200       *                                                                    *                                    10/08/98

    300       *  Source      :  CpyEmail                                            *                                   03/19/01

    400       *  Purpose     :  Email  Prototype Header                            *                                    03/19/01

    500       *                                                                    *                                    10/27/98

    600       *--------------------------------------------------------------------*                                    10/08/98

    700       *  Date       Init        Description                                                                     08/30/00

    800       * --------    ----        --------------------------------------*                                         08/30/00

    900       * 03/21/01    JLopez      Copy Book Written                                                               03/20/01

   1000       *                                                                                                         10/08/98

   1100       *****************************************************************                                         12/29/97

   1200       *                                                                                                         08/29/00

   1300       *----------------------------------------------------------------                                         08/29/00

   1400       * Header Definitions for Prototypes                                                                       10/27/98

   1500       *----------------------------------------------------------------                                         08/29/00

   1600       *****************************************************************                                         08/29/00

   1700       *                                                                                                         10/20/00

   1800       * Procedure Receiving Member Number                                                                       03/19/01

   1900       *                                                                                                         10/20/00

   2000       /If Defined ( CpyGetEmail_Prototype )                                                                     03/19/01

   2100      D GetEmail        PR           105A                                                                        05/30/01

   2200      D                                7S 0                                                                      04/30/01

   2300       /EndIf                                                                                                    09/12/00

   2400                                                                                                                 09/12/00

   2500       * Procedure Receiving Email Address.                                                                      03/26/01

   2600       *                                                                                                         03/26/01

   2700       /If Defined ( CpyValEmail_Prototype )                                                                     03/26/01

   2800      D ValEmail        PR             1A                                                                        03/26/01

   2900      D                              100A                                                                        03/26/01

   3000       /EndIf                                                                                                    03/26/01

                                  * * * *  E N D  O F  S O U R C E  * * * *

-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------