You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

COBOL技术问询:如何创建包含两个条目的文件及实现日期文件与多记录文件的合并

我来帮你一步步搞定这两个COBOL实操问题,直接上可运行的代码和清晰的解释:

问题1:创建包含两个条目的COBOL文件

要创建带两条记录的文件,核心是定义文件结构、打开输出文件、写入两条记录后关闭。下面是完整的示例代码:

IDENTIFICATION DIVISION.
PROGRAM-ID. CREATE-TWO-RECORDS.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT OUTPUT-FILE ASSIGN TO 'two_records.dat'
        ORGANIZATION IS LINE SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
FD  OUTPUT-FILE.
01  OUTPUT-RECORD.
    05  REC-ID        PIC X(03).
    05  REC-DESC      PIC X(20).

WORKING-STORAGE SECTION.
01  WS-COUNTER      PIC 9(01) VALUE 0.

PROCEDURE DIVISION.
MAIN-LOGIC.
    OPEN OUTPUT OUTPUT-FILE.
    * 写入第一条记录
    MOVE '001' TO REC-ID.
    MOVE 'First Sample Record' TO REC-DESC.
    WRITE OUTPUT-RECORD.
    * 写入第二条记录
    MOVE '002' TO REC-ID.
    MOVE 'Second Sample Record' TO REC-DESC.
    WRITE OUTPUT-RECORD.
    * 关闭文件
    CLOSE OUTPUT-FILE.
    STOP RUN.

关键说明:

  • SELECT OUTPUT-FILE 指定输出文件的路径和格式(这里用行序组织,适合文本类文件)
  • FD 定义文件的记录结构,你可以根据需求调整PIC的类型和长度
  • WRITE 语句负责将内存中的记录写入磁盘文件,执行两次就生成两条条目
问题2:日期与多条记录拼接

这个需求需要先读取日期文件的唯一日期值,再循环读取记录文件的每条记录,将日期和记录拼接后写入输出文件。示例代码如下:

IDENTIFICATION DIVISION.
PROGRAM-ID. CONCAT-DATE-RECORDS.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT DATE-FILE ASSIGN TO 'date_input.dat'
        ORGANIZATION IS LINE SEQUENTIAL.
    SELECT RECORD-FILE ASSIGN TO 'records_input.dat'
        ORGANIZATION IS LINE SEQUENTIAL.
    SELECT OUTPUT-FILE ASSIGN TO 'concatenated_output.dat'
        ORGANIZATION IS LINE SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
FD  DATE-FILE.
01  DATE-RECORD     PIC 9(08). *> 存储8位日期,比如20200509

FD  RECORD-FILE.
01  INPUT-RECORD    PIC X(07). *> 存储7位记录,比如0000001

FD  OUTPUT-FILE.
01  OUTPUT-RECORD   PIC X(15). *> 8位日期+7位记录=15位长度

WORKING-STORAGE SECTION.
01  WS-DATE         PIC 9(08).
01  WS-EOF-FLAG     PIC X(01) VALUE 'N'.

PROCEDURE DIVISION.
MAIN-LOGIC.
    * 第一步:读取日期文件的日期值
    OPEN INPUT DATE-FILE.
    READ DATE-FILE INTO WS-DATE.
    CLOSE DATE-FILE.

    * 第二步:循环处理记录文件,拼接后写入输出
    OPEN INPUT RECORD-FILE.
    OPEN OUTPUT OUTPUT-FILE.

    PROCESS-RECORDS.
        READ RECORD-FILE
            AT END MOVE 'Y' TO WS-EOF-FLAG
        END-READ.
        IF WS-EOF-FLAG = 'N'
            MOVE WS-DATE TO OUTPUT-RECORD(1:8)
            MOVE INPUT-RECORD TO OUTPUT-RECORD(9:7)
            WRITE OUTPUT-RECORD
            GO TO PROCESS-RECORDS
        END-IF.

    * 关闭所有文件
    CLOSE RECORD-FILE.
    CLOSE OUTPUT-FILE.
    STOP RUN.

关键说明:

  • 用INTO WS-DATE把日期文件的内容存到工作存储变量里,方便后续复用
  • OUTPUT-RECORD(1:8)和OUTPUT-RECORD(9:7)是位置引用,分别把日期放在前8位、记录放在后7位,实现拼接
  • AT END用来判断记录文件是否读完,读完就退出循环

内容的提问来源于stack exchange,提问作者jenedith_e8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 20:32:28