Solved

# Binary to Decimal in FORTRAN

Posted on 2004-09-21
1,940 Views
I was wondering if anybody knew a program for converting binary to decimal using Fortran. I'm trying to help out a student of mine and I don't know much about Fortran.
0
Question by:jjohn110
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 4
• 3

LVL 45

Accepted Solution

Kent Olsen earned 500 total points
ID: 12119165

When you say "convert binary to decimal" are you really just wanting to display the value of an integer/float?  Or are you wanting to do a "dump" of a buffer?  This is a bit ugly, but it should get you a good start.

Kent

PROGRAM DUMPX
CHARACTER XSTRING(80)
INTEGER IARRAY(20)

DUMPIT (XSTRING, 80)
DUMPIT (IARRAY, 80)

END

SUBROUTINE DUMPIT (IARRAY, LENGTH)
INTEGER IARRAY(20);
INTEGER LENGTH

DO 10 I=1, LENGTH, 4
W1 = IARRAY(I) / (256 * 3)
W2 = (IARRAY(I) - (W1 * (256 * 3))) / (256 * 2)
W3 = (IARRAY(i) - (W1 * (256 * 3)) - (W2 * (256 * 2))) / 256
W4 = (IARRAY(i) - (W1 * (256 * 3)) - (W2 * (256 * 2)) - (W3 * 256))
WRITE (6, 'I2 I2 I2 I2', W1, W2, W3, W4)
10   CONTINUE
END

0

LVL 45

Expert Comment

ID: 12120060
Hi Kent,

Beware :-) ... this might turn out to be an assignment. I would not teach a student in a language which I do not know ;o) ...

Since I dont know F of FORTRAN, your call to draw the line.

cheers
sunnycoder
0

LVL 45

Expert Comment

ID: 12121909

Hi Sunny,

This functionality was ugly to install into FORTRAN code.  Largely because the resulting file became dependent on the underlying architecture (and ultimately compiler extensions).  Everywhere that I ever worked that made extensive use of FORTRAN wound up having to do this sort of thing, so I didn't take this as homework.

The easiest, best, and fastest way is to write an assembly coded subroutine to convert the buffer so that the FORTRAN code simply did I/O, thereby adding to the machine dependence.  But most application coders don't know assembly language, so that's not an option.

And then there's the shifting and masking issue.  I resolved it with simply math, but that fits nicely into an assembly subroutine.  Very few newbies would work out this math, so if it is a homework assignment someone will have quite a bit of explaining to do.  :)

This code's dependent on a 32-bit system and may suffer from "odd results" depending on the sign bit.  Also, I haven't had a FORTRAN compiler for 20 years so there's certainly no guarantee that this will compile.  :)

Thanks for lookin' out for me, Sunny.
Kent

0

LVL 45

Expert Comment

ID: 12122048
Glad that I never found FORTRAN .... but then, I was born in easier times ;o)

Are you feeling jealous of me :-D ... lol

I trust your call Kent ... It was just a gentle reminder, just to be on the safe side ...

cheers mate
0

LVL 45

Expert Comment

ID: 12122239

[PPtttttttt]

Speaking of machine dependence, one series of systems that I used many years ago (and still consult on) reserved the first two words of a job for system communication.  Jobs made system requests by placing a non-null value into the second word (word 1, counting from zero :) ).

A non-standard system request from FORTRAN looked like this:

INTEGER REQUEST
INTEGER SYS(1)

*  Build the request string into the integer variable REQUEST

SYS(2 - LOC(SYS)) = REQUEST
10 IF (SYS(2 - LOC(SYS)) .NE. 0)
GO TO 10

Try getting that to work in Windows.  ;-)

Kent
0

LVL 45

Expert Comment

ID: 12130936
<shudder> ignorance IS a bliss ;o)
0

LVL 45

Expert Comment

ID: 12132082

If so, there are an awful lot of "Happy Campers" around the boards....  ;-)

0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A list of useful business intelligence software.
In our personal lives, we have well-designed consumer apps to delight us and make even the most complex transactions simple. Many enterprise applications, however, are a bit behind the times. For an enterprise app to be successful in today's tech woâ€¦
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relatâ€¦