|
Bob,
Thanks for asking. Yes. After all of the great suggestions that I
got from this list I decided to do a "manual type" conversion both ways. (as
is in keeping with this company's attitude of "write so a junior programmer
can figure it out!!")
Here are my little routines... (for reference... these binary
strings are generated by some sort of a battery tester device.)
Binary string '010101010' to a decimal number....
MeasCCAd is the decimal number.
MeasCCA is the binary string.
(Yes, CCA stands for Cold Cranking Amps!)
C Clear MeasCCAd
C Eval Divsr = 256
C 1 Do 9 Idx2
C If %SubSt(MeasCCA:Idx2:1) = '1'
C Eval MeasCCAd = MeasCCAd + Divsr
C EndIf
C Eval Divsr = Divsr / 2
C EndDo
Decimal number to a binary string...
VinB is the character string to hold the binary number.
VinD is the decimal number being converted.
(Yes, VIN stands for Vehicle Identification Number!)
C Eval Divsr = 256
C Clear VinB
C 1 Do 9 Idx2
C If VinD / Divsr >= 1
C Eval %SubSt(VinB:Idx2:1) = '1'
C Eval VinD = VinD - Divsr
C Else
C Eval %SubSt(VinB:Idx2:1) = '0'
C EndIf
C Eval Divsr = Divsr / 2
C EndDo
Thanks to everybody for your input.
Jerry
-----Original Message-----
From: Bob cozzi [mailto:cozzi@xxxxxxxxx]
Sent: Monday, June 09, 2003 9:12 AM
To: 'RPG programming on the AS400 / iSeries'
Subject: RE: Binary Characters to Decimal
Jerry,
As Hans pointed out strtol (or strtoll for larger numbers) converts from
binary notation 101101 to decimal, but did you ever find a way to go
backwards? I have an old RPGIII grunt method technique that I've been using
for 10 years, but I'd rather find a simpler method. Just wondering.
Bob Cozzi
Cozzi Consulting
www.rpgiv.com
-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
On Behalf Of Hans Boldt
Sent: Friday, June 06, 2003 8:07 AM
To: rpg400-l@xxxxxxxxxxxx
Subject: Re: Binary Characters to Decimal
Feador, Jerry wrote:
> Hi All,
>
> I've been tasked with converting a character representation of a
> binary number to it's decimal equivalent and vice versa. For example I
have
> a series of nine characters '001011101' and I'm suppose to get the AS/400
to
> come up with 93. Or I have the decimal number 321 and I need to get to
> '101000001'
>
> I've checked the archives and all past information deals with the
> conversion of a true binary number to decimal, not this character
> representation of one....
>
> Is it possible to just move this string into a binary field and then
> to a regular numeric field?
For conversion of numbers in base 2 to decimal, try the C run-time
library function "strtol()". Here's an example:
------------------------------------------------------------------
H dftactgrp(*no) bnddir('QC2LE')
D strtol pr 10i 0 extproc('strtol')
D nptr * value options(*string)
D endptr * value
D base 10i 0 value
D ptr s *
/free
dsply (strtol('1': %addr(ptr): 2));
dsply (strtol('10': %addr(ptr): 2));
dsply (strtol('11': %addr(ptr): 2));
dsply (strtol('100': %addr(ptr): 2));
dsply (strtol('10010101': %addr(ptr): 2));
*inlr = *on;
/end-free
------------------------------------------------------------------
Cheers! Hans
_______________________________________________
This is the RPG programming on the AS400 / 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 AS400 / 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-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.