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