0

我正在 IBM 开发软件上开发 RPG 程序

发生的事情是我正在创建一个带有输入字段的显示文件

我正在努力完成一项任务。

如果他们已经输入了所有字段并且显示了其他记录,我想保护他们只输入值直到他们按下回车键的字段

但我很困惑如何使用 DSPATR(PR) 来保护现场

4

4 回答 4

2

在绿屏上,RPG 程序仅在您点击屏幕时才知道屏幕上的内容<enter>。听起来您想在用户将数据输入字段后保护该字段。我认为这是不可能的,除非每个字段都有CHECK(ER)每个字段。根据程序功能,这会很烦人。手动输入的人更喜欢继续打字,他们已经准确地记住了输入数据需要键入多少个制表符和空格。

于 2012-03-09T14:32:36.350 回答
1

我找到了我的问题的答案。

为此,只需转到屏幕设计器上的属性 > 右键单击​​属性并找到关键字protect,这将保护他们输入的字段的整个屏幕,直到enter按下取消保护。

也可以通过添加DSPATR(PR)指示符并将其添加到RPG以打开必填字段的指示符来完成。

于 2012-03-10T19:24:16.493 回答
0

出于学习目的,您可以设置显示属性,因为您的 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 :)。

于 2017-03-16T00:06:24.270 回答
-1

A SEL 1A B 11 2
A 99 DSPATR(PC)

A 99 DSPATR(RI)

当您在绿屏上显示一个字段时,您通常为 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')

于 2017-01-12T20:23:04.860 回答