Cobol to .Net

M

Mythran

No Cobol.Net yet? Wha?!?

Anywho, hope someone is familiar enough with Cobol to help me out here. I
have some files written by COBOL applications that contain COMP-3 fields (on
a mainframe) that I ftp up to a network folder for processing in .Net.
Anyone know if it's possible (and how) to convert those COMP-3 (PIC S9(5)V99
COMP-3, for example) to a numeric of type double/single/et cetera?

Hope so, as of now, I'm writing all the fix-it cob programs to convert on
the mainframe before the ftp. If there is a .Net solution, that would be so
much easier.

Thanks,

Mythran
 
F

Frank Rizzo

Mythran said:
No Cobol.Net yet? Wha?!?

Anywho, hope someone is familiar enough with Cobol to help me out here. I
have some files written by COBOL applications that contain COMP-3 fields (on
a mainframe) that I ftp up to a network folder for processing in .Net.
Anyone know if it's possible (and how) to convert those COMP-3 (PIC S9(5)V99
COMP-3, for example) to a numeric of type double/single/et cetera?

Hope so, as of now, I'm writing all the fix-it cob programs to convert on
the mainframe before the ftp. If there is a .Net solution, that would be so
much easier.

There is, though I don't really know anything about it.
http://www.apress.com/book/bookDisplay.html?bID=112
 
A

Alejandro Lapeyre

Here there is a good description of the COMP-3 fields:
http://www.discinterchange.com/TechTalk_Packed_fields_.html

It looks like it is a "packed" decimal representation: every byte contains
two decimal digits. The last byte contains the sign.

An unchecked function to convert a buffer may be this:
(Note that OutlookExpress does not compile this :))

function PackedToDecimal(buffer() as byte) as decimal
dim result as decimal = 0
dim i as integer
dim b as byte
for i = 0 to buffer.length - 2
b = buffer(i)
result += (b and (&HF)) + ((b >> 4) * 10)
next
b = buffer(i)
r +=((b >> 4) * 10)
dim s as byte = (b and &HF)
if s = &HD Then
result = -result
end if
return r
end function

You will have to divide the result if it contains decimal digits.


Best Regards,
Alejandro Lapeyre
 
C

Cor Ligthert

Mythran,

As far as I remember me is for you problem that every cobol compiler can use
other formats for Comp-3

It depends on the platform the program is compiled for. By instance the
sample you saw is as far as I remember me typical for IBM EBCDIC platforms.

However although a lot of people are thinking that, is not the only platform
where Cobol is used. There where at least two developments of Cobol used on
the PC's, which are sold by different vendors and have got the names from
those vendors. Because of the fact that the PC does not use EBCDIC you can
understand that the format on that alone because that is not the same as on
an IBM computer.

Therefore I would in your situation investigate what format is made. With
first starting on what platform the Cobol is used.

Not much, however I hope it helps,

Cor
 
M

Mythran

Cor Ligthert said:
Mythran,

As far as I remember me is for you problem that every cobol compiler can
use other formats for Comp-3

It depends on the platform the program is compiled for. By instance the
sample you saw is as far as I remember me typical for IBM EBCDIC
platforms.

However although a lot of people are thinking that, is not the only
platform where Cobol is used. There where at least two developments of
Cobol used on the PC's, which are sold by different vendors and have got
the names from those vendors. Because of the fact that the PC does not use
EBCDIC you can understand that the format on that alone because that is
not the same as on an IBM computer.

Therefore I would in your situation investigate what format is made. With
first starting on what platform the Cobol is used.

Not much, however I hope it helps,

Cor

Yeah, I understand. We have found a way to convert by sending the file from
the mainframe to the network folder via ftp in binary mode. That gives us a
binary format in ebcdic. Now I can manually uncompress all fields that are
packed and then convert all numeric data and then convert the text (not
including controls characters). This will give us what we need. So, just
gotta create the .Net assemblies for doing this :)

Thanks for everyone's insights.

Mythran
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top