Hi,
first you have to isolate the numeric parts out of the pic x(300) field, so if you know where the numeric parts are, it will help. If you know the exact place, you can redefine that part with a pic 9(..). If you don't know the place, you can use all kinds of ways to get it, inspect is one possibility, a perform varying and using reference modification is a possibility.
If you found it, you can move it to an other alfanumeric field which has a numeric redefines. So for example, if you found out that the numeric part starts at START-POS and the length is LENGTH-NUM you can move it to a field like:
01 STRING-NUM PIC X(18).
01 NUM REDEFINES STRING-NUM PIC 9(18).
MOVE ZERO TO NUM
MOVE STRING-X-300(START-POS:LENGTH-NUM) TO
STRING-NUM (19 - LENGTH-NUM:LENGTH-NUM)
and now NUM contains your numeric data.
A funny but not most efficient way to find the first part of the string is by defining this:
01 STRING-X-300.
03 STRING-X-300-FIRST-BYTE PIC X.
03 STRING-X-300-REST PIC X(299).
IF STRING-X-300 NOT = SPACE
PERFORM UNTIL STRING-X-300-FIRST-BYTE IS NUMERIC
MOVE STRING-X-300-REST TO STRING-X-300
END-PERFORM
END-IF
Have fun!