我正在IBM开发软件上开发RPG程序
实际情况是,我正在创建一个带有输入字段的显示文件
我正在努力完成一项任务。
如果他们已经输入了所有字段,并且显示了另一条记录,我想保护他们只输入值的字段,直到他们按下回车
但我很困惑如何使用DSP(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
对于许多用途来说,有太多的hexa代码,只需要四处查看即可:)。
A SEL 1A B 11 2
一个99 DSP(PC)
A 99 DSP(RI)
当您在绿色屏幕上显示字段时,您通常会为I/O执行EXFMT。在这里,我将首先清除SEL字段,然后从显示(DDS)文件中EXFMT记录格式。一旦用户按下ENTER,我就"打开"指示器99。然后我会再次EXFMT显示屏幕。在该示例中,如果*IN99为*ON,则光标将定位到SEL字段并对其进行反向成像。您可以对保护DSP(PR)执行同样的操作。在你的代码中,你会"设置"指示器,显示屏幕。用户点击ENTER,"打开"指示器并重新显示屏幕。
在RPG中,你可以使用MOVE*ON*IN99。
或者你可以使用SETON。。。。。。。。99.
或移动'1'*IN99。
在CLP中,您可以使用CHGVAR VAR(&IN99)VALUE('1')