如何在cobol中定义可变长度文件的记录

时间:2018-03-23 10:55:34

标签: file cobol mainframe

我有一个文件,其中记录格式为Variable Block(VB)。记录长度为225,块大小为27998.

如何在我的COBOL程序中声明这个?我目前正在获取文件状态代码39,这意味着

  

OPEN语句不成功,因为在固定文件属性和为程序中的文件指定的属性之间检测到冲突。 (检查的属性是组织,索引键(主要和备用),块大小和最大记录大小)

这是我当前的文件定义:

SELECT 
   INPUT-FILE ASSIGN TO INFILE1 
   ORGANIZATION IS LINE SEQUENTIAL 
   FILE STATUS IS RETURN-CODE-IN
. 



FD INPUT-FILE 
   RECORDING MODE IS V 
   RECORD IS VARYING FROM 1 TO 221 
   BLOCK CONTAINS 0 RECORDS
.

2 个答案:

答案 0 :(得分:4)

   FD  INPUT-FILE
       Record Varying 1 To 221
         Depending INPUT-FILE-REC-LEN
       Block 0
       Recording V.
   01  INPUT-FILE-REC       PIC X(221).

[...]

   01  WORK-AREAS.
       05  INPUT-FILE-REC-LEN   PIC 9(004) COMP-5 VALUE 0.

成功读取操作后,INPUT-FILE-REC-LEN将包含已读取的记录长度。

答案 1 :(得分:0)

COBOL 85中引入了RECORD VARYING clause来定义可变长度记录。 RECORDING MODE clause始终是同一用途的非标准扩展名。

由于RECORD VARYING clause已足够,RECORDING MODE clause是多余的,因此应删除。