Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

ILLEGAL CHARACTER IN NUMERIC FIELD

Status
Not open for further replies.

jps111s

Programmer
Feb 19, 2001
6
0
0
US
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. HP8665C.
OBJECT-COMPUTER. HP8665C.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT bullfile ASSIGN TO
"A:\bullfile.dat".
SELECT BULL-REPORT ASSIGN TO "OUTPUT.Dat".
*
DATA DIVISION.
FILE SECTION.
FD bullfile
LABEL RECORDS ARE STANDARD.
01 BR-BULL-RECORD.
05 BR-CUSTOMER PIC X(20).
05 BR-BREED PIC X(20).
05 BR-SALE-DATE PIC X(6).
05 BR-BIRTH-DATE PIC X(6).
05 BR-BULL-WEIGHT PIC 9(4).
05 BR-SALE-PRICE PIC 9(5)V99.
FD BULL-REPORT.
01 CR-CUSTOMER-RECORD PIC X(132).
WORKING-STORAGE SECTION.
01 WS-DATE PIC 9(6).
* WS-PROCESSING-INDICATORS
01 WS-END-OF-FILE PIC X(3) VALUE 'END'.
01 WS-COUNTER PIC 999 VALUE 0.
01 WS-ACCUMULATORS.
05 TOT-TOTAL-SALES PIC 9(5)V99 VALUE 0.
05 TOT-TOTAL-POUNDS PIC 9(4) VALUE 0.
01 WS-DATA.
05 WS-AVERAGE-SALE-PRICE PIC 9(5)V99.
05 WS-AVERAGE-PRICE-POUND PIC 9(5)V99.
01 DL-DETAIL-LINE.
05 FILLER PIC X(22) VALUE SPACES.
05 DL-CUSTOMER PIC X(20).
05 FILLER PIC X(5) VALUE SPACES.
05 DL-BREED PIC X(20).
05 FILLER PIC X(5) VALUE SPACES.
05 DL-SALE-DATE PIC Z9/99/99.
05 FILLER PIC X(2) VALUE SPACES.
05 DL-BIRTH-DATE PIC Z9/99/99.
05 FILLER PIC X(5) VALUE SPACES.
05 DL-BULL-WEIGHT PIC 9(4).
05 FILLER PIC X(5) VALUE SPACES.
05 DL-SALE-PRICE PIC 9(5)V99.
05 FILLER PIC X(20) VALUE SPACES.
01 HD-REPORT-HEADING-COMPANY-1.
05 FILLER PIC X(58) VALUE SPACES.
05 FILLER PIC X(16)
VALUE 'BULL TRADERS INC'.
05 FILLER PIC X(59) VALUE SPACES.
01 HD-REPORT-HEADING-COMPANY-2.
05 FILLER PIC X(57) VALUE SPACES.
05 FILLER PIC X(20)
VALUE 'LAWRENCE COUNTY, MO.'.
05 FILLER PIC X(57) VALUE SPACES.
01 HD-REPORT-HEADING-DATE.
05 FILLER PIC X(62) VALUE SPACES.
05 HD-HEADING-DATE PIC X(6).
05 FILLER PIC X(62) VALUE SPACES.
01 HD-COLLUMN-HEADING-1.
05 FILLER PIC X(22) VALUE SPACES.
05 FILLER PIC X(20) VALUE 'CUSTOMER'.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(20) VALUE 'BULL'.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(6) VALUE 'SALES'.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(6) VALUE 'BIRTH'.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(4) VALUE 'BULL'.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(7) VALUE 'SALE'.
05 FILLER PIC X(22) VALUE SPACES.
01 HD-COLLUMN-HEADING-2.
05 FILLER PIC X(24) VALUE SPACES.
05 FILLER PIC X(18) VALUE 'NAME'.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(20) VALUE 'BREED'.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(6) VALUE 'DATE'.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(6) VALUE 'DATE'.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(6) VALUE 'WEIGHT'.
05 FILLER PIC X(5) VALUE SPACES.
05 FILLER PIC X(7) VALUE 'PRICE'.
05 FILLER PIC X(22) VALUE SPACES.
01 FT-FOOTING-1.
05 FILLER PIC X(23)
VALUE 'TOTAL TRANSACTIONS ARE '.
05 FT-TRANSACTIONS PIC ZZ9.
01 FT-FOOTING-2.
05 FILLER PIC X(13)
VALUE 'TOTAL POUNDS '.
05 FT-POUNDS PIC ZZZ9.
01 FT-FOOTING-3.
05 FILLER PIC X(26)
VALUE 'TOTAL DOLLARS RECIEVED IS '.
05 FT-DOLLARS-RECIEVED PIC $$,$$$.99.
01 FT-FOOTING-4.
05 FILLER PIC X(27)
VALUE 'AVERAGE PRICE PER POUND IS '.
05 FT-AVERAGE-POUND PIC $$$.99.
01 FT-FOOTING-5.
05 FILLER PIC X(22)
VALUE 'AVERAGE SALE PRICE IS '.
05 FT-AVERAGE-SALE PIC $$,$$$.99.
*
PROCEDURE DIVISION.
A000-BULL-REPORT.
PERFORM B100-INITIAL-ROUTINE.
PERFORM B200-PROCESS-RECORDS
UNTIL WS-END-OF-FILE is equal to 'NO '.
PERFORM B300-ENDING-ROUTINE.
STOP RUN.
B100-INITIAL-ROUTINE.
PERFORM C100-OPEN-FILES.
PERFORM C200-INITIALIZE-VARIABLES.
PERFORM Z100-PRINT-HEADINGS.
PERFORM Z200-READ-BULL-RECORD.
B200-PROCESS-RECORDS.
PERFORM C400-CREATE-DETAIL-RECORD.
PERFORM C500-CALCULATE-VALUES.
PERFORM C600-CREATE-OUTPUT.
PERFORM Z200-READ-BULL-RECORD.
B300-ENDING-ROUTINE.
CLOSE bullfile
BULL-REPORT.
C100-OPEN-FILES.
OPEN INPUT bullfile
OUTPUT BULL-REPORT.
C200-INITIALIZE-VARIABLES.
INITIALIZE WS-COUNTER.
INITIALIZE WS-ACCUMULATORS.
INITIALIZE WS-DATA.
ACCEPT WS-DATE FROM DATE.
C400-CREATE-DETAIL-RECORD.
MOVE BR-CUSTOMER TO DL-CUSTOMER.
MOVE BR-BREED TO DL-BREED.
MOVE BR-BIRTH-DATE TO DL-BIRTH-DATE.
MOVE BR-SALE-DATE TO DL-SALE-DATE.
MOVE BR-BULL-WEIGHT TO DL-BULL-WEIGHT.
MOVE BR-SALE-PRICE TO DL-SALE-PRICE.
C500-CALCULATE-VALUES.
PERFORM D100-AVERAGE-PRICE-PER-POUND.
PERFORM D200-AVERAGE-SALE-PRICE.
C600-CREATE-OUTPUT.
MOVE WS-COUNTER TO FT-TRANSACTIONS.
MOVE TOT-TOTAL-SALES TO FT-DOLLARS-RECIEVED.
MOVE TOT-TOTAL-POUNDS TO FT-POUNDS.
MOVE WS-AVERAGE-PRICE-POUND TO FT-AVERAGE-POUND.
MOVE WS-AVERAGE-SALE-PRICE TO FT-AVERAGE-SALE.
C700-PROCESS-TOTALS.
MOVE FT-FOOTING-1 TO CR-CUSTOMER-RECORD.
WRITE CR-CUSTOMER-RECORD
AFTER ADVANCING 1 LINE.
MOVE FT-FOOTING-2 TO CR-CUSTOMER-RECORD.
WRITE CR-CUSTOMER-RECORD
AFTER ADVANCING 1 LINE.
MOVE FT-FOOTING-3 TO CR-CUSTOMER-RECORD.
WRITE CR-CUSTOMER-RECORD
AFTER ADVANCING 1 LINE.
MOVE FT-FOOTING-4 TO CR-CUSTOMER-RECORD.
WRITE CR-CUSTOMER-RECORD
AFTER ADVANCING 1 LINE.
MOVE FT-FOOTING-5 TO CR-CUSTOMER-RECORD.
WRITE CR-CUSTOMER-RECORD
AFTER ADVANCING 1 LINE.
D100-AVERAGE-PRICE-PER-POUND.
DIVIDE TOT-TOTAL-SALES BY TOT-TOTAL-POUNDS
GIVING WS-AVERAGE-PRICE-POUND.
D200-AVERAGE-SALE-PRICE.
DIVIDE TOT-TOTAL-SALES BY WS-COUNTER
GIVING WS-AVERAGE-SALE-PRICE.
D300-CREATE-TOTALS.
Z100-PRINT-HEADINGS.
MOVE HD-REPORT-HEADING-COMPANY-1 TO CR-CUSTOMER-RECORD.
WRITE CR-CUSTOMER-RECORD
AFTER ADVANCING 1 LINE.
MOVE HD-REPORT-HEADING-COMPANY-2 TO CR-CUSTOMER-RECORD.
WRITE CR-CUSTOMER-RECORD
AFTER ADVANCING 1 LINE.
ACCEPT WS-DATE FROM DATE.
MOVE WS-DATE TO HD-HEADING-DATE.
MOVE HD-HEADING-DATE TO CR-CUSTOMER-RECORD.
WRITE CR-CUSTOMER-RECORD
AFTER ADVANCING 1 LINE.
MOVE ALL '*' TO CR-CUSTOMER-RECORD.
WRITE CR-CUSTOMER-RECORD
AFTER ADVANCING 1 LINE.
Z200-READ-BULL-RECORD.
READ bullfile

************************************************************THIS IS A PROGRAM FOR MY INTRO COBOL CLASS. I KEEP GETTING THIS ERROR EVERY TIME I TRY TO RUN THIS. I CAN'T SEEM TO FIGURE OUT WHAT THE PROBLEM IS. CAN SOMEONE HELP ME PLEASE.
 
Hi JPS,

I won't go thru your code line by line, but I'll give you a tip. Put DISPLAYs after your paragraph heads. I usually begin the text with DEBUG~, for example:
Code:
B100-INITIAL-ROUTINE.
    DISPLAY 'DEBUG~ B100-INITIAL-ROUTINE'
This facilatates deletion when they're no longer required by searching on 'DEBUG~'.

I assume you program stops processing after the message is issued, so you'll probably see something like this:

DEBUG~ some paragraph name
.
.
.
DEBUG~ some paragraph name
ILLEGAL CHARACTERS IN NUMERIC FIELD

Once you pin down the paragraph, you use the same technique to find the offending statement. You'll probably find that the input data and your record description don't match, e.g., a PIC 9(3) field had ABC in it.

I'm sure there are debugging aids for PC COBOL users, but being a mainframe type, I can't help you there. Given that you're just beginning they may be beyond you at this time.

Hope this helps. Jack.
 
An initial look at your program shows two problems. The Numeric failure appears to be happening in the C400-CREATE-DETAIL-RECORD... insert the following test code and see what happens.

C400-CREATE-DETAIL-RECORD.
IF BR-BIRTH-DATE NUMERIC
DISPLAY 'BR-BIRTH-DATE IS NUMERIC'
ELSE
DISPLAY 'BR-BIRTH-DATE IS NOT NUMERIC'
STOP RUN
END-IF

I think the primary problem is in the following...

A000-BULL-REPORT.
PERFORM B100-INITIAL-ROUTINE.
PERFORM B200-PROCESS-RECORDS
UNTIL WS-END-OF-FILE is equal to 'NO '.
PERFORM B300-ENDING-ROUTINE.
STOP RUN.

You never set WS-END-OF-FILE... therefore... if the input file is empty you will get the numeric failure real quick... otherwise you will get the failure after reading past end-of-file... this program would loop if the numeric error had not caused it to fail... you will need to correct this also...

Good luck,

 
An easy way to get the displays that slade was talking about after each of your paragraph headings is with the COBTRACE command. By typing COBTRACE ON on your command line, displays will automatically be inserted at each paragraph heading and exit. Once you are finished with them, simply type COBTRACE OFF and they will be gone.

Hope this helps. Thanks,

s-)
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top