View previous topic :: View next topic
|
Author |
Message |
gylbharat
Active Member
Joined: 31 Jul 2009 Posts: 565 Location: Bangalore
|
|
|
|
Hi,
Is there a way to convert COMP-1 data type to readable format?
Like COMP-1 --> 1.2222E01 |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10888 Location: italy
|
|
|
|
yes |
|
Back to top |
|
|
Nic Clouston
Global Moderator
Joined: 10 May 2007 Posts: 2454 Location: Hampshire, UK
|
|
|
|
I presume you mean with SYNCSORT as JCL cannot do it and SYNCSORT questions come under this part of the forum. |
|
Back to top |
|
|
Anuj Dhawan
Superior Member
Joined: 22 Apr 2006 Posts: 6248 Location: Mumbai, India
|
|
|
|
gylbharat wrote: |
Is there a way to convert COMP-1 data type to readable format?
Like COMP-1 --> 1.2222E01 |
Do you want to use COBOL or some sort product at your shop. File-Aid can also do it, however, can't really give a direct syntax - as this shop does not have File-Aid installed but it might worth a shot, if you've it and you intend to use it.
Or REXX: ibmmainframes.com/about53643.html |
|
Back to top |
|
|
gylbharat
Active Member
Joined: 31 Jul 2009 Posts: 565 Location: Bangalore
|
|
|
|
I want to do it through Syncsort. |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10888 Location: italy
|
|
|
|
thanks &deity, couldn' t You have said so from the beginning |
|
Back to top |
|
|
Bill O'Boyle
CICS Moderator
Joined: 14 Jan 2008 Posts: 2501 Location: Atlanta, Georgia, USA
|
|
|
|
FWIW, this can be done easily in Assembler, COBOL and PL/I.
In fact, the same code can be used for COMP (Halfword/Fullword) and COMP-2 (Long Float).
Review the following - it's the same concept for all of the above data-formats, including COMP-1 -
www.ibmmainframes.com/viewtopic.php?p=172218&highlight=#172218 |
|
Back to top |
|
|
Anuj Dhawan
Superior Member
Joined: 22 Apr 2006 Posts: 6248 Location: Mumbai, India
|
|
Back to top |
|
|
gylbharat
Active Member
Joined: 31 Jul 2009 Posts: 565 Location: Bangalore
|
|
|
|
Hi,
I know, i raised this request some time back... but now its not FTP... we are doing a migration from VSAM files to DB2... we want to get the data in the readable format and then load data in DB2 through load utilities...
We want data to be in readable as it would also help in reconciliation.
Please let me know how we can convert COMP-1 and COMP-2 to readable format through SORT. |
|
Back to top |
|
|
dbzTHEdinosauer
Global Moderator
Joined: 20 Oct 2006 Posts: 6966 Location: porcelain throne
|
|
|
|
db2 has floating point (real and double - which is your comp-1 and comp-2 cobol types).
are you going to have db2 real and double or decimal datatypes?
my own question, but how are you going to reconcile?
maybe using the edit masks to convert floating point to 'readable'.
FL Floating point. Normalized. Signed. |
|
Back to top |
|
|
gylbharat
Active Member
Joined: 31 Jul 2009 Posts: 565 Location: Bangalore
|
|
|
|
Most probably we would be loading these values in Decimal data types..
Dick, Can you give me a sample to convert FL using EDIT MASKS to readable format? |
|
Back to top |
|
|
dbzTHEdinosauer
Global Moderator
Joined: 20 Oct 2006 Posts: 6966 Location: porcelain throne
|
|
|
|
sorry, i am not a syncsort user, i only have a manual. |
|
Back to top |
|
|
gylbharat
Active Member
Joined: 31 Jul 2009 Posts: 565 Location: Bangalore
|
|
|
|
Thanks Dick.... I will refer the manual... but a small sample would be helpful... may be someone who is syncsort expert can provide a sample |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
|
|
|
|
Hello,
Syncsort MFX (1.4) supports Floating Point. |
|
Back to top |
|
|
gylbharat
Active Member
Joined: 31 Jul 2009 Posts: 565 Location: Bangalore
|
|
|
|
Any idea any one.... how do we convert comp-1 or comp-2 to readable format using sort? |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
|
|
|
|
Hello,
If i understand, currently the floating point data is processed by the application. DB2 supports floating point (and the table(s) would surely store the data as floating point).
Why is there a need to create something "readable" in the middle? How does the application currently present these values so people can read them? |
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
You're the one with Syncsort. Did you try with an edit mask? I agree with Dick and dbz, why bother making it "readable" (to humans with no knowledge of internal data representations). It sounds like DB2'll su** it up just fine as it is. |
|
Back to top |
|
|
gylbharat
Active Member
Joined: 31 Jul 2009 Posts: 565 Location: Bangalore
|
|
|
|
Hi,
Currently the floating point data is present in the VSAM file...
We will be writing a SORT to convert the VSAM file data to flat file with all readable data. That is expanding comp, comp-3, etc... Only problem is with the COMP-1 and COMP-2 fields where we are not able to convert it into readable format using sort.
Once we have the data in the readable format , we will FTP this data to Unix server, where it will be loaded in oracle table.
Having data in the readable format makes it easier in analysis and verify data.
Please let me know how we can convert the COMP-1 data to readable format? |
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
OK, that is a very good reason to have it in character/text.
Have you tried the edit mask? Seems I've asked that before. |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19243 Location: Inside the Matrix
|
|
|
|
Hello,
How does the current application present these fields to the user?
You may neeed to do the same thing here to get what you want. Possibly by coding a SORT Exit. |
|
Back to top |
|
|
gylbharat
Active Member
Joined: 31 Jul 2009 Posts: 565 Location: Bangalore
|
|
|
|
Hi,
I tried running with EDIT masks... But every data can be different depending upon power of 10. In such cases how do we specify how many digits there will be after decimal point.
Example.
INPUT FILE:
Code: |
RECFM FB LRECL 80 Rec# 1 - CAPS OFF I+D ON
EMP-ID FILLER EMP-NAME FILLER EMP-FD
C(6) (1-6) C(1) (7-7) C(10) (8-17) C(1) (18-18) FP(4) (19-22)
---------- ---------- ------------ ------------ -------------
****** ************************** TOP OF DATA **************************
000001 111111 AAAAAAA +1.23456E+01
000002 111111 AAAAAAA +1.23456E+02
000003 111111 AAAAAAA +1.23456E+03
000004 111111 AAAAAAA +1.23456E+04
000005 111111 AAAAAAA +1.23456E+05
000006 111111 AAAAAAA +1.23456E+06
000007 111111 AAAAAAA +1.23456E+07
000008 111111 AAAAAAA +1.23456E+08
000009 111111 AAAAAAA +1.23456E+09
000010 111111 AAAAAAA +1.23456E+10
000011 111111 AAAAAAA +1.23456E+11
000012 111111 AAAAAAA +1.23456E-01
000013 111111 AAAAAAA +1.23456E-02
000014 111111 AAAAAAA +1.23456E-03
000015 111111 AAAAAAA +1.23456E-04
000016 111111 AAAAAAA +1.23456E-05
000017 111111 AAAAAAA +1.23456E-06
000018 111111 AAAAAAA +1.23456E-07
000019 111111 AAAAAAA +1.23456E-08
000020 111111 AAAAAAA +1.23456E-09
000021 111111 AAAAAAA +1.23456E-10
000022 111111 AAAAAAA +1.23456E-11
|
SORT JOB
Code: |
//STEP EXEC PGM=SORT
//SORTIN DD DSN=DATASET,DISP=SHR
//SORTOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
OUTREC FIELDS=(1,22,C'*',19,4,FL,EDIT=(TTTTTTTTTT.TTTTTTTTTTTTT))
|
SORTOUT OUTPUT
Code: |
****** ***************************** Top of Data ******************************
000001 111111 AAAAAAA Egº*0000000000.0000000000012
000002 111111 AAAAAAA â#ÈA*0000000000.0000000000123
000003 111111 AAAAAAA ä( 8*0000000000.0000000001234
000004 111111 AAAAAAA à º*0000000000.0000000012345
000005 111111 AAAAAAA á *0000000000.0000000123456
000006 111111 AAAAAAA ã Oa*0000000000.0000001234561
000007 111111 AAAAAAA ã¯/ *0000000000.0000012345614
000008 111111 AAAAAAA åͯy*0000000000.0000123456128
000009 111111 AAAAAAA çñnY*0000000000.0001234561024
000010 111111 AAAAAAA ñ Ù£*0000000000.0012345610240
000011 111111 AAAAAAA ¢ ´þ*0000000000.0123456061440
000012 111111 AAAAAAA ªJ*0000000000.0000000000000
000013 111111 AAAAAAA j+*0000000000.0000000000000
000014 111111 AAAAAAA &Y=*0000000000.0000000000000
000015 111111 AAAAAAA aËÚ*0000000000.0000000000000
000016 111111 AAAAAAA õ Ú*0000000000.0000000000000
000017 111111 AAAAAAA ¶Ã*0000000000.0000000000000
000018 111111 AAAAAAA Q*0000000000.0000000000000
000019 111111 AAAAAAA *0000000000.0000000000000
000020 111111 AAAAAAA èOy*0000000000.0000000000000
000021 111111 AAAAAAA g¨û*0000000000.0000000000000
000022 111111 AAAAAAA R D*0000000000.0000000000000
****** **************************** Bottom of Data ****************************
|
|
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
Easy. There will always be one digit in front of the decimal place. By convention, this will either be significati (1 through 9) or zero. The rest of (or the entire) the number is represented in the decimal part, and carries a "scaling" factor, like your example. E+09, E-02. Which is X10 to the power of 9, and X10 to the power of minus 2 (the last is a number less than 1 or greater than -1 if the number is negative.
If there is nothing in the MASK which supports this notation, then you can't do it with the MASK.
Which leaves, doing it in a program, or trying to "unpick" the data format. If you want to try the last, you have to find out how COMP-1 is stored (COMP-2 is the same, just longer). |
|
Back to top |
|
|
gylbharat
Active Member
Joined: 31 Jul 2009 Posts: 565 Location: Bangalore
|
|
|
|
Is there a way in sort to convert FL to External floating point as 1.23E+01 |
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
This is taking a long time :-)
You have Syncsort documentation. You can check whether there is anything in the edit MASK which supports floating point.
If there is not, you either have to "invent" a method to do it by decomposing the format of the data that the "float" is held in, or your need to do it in something else (as was suggested much earlier in the thread). |
|
Back to top |
|
|
gylbharat
Active Member
Joined: 31 Jul 2009 Posts: 565 Location: Bangalore
|
|
|
|
I do not have syncsort documentation... However, I checked the edit masks given in the below link...
www.ibmmainframes.com/post-40358.html
looks like there is no edit mask for floating point numbers. |
|
Back to top |
|
|
|