|
Hello Gerry,
The MI builtins offer a solution to the runtime definition requirement -
here's an example:
** See QSYSINC/MIH.MICPTCOM
D T_SIGNED C x'00'
D T_FLOAT C x'01'
D T_ZONED C x'02'
D T_PACKED C x'03'
D T_UNSIGNED C x'0A'
**
D DPA_Template_T Ds Based( pDPA )
D SclTyp 1a
D RcvLen 5i 0
D DecPos 3i 0 Overlay( RcvLen: 1 )
D TotDig 3i 0 Overlay( RcvLen: 2 )
D Rsv 10i 0
** Late bound copy numeric variable:
D LBCPYNV Pr ExtProc( '_LBCPYNV' )
D Target * Value
D Target_Tpl Const Like( DPA_Template_T )
D Source * Value
D Source_Tpl Const Like( DPA_Template_T )
** Late bound copy numeric variable - with rounding:
D LBCPYNVR PR extproc( '_LBCPYNVR' )
D Target * Value
D Target_Tpl Const Like( DPA_Template_T )
D Source * Value
D Source_Tpl Const Like( DPA_Template_T )
**
D SrcTpl s Like( DPA_Template_T )
D TgtTpl s Like( DPA_Template_T )
**
D SrcDs Ds
D Fields25 25a
D P12_3 12p 3 Inz( -12345678.915 )
D TgtDs Ds
D Fields38 38a
D S11_2 11s 2
**
D Msg s 52a
**
C Eval pDPA = %Addr( SrcTpl )
C Eval SclTyp = T_PACKED
C Eval TotDig = 12
C Eval DecPos = 3
C Eval Rsv = 0
**
C Eval pDPA = %Addr( TgtTpl )
C Eval SclTyp = T_ZONED
C Eval TotDig = 11
C Eval DecPos = 2
C Eval Rsv = 0
**
C CallP LBCPYNVR( %Addr( TgtDs ) + 38
C : TgtTpl
C : %Addr( SrcDs ) + 25
C : SrcTpl
C )
**
C Eval Msg = %char( P12_3 ) + ' --> ' +
C %char( S11_2 )
**
C Msg Dsply
**
C return
**
Best regards,
Carsten Flensburg
"Tucker Gerry"
<Gerry.Tucker@techni To: <rpg400-l@midrange.com>
color.com> cc:
Sent by: Subject: RE: Converting
string containing packed decimal to numeric
rpg400-l-admin@midra decimal
nge.com
30-01-2002 10:15
Please respond to
rpg400-l
Is there any references in IBM manuals to cvthc? I've checked the ILE C
for AS/400 Run-Time Reference but can't find it. I know that it's in
the QC2UTIL1 service program.
I was trying to use QXXPTOI but that only returns integer values. I
need this to return values whose size and decimal positions is only
known at runtime.
Regards,
Gerry Tucker
Senior Analyst Programmer
Technicolor Distribution Services
Wembley, U.K.
>-----Original Message-----
>From: Buck Calabro [mailto:Buck.Calabro@commsoft.net]
>Sent: 29 January 2002 18:48
>To: rpg400-l@midrange.com
>Subject: RE: Converting string containing packed decimal to numeric
>decimal
>
>
>Gerry wrote:
>
>>Is there a quick way to a string
>>containing packed decimal data into
>>its decimal equivalent, knowing the
>>number of length and decimal positions?
>
>One way is the C function(?) cvtch. I'm pretty sure you'll
>find hits in the
>archives and maybe on the FAQ.
>
> D H2C Pr ExtProc('cvthc')
> D * Value
> D * Value
> D 10I 0 Value
>
> D RecPtr S * inz
> D SrcPtr S * inz
> D Size S 10I 0 inz
>
> C Eval SrcPtr = %addr(AMARecHex)
> C Eval RecPtr = %addr(AMARecChr)
> C Eval Size=Recl * 2
> C* RECL is the length of the packed data.
>
> C CALLP H2C(RecPtr :
> C SrcPtr :
> C Size)
>
>After converting from hex to char, it'll be fairly simple to
>map that to a
>data structure and re-define as zoned.
>
> --buck
>_______________________________________________
>This is the RPG programming on the AS400 / iSeries (RPG400-L)
>mailing list
>To post a message email: RPG400-L@midrange.com
>To subscribe, unsubscribe, or change list options,
>visit: http://lists.midrange.com/cgi-bin/listinfo/rpg400-l
>or email: RPG400-L-request@midrange.com
>Before posting, please take a moment to review the archives
>at http://archive.midrange.com/rpg400-l.
>
>
_______________________________________________
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list
To post a message email: RPG400-L@midrange.com
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/cgi-bin/listinfo/rpg400-l
or email: RPG400-L-request@midrange.com
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-2025 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.