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