1 D-PIC . . .BLW=00000 018 DS 8C Disp-Num-Edit
1 E-PIC . . .BLW=00000 020 DS 8C Disp-Num-Edit
1 F-PIC . . .BLW=00000 028 DS 9C Disp-Num-Edit
1 A . . . . .BLW=00000 038 DS 5C Disp-Num
1 B . . . . .BLW=00000 040 DS 5P Packed-Dec
I've chopped and pasted this from the "data-map" in a compile listing. First column is the level-number, second the data-name, sixth is the length and type and last is a better description of the type. If look at a data-map for your record-layout, you'll find you can get the start positions.
Try it. Have a look in the Enterprise COBOL Programming Guide for a description of the data-map, and how to get it. Then let the compiler do all the work.
You may need extra, but if you look at the full thing you'll see it has the source line-number on, and the source line-number of the next field, so if you want to know the number of decimals or the number of occurs you only need to look for exactly those things.