Visual studio 2013 COBOL非法文件名
我的问题是打开的输出文件打印机行。程序没有运行,我得到非法文件名错误。如果我删除整行,它会运行,但在前进1之前,在WRITE PRINTER-RECORD中会产生错误。谢谢。您可以使用标准Windows符号名称之一,而不是COBOL关键字打印机:Visual studio 2013 COBOL非法文件名,visual-studio-2013,cobol,printers,Visual Studio 2013,Cobol,Printers,我的问题是打开的输出文件打印机行。程序没有运行,我得到非法文件名错误。如果我删除整行,它会运行,但在前进1之前,在WRITE PRINTER-RECORD中会产生错误。谢谢。您可以使用标准Windows符号名称之一,而不是COBOL关键字打印机: IDENTIFICATION DIVISION. PROGRAM-ID. HENSEM as "Test1.Program1". ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION.
IDENTIFICATION DIVISION.
PROGRAM-ID. HENSEM as "Test1.Program1".
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CUSTOMER-FILE
ASSIGN TO "CUSTOMER.DAT"
ORGANIZATION IS SEQUENTIAL.
SELECT PRINTER-FILE
ASSIGN TO PRINTER
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD CUSTOMER-FILE
LABEL RECORDS ARE STANDARD.
01 CUSTOMER-RECORD.
05 CUSTOMER-NAME PIC X(30).
05 CUSTOMER-PRODUCT PIC X(20).
05 CUSTOMER-QUANTITY PIC 9(2).
05 CUSTOMER-DATE PIC X(10).
FD PRINTER-FILE
LABEL RECORDS ARE OMITTED.
01 PRINTER-RECORD PIC X(80).
WORKING-STORAGE SECTION.
*VARIABLES FOR SCREEN ENTRY
01 Y-N PIC X.
01 ENTRY-STATUS PIC X.
PROCEDURE DIVISION.
OPEN EXTEND CUSTOMER-FILE.
OPEN OUTPUT PRINTER-FILE.
MOVE "Y" TO Y-N.
PERFORM ADD-RECORDS
UNTIL Y-N = "N".
PERFORM CLOSING-PROCEDURE.
GOBACK.
* OPENING AND CLOSING
OPENING-PROCEDURE.
CLOSING-PROCEDURE.
CLOSE CUSTOMER-FILE.
MOVE SPACE TO PRINTER-RECORD.
WRITE PRINTER-RECORD BEFORE ADVANCING PAGE.
CLOSE PRINTER-FILE.
ADD-RECORDS.
MOVE "N" TO ENTRY-STATUS.
PERFORM GET-FIELDS
UNTIL ENTRY-STATUS = "Y".
PERFORM ADD-THIS-RECORD.
PERFORM ANY-MORE.
GET-FIELDS.
MOVE SPACE TO CUSTOMER-RECORD.
DISPLAY "ENTER CUSTOMER NAME: ".
ACCEPT CUSTOMER-NAME.
DISPLAY "ENTER WHAT DID THE CUSTOMER BOUGHT: ".
ACCEPT CUSTOMER-PRODUCT.
DISPLAY "ENTER HOW MUCH DID THE CUSTOMER BOUGHT: ".
ACCEPT CUSTOMER-QUANTITY.
DISPLAY "ENTER WHEN DID THE CUSTOMER BOUGHT: ".
ACCEPT CUSTOMER-DATE.
PERFORM VALIDATE-FIELDS.
VALIDATE-FIELDS.
MOVE "Y" TO ENTRY-STATUS.
IF CUSTOMER-NAME = SPACE
DISPLAY "CUSTOMER NAME MUST BE ENTERED"
MOVE "N" TO ENTRY-STATUS.
ADD-THIS-RECORD.
MOVE CUSTOMER-RECORD TO PRINTER-RECORD.
WRITE CUSTOMER-RECORD.
WRITE PRINTER-RECORD BEFORE ADVANCING 1.
ANY-MORE.
DISPLAY "IS THERE ANY MORE INPUT?".
ACCEPT Y-N.
IF Y-N = "Y"
MOVE "Y" TO Y-N.
IF Y-N NOT = "Y"
MOVE "N" TO Y-N.
END PROGRAM HENSEM.
您可以使用标准Windows符号名之一,而不是COBOL关键字打印机:
IDENTIFICATION DIVISION.
PROGRAM-ID. HENSEM as "Test1.Program1".
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CUSTOMER-FILE
ASSIGN TO "CUSTOMER.DAT"
ORGANIZATION IS SEQUENTIAL.
SELECT PRINTER-FILE
ASSIGN TO PRINTER
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD CUSTOMER-FILE
LABEL RECORDS ARE STANDARD.
01 CUSTOMER-RECORD.
05 CUSTOMER-NAME PIC X(30).
05 CUSTOMER-PRODUCT PIC X(20).
05 CUSTOMER-QUANTITY PIC 9(2).
05 CUSTOMER-DATE PIC X(10).
FD PRINTER-FILE
LABEL RECORDS ARE OMITTED.
01 PRINTER-RECORD PIC X(80).
WORKING-STORAGE SECTION.
*VARIABLES FOR SCREEN ENTRY
01 Y-N PIC X.
01 ENTRY-STATUS PIC X.
PROCEDURE DIVISION.
OPEN EXTEND CUSTOMER-FILE.
OPEN OUTPUT PRINTER-FILE.
MOVE "Y" TO Y-N.
PERFORM ADD-RECORDS
UNTIL Y-N = "N".
PERFORM CLOSING-PROCEDURE.
GOBACK.
* OPENING AND CLOSING
OPENING-PROCEDURE.
CLOSING-PROCEDURE.
CLOSE CUSTOMER-FILE.
MOVE SPACE TO PRINTER-RECORD.
WRITE PRINTER-RECORD BEFORE ADVANCING PAGE.
CLOSE PRINTER-FILE.
ADD-RECORDS.
MOVE "N" TO ENTRY-STATUS.
PERFORM GET-FIELDS
UNTIL ENTRY-STATUS = "Y".
PERFORM ADD-THIS-RECORD.
PERFORM ANY-MORE.
GET-FIELDS.
MOVE SPACE TO CUSTOMER-RECORD.
DISPLAY "ENTER CUSTOMER NAME: ".
ACCEPT CUSTOMER-NAME.
DISPLAY "ENTER WHAT DID THE CUSTOMER BOUGHT: ".
ACCEPT CUSTOMER-PRODUCT.
DISPLAY "ENTER HOW MUCH DID THE CUSTOMER BOUGHT: ".
ACCEPT CUSTOMER-QUANTITY.
DISPLAY "ENTER WHEN DID THE CUSTOMER BOUGHT: ".
ACCEPT CUSTOMER-DATE.
PERFORM VALIDATE-FIELDS.
VALIDATE-FIELDS.
MOVE "Y" TO ENTRY-STATUS.
IF CUSTOMER-NAME = SPACE
DISPLAY "CUSTOMER NAME MUST BE ENTERED"
MOVE "N" TO ENTRY-STATUS.
ADD-THIS-RECORD.
MOVE CUSTOMER-RECORD TO PRINTER-RECORD.
WRITE CUSTOMER-RECORD.
WRITE PRINTER-RECORD BEFORE ADVANCING 1.
ANY-MORE.
DISPLAY "IS THERE ANY MORE INPUT?".
ACCEPT Y-N.
IF Y-N = "Y"
MOVE "Y" TO Y-N.
IF Y-N NOT = "Y"
MOVE "N" TO Y-N.
END PROGRAM HENSEM.
你需要发布所有消息的全文。我处理COBOL已经有几十年了,但我在任何地方都没有看到指定的打印机名称,这似乎是您问题的根源。@CareyGregory在选择打印机文件时我必须指定名称吗?看起来您有答案了。您需要发布所有消息的全文。我处理COBOL已经几十年了,但我在任何地方都没有看到指定的打印机名称,这似乎是您问题的根源。@CareyGregory在选择打印机文件时我必须指定名称吗?看起来您有答案了。有关使用COBOL打印的更多提示,请参阅GNU COBOL常见问题解答,3.15如何使用GNU COBOL打印到打印机,通过一个简单的调用和cups-PDF获取PDF输出。有关使用COBOL打印的更多提示,请参阅GNU COBOL FAQ,3.15如何使用GNU COBOL打印到打印机,通过一个简单的调用和cups-PDF获取PDF输出。