我在正确表述这个问题时遇到了麻烦(也不确定我是否在正确的堆栈部分)
我的问题是我有一个ORDFILE
位于ORDRENTLB
库中的逻辑文件,即假设可以访问CIFFILE
位于CUSTINFOLB
库中的物理文件数据。
编译时,我得到的程序只是“异常结束”错误。
但是,当我删除PFILE(CUSTINFOLB/CIFFILE)
并将类型更改为 PF 时,它可以完美编译。
CIFFILE 已成功编译为它唯一的 PF。
我尝试过的:移动ORDFILE
到与 CIFFILE 相同的库(异常结束错误)尝试通过在其中放置一个旁边来声明为a (CUSTOMER
出现错误)尝试在 , 周围放置单引号(错误)foreign key
F
CUSTOMER
ORDFILE
'CUSTINFOLB/CIFFILE'
我究竟做错了什么?
谢谢你的时间。
编辑
范围:在 iSeries 平台上创建一个小型分发系统。创建一系列包含以下代码的库:
- 客户信息文件 (CIF) 功能
- 订单输入功能
- 采购功能
- 库存功能
我的要求:
- 根据指定的信息,为 4 个文件组中的每一个创建 4 个 DDS 规范。
- 为您使用 DDS 规范设置的 4 个文件中的每一个创建 4 个 DFU 程序。
- 创建 4 个 CL 程序来运行您创建的 DFU 程序。
包括一些评论以及选择菜单选项后将出现在屏幕上的消息。例如,如果您选择选项 #1 来输入 CIF 数据,则最初应显示一条消息,例如 -“CIF 数据输入程序现在正在执行”
为 3 个部门(订单输入/库存/采购)中的每一个创建 3 个菜单,每个菜单上都有相应的标题。
创建一个名为 MAINMENU 的主菜单以访问 3 个部门菜单。
根据 CIF 文件创建 Query/400 报告并将其作为选项添加到主菜单。
确保您已遵循以下 3 个要求:
通过选择“打印”选项将查询创建为报告。格式化 CIF # 以消除报告上的数字中的“,”。在报表上放置一个页面标题。
- 主菜单应包括以下菜单选项:
转到 3 个不同的“部门”菜单 运行 CIF 查询程序 访问假脱机文件 注销
- 在您创建的菜单上设置 CLP 程序。
CIF 主文件只能存在于一个地方,但所有部门都必须能够访问同一个文件。
数据库:
客户信息文件 =>
客户编号(5 位数字字段)- KEY
公司名称
联系人姓名
城市
电话号码
客户订单总额 ($)
订单输入文件 =>
订单输入编号(6 位数字字段)- KEY
顾客号码
订购的商品编号(10 个字符)
订购日期 订购数量
排序者(人名)
订单总额 ($)
库存文件 =>
零件编号(6 位数字字段)- KEY
部分说明
手头数量
单位成本
缺货指示符(1 字节 Alpha)
购买文件 =>
采购订单号(4 位数字字段)- KEY
零件号
购买数量
数量延期交货
购买日期
总采购订单金额 ($)
这四件事中的每一个都应该有自己的PF(又名表)。在现实世界中,它们中的任何一个甚至可能最好由附加的补充表来服务,这可能是适当的。例如,假设客户希望为几个不同的项目安排订单。这通常使用订单头文件来处理,以存储与整个订单有关的数据,以及每个订购商品的订单详细信息文件。但我们将保持在您的任务范围内,该任务已明确措辞与预期的设计。
这些表本身不访问彼此的信息。但它们将包含字段(又名列),这些字段将引用其他表中的关键字段。通过为每个这样的键序列创建一个简单的键控逻辑文件,为每个表创建索引通常是一个好主意,因为我们可以期望以各种方式访问它。
在这种情况下,在您
ORDFILE
定义完. 您可能有另一个由 键控。任何可能派上用场的键序列都可以拥有自己的 LF。索引在 iSeries 上的开销非常低,因此有几十个不是问题,即使其他平台可能有较低的推荐指南。因此,在现实世界中,您可能希望在这些文件上创建一个很好的品种,以帮助优化器处理您的用户可能想要的各种查询。对于这样的任务,只创建与需求相关的任务。ORDFILE1
CUSTOMER
ORDRNUM
ITEMNUM
将各种物理字段组合在一起的 LF 类型称为连接(或连接)逻辑文件。除非你的教授提到它,否则这可能超出了他/她的期望范围。一个查询可以读取多个 PF,就像连接逻辑一样,因此在这种情况下连接 LF 可能是多余的。
免责声明
该平台上的现代最佳实践通常是对数据库使用 SQL,而不是 DDS 和 Query/400。知道 QM Query 可以将 Query/400 查询转换为 SQL 可能会很方便。但是大多数公司仍然有大量使用 DDS 定义的数据库文件。当您是该平台上的专业开发人员时,了解这些早期技术很重要,因为您可能必须支持它们。