visual-studio-2013 - COBOL 非法文件名

标签 visual-studio-2013 cobol printers

       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.

我的问题是打开输出文件打印机线。该程序无法运行,并且出现非法文件名错误。如果我删除整行,它会运行,但稍后会在 WRITE PRINTER-RECORD BEFORE ADVANCING 1 处产生错误。谢谢。

最佳答案

您可以assign a device name to your file使用标准 Windows 符号名称之一,而不是 COBOL 关键字 PRINTER:

SELECT PRINTER-FILE
    ASSIGN TO "lpt1"
    ORGANIZATION IS LINE SEQUENTIAL.

关于visual-studio-2013 - COBOL 非法文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24925960/

相关文章:

c++ - 当我尝试编译 zeromq 源代码时出现错误 LNK2019

visual-studio-2013 - VS2013 Update 5 由于旧版本的多设备混合应用程序而被阻止

cobol - 如何在 COBOL 中将链接部分数据传递给另一个程序的链接部分

从 Cobol 程序调用 C 函数

c# - 如何将解压缩的十进制转换回 COMP-3?

c# - 创建 C# 应用程序以配置打印机页面设置

javascript - Printer_open () php 支持,从 Web 应用程序打印可能的解决方案

git - 在 Visual Studio 2013 中使用本地 Git 和(远程)TFS

c# - 如何使用 C#/.NET 检索打印机图标

c# - 如何判断哪个 TestCaseData 失败(在 TestCaseSource 代码中)