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.