记录的第一个整数包含文件的子句与最小值不同

问题描述

我试图在文件部分定义一个文件,其记录长度为 300,记录格式为 VB,但我收到错误消息“记录的第一个整数包含文件的子句与最小值不同”

       FD  INPUT-FILE                                                  
E   THE FirsT INTEGER OF THE "RECORD CONTAINS" CLAUSE FOR FILE "INPUT-F   //Error msg
      ILE" WAS DIFFERENT FROM THE MINIMUM                                 //Error msg
           RECORDING MODE IS V                                         
           LABEL RECORDS ARE STANDARD                                  
           BLOCK CONTAINS 0 RECORDS                                    
           RECORD CONTAINS 30 TO 300 CHaraCTERS                        
           DATA RECORD IS IN-02-RECORD.                                
                                                                       
       01  IN-02-RECORD.                                               
           05 IN-ALL           PIC X(30).                              
           05 IN-END           PIC X(270).                             
                                                                       

解决方法

您的定义只有一条固定长度的记录,与可变长度的 FD 不匹配。

您可能想要使用多个固定的和/或可变长度的:

单变长:

       FD  INPUT-FILE
           RECORDING MODE IS V                                         
           LABEL RECORDS ARE STANDARD                                  
           BLOCK CONTAINS 0 RECORDS                                    
           RECORD CONTAINS 30 TO 300 CHARACTERS                        
           DATA RECORD IS IN-02-RECORD.                                
                                                                       
       01  IN-02-RECORD.                                               
           05 IN-ALL           PIC X(30).                              
           05 IN-END           PIC X OCCURS 0 TO 270
                               DEPENDING ON some-var.

三种可能长度的可变长度文件(删除通常过时的 DATA RECORD 子句):

       FD  INPUT-FILE
           RECORDING MODE IS V                                         
           LABEL RECORDS ARE STANDARD                                  
           BLOCK CONTAINS 0 RECORDS                                    
           RECORD CONTAINS 30 TO 300 CHARACTERS                        
           DATA RECORD IS IN-02-RECORD.                                
                                                                       
       01  IN-02-RECORD.
           05 IN-ALL           PIC X(30).
       01  IN-02-RECORD-B.
           05 IN-ALL-B         PIC X(30).
           05 IN-END           PIC X(270).
       01  IN-02-RECORD-C.
           05 IN-ALL-C         PIC X(30).
           05 IN-END-C         PIC X(70).