【发布时间】:2018-02-13 05:00:13
【问题描述】:
This is the Assignment Outline in detail. || This is what the input file looks like. 下面是我所拥有的。 This is the Output I keep getting. 我不知道它是根本没有读取文件还是不计算它。我反复检查了每一点,却一无所获。任何帮助将不胜感激。
*This program will take in a file containing the roster of a
*children's band and will generate an output report of the
*number of children playing an instrument from each category.
IDENTIFICATION DIVISION.
PROGRAM-ID. LAB3A.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT BAND-FILE
ASSIGN TO 'lab3-in.dat'
ORGANIZATION IS SEQUENTIAL
ACCESS IS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD BAND-FILE.
01 CHILD.
05 NAME PIC X(12).
05 GENDER PIC A.
05 INST PIC X(15).
WORKING-STORAGE SECTION.
01 ENDOFFILEINDICATOR PIC X.
88 EOF VALUE 'Y' WHEN SET TO FALSE IS 'N'.
01 CAT PIC X(15).
01 BRASSCOUNT PIC 999.
01 PERCCOUNT PIC 999.
01 STRINGCOUNT PIC 999.
01 WOODCOUNT PIC 999.
01 OTHERCOUNT PIC 999.
01 INSTRUMENT PIC X(15).
88 BRASS VALUE 'Bugle' 'Flugelhorn' 'Sousaphone'
'Trombone' 'Trumpet' 'Tuba'.
88 PERC VALUE 'Bass Drum' 'Bells' 'Bongos' 'Castanets'
'Chimes' 'Cymbals' 'Snare Drum' 'Xylophone'.
88 STRINGS VALUE 'Banjo' 'Bass' 'Cello' 'Guitar' 'Harp'
'Lyre' 'Mandolin' 'Violin'.
88 WOOD VALUE 'Bagpipes' 'Bassoon' 'Clarinet' 'Flute'
'Oboe' 'Piccolo' 'Saxophone'.
PROCEDURE DIVISION.
000-MAIN.
OPEN INPUT BAND-FILE
PERFORM READ-BAND UNTIL NOT EOF
PERFORM USEROUT
CLOSE BAND-FILE
STOP RUN.
READ-BAND.
READ BAND-FILE
AT END
SET EOF TO FALSE
NOT AT END
MOVE INST TO INSTRUMENT
PERFORM CHECK-INST
END-READ.
CHECK-INST.
IF BRASS
ADD 1 TO BRASSCOUNT
END-ADD
END-IF
IF PERC
ADD 1 TO PERCCOUNT
END-ADD
END-IF
IF STRINGS
ADD 1 TO STRINGCOUNT
END-ADD
END-IF
IF WOOD
ADD 1 TO WOODCOUNT
END-ADD
ELSE
ADD 1 TO OTHERCOUNT
END-ADD
END-IF.
USEROUT.
DISPLAY ' '
MOVE 'Brass:' TO CAT
DISPLAY CAT BRASSCOUNT
MOVE 'Percussion:' TO CAT
DISPLAY CAT PERCCOUNT
MOVE 'String:' TO CAT
DISPLAY CAT STRINGCOUNT
MOVE 'Woodwind:' TO CAT
DISPLAY CAT WOODCOUNT
MOVE 'Other:' TO CAT
DISPLAY CAT OTHERCOUNT
DISPLAY ' '.
【问题讨论】:
-
在程序的不同点放置一些
display语句。这应该告诉你发生了什么 -
您可以尝试初始化 EOF 变量并将
UNTIL NOT EOF更改为UNTIL EOF -
感谢您的帮助和评论。我将显示放在 NOT AT END 缩进中并且没有输出,因此它甚至没有进入那种将我的问题缩小到文件读取的情况。
-
您的输入文件看起来不是
SEQUENTIAL,而是LINE SEQUENTIAL。如果您不确定您的程序是如何工作的,您可以使用特定于编译器的帮助:使用cobc -x -ftrace-all lab3.cob编译并使用COB_SET_TRACE=Y COB_TRACE_FILE=trace.log ./lab3运行并检查您的程序流程。而且...我建议至少切换到 GnuCOBOL 2.2...
标签: input conditional-statements variable-assignment cobol