【发布时间】:2018-08-15 21:51:37
【问题描述】:
对于 COBOL 来说还是很陌生。我有一个简单的程序可以运行以读取文件,然后读取该文件的内容并将其格式化为另一个文件。我的主要问题实际上在于,由于某种原因,我的模块会测试条件,看到它是假的,然后执行里面的语句。之后,它将在不改变条件的情况下重复该过程,然后终止程序。根据调试器,它甚至没有运行最终模块 200-TERM-RECORD,它就结束了。
这是程序的代码
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL
SELECT INVENT-FILE-IN
ASSIGN TO "C:\TEST.TXT"
ORGANIZATION IS LINE SEQUENTIAL.
SELECT INVENT-REPORT-OUT
ASSIGN TO "C:\INVREPT.TXT"
ORGANIZATION IS LINE SEQUENTIAL.
data division.
FILE SECTION.
FD INVENT-FILE-IN
RECORD CONTAINS 32 CHARACTERS.
01 INVENTORY-DATA-INPUT
05 PART-NUMBER-INPUT PIC 9(5)
05 PART-NAME-INPUT PIC X(20)
05 QUANTITY-ON-HAND-INPUT PIC 9(3)
05 UNIT-PRICE-INPUT PIC 9(4)
FD INVENT-REPORT-OUT
RECORD CONTAINS 77 CHARACTERS.
01 INVENTORY-DATA-OUTPUT
05 HEADER
10 PRODUCT-NUMBER PIC A(6)
10 FILLER PIC A(1)
10 PRODUCT-NAME PIC A(8)
10 FILLER PIC A(16)
10 PRODUCT-QTY PIC A(3)
10 FILLER PIC A(3)
10 PRODUCT-VALUE PIC A(5)
10 FILLER PIC A(3)
05 PART-NUMBER-OUTPUT PIC 9(5)
05 PART-NAME-OUTPUT PIC X(20)
05 QUANTITY-ON-HAND-OUTPUT PIC 9(3)
05 UNIT-PRICE-OUTPUT PIC 9(4)
05 SUPPLIER-CODE-OUTPUT PIC X(5)
05 RE-ORDER-POINT-OUTPUT PIC 9(3)
05 RECORD-COUNTER-OUTPUT PIC 9(2)
working-storage section.
01 VALUES-AND-TOTALS
05 EOF-SWITCH PIC X(1) VALUE "N"
05 TOTAL-VALUE PIC 9(6) VALUE ZERO
05 INVENTORY-VALUE PIC 9(6) VALUE ZERO
05 RECORD-COUNTER PIC 9(2) VALUE ZERO
procedure division.
100-CREATE-INVENTORY-RECORD.
PERFORM 200-INIT-CREATE-INV-RECORD.
PERFORM 200-CREATE-RECORD
UNTIL EOF-SWITCH = "Y".
PERFORM 200-TERM-RECORD.
200-INIT-CREATE-INV-RECORD.
PERFORM 700-OPEN-INV-FILE.
PERFORM 700-READ-FILE.
200-CREATE-RECORD.
PERFORM 700-WRITE-RECORD.
PERFORM 700-READ-FILE.
200-TERM-RECORD.
CLOSE INVENT-FILE-IN.
CLOSE INVENT-REPORT-OUT.
700-OPEN-INV-FILE.
OPEN INPUT INVENT-FILE-IN.
OPEN OUTPUT INVENT-REPORT-OUT.
700-READ-FILE.
READ INVENT-FILE-IN
AT END MOVE "Y" TO EOF-SWITCH.
700-WRITE-RECORD.
MOVE PART-NUMBER-INPUT TO PART-NUMBER-OUTPUT.
MOVE PART-NAME-INPUT TO PART-NAME-OUTPUT.
MOVE QUANTITY-ON-HAND-INPUT TO QUANTITY-ON-HAND-OUTPUT.
MOVE UNIT-PRICE-INPUT TO UNIT-PRICE-OUTPUT.
WRITE INVENTORY-DATA-OUTPUT.
goback.
end program Project2.
【问题讨论】:
标签: loops debugging cobol terminate