2011-02-16 96 views
2

我最近得到了一个使用“EXTEND OPEN”命令将数据添加到已存在的文件的任务。虽然我认为我明白了它做了什么,但我发现我的程序遇到了麻烦,给了我这个错误:“148错误的打开模式或写入访问模式”。这是一个简单的程序,只能将一个新文件的条目添加到主文件中,但我无法完全理解。这里是我有:扩展打开(COBOL)

DATA DIVISION. 
    FILE SECTION. 

    FD OLD-MASTER-IN. 
    01 OLD-MASTER-REC-IN. 
     05 O-STATE-ABREV-IN    PIC XX. 
     05         PIC X. 
     05 O-STATE-NAME-IN     PIC X(17). 

    FD TRANS-FILE-IN. 
    01 TRANS-REC-IN. 
     05 N-STATE-ABREV-IN    PIC XX. 
     05         PIC X. 
     05 N-STATE-NAME-IN     PIC X(17). 

    WORKING-STORAGE SECTION. 
    01 ARE-THERE-MORE-RECORDS    PIC X(3) VALUE 'YES'. 

    PROCEDURE DIVISION. 
    100-MAIN. 
     OPEN INPUT OLD-MASTER-IN 
      EXTEND TRANS-FILE-IN 

     PERFORM UNTIL ARE-THERE-MORE-RECORDS = 'NO ' 
      READ OLD-MASTER-IN 
       AT END 
        MOVE 'NO' TO ARE-THERE-MORE-RECORDS 
       NOT AT END 
        PERFORM 200-REGULAR-UPDATE 
      END-READ 
     END-PERFORM 

     CLOSE OLD-MASTER-IN 
      TRANS-FILE-IN 
     STOP RUN. 

    200-REGULAR-UPDATE. 
     WRITE OLD-MASTER-REC-IN FROM TRANS-REC-IN. 

任何帮助将不胜感激。

+1

@nmichaels:是的,他们是。大部分金融体系仍然在大铁上运行Cobol。如果你想在一个利基维护编码的利基市场上投入大量资金,Cobol就成为了这个地方。但当然你们​​所有的年轻人都希望成为时尚人物,而Cobol的编码就像穿着粗花呢西服和格子袜一样,所以你不会用十英尺的杆子碰它,对吧? – 2011-02-21 02:16:19

+0

@Robert:这不像是想要使用现代语言功能,比如小写字母和像`+`这样的奇特的新操作符,想成为时髦人物。 – nmichaels 2011-02-21 03:54:58

回答

2

我想通了。我现在真的很愚蠢。似乎我扩展/读取错误的文件。傻我。该代码是假设是这样的:

PROCEDURE DIVISION. 
    100-MAIN. 
     OPEN INPUT TRANS-FILE-IN 
      EXTEND OLD-MASTER-IN 

     PERFORM UNTIL ARE-THERE-MORE-RECORDS = 'NO ' 
      READ TRANS-FILE-IN 
       AT END 
        MOVE 'NO' TO ARE-THERE-MORE-RECORDS 
       NOT AT END 
        PERFORM 200-REGULAR-UPDATE 
      END-READ 
     END-PERFORM 

     CLOSE TRANS-FILE-IN 
      OLD-MASTER-IN 
     STOP RUN. 

    200-REGULAR-UPDATE. 
     WRITE OLD-MASTER-REC-IN FROM TRANS-REC-IN. 
0

如果您使用的是现代的编译器代码可以被写入没有看起来就像是写在70年代写。

这里是你可以做一个例子:

OPEN INPUT TRANS-FILE-IN 
OPEN EXTENT OLD-MASTER-IN 

PERFORM UNTIL EXIT 
    READ TRANS-FILE-IN 
     AT END 
     EXIT PERFORM 
    END-READ 
    WRITE OLD-MASTER-REC-IN FROM TRANS-REC-IN 
END-PERFORM 

CLOSE TRANS-FILE-IN 
CLOSE OLD-MASTER-IN 

当然,没有错误在这里检查,但是这是一个很大的话题。