如何在 CL 编程中添加编辑和验证规则? (As400)

How to add editing and validation rules to CL programming? (As400)

请注意这是大学的'expand your knowledge'(可选任务),而不是作业

我有一个名为 INVFILE 的物理文件和一个名为 INVFILE1

的逻辑文件

我有一个名为 INVCL99

的 CL 程序

这是我的专栏 INVFILE1

R INVFILE 1
  PARTDESC
  ONHAND
  UNITCOST
  STOCK
  PARTNUM
K PARTNUM

这是我的 CL 程序的代码

PGM

         SNDUSRMSG MSG('EXECUTING INVENTORY PROGRAM, PRESS ENTER')

         CHGDTA DFUPGM(INVENTORLB/INVENTORY) FILE(INVENTORLB/INVFILE1)

ENDPGM

我希望能够做的是验证 STOCK 列。目前它只接受 1 个字符,或者不接受任何字符。

我想验证一下,让它只能接受1个特定的字符*或者留空,不能输入任何其他内容。

我一直在谷歌搜索,试图找到一些可以帮助我解决这个问题的资源,但不幸的是我找不到任何东西。有人可以告诉我在哪里看吗?或者告诉我我需要做什么?

此外,不确定我是否应该为此创建另一个问题,但我一直在尝试使用多种方式在我的 DFU 程序示例中输入小数:购买总额 2300.29,我试过浮点数引起了问题,我试过压缩小数,但我似乎无法弄清楚如何允许输入小数/句点。

谢谢。

他们执行此操作的正确位置是在物理文件的 DDS 中...

您可以使用VALUES keyword来限制字段的有效值。

在字段上放置等同于基本 SQL CHECK 约束的内容。事实上,如果您愿意,您可以简单地定义一个 SQL 检查约束。

就您的小数输入问题而言,压缩小数或分区小数是正确的选择。我不知道为什么你会在输入小数点时遇到问题。但我从未使用过 DFU 程序。你应该 post 将其作为一个单独的问题。

DFU 允许指定列,从 Work with Fields 面板,2=Specify Extended Definition,然后 2=Change Validity checks 提示,在 Specify Validity Checks 面板中,DDS VALUES 关键字可以在 值列表 提示 if\when 上指定 关系运算符 提示设置为 LS=值列表.

因为在数据库文件 DDS [PF 或 LF] 中指定 VALUES() 除了程序生成器和 DDS 编译器为创建显示文件 (CRTDSPF) 提供的内容外没有任何影响 [数据库关心与实际 I\O] 的指定无关,在 PF 或 LF DDS 中编码 VALUES 的唯一好处是确保 DFU 和 CRTDSPF 参见相同的输入限制; PF 通常是将属性带到 LF 和其他地方的更好选择。注意:用于创建打印机文件 (CRTPRTF) 的 DDS 编译器可以识别其他关键字,但不能识别 VALUES,因为 PRTF 是仅输出的,而允许像 DSPF 这样的输入。

我忘记了如何为 DSPF 编写 DDS 代码以克服无法键入小数点句点的问题,但我似乎记得添加了编辑代码 (EDTCDE) 并删除了 CHECK 关键字可以键入小数点;要求 DFU 保存 DDS,然后查看该功能生成的内容,然后可以创建和使用自定义版本。 DFU 的另一个刺激性影响是强制大写;我记得这是一个可以更改的 DSPATR 关键字设置。交互式 DFU 代码生成器可能会像编码有限值的能力一样,为这些问题指定 either\both 的能力,但我不记得了,粗略地看了一下我没有看到任何东西。