生成数据组

生成数据组 (GDG) 是相关文件的时间顺序集合。 GDG 简化了相关数据的多个版本的处理。

GDG 中的每个文件都称为 生成数据集 (GDS)生成。 (在本信息中,生成数据集称为 生成文件。 工作站上的术语 文件 等同于主机上的术语 数据集 。)

在 GDG 中,代可以具有类似或不像属性,包括 ORGANIZATION,记录格式和记录长度。 如果组中的所有代都具有一致的属性和顺序组织,那么可以将这些代作为单个文件一起检索。

对相关文件进行分组有一些优点。 例如:
  • 可以使用公共名称来引用组中的文件。
  • 组中的文件将按生成顺序进行保留。
  • 可以自动废弃过时的文件。

GDG 中的代有顺序排列的表示其年龄的相对和绝对名称。

生成文件的相对名称是组名,后跟括号中的整数。 例如,如果组的名称为 hlq.PAY:
  • hlq.PAY(0) 是指最新的生成。
  • hlq.PAY(-1) 指的是上一代。
  • hlq.PAY(+1) 指定要添加的新一代。
生成文件的绝对名称包含代号和版本号。 例如,如果组的名称为 hlq.PAY:
  • hlq.PAY.g0005v00 是指生成文件 5 V 0。
  • hlq.PAY.g0006v00 是指生成文件 6 V 0。

有关构成绝对名称和相对名称的更多信息,请参阅 "相关任务"。

生成顺序通常与将文件添加到组的顺序不同,但不一定相同。 根据使用绝对名称和相对名称添加生成文件的方式,可以将生成插入到组中的意外位置。 有关详细信息,请参阅有关插入和合并生成文件的相关参考。

除 MONGO 外, 所有 COBOL for Linux® 文件系统都支持 GDG。

限制: GDG 不能包含具有任何备用索引的 SFS 索引文件,也不能包含需要文件名中的备用索引列表的 SdU 索引文件。 此限制是由于括号内的备用索引列表的语法与 GDG 相对名称的语法之间存在模糊性,这也需要括号内的表达式。

有关创建和初始化生成数据组的信息,请参阅相应的相关任务。

要删除,重建,清除,修改或列出生成组,或者在组中添加或删除生成,请使用 gdgmgr 实用程序。 要查看 gdgmgr 函数的摘要,请发出以下命令: gdgmgr -h。 有关 gdgmgr 实用程序的更多详细信息,请通过以下命令查看其 man 页面 : gdgmgr -man

用例

GDG 可用于存储和组合数据,以生成每日,每月,每季度或每年汇总的报告应用程序。 以下列表定义了每个频率:
  • 每周最多 7 天
  • 一个月内最多 31 天
  • 一个季度内最多 3 个月
  • 一年中最多 4 个季度
您会自动编写每日报告,但仅保留 7 最新报告。 COBOL 程序将打开一个名为 daily.reports(+1) 的文件;运行时将为新文件生成一个唯一的名称,并进行必要的清理,以确保老一代文件被正确老化。 如果您要汇总的是一份年度报告, COBOL 程序会打开一个名为 quarterly.reports(*) 的文件,表示它需要按顺序排列的所有数据。

示例

遵循以下步骤来创建不同版本的 GDG:
  1. 导出文件系统名称。
  2. 照常编译和链接程序。 欲了解更多信息,请参阅编译、链接和运行程序
  3. 创建 GDG 基本 gdg_test 并使用以下命令列出内容: gdgmgr -e -s -L 2 -c gdg_test -l
    输出如下所示:
    GDG: gdg_test 
      Catalogue   = ./gdg_test.catalogue
      Limit       = 2
      Days        = 0
      NoEmpty
      Scratch
      Entries     = 0
    
  4. 执行程序。
  5. 使用以下命令创建不同的 GDG 版本并列出内容: gdgmgr -l gdg_test
源文件如下所示:
cbl compile,pgmname(mixed) 
ID DIVISION.
PROGRAM-ID. 'ins_gdg'.
 
ENVIRONMENT DIVISION.
INPUT-OUTPUT Section.
 
FILE-CONTROL.
    SELECT GDS_File
       ASSIGN using gds_filename
       ORGANIZATION is sequential.
 
DATA DIVISION.
 
FILE SECTION.
FD GDS_File
    Record contains 80 characters
    RECORDING MODE is F.
01 GDS_File-record pic x(80).
 
Working-Storage Section.
01 record-in            pic x(80) value spaces.
01 record-out           pic x(80) value spaces.
01 gds_filename         pic x(64) value spaces.
 
Linkage Section.
 
Procedure Division.
    move 0 to return-code.
 
    display "     Start ..."
 
    move 'gdg_test.g0001v00' to gds_filename.
    move '   Initial GDS 0001    [gdg_test.g0001v00]'
         to record-out.
    open output GDS_File
    write GDS_File-record from record-out
    close GDS_File
    move 'gdg_test(+1)' to gds_filename. 
    move '   Increment of +1 (1) [gdg_test.g0002v00]'
         to record-out.
    open output GDS_File
    write GDS_File-record from record-out
    close GDS_File
 
    move 'gdg_test(+1)' to gds_filename.
    move '   Increment of +1 (2) [gdg_test.g0003v00]'
         to record-out.
    open output GDS_File
    write GDS_File-record from record-out
    close GDS_File
    display "     End   ..."
 
    goback.
 
END PROGRAM 'ins_gdg'.