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

时间:2015-05-15 03:24:18

标签: ibm-midrange

请注意,这是一个扩展您的知识'大学的(可选任务),而不是作业

我有一个名为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,我已尝试过浮动引起了问题,我尝试过压缩小数,但我似乎无法弄清楚如何输入小数/句号。

感谢。

2 个答案:

答案 0 :(得分:4)

DFU可以通过使用字段面板指定列,2 =指定扩展定义,然后 2 = 更改 有效性检查提示,在指定有效性检查面板中,可以在值列表中指定DDS VALUES关键字的参数关系运算符提示符设置为 LS = 值列表时,em>提示\;

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

我忘记了如何为DSPF编写DDS代码以覆盖无法输入小数点的句点,但我似乎记得添加了一个编辑代码(EDTCDE)并删除了键入的CHECK关键字小数点是可能的;要求DFU保存DDS,然后查看该功能生成的内容,然后可以创建和使用自定义版本。 DFU的另一个刺激性因素是被迫的大写;我记得那是一个可以改变的DSPATR关键字设置。交互式DFU代码生成器可以像编码有限值的能力一样,为这两个问题中的任何一个指定功能,但我不记得,粗略的看起来我没有看到任何东西。

答案 1 :(得分:3)

他们正确的地方是在物理文件的DDS中......

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

在字段上放置等效的基本SQL CHECK约束。实际上,如果您愿意,可以简单地定义SQL检查约束。

就您的小数输入问题而言,打包或分区十进制是正确的选择。我不知道为什么你输入小数点时会遇到问题。但是我从未使用过DFU程序。您应该将其作为单独的问题发布。