生成数据组
生成数据组 (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 个季度
示例
遵循以下步骤来创建不同版本的 GDG:
- 导出文件系统名称。
- 照常编译和链接程序。 欲了解更多信息,请参阅编译、链接和运行程序。
- 创建 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 - 执行程序。
- 使用以下命令创建不同的 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'.