我正在 IBM 开发软件上开发 RPG 程序
发生的事情是我正在创建一个带有输入字段的显示文件
我正在努力完成一项任务。
如果他们已经输入了所有字段并且显示了其他记录,我想保护他们只输入值直到他们按下回车键的字段
但我很困惑如何使用 DSPATR(PR) 来保护现场
我正在 IBM 开发软件上开发 RPG 程序
发生的事情是我正在创建一个带有输入字段的显示文件
我正在努力完成一项任务。
如果他们已经输入了所有字段并且显示了其他记录,我想保护他们只输入值直到他们按下回车键的字段
但我很困惑如何使用 DSPATR(PR) 来保护现场
在绿屏上,RPG 程序仅在您点击屏幕时才知道屏幕上的内容<enter>
。听起来您想在用户将数据输入字段后保护该字段。我认为这是不可能的,除非每个字段都有CHECK(ER)
每个字段。根据程序功能,这会很烦人。手动输入的人更喜欢继续打字,他们已经准确地记住了输入数据需要键入多少个制表符和空格。
我找到了我的问题的答案。
为此,只需转到屏幕设计器上的属性 > 右键单击属性并找到关键字protect
,这将保护他们输入的字段的整个屏幕,直到enter
按下取消保护。
也可以通过添加DSPATR(PR)
指示符并将其添加到RPG
以打开必填字段的指示符来完成。
出于学习目的,您可以设置显示属性,因为您的 RPG“后端”代码,例如,在您的情况下,保护(只读)文件的十六进制代码值为“A0”,请查看代码:
在 DDSSRC 中:
.....AAN01N02N03T.Nombre++++RLon++TPdBLínPosFunciones+++++++++++++++++++++++++++
A* First declare the variable
A REV1 1A P
A*
A* then, after the display field in function limit you assign it
A*
A FIELD01 14Y 2B 17 42EDTCDE(1)
A DSPATR(&REV1)
在 RPGSRC 中,只需在需要时设置或清除:
CL0N01Factor1+++++++Operac&ExtFactor2+++++++Resultado+++++Lon++D+MaMeIg....Comentarios+++++++++
C*
C* Set the hex value in the QDDSSRC variable
C EVAL REV2 = x'A0'
C*
C* Clear the variable
C CLEAR REV1 1
有太多用途的六进制代码,只需要环顾www :)。
A SEL 1A B 11 2
A 99 DSPATR(PC)
当您在绿屏上显示一个字段时,您通常为 I/O 执行 EXFMT。在这里,我将首先清除 SEL 字段,然后从显示(DDS)文件中 EXFMT 记录格式。一旦用户按下 ENTER,我“打开”指示器 99。然后我将再次 EXFMT 以显示屏幕。在示例中,如果 *IN99 为 *ON,则光标将定位到 SEL 字段并反转图像。您可以对保护 DSPATR(PR) 执行相同的操作。在您的代码中,您将“关闭”指示器,显示屏幕。用户点击 ENTER 你“打开”指示器并重新弹出屏幕。
在 RPG 中,您可以使用 MOVE *ON *IN99。
或者您可以使用 SETON ........99。
或移动“1”*IN99。
在 CLP 中,您可以 CHGVAR VAR(&IN99) VALUE('1')