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



You are correct.  I've never had the need to convert in the other direction
so I've given that no thought at this point in time.  Let me know what you
come up with on it!



-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
On Behalf Of Lim Hock-Chai
Sent: Monday, June 20, 2005 1:29 PM
To: RPG programming on the AS400 / iSeries
Subject: RE: how to populate the field when
thefieldnameisstored:Actuallythere are lot more fields

seems like the code below is to convert pack field in the file to a string
field.  Is that right?  My question is more toward converting a string field
into pack field that you can substr it into the pack field in the file using
the method described.


-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx]On Behalf Of Shannon ODonnell
Sent: Monday, June 20, 2005 1:05 PM
To: 'RPG programming on the AS400 / iSeries'
Subject: RE: how to populate the field when the
fieldnameisstored:Actuallythere are lot more fields


Good question!  I never tried this on XML data.  But basically, what I do
with packed data in a DB2 database is to convert the hex value to a
character value. 

  *---------------------------------------------------------------------
      *    ExtPack - Extract Packed Data from DS
      *---------------------------------------------------------------------
     C     ExtPack       Begsr
      *
      ****
     C                   Eval      filwrk = DataFile
     C                   Eval      Hexstring = %Subst(filwrk:iBps:iLen)
      ****
      *
     C                   eval      NumHex = 0
     C                   Evalr     Char16 = %subst(hexstring:1:iLen)
     C                   Eval      CharField = %char(NumHex)
     C                   If        NumHex >= 0
     C                   Eval      Sign = '+'
     C                   Else
     C                   Eval      Sign = '-'
     C                   Endif
      *
     C                   Endsr
      *
----------------------------------------------------------------------------
--

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
On Behalf Of Lim Hock-Chai
Sent: Monday, June 20, 2005 12:54 PM
To: RPG programming on the AS400 / iSeries
Subject: RE: how to populate the field when the field
nameisstored:Actuallythere are lot more fields

Haven't had a chance to read the whole article.  Seems like the method is
similar.

If the field is a pack decimal and the data is in xml file.  How do you
convert the string data in the xml into a pack format?


-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx]On Behalf Of Shannon ODonnell
Sent: Monday, June 20, 2005 12:48 PM
To: 'RPG programming on the AS400 / iSeries'
Subject: RE: how to populate the field when the field name
isstored:Actuallythere are lot more fields


Here's one way to do it.  It works for all data types.

http://www.itjungle.com/mpo/mpo112102-story01.html



-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
On Behalf Of Lim Hock-Chai
Sent: Monday, June 20, 2005 12:26 PM
To: RPG programming on the AS400 / iSeries
Subject: RE: how to populate the field when the field name is
stored:Actuallythere are lot more fields

you can use QUSLFLD to get the field output location and then substring the
data to the field location.  This method will not work for some field types
such as pack decimal. 

Here is the basic flow:
1) A service program with an export procedure that accept file name, record
format name and field offset and field length .
        example: rtvFieldOutputLoc("MYFILE" :"MYFILEFMT" :myField :myOffset
:myLen)
        
        The hard part is to create this service program, it basically need
to do the following in the above procedure:
        1.1) call QUSLFLD to get the file field layout and put the result in
user index.  (For speed, if already exist, do not need to do this step)
        1.2) Lookup the field offset and length from the above user index
and return to the called.

2) In the caller program:
        2.1) in D speac
                D wkMYFILE                            likerec(MYFILEFMT
:*output)

        2.1) in C Spec 
                C                   callp     rtvFieldOutputLoc("MYFILE"
:"MYFILEFMT" 
                C                                               :myField
:myOffset :myLen)
                C                   eval      %subst(wkMYFILE :myOffset
:myLen) = myValue

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx]On Behalf Of Banerjee, Amitava
Sent: Friday, June 17, 2005 12:41 PM
To: rpg400-l@xxxxxxxxxxxx
Subject: how to populate the field when the field name is stored:
Actuallythere are lot more fields


Hi All,
Thanks for the help. 
Actually right now I am using 'SELECT' opcode. But, in reality the file1
does not have only those many fields. It will have hundreds of tags with
hundreds of field names. This is actually extracting data from xml file.
That's why I was thinking if there is any better way to do this.

Thanks
Amitava


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 copyright@midrange.com.

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