我试图将DDS定义的表转换为DDL,而不会影响现有的旧版RPG代码。 如果我在SQL中重新创建表,然后手动关闭记录级别检查,我可以这样做。
想知道是否可以以某种方式关闭记录级别检查作为create语句或其他SQL命令的一部分。
答案 0 :(得分:2)
没有
除此之外你不应该这样做。如果您没有使用DDS定义的SQL创建的表获得相同的记录格式ID,那么您可能做错了。
我说可能是因为几年前有几个错误,其中记录格式ID未正确创建。
现在,如果您想在DDL中添加列以及重新定义,那么您需要做的是:
正确完成,现有对象的记录格式ID都不会改变;因此,不需要重新编译现有的RPG程序。
步骤4和5是关键。许多现有的逻辑可能共享现有的PF记录格式,如下所示:
A R MYPFR PFILE(MYPF)
A K ALTKEY
您想要将其更改为明确包含PF中的原始列:
A R MYPFR PFILE(MYPF_T)
A MYKEY R
A ALTKEY R
A FLD3 R
A FLD4 R
A <...>
A K ALTKEY
请注意,文件级别标识符会有所不同。
Data Base File Attributes
Externally described file . . . . . . . . . : Yes
SQL file type . . . . . . . . . . . . . . . : TABLE
File level identifier . . . . . . . . . . . : 1121222233155
这很好,级别检查是由记录格式的格式级别标识符
的差异引起的Record Format List
Record Format Level
Format Fields Length Identifier
IORITEM1 114 541 2FED88D05AB32
答案 1 :(得分:1)
当你用sql表替换dds文件时我称之为Cruikshanking,因为Dan Cruikshank在其上写了一个paper。
总结:创建一个ddl表。列出逻辑文件中的列,并将它们指向新的ddl表。创建一个逻辑文件,列出所有物理文件列,并将其指向新的ddl表。
注意执行crtdupobj的代码以及clrpfm或addpfm等成员的代码。