在 VSAM 文件上打印报告

Posted

技术标签:

【中文标题】在 VSAM 文件上打印报告【英文标题】:Printing report on a VSAM file 【发布时间】:2018-07-18 18:08:12 【问题描述】:

我正在使用 IBM 大型机制作一个工资单项目,我被要求每月为一名员工创建一份工资单报告。该工资单应该以如下格式存储到 VSAM 文件中:

可以通过 COBOL 程序从 DB2 获取数据,但问题是我不知道以这种用户格式将内容写入文件的方法。

所以任何人都可以给我发一个 COBOL 代码来帮助我,因为当我在互联网上搜索时,我只能找到如何以键序列记录格式存储数据。

另外请说明我应该使用哪种类型的 VSAM。

【问题讨论】:

您实际上并不需要 VSAM 来输出报告。但如果 VSAM 是强制性的,您可以选择按顺序访问 ESDS。要输出不同的行,您可以使用所需的不同字段重新定义一个 133 长度的填充符,或者将每一行写入文件。 【参考方案1】:
   Id division.
   Program-id. VSAMSEQW.
   Environment division.
   Input-output section.
   File-control.
       Select F1
          Assign to AS-DD1
          Organization is sequential
          File status is FS FS2.
   Data division.
   File section.
   FD  F1.
   1   R1 pic X(133).
   Working-storage section.
   1 fs pic 99.
   1 fs2.
     2 rc pic s9(4) binary.
     2 fc pic s9(4) binary.
     2 fb pic s9(4) binary.
   1 X pic X(10).
   Procedure division.
   Declaratives.
   F1-error section.
       Use after standard error procedure on F1.
   1.  Display "Error declarative entered"
       Display "  File status: " fs
       Display "  VSAM return code:   " rc
       Display "  VSAM function code: " fc
       Display "  VSAM feedback code: " fb
       Display "Testcase VSAMSEQW failed!"
       Move 16 to return-code
       Stop run
       .
   End declaratives.
   MainPgm section.
       Display "Entering VSAMSEQW"

       Open output F1

  * Do whatever you need to get data and update R1
       Move "Line 1" to R1
       Write R1
  * 2nd output line
       Move "Line 2" to R1
       Write R1

       Close F1

       Display "Exiting VSAMSEQW"
       Goback.

【讨论】:

以上是关于在 VSAM 文件上打印报告的主要内容,如果未能解决你的问题,请参考以下文章

终端打印时报错,没有打印出文件

终端打印时报错,没有打印出文件

终端打印时报错,没有打印出文件

终端打印时报错,没有打印出文件

电子图版打印时出错误报告

使用文件的 db 路径打印页面