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



Jerry - here is a simple program that may help you...it will convert the
character representation of a binary value to decimal, or it will convert a
decimal value to the equivalent binary value in character form.

Some of the other guys here may have a more elegant solution, but you can't
complain about the price (free)...

HTH,

Steve Landess
Austin, Texas
(512) 423-0935

----- Original Message ----- 
From: "Feador, Jerry" <JFeador@xxxxxxxxxx>
To: "'RPG programming on the AS400 / iSeries'" <rpg400-l@xxxxxxxxxxxx>
Sent: Thursday, June 05, 2003 5:03 PM
Subject: Binary Characters to Decimal


>
> 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?
>
> Help...
>
> Thanks,
>
>
> Jerry L. Feador
> Sr. Programmer/Analyst
> Kia Motors America, Inc.
> (949) 595-5810
> _______________________________________________
> 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.
>
>
      *************************************************************
      *
      *  Program name:  CVTBIN
      *        Author:  Steve Landess
      *          Date:  6/5/2003
      *       Purpose:  This program will convert a Binary value
      *                 (passed as a character value) to Decimal,
      *                 or it will convert a Decimal value to
      *                 binary (as a character representation).
      *
      *  Parms:
      *  1)  BINFLD is a 16-byte alphanumeric field
      *  If you pass the character representation of a binary value
      *  in BINFLD, it will be converted to its decimal equivalent
      *  and returned in DECFLD.
      *
      *  2) DECFLD is a 15.5 numeric field
      *  If you pass a decimal value in DECFLD, the binary
      *  equivalent (in character form) will be returned in BINFLD.
      *
      *  *** NOTE ***
      *  As written, the maximum Decimal value that can be
      *  converted by this program is 65535.
      *
      *************************************************************
     D BINFLD          DS            16
     D BIN                            1    DIM(16)
     D DECFLD          S             15  5
      *
     D TWO             S              3  0 INZ(002)
     D WORK5           S              5  0 INZ(*ZEROS)
     D REMAINDER       S              5  0 INZ(*ZEROS)
     D INDEX           S              3  0 INZ(*ZEROS)
     D EXPONENT        S              3  0 INZ(*ZEROS)
     D DIVISOR         S              5  0 INZ(*ZEROS)
     D RESULT          S              5  0 INZ(*ZEROS)
      *
     C     *ENTRY        PLIST
     C                   PARM                    BINFLD
     C                   PARM                    DECFLD
      *
      *    Convert Binary to Decimal:
      *
     C                   SELECT
     C     BINFLD        WHENNE    *BLANKS
     C                   EVAL      DECFLD = *ZEROS
     C                   EVAL      EXPONENT = 0
     C                   EVAL      INDEX = 16
      *
     C     1             DO        16
     C                   IF        BIN(INDEX) = '1'
     C                   EVAL      DECFLD = (DECFLD + ( TWO ** EXPONENT ))
     C                   ENDIF
     C                   EVAL      INDEX = INDEX - 1
     C                   EVAL      EXPONENT = EXPONENT + 1
     C                   ENDDO
      *
      *    Convert Decimal to Binary:
      *
     C     DECFLD        WHENNE    *ZEROS
     C                   EVAL      BINFLD   = *BLANKS
     C                   EVAL      EXPONENT = 15
     C                   EVAL      WORK5    = DECFLD
      *
     C     1             DO        16
     C                   EVAL      INDEX = INDEX + 1
     C                   EVAL      DIVISOR = (TWO ** EXPONENT)
     C     WORK5         DIV       DIVISOR       RESULT
     C                   MVR                     REMAINDER
     C                   IF        RESULT <> 0
     C                   MOVE      '1'           BIN(INDEX)
     C                   EVAL      WORK5 = REMAINDER
     C                   ELSE
     C                   MOVE      '0'           BIN(INDEX)
     C                   ENDIF
     C                   EVAL      EXPONENT = EXPONENT - 1
     C                   ENDDO
      *
     C                   ENDSL
      *
     C                   EVAL      *INLR = *ON

As an Amazon Associate we earn from qualifying purchases.

This thread ...

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 [javascript protected email address].

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