× 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.



Scott Klement already wrote one of these tools, if you would like to not reinvent this wheel.
http://archive.midrange.com/rpg400-l/200408/msg00372.html



Thanks, Matt


-----Original Message-----
From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of tim
Sent: Thursday, September 15, 2016 9:21 AM
To: RPG programming on the IBM i (AS/400 and iSeries) <rpg400-l@xxxxxxxxxxxx>
Subject: pointer question

Im having issues with my first attemp with pointers. I have a service program that uses strtok to split info into array elements. When i try using it, the subsequent invocations replace prior ones with the latest data. It looks like its pointing to the same memory location.

here is my code. i think i need to do something in my service program so that the pointer is unique for each call to the service.

service program:

hnomain

P WordSplitterd b export
d WordSplitterd pi *
d string 65535 const
d delim 1 const

D tokens s 1024A varying dim(2000)
D x s 10I 0
D string2 s 65535
d pointer s *

dstrtok PR * ExtProc('strtok')
d string * value options(*string)
d delim * Value Options(*string)

/free

string2 = string;
pointer = strtok(string2 : delim);

dow (pointer <> *null);
x+=1;
tokens(x) = %trim(%str(pointer));
pointer = strtok(*null: delim);
enddo;

return %addr(tokens);

/end-free

P E

Access program

H DFTACTGRP(*NO) BNDDIR('HTTPAPI':'QC2LE':'PGM')
d pointer1 s *
d MbrInfo1 s 1024 based(pointer1) varying dim(2000)
d pointer2 s *
d MbrInfo2 s 1024 based(pointer2) varying dim(2000)

/free
pointer1 = wordsplitterd('1,2,3':',');
pointer2 = wordsplitterd('4;5;6':';');
*inlr = *on;
/end-free

--
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L) mailing list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives at http://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxx for any subscription related questions.

As an Amazon Associate we earn from qualifying purchases.

This thread ...

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.