|
We are trying to move away from a 3rd party program that has failed to
work once we moved to V7R1. They have been unable to fix the problem for
over a month. Their "translator" as we use it really only receives a 256
character input string and separates it into numbered fields for each
element.
Other in house programs read the IFS file and adds CR/LF to write a 256
character flat file. Then the production code reads that file, calls the
translator for each segment, then moves those ISA fields to the production
database as needed.
Per Paul's response, I created duplicate data structures with fixed fields
and moved them one by one into the fixed fields and that looks like it is
working.
Alan, I would like to see your example code.
Thanks all for Sunday responses!
Jack
-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
On Behalf Of Henrik Rützou
Sent: Sunday, March 30, 2014 2:03 PM
To: RPG programming on the IBM i (AS/400 and iSeries)
Subject: Re: Varying fields questions
your file will look like
ISA*00* *00* *ZZ*RECEIVERID *12*SENDERID
*100325*1113*U*00403*000011436*0*T*>~
GS*FA*RECEIVERID*SENDERID*20100325*1113*24712*X*004030~
ST*997*1136~
AK1*PO*142~
AK2*850*0142~
AK5*A~
AK9*A*1*1*1~
SE*6*1136~
GE*1*24712~
IEA*1*000011436~
On Sun, Mar 30, 2014 at 8:02 PM, Henrik Rützou <hr@xxxxxxxxxxxx> wrote:
The string is an EDI X12 string. The question are how much you need towrote:
read in the entire document?
On Sun, Mar 30, 2014 at 7:32 PM, Alan Campin <alan0307d@xxxxxxxxx>
wrote:
It is not clear to me what exactly you are trying to do but I get the
hint that you are trying to apply a monolith solution to an ILE
problem and return everything in one call.
I think you are trying to do a read line combined with a tokenize a
string function.
By read line, I mean read all the characters up to the <CR><LF>
characters and then by tokenize I mean break the line down into
individual strings each one being delimited by an '*'.
Is this an accurate description of the problem?
If yes, I accomplish this with two service programs.
the IFS service program has a Read LIne function and the string
function has a tokenizer with the following functions.
XVSTGF_Tokenize
XVSTGF_GetToken
XVSTGF_GetTokenSize
etc
My point being that you need to break things down into small functions.
If you are interested I can send you the code.
On Sun, Mar 30, 2014 at 10:50 AM, Jack Tucky <jacktucky@xxxxxxxxx>
I modified Scott K's CSV code to process a string passed in insteadadded
of reading from an IFS file. I called the function EDI_GetFld. I
also
parameters for field delimiter and record delimiter so that I couldprocess
an EDI segment like this:looks
ISA*00* *00* *ZZ*SENDER *ZZ*RECEIVER
*140102*1141*U*00400*000047073*0*P**~
I use 18 EDI_GetFld's to fill all of the ISA's 18 fields.
Everything
good.move
EDI_getfld(peFldData: isa00: %size(isa00):sep:term)
EDI_getfld(peFldData: isa01: %size(isa01):sep:term), etc.
Isa00-ISA018 are defined as varying fields. They are in a DS that
represents all of the fields in an ISA Segment, ISA00 -ISA18.
My goal is to replace some 3rd party code that is no longer
working. To accomplish this and not have to change a bunch of
programs, I need to
this data structure to a 512 character max string, like this:fields
OutDta = ISA;
My problem is that OutDta contains varying field length bytes?
If you look at the individual fields, they look good:
ISA00 OF ISA = 'ISA'
ISA01 OF ISA = '00'
ISA02 OF ISA = ' '
ISA03 OF ISA = '00'
ISA04 OF ISA = ' '
ISA05 OF ISA = 'ZZ'
ISA06 OF ISA = 'SENDER '
ISA07 OF ISA = 'ZZ'
ISA08 OF ISA = 'RECEIVER '
ISA09 OF ISA = '140102'
ISA10 OF ISA = '1141'
ISA11 OF ISA = 'U'
ISA12 OF ISA = '00400'
But OutDta in debug/hex shows this:
0003C9E2 C10002F0 F0000A40 40404040 - ..ISA..00..
40404040 400002F0 F0000A40 40404040 - ..00..
40404040 400002E9 E9000FC7 C9C9C940 - ..ZZ..SEND
40404040 40404040 40400002 E9E9000F - ..ZZ..
C4E8D5C1 D4C9C340 40404040 40404000 - XXXXXXX .
06F1F4F0 F1F0F200 04F1F1F4 F10001E4 - .140102..1141..U
0005F0F0 F4F0F000 09F0F0F0 F0F4F7F0 - ..00400..0000470
F7F30001 F00001D7 00004000 01A10000 - 73..0..P.. ..~..
Is there a way to move my data structure that contains all varying
into a 512 character string and strip the lengths out? I've tried--
changing
Scott's code to use 512 fixed length fields as input and output
but I can't get that to work if I don't pass in 512 characters.
Sorry for the long post and I hope this makes sense. Thanks
Jack
--
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.
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.
--
Regards,
Henrik Rützou
http://powerEXT.com <http://powerext.com/>
--
Regards,
Henrik Rützou
http://powerEXT.com <http://powerext.com/>
--
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.
--
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.
As an Amazon Associate we earn from qualifying purchases.
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.