是否可以将 COBOL 文件描述符传递给另一个程序

问题描述 投票:0回答:2

我可以将主 COBOL 代码中的文件控制 FD 条目传递到过程中吗?

如果是,从主COBOL程序调用该过程时需要传递什么?

cobol mainframe zos jcl
2个回答
2
投票

EXTERNAL
中使用
FD
关键字,允许运行单元内的多个程序访问同一个文件。运行时间不是“传递”
FD
,而是将单独的程序指向相同的
FD

SELECT
FD
必须描述同一个文件。

接下来,

pgm-main
打开和关闭文件,
pgm-1
写入文件,
pgm-2
读取文件。

   program-id. pgm-main.
   environment division.
   input-output section.
   file-control.
       select f assign "f.dat"
           organization sequential
       .
   data division.
   file section.
   fd f external.
   1 f-rec pic 99.
   procedure division.
       open output f
       call "pgm-1"
       close f
       open input f
       call "pgm-2"
       close f
       goback
       .
   end program pgm-main.

   program-id. pgm-1.
   environment division.
   input-output section.
   file-control.
       select f assign "f.dat"
           organization sequential
       .
   data division.
   file section.
   fd f external.
   1 f-rec pic 99.
   working-storage section.
   1 x comp pic 99.
   procedure division.
       perform varying x from 1 by 1
       until x > 5
           move x to f-rec
           write f-rec
       end-perform
       goback
       .
   end program pgm-1.

   program-id. pgm-2.
   environment division.
   input-output section.
   file-control.
       select f assign "f.dat"
           organization sequential
       .
   data division.
   file section.
   fd f external.
   1 f-rec pic 99.
   working-storage section.
   1 pic x value "0".
     88 eof value "1".
   procedure division.
       perform until eof
           read f
           end
               set eof to true
           not end
               display f-rec
           end-read
       end-perform
       goback
       .
   end program pgm-2.

输出:

01
02
03
04
05

2
投票

这是一种替代方法,而不是对问题的直接回答。这是 Cobol 程序员可能会遇到并且应该了解的一种方法。 我添加仅供参考。


传递文件控件的另一种方法是使用

File-Driver
File-Interface
模块来读取/写入文件。各个应用程序调用此程序,如果在多个地方使用一个文件,则此方法效果最佳。

File-Driver
的优点包括

  • 您可以将联动中的文件记录区域设置得远大于文件记录大小。 该文件可能有 50 字节的记录和 20 字节的填充符,您可以将 File-Record-Linkage 区域设置为 500 字节。这可能会减少将来的维护。
  • 通常可以在
    File-Driver
    程序中写入/检查控制记录/页眉/页脚记录。应用程序不需要知道任何控制记录。在一个站点,我需要向现有文件添加页眉/页脚和文件验证。我所需要做的就是更改
    Code Generation parameters
    ,重新生成
    File-Driver
    和一些基本测试。无需更改程序
  • File-Drivers
    几乎相同。你可以
    • 将大部分工作存储代码存储在Copybooks中并使用复制替换
    • 使用代码生成
    • 标准副本修改
  • 文件驱动程序可以与调用程序分开测试。当您使用文件验证时,这很方便。
© www.soinside.com 2019 - 2024. All rights reserved.